from Components.Input import Input
profile("ChannelSelection.py 3")
from Components.ParentalControl import parentalControl
-from Components.Pixmap import Pixmap
from Screens.InputBox import InputBox, PinInput
from Screens.MessageBox import MessageBox
from Screens.ServiceInfo import ServiceInfo
class ChannelContextMenu(Screen):
def __init__(self, session, csel):
Screen.__init__(self, session)
- #raise "we need a better summary screen here"
+ #raise Exception("we need a better summary screen here")
self.csel = csel
self.bsel = None
inBouquet = csel.getMutableList() is not None
haveBouquets = config.usage.multibouquet.value
- if not (len(current_sel_path) or current_sel_flags & (eServiceReference.isDirectory|eServiceReference.isMarker)):
+ if not (current_sel_path or current_sel_flags & (eServiceReference.isDirectory|eServiceReference.isMarker)):
append_when_current_valid(current, menu, (_("show transponder info"), self.showServiceInformations), level = 2)
if csel.bouquet_mark_edit == OFF and not csel.movemode:
if not inBouquetRootList:
def showEPGList(self):
ref=self.getCurrentSelection()
- ptr=eEPGCache.getInstance()
- if ptr.startTimeQuery(ref) != -1:
- self.session.open(EPGSelection, ref)
- else:
- print 'no epg for service', ref.toString()
+ if ref:
+ self.savedService = ref
+ self.session.openWithCallback(self.SingleServiceEPGClosed, EPGSelection, ref, serviceChangeCB=self.changeServiceCB)
+
+ def SingleServiceEPGClosed(self, ret=False):
+ self.setCurrentSelection(self.savedService)
+
+ def changeServiceCB(self, direction, epg):
+ beg = self.getCurrentSelection()
+ while True:
+ if direction > 0:
+ self.moveDown()
+ else:
+ self.moveUp()
+ cur = self.getCurrentSelection()
+ if cur == beg or not (cur.flags & eServiceReference.isMarker):
+ break
+ epg.setService(ServiceReference(self.getCurrentSelection()))
class ChannelSelectionEdit:
def __init__(self):
self.mutableList = self.getMutableList()
# add all services from the current list to internal marked set in listboxservicecontent
self.clearMarks() # this clears the internal marked set in the listboxservicecontent
- self.saved_title = self.instance.getTitle()
+ self.saved_title = self.getTitle()
pos = self.saved_title.find(')')
new_title = self.saved_title[:pos+1]
if type == EDIT_ALTERNATIVES:
del self.servicePath[:] # remove all elements
self.servicePath += self.savedPath # add saved elements
del self.savedPath
- self.setRoot(self.servicePath[len(self.servicePath)-1])
+ self.setRoot(self.servicePath[-1])
def clearMarks(self):
self.servicelist.clearMarks()
self.mutableList = self.getMutableList()
self.movemode = True
self.pathChangeDisabled = True # no path change allowed in movemode
- self.saved_title = self.instance.getTitle()
+ self.saved_title = self.getTitle()
new_title = self.saved_title
pos = self.saved_title.find(')')
new_title = self.saved_title[:pos+1] + ' ' + _("[move mode]") + self.saved_title[pos+1:]
MODE_TV = 0
MODE_RADIO = 1
-# this makes it much simple to implement a selectable radio or tv mode :)
-service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25) || (type == 134)'
-service_types_radio = '1:7:2:0:0:0:0:0:0:0:(type == 2)'
+# type 1 = digital television service
+# type 4 = nvod reference service (NYI)
+# type 17 = MPEG-2 HD digital television service
+# type 22 = advanced codec SD digital television
+# type 24 = advanced codec SD NVOD reference service (NYI)
+# type 25 = advanced codec HD digital television
+# type 27 = advanced codec HD NVOD reference service (NYI)
+# type 2 = digital radio sound service
+# type 10 = advanced codec digital radio sound service
+
+service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 134) || (type == 195)'
+service_types_radio = '1:7:2:0:0:0:0:0:0:0:(type == 2) || (type == 10)'
class ChannelSelectionBase(Screen):
def __init__(self, session):
self.mode = MODE_TV
self.servicePath = self.servicePathTV
self.recallBouquetMode()
- title = self.instance.getTitle()
+ title = self.getTitle()
pos = title.find(" (")
if pos != -1:
title = title[:pos]
self.mode = MODE_RADIO
self.servicePath = self.servicePathRadio
self.recallBouquetMode()
- title = self.instance.getTitle()
+ title = self.getTitle()
pos = title.find(" (")
if pos != -1:
title = title[:pos]
def getServiceName(self, ref):
str = self.removeModeStr(ServiceReference(ref).getServiceName())
- if not len(str):
+ if not str:
pathstr = ref.getPath()
- if pathstr.find('FROM PROVIDERS') != -1:
+ if 'FROM PROVIDERS' in pathstr:
return _("Provider")
- if pathstr.find('FROM SATELLITES') != -1:
+ if 'FROM SATELLITES' in pathstr:
return _("Satellites")
- if pathstr.find(') ORDER BY name') != -1:
+ if ') ORDER BY name' in pathstr:
return _("All")
return str
def buildTitleString(self):
- titleStr = self.instance.getTitle()
+ titleStr = self.getTitle()
pos = titleStr.find(']')
if pos == -1:
pos = titleStr.find(')')
def pathUp(self, justSet=False):
prev = self.servicePath.pop()
- length = len(self.servicePath)
- if length:
- current = self.servicePath[length-1]
+ if self.servicePath:
+ current = self.servicePath[-1]
self.setRoot(current, justSet)
if not justSet:
self.setCurrentSelection(prev)
self.enterPath(ref)
def inBouquet(self):
- if len(self.servicePath) > 0 and self.servicePath[0] == self.bouquet_root:
+ if self.servicePath and self.servicePath[0] == self.bouquet_root:
return True
return False
"keyTV": self.setModeTv,
})
- self.__event_tracker = ServiceEventTracker(screen=self, in_thread=True, eventmap=
+ self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
{
iPlayableService.evStart: self.__evServiceStart,
iPlayableService.evEnd: self.__evServiceEnd
del self.servicePath[:]
self.servicePath += path
self.saveRoot()
- plen = len(path)
- root = path[plen-1]
+ root = path[-1]
cur_root = self.getRoot()
if cur_root and cur_root != root:
self.setRoot(root)
for i in self.servicePath:
path += i.toString()
path += ';'
- if len(path) and path != self.lastroot.value:
+ if path and path != self.lastroot.value:
self.lastroot.value = path
self.lastroot.save()
tmp = re.findall(self.lastroot.value)
cnt = 0
for i in tmp:
- self.servicePath.append(eServiceReference(i[:len(i)-1]))
+ self.servicePath.append(eServiceReference(i[:-1]))
cnt += 1
if cnt:
path = self.servicePath.pop()
self.saveRoot()
def preEnterPath(self, refstr):
- if len(self.servicePath) and self.servicePath[0] != eServiceReference(refstr):
+ if self.servicePath and self.servicePath[0] != eServiceReference(refstr):
pathstr = self.lastroot.value
if pathstr is not None and pathstr.find(refstr) == 0:
self.restoreRoot()
self.lastservice.save()
def setCurrentServicePath(self, path):
- hlen = len(self.history)
- if hlen > 0:
+ if self.history:
self.history[self.history_pos] = path
else:
self.history.append(path)
self.setHistoryPath()
def getCurrentServicePath(self):
- hlen = len(self.history)
- if hlen > 0:
+ if self.history:
return self.history[self.history_pos]
return None
"ok": self.channelSelected,
})
- self.__event_tracker = ServiceEventTracker(screen=self, in_thread=True, eventmap=
+ self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
{
iPlayableService.evStart: self.__evServiceStart,
iPlayableService.evEnd: self.__evServiceEnd
},-1)
self["RdsActions"].setEnabled(False)
infobar.rds_display.onRassInteractivePossibilityChanged.append(self.RassInteractivePossibilityChanged)
+ self.onClose.append(self.__onClose)
+
+ def __onClose(self):
+ lastservice=eServiceReference(config.tv.lastservice.value)
+ self.session.nav.playService(lastservice)
def startRassInteractive(self):
self.info.hide();
self.infobar.rds_display.onRassInteractivePossibilityChanged.remove(self.RassInteractivePossibilityChanged)
self.info.hide()
#set previous tv service
- lastservice=eServiceReference(config.tv.lastservice.value)
- self.session.nav.playService(lastservice)
self.close(None)
def __evServiceStart(self):
for i in self.servicePathRadio:
path += i.toString()
path += ';'
- if len(path) and path != config.radio.lastroot.value:
+ if path and path != config.radio.lastroot.value:
config.radio.lastroot.value = path
config.radio.lastroot.save()
tmp = re.findall(config.radio.lastroot.value)
cnt = 0
for i in tmp:
- self.servicePathRadio.append(eServiceReference(i[:len(i)-1]))
+ self.servicePathRadio.append(eServiceReference(i[:-1]))
cnt += 1
if cnt:
path = self.servicePathRadio.pop()
self.saveRoot()
def preEnterPath(self, refstr):
- if len(self.servicePathRadio) and self.servicePathRadio[0] != eServiceReference(refstr):
+ if self.servicePathRadio and self.servicePathRadio[0] != eServiceReference(refstr):
pathstr = config.radio.lastroot.value
if pathstr is not None and pathstr.find(refstr) == 0:
self.restoreRoot()
class SimpleChannelSelection(ChannelSelectionBase):
def __init__(self, session, title):
ChannelSelectionBase.__init__(self, session)
- self.title = title
- self.onShown.append(self.__onExecCallback)
-
self["actions"] = ActionMap(["OkCancelActions", "TvRadioActions"],
{
"cancel": self.close,
"keyRadio": self.setModeRadio,
"keyTV": self.setModeTv,
})
+ self.title = title
+ self.onLayoutFinish.append(self.layoutFinished)
- def __onExecCallback(self):
- self.setTitle(self.title)
+ def layoutFinished(self):
self.setModeTv()
def channelSelected(self): # just return selected service