self.close(False)
class ChannelContextMenu(Screen):
+
def __init__(self, session, csel):
Screen.__init__(self, session)
self.csel = csel
+ self.bsel = None
self["actions"] = ActionMap(["OkCancelActions"],
{
})
menu = [ ]
- inBouquetRootList = csel.getRoot().getPath().find('FROM BOUQUET "bouquets.') != -1 #FIXME HACK
+ current_root = csel.getRoot()
+ inBouquetRootList = current_root and current_root.getPath().find('FROM BOUQUET "bouquets.') != -1 #FIXME HACK
inBouquet = csel.getMutableList() is not None
haveBouquets = csel.bouquet_root.getPath().find('FROM BOUQUET "bouquets.') != -1
menu.append((_("add service to favourites"), self.addServiceToBouquetSelected))
elif haveBouquets:
if not inBouquet and csel.getCurrentSelection().getPath().find("PROVIDERS") == -1:
- menu.append((_("copy to favourites"), csel.copyCurrentToBouquetList))
+ menu.append((_("copy to favourites"), self.copyCurrentToBouquetList))
if inBouquet:
menu.append((_("remove service"), self.removeCurrentService))
elif haveBouquets:
- menu.append((_("remove bouquet"), csel.removeBouquet))
+ menu.append((_("remove bouquet"), self.removeBouquet))
if inBouquet: # current list is editable?
if not csel.bouquet_mark_edit:
else:
cnt = len(bouquets)
if cnt > 1: # show bouquet list
- self.session.openWithCallback(self.bouquetSelClosed, BouquetSelector, bouquets, self.addCurrentServiceToBouquet)
+ self.bsel = self.session.openWithCallback(self.bouquetSelClosed, BouquetSelector, bouquets, self.addCurrentServiceToBouquet)
elif cnt == 1: # add to only one existing bouquet
self.addCurrentServiceToBouquet(bouquets[0][1])
else: #no bouquets in root.. so assume only one favourite list is used
self.addCurrentServiceToBouquet(self.csel.bouquet_root)
def bouquetSelClosed(self, recursive):
+ self.bsel = None
if recursive:
self.close(False)
def addCurrentServiceToBouquet(self, dest):
self.csel.addCurrentServiceToBouquet(dest)
- self.close(True) # close bouquet selection
+ if self.bsel is not None:
+ self.bsel.close(True)
+ else:
+ self.close(True) # close bouquet selection
def removeCurrentService(self):
self.csel.removeCurrentService()
def __init__(self, csel, contexts = [ ], actions = { }, prio=0):
ActionMap.__init__(self, contexts, actions, prio)
self.csel = csel
+
def action(self, contexts, action):
if action == "cancel":
self.csel.handleEditCancel()
+ return 0 # fall-trough
elif action == "ok":
- pass # avoid typo warning...
+ return 0 # fall-trough
else:
- ActionMap.action(self, contexts, action)
+ return ActionMap.action(self, contexts, action)
+
self["ChannelSelectEditActions"] = ChannelSelectionEditActionMap(self, ["ChannelSelectEditActions", "OkCancelActions"],
{
"contextMenu": self.doContext,
serviceHandler = eServiceCenter.getInstance()
if not root.valid():
root=self.getRoot()
- list = serviceHandler.list(root)
+ list = root and serviceHandler.list(root)
if list is not None:
return list.startEdit()
return None
if pos != -1:
filename = '/etc/enigma2/' + refstr[:pos] # FIXMEEE !!! HARDCODED /etc/enigma2
self.removeCurrentService()
- remove(filename)
+ try:
+ remove(filename)
+ except OSError:
+ print "error during remove of", filename
eDVBDB.getInstance().reloadBouquets()
# multiple marked entry stuff ( edit mode, later multiepg selection )
self.mutableList = None
self.setTitle(self.saved_title)
self.saved_title = None
- self.servicePath = self.savedPath[:]
+ # self.servicePath is just a reference to servicePathTv or Radio...
+ # so we never ever do use the asignment operator in self.servicePath
+ del self.servicePath[:] # remove all elements
+ self.servicePath += self.savedPath # add saved elements
del self.savedPath
self.setRoot(self.servicePath[len(self.servicePath)-1])
if not mutableList.addService(self.servicelist.getCurrent()):
self.bouquetNumOffsetCache = { }
mutableList.flushChanges()
- self.close()
def toggleMoveMode(self):
if self.movemode:
self.servicePathTV = [ ]
self.servicePathRadio = [ ]
- self.servicePath = None
+ self.servicePath = [ ]
+
+ self.mode = MODE_TV
self.pathChangedDisabled = False
"7": self.keyNumberGlobal,
"8": self.keyNumberGlobal,
"9": self.keyNumberGlobal,
- "0": self.keyNumberGlobal
+ "0": self.keyNumber0
})
def appendDVBTypes(self, ref):
return bouquets
return None
+ def keyNumber0(self, num):
+ if len(self.servicePath) > 1:
+ self.keyGoUp()
+ else:
+ self.keyNumberGlobal(num)
+
+ def keyGoUp(self):
+ if len(self.servicePath) > 1:
+ if self.isBasePathEqual(self.bouquet_root):
+ self.showFavourites()
+ else:
+ ref = eServiceReference('%s FROM SATELLITES ORDER BY satellitePosition'%(self.service_types))
+ if self.isBasePathEqual(ref):
+ self.showSatellites()
+ else:
+ ref = eServiceReference('%s FROM PROVIDERS ORDER BY name'%(self.service_types))
+ if self.isBasePathEqual(ref):
+ self.showProviders()
+ else:
+ self.showAllServices()
+
HISTORYSIZE = 20
class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelectionEPG):
self.session.nav.playService(nref)
self.saveRoot()
self.saveChannel()
- tmp=self.servicePath[:]
- tmp.append(nref)
- try:
- del self.history[self.history_pos+1:]
- except:
- pass
- self.history.append(tmp)
- hlen = len(self.history)
- if hlen > HISTORYSIZE:
- del self.history[0]
- hlen -= 1
- self.history_pos = hlen-1
+ if self.servicePath is not None:
+ tmp=self.servicePath[:]
+ tmp.append(nref)
+ try:
+ del self.history[self.history_pos+1:]
+ except:
+ pass
+ self.history.append(tmp)
+ hlen = len(self.history)
+ if hlen > HISTORYSIZE:
+ del self.history[0]
+ hlen -= 1
+ self.history_pos = hlen-1
def historyBack(self):
hlen = len(self.history)
def setHistoryPath(self):
path = self.history[self.history_pos][:]
ref = path.pop()
- self.servicePath = path
+ del self.servicePath[:]
+ self.servicePath += path
self.saveRoot()
plen = len(path)
root = path[plen-1]