"ok": self.okbuttonClick,
"cancel": self.cancelClick
})
- entrys = [ ]
- for x in bouquets:
- entrys.append((x[0], x[1]))
+ entrys = [ (x[0], x[1]) for x in bouquets ]
self["menu"] = MenuList(entrys, enableWrapAround)
def getCurrent(self):
EDIT_BOUQUET = 1
EDIT_ALTERNATIVES = 2
+def apend_when_current_valid(current, menu, args):
+ if current and current.valid():
+ menu.append(args)
+
class ChannelContextMenu(Screen):
def __init__(self, session, csel):
Screen.__init__(self, session)
})
menu = [ ]
+ current = csel.getCurrentSelection()
current_root = csel.getRoot()
- current_sel_path = csel.getCurrentSelection().getPath()
- current_sel_flags = csel.getCurrentSelection().flags
+ current_sel_path = current.getPath()
+ current_sel_flags = current.flags
inBouquetRootList = current_root and current_root.getPath().find('FROM BOUQUET "bouquets.') != -1 #FIXME HACK
inBouquet = csel.getMutableList() is not None
haveBouquets = config.usage.multibouquet.value
- if not (len(current_sel_path) or current_sel_flags & eServiceReference.isDirectory):
- menu.append((_("show transponder info"), self.showServiceInformations))
+ if not (len(current_sel_path) or current_sel_flags & (eServiceReference.isDirectory|eServiceReference.isMarker)):
+ apend_when_current_valid(current, menu, (_("show transponder info"), self.showServiceInformations))
if csel.bouquet_mark_edit == OFF and not csel.movemode:
if not inBouquetRootList:
isPlayable = not (current_sel_flags & (eServiceReference.isMarker|eServiceReference.isDirectory))
if isPlayable:
if config.ParentalControl.configured.value:
if parentalControl.getProtectionLevel(csel.getCurrentSelection().toCompareString()) == -1:
- menu.append((_("add to parental protection"), boundFunction(self.addParentalProtection, csel.getCurrentSelection())))
+ apend_when_current_valid(current, menu, (_("add to parental protection"), boundFunction(self.addParentalProtection, csel.getCurrentSelection())))
else:
- menu.append((_("remove from parental protection"), boundFunction(self.removeParentalProtection, csel.getCurrentSelection())))
+ apend_when_current_valid(current, menu, (_("remove from parental protection"), boundFunction(self.removeParentalProtection, csel.getCurrentSelection())))
if haveBouquets:
- menu.append((_("add service to bouquet"), self.addServiceToBouquetSelected))
+ apend_when_current_valid(current, menu, (_("add service to bouquet"), self.addServiceToBouquetSelected))
else:
- menu.append((_("add service to favourites"), self.addServiceToBouquetSelected))
+ apend_when_current_valid(current, menu, (_("add service to favourites"), self.addServiceToBouquetSelected))
else:
if haveBouquets:
if not inBouquet and current_sel_path.find("PROVIDERS") == -1:
- menu.append((_("copy to bouquets"), self.copyCurrentToBouquetList))
+ apend_when_current_valid(current, menu, (_("copy to bouquets"), self.copyCurrentToBouquetList))
if current_sel_path.find("flags == %d" %(FLAG_SERVICE_NEW_FOUND)) != -1:
- menu.append((_("remove all new found flags"), self.removeAllNewFoundFlags))
+ apend_when_current_valid(current, menu, (_("remove all new found flags"), self.removeAllNewFoundFlags))
if inBouquet:
- menu.append((_("remove entry"), self.removeCurrentService))
+ apend_when_current_valid(current, menu, (_("remove entry"), self.removeCurrentService))
if current_root and current_root.getPath().find("flags == %d" %(FLAG_SERVICE_NEW_FOUND)) != -1:
- menu.append((_("remove new found flag"), self.removeNewFoundFlag))
+ apend_when_current_valid(current, menu, (_("remove new found flag"), self.removeNewFoundFlag))
else:
menu.append((_("add bouquet"), self.showBouquetInputBox))
- menu.append((_("remove entry"), self.removeBouquet))
+ apend_when_current_valid(current, menu, (_("remove entry"), self.removeBouquet))
if inBouquet: # current list is editable?
if csel.bouquet_mark_edit == OFF:
if not csel.movemode:
- menu.append((_("enable move mode"), self.toggleMoveMode))
+ apend_when_current_valid(current, menu, (_("enable move mode"), self.toggleMoveMode))
if not inBouquetRootList and current_root and not (current_root.flags & eServiceReference.isGroup):
menu.append((_("add marker"), self.showMarkerInputBox))
if haveBouquets:
- menu.append((_("enable bouquet edit"), self.bouquetMarkStart))
+ apend_when_current_valid(current, menu, (_("enable bouquet edit"), self.bouquetMarkStart))
else:
- menu.append((_("enable favourite edit"), self.bouquetMarkStart))
+ apend_when_current_valid(current, menu, (_("enable favourite edit"), self.bouquetMarkStart))
if current_sel_flags & eServiceReference.isGroup:
- menu.append((_("edit alternatives"), self.editAlternativeServices))
- menu.append((_("show alternatives"), self.showAlternativeServices))
- menu.append((_("remove all alternatives"), self.removeAlternativeServices))
- else:
- menu.append((_("add alternatives"), self.addAlternativeServices))
+ apend_when_current_valid(current, menu, (_("edit alternatives"), self.editAlternativeServices))
+ apend_when_current_valid(current, menu, (_("show alternatives"), self.showAlternativeServices))
+ apend_when_current_valid(current, menu, (_("remove all alternatives"), self.removeAlternativeServices))
+ elif not current_sel_flags & eServiceReference.isMarker:
+ apend_when_current_valid(current, menu, (_("add alternatives"), self.addAlternativeServices))
else:
- menu.append((_("disable move mode"), self.toggleMoveMode))
+ apend_when_current_valid(current, menu, (_("disable move mode"), self.toggleMoveMode))
else:
if csel.bouquet_mark_edit == EDIT_BOUQUET:
if haveBouquets:
- menu.append((_("end bouquet edit"), self.bouquetMarkEnd))
- menu.append((_("abort bouquet edit"), self.bouquetMarkAbort))
+ apend_when_current_valid(current, menu, (_("end bouquet edit"), self.bouquetMarkEnd))
+ apend_when_current_valid(current, menu, (_("abort bouquet edit"), self.bouquetMarkAbort))
else:
- menu.append((_("end favourites edit"), self.bouquetMarkEnd))
- menu.append((_("abort favourites edit"), self.bouquetMarkAbort))
+ apend_when_current_valid(current, menu, (_("end favourites edit"), self.bouquetMarkEnd))
+ apend_when_current_valid(current, menu, (_("abort favourites edit"), self.bouquetMarkAbort))
else:
- menu.append((_("end alternatives edit"), self.bouquetMarkEnd))
- menu.append((_("abort alternatives edit"), self.bouquetMarkAbort))
+ apend_when_current_valid(current, menu, (_("end alternatives edit"), self.bouquetMarkEnd))
+ apend_when_current_valid(current, menu, (_("abort alternatives edit"), self.bouquetMarkAbort))
menu.append((_("back"), self.cancelClick))
self["menu"] = MenuList(menu)
name = cur_service.getServiceName()
print "NAME", name
if self.mode == MODE_TV:
- str = '1:134:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET \"alternatives.%s.tv\" ORDER BY bouquet'%(self.buildBouquetID(name))
+ str = '1:134:1:0:0:0:0:0:0:0:FROM BOUQUET \"alternatives.%s.tv\" ORDER BY bouquet'%(self.buildBouquetID(name))
else:
- str = '1:134:2:0:0:0:0:0:0:0:(type == 2) FROM BOUQUET \"alternatives.%s.radio\" ORDER BY bouquet'%(self.buildBouquetID(name))
+ str = '1:134:2:0:0:0:0:0:0:0:FROM BOUQUET \"alternatives.%s.radio\" ORDER BY bouquet'%(self.buildBouquetID(name))
new_ref = ServiceReference(str)
if not mutableBouquet.addService(new_ref.ref, cur_service.ref):
mutableBouquet.removeService(cur_service.ref)
})
self.recallBouquetMode()
- def appendDVBTypes(self, ref):
- path = ref.getPath()
- pos = path.find(' FROM BOUQUET')
- if pos != -1:
- return eServiceReference(self.service_types + path[pos:])
- return ref
-
def getBouquetNumOffset(self, bouquet):
if not config.usage.multibouquet.value:
return 0
- bouquet = self.appendDVBTypes(bouquet)
str = bouquet.toString()
offsetCount = 0
if not self.bouquetNumOffsetCache.has_key(str):
bouquetlist = serviceHandler.list(self.bouquet_root)
if not bouquetlist is None:
while True:
- bouquetIterator = self.appendDVBTypes(bouquetlist.getNext())
+ bouquetIterator = bouquetlist.getNext()
if not bouquetIterator.valid(): #end of list
break
self.bouquetNumOffsetCache[bouquetIterator.toString()]=offsetCount
if self.mode == MODE_TV:
self.service_types = service_types_tv
if config.usage.multibouquet.value:
- self.bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET "bouquets.tv" ORDER BY bouquet'
+ self.bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.tv" ORDER BY bouquet'
else:
self.bouquet_rootstr = '%s FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet'%(self.service_types)
else:
self.service_types = service_types_radio
if config.usage.multibouquet.value:
- self.bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET "bouquets.radio" ORDER BY bouquet'
+ self.bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.radio" ORDER BY bouquet'
else:
self.bouquet_rootstr = '%s FROM BOUQUET "userbouquet.favourites.radio" ORDER BY bouquet'%(self.service_types)
self.bouquet_root = eServiceReference(self.bouquet_rootstr)
def setRoot(self, root, justSet=False):
path = root.getPath()
inBouquetRootList = path.find('FROM BOUQUET "bouquets.') != -1 #FIXME HACK
- pos = path.find(' FROM BOUQUET')
+ pos = path.find('FROM BOUQUET')
isBouquet = (pos != -1) and (root.flags & eServiceReference.isDirectory)
if not inBouquetRootList and isBouquet:
self.servicelist.setMode(ServiceList.MODE_FAVOURITES)
self.servicelist.setNumberOffset(self.getBouquetNumOffset(root))
- refstr = self.service_types + path[pos:]
- root = eServiceReference(refstr)
else:
self.servicelist.setMode(ServiceList.MODE_NORMAL)
self.servicelist.setRoot(root, justSet)