X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FChannelSelection.py;h=912d67843dadfd08e2142dd237594ba5b7797175;hp=33afb3f3af89d775ef3502e81f6ce6420e4107bd;hb=dc5629b2e25dfa0e0bfba45eba44c5d7385399bf;hpb=dd3cf818ebef5c080a8d49f6663200d284840974;ds=sidebyside diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index 33afb3f..912d678 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -8,7 +8,7 @@ from Components.MenuList import MenuList from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase profile("ChannelSelection.py 1") from EpgSelection import EPGSelection -from enigma import eServiceReference, eEPGCache, eServiceCenter, eRCInput, eTimer, eDVBDB, iPlayableService, iServiceInformation, getPrevAsciiCode +from enigma import eServiceReference, eEPGCache, eServiceCenter, eRCInput, eTimer, eDVBDB, iPlayableService, iServiceInformation, getPrevAsciiCode, eEnv from Components.config import config, ConfigSubsection, ConfigText from Tools.NumericalTextInput import NumericalTextInput profile("ChannelSelection.py 2") @@ -20,7 +20,6 @@ from Components.Sources.ServiceEvent import ServiceEvent profile("ChannelSelection.py 2.3") from Components.Input import Input profile("ChannelSelection.py 3") -from Components.ParentalControl import parentalControl from Components.ChoiceList import ChoiceList, ChoiceEntryComponent from Components.SystemInfo import SystemInfo from Screens.InputBox import InputBox, PinInput @@ -95,6 +94,7 @@ def append_when_current_valid(current, menu, args, level = 0, key = ""): class ChannelContextMenu(Screen): def __init__(self, session, csel): + Screen.__init__(self, session) #raise Exception("we need a better summary screen here") self.csel = csel @@ -124,14 +124,22 @@ class ChannelContextMenu(Screen): isPlayable = not (current_sel_flags & (eServiceReference.isMarker|eServiceReference.isDirectory)) if isPlayable: if config.ParentalControl.configured.value: + from Components.ParentalControl import parentalControl if parentalControl.getProtectionLevel(csel.getCurrentSelection().toCompareString()) == -1: append_when_current_valid(current, menu, (_("add to parental protection"), boundFunction(self.addParentalProtection, csel.getCurrentSelection())), level = 0) else: append_when_current_valid(current, menu, (_("remove from parental protection"), boundFunction(self.removeParentalProtection, csel.getCurrentSelection())), level = 0) if haveBouquets: - append_when_current_valid(current, menu, (_("add service to bouquet"), self.addServiceToBouquetSelected), level = 0) + bouquets = self.csel.getBouquetList() + if bouquets is None: + bouquetCnt = 0 + else: + bouquetCnt = len(bouquets) + if not inBouquet or bouquetCnt > 1: + append_when_current_valid(current, menu, (_("add service to bouquet"), self.addServiceToBouquetSelected), level = 0) else: - append_when_current_valid(current, menu, (_("add service to favourites"), self.addServiceToBouquetSelected), level = 0) + if not inBouquet: + append_when_current_valid(current, menu, (_("add service to favourites"), self.addServiceToBouquetSelected), level = 0) else: if current_root.getPath().find('FROM SATELLITES') != -1: append_when_current_valid(current, menu, (_("remove selected satellite"), self.removeSatelliteServices), level = 0) @@ -202,6 +210,7 @@ class ChannelContextMenu(Screen): self.close() def addParentalProtection(self, service): + from Components.ParentalControl import parentalControl parentalControl.protectService(service.toCompareString()) self.close() @@ -210,6 +219,7 @@ class ChannelContextMenu(Screen): def pinEntered(self, service, result): if result: + from Components.ParentalControl import parentalControl parentalControl.unProtectService(service) self.close() else: @@ -241,7 +251,7 @@ class ChannelContextMenu(Screen): if cnt > 1: # show bouquet list 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]) + self.addCurrentServiceToBouquet(bouquets[0][1], closeBouquetSelection = False) def bouquetSelClosed(self, recursive): self.bsel = None @@ -275,12 +285,12 @@ class ChannelContextMenu(Screen): self.csel.addMarker(marker) self.close() - def addCurrentServiceToBouquet(self, dest): + def addCurrentServiceToBouquet(self, dest, closeBouquetSelection = True): self.csel.addServiceToBouquet(dest) if self.bsel is not None: self.bsel.close(True) else: - self.close(True) # close bouquet selection + self.close(closeBouquetSelection) # close bouquet selection def removeCurrentService(self): self.csel.removeCurrentService() @@ -467,7 +477,7 @@ class ChannelSelectionEdit: if mutableAlternatives: mutableAlternatives.setListName(name) if mutableAlternatives.addService(cur_service.ref): - print "add", cur_service.toString(), "to new alternatives failed" + print "add", cur_service.ref.toString(), "to new alternatives failed" mutableAlternatives.flushChanges() self.servicelist.addService(new_ref.ref, True) self.servicelist.removeCurrent() @@ -552,7 +562,7 @@ class ChannelSelectionEdit: refstr = refstr[pos+14:] pos = refstr.find('"') if pos != -1: - filename = '/etc/enigma2/' + refstr[:pos] # FIXMEEE !!! HARDCODED /etc/enigma2 + filename = eEnv.resolve('${sysconfdir}/enigma2/') + refstr[:pos] self.removeCurrentService() try: if filename is not None: @@ -1418,9 +1428,9 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS self["actions"] = ActionMap(["OkCancelActions", "TvRadioActions"], { - "keyTV": self.closeRadio, - "keyRadio": self.closeRadio, - "cancel": self.closeRadio, + "keyTV": self.cancel, + "keyRadio": self.cancel, + "cancel": self.cancel, "ok": self.channelSelected, }) @@ -1458,7 +1468,7 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS self["RdsActions"].setEnabled(state) ########## RDS Radiotext / Rass Support END - def closeRadio(self): + def cancel(self): self.infobar.rds_display.onRassInteractivePossibilityChanged.remove(self.RassInteractivePossibilityChanged) self.info.hide() #set previous tv service