profile("ChannelSelection.py 3")
from Components.ParentalControl import parentalControl
from Components.ChoiceList import ChoiceList, ChoiceEntryComponent
profile("ChannelSelection.py 3")
from Components.ParentalControl import parentalControl
from Components.ChoiceList import ChoiceList, ChoiceEntryComponent
from Screens.InputBox import InputBox, PinInput
from Screens.MessageBox import MessageBox
from Screens.ServiceInfo import ServiceInfo
from Screens.InputBox import InputBox, PinInput
from Screens.MessageBox import MessageBox
from Screens.ServiceInfo import ServiceInfo
from Screens.RdsDisplay import RassInteractive
from ServiceReference import ServiceReference
from Tools.BoundFunction import boundFunction
from Screens.RdsDisplay import RassInteractive
from ServiceReference import ServiceReference
from Tools.BoundFunction import boundFunction
append_when_current_valid(current, menu, (_("remove entry"), self.removeCurrentService), level = 0)
if current_root and current_root.getPath().find("flags == %d" %(FLAG_SERVICE_NEW_FOUND)) != -1:
append_when_current_valid(current, menu, (_("remove new found flag"), self.removeNewFoundFlag), level = 0)
append_when_current_valid(current, menu, (_("remove entry"), self.removeCurrentService), level = 0)
if current_root and current_root.getPath().find("flags == %d" %(FLAG_SERVICE_NEW_FOUND)) != -1:
append_when_current_valid(current, menu, (_("remove new found flag"), self.removeNewFoundFlag), level = 0)
append_when_current_valid(current, menu, (_("Activate Picture in Picture"), self.showServiceInPiP), level = 0, key = "blue")
self.pipAvailable = True
else:
append_when_current_valid(current, menu, (_("Activate Picture in Picture"), self.showServiceInPiP), level = 0, key = "blue")
self.pipAvailable = True
else:
if self.session.pip.playService(newservice):
self.session.pipshown = True
self.session.pip.servicePath = self.csel.getCurrentServicePath()
if self.session.pip.playService(newservice):
self.session.pipshown = True
self.session.pip.servicePath = self.csel.getCurrentServicePath()
- self.session.open(ChannelContextMenu, self)
+ self.session.openWithCallback(self.exitContext, ChannelContextMenu, self)
+
+ def exitContext(self, close = False):
+ if close:
+ self.cancel()
else:
self.servicelist.setMode(ServiceList.MODE_NORMAL)
self.servicelist.setRoot(root, justSet)
else:
self.servicelist.setMode(ServiceList.MODE_NORMAL)
self.servicelist.setRoot(root, justSet)
- self.clearPath()
- re = compile('.+?;')
- tmp = re.findall(self.lastroot.value)
- cnt = 0
- for i in tmp:
- self.servicePath.append(eServiceReference(i[:-1]))
- cnt += 1
- if cnt:
- path = self.servicePath.pop()
- self.enterPath(path)
- else:
- self.showFavourites()
- self.saveRoot()
+ tmp = [x for x in self.lastroot.value.split(';') if x != '']
+ current = [x.toString() for x in self.servicePath]
+ if tmp != current or self.rootChanged:
+ self.clearPath()
+ cnt = 0
+ for i in tmp:
+ self.servicePath.append(eServiceReference(i))
+ cnt += 1
+ if cnt:
+ path = self.servicePath.pop()
+ self.enterPath(path)
+ else:
+ self.showFavourites()
+ self.saveRoot()
+ self.rootChanged = False
def preEnterPath(self, refstr):
if self.servicePath and self.servicePath[0] != eServiceReference(refstr):
def preEnterPath(self, refstr):
if self.servicePath and self.servicePath[0] != eServiceReference(refstr):
- self.clearPath()
- re = compile('.+?;')
- tmp = re.findall(config.radio.lastroot.value)
- cnt = 0
- for i in tmp:
- self.servicePathRadio.append(eServiceReference(i[:-1]))
- cnt += 1
- if cnt:
- path = self.servicePathRadio.pop()
- self.enterPath(path)
- else:
- self.showFavourites()
- self.saveRoot()
+ tmp = [x for x in config.radio.lastroot.value.split(';') if x != '']
+ current = [x.toString() for x in self.servicePath]
+ if tmp != current or self.rootChanged:
+ cnt = 0
+ for i in tmp:
+ self.servicePathRadio.append(eServiceReference(i))
+ cnt += 1
+ if cnt:
+ path = self.servicePathRadio.pop()
+ self.enterPath(path)
+ else:
+ self.showFavourites()
+ self.saveRoot()
+ self.rootChanged = False
def preEnterPath(self, refstr):
if self.servicePathRadio and self.servicePathRadio[0] != eServiceReference(refstr):
def preEnterPath(self, refstr):
if self.servicePathRadio and self.servicePathRadio[0] != eServiceReference(refstr):