X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FInfoBarGenerics.py;h=c5f72e22780b191288b4a0fee96ed3026c60161e;hp=0bb7fd37c3230b9868f8f819926a17225e2edf2d;hb=afa141eedd597d0468d33b97a79f738a9ebfd11f;hpb=e132702d11760f926735d7d59da1b48006cf549a diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py old mode 100644 new mode 100755 index 0bb7fd3..c5f72e2 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -1,4 +1,4 @@ -from ChannelSelection import ChannelSelection, BouquetSelector +from ChannelSelection import ChannelSelection, BouquetSelector, SilentBouquetSelector from Components.ActionMap import ActionMap, HelpableActionMap from Components.ActionMap import NumberActionMap @@ -47,10 +47,12 @@ from Menu import MainMenu, mdom class InfoBarDish: def __init__(self): self.dishDialog = self.session.instantiateDialog(Dish) + self.dishDialog.setAnimationMode(0) class InfoBarUnhandledKey: def __init__(self): self.unhandledKeyDialog = self.session.instantiateDialog(UnhandledKey) + self.unhandledKeyDialog.setAnimationMode(0) self.hideUnhandledKeySymbolTimer = eTimer() self.hideUnhandledKeySymbolTimer.callback.append(self.unhandledKeyDialog.hide) self.checkUnusedTimer = eTimer() @@ -559,6 +561,12 @@ class InfoBarEPG: cnt = 0 else: cnt = len(bouquets) + if config.usage.multiepg_ask_bouquet.value: + self.openMultiServiceEPGAskBouquet(bouquets, cnt, withCallback) + else: + self.openMultiServiceEPGSilent(bouquets, cnt, withCallback) + + def openMultiServiceEPGAskBouquet(self, bouquets, cnt, withCallback): if cnt > 1: # show bouquet list if withCallback: self.bouquetSel = self.session.openWithCallback(self.closed, BouquetSelector, bouquets, self.openBouquetEPG, enableWrapAround=True) @@ -568,6 +576,21 @@ class InfoBarEPG: elif cnt == 1: self.openBouquetEPG(bouquets[0][1], withCallback) + def openMultiServiceEPGSilent(self, bouquets, cnt, withCallback): + root = self.servicelist.getRoot() + rootstr = root.toCompareString() + current = 0 + for bouquet in bouquets: + if bouquet[1].toCompareString() == rootstr: + break + current += 1 + if current >= cnt: + current = 0 + if cnt > 1: # create bouquet list for bouq+/- + self.bouquetSel = SilentBouquetSelector(bouquets, True, self.servicelist.getBouquetNumOffset(root)) + if cnt >= 1: + self.openBouquetEPG(root, withCallback) + def changeServiceCB(self, direction, epg): if self.serviceSel: if direction > 0: @@ -666,6 +689,7 @@ class InfoBarRdsDecoder: """provides RDS and Rass support/display""" def __init__(self): self.rds_display = self.session.instantiateDialog(RdsInfoDisplay) + self.rds_display.setAnimationMode(0) self.rass_interactive = None self.__event_tracker = ServiceEventTracker(screen=self, eventmap= @@ -1084,6 +1108,7 @@ class InfoBarPVRState: def __init__(self, screen=PVRState, force_show = False): self.onPlayStateChanged.append(self.__playStateChanged) self.pvrStateDialog = self.session.instantiateDialog(screen) + self.pvrStateDialog.setAnimationMode(0) self.onShow.append(self._mayShow) self.onHide.append(self.pvrStateDialog.hide) self.force_show = force_show @@ -1297,6 +1322,9 @@ class InfoBarExtensions: "extensions": (self.showExtensionSelection, _("view extensions...")), }, 1) # lower priority + for p in plugins.getPlugins(PluginDescriptor.WHERE_EXTENSIONSINGLE): + p(self) + def addExtension(self, extension, key = None, type = EXTENSION_SINGLE): self.list.append((type, extension, key)) @@ -1353,6 +1381,7 @@ class InfoBarExtensions: answer[1][1]() from Tools.BoundFunction import boundFunction +import inspect # depends on InfoBarExtensions @@ -1364,9 +1393,13 @@ class InfoBarPlugins: return name def getPluginList(self): - list = [((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None, p.name) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU)] - list.sort(key = lambda e: e[2]) # sort by name - return list + l = [] + for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU): + args = inspect.getargspec(p.__call__)[0] + if len(args) == 1 or len(args) == 2 and isinstance(self, InfoBarChannelSelection): + l.append(((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None, p.name)) + l.sort(key = lambda e: e[2]) # sort by name + return l def runPlugin(self, plugin): if isinstance(self, InfoBarChannelSelection): @@ -1433,6 +1466,7 @@ class InfoBarPiP: self.session.pipshown = False else: self.session.pip = self.session.instantiateDialog(PictureInPicture) + self.session.pip.setAnimationMode(0) self.session.pip.show() newservice = self.session.nav.getCurrentlyPlayingServiceReference() if self.session.pip.playService(newservice): @@ -1628,6 +1662,11 @@ class InfoBarInstantRecord: dir = preferredInstantRecordPath() if not dir or not fileExists(dir, 'w'): dir = defaultMoviePath() + + if not fileExists("/hdd", 0): + print "not found /hdd" + system("ln -s /media/hdd /hdd") +# try: stat = os_stat(dir) except: @@ -1797,6 +1836,67 @@ class InfoBarSubserviceSelection: else: del self.selectedSubservice +from Components.Sources.HbbtvApplication import HbbtvApplication +gHbbtvApplication = HbbtvApplication() +class InfoBarRedButton: + def __init__(self): + if not (config.misc.rcused.value == 1): + self["RedButtonActions"] = HelpableActionMap(self, "InfobarRedButtonActions", + { + "activateRedButton": (self.activateRedButton, _("Red button...")), + }) + self["HbbtvApplication"] = gHbbtvApplication + else: + self["HbbtvApplication"] = Boolean(fixed=0) + self["HbbtvApplication"].name = "" #is this a hack? + + self.onHBBTVActivation = [ ] + self.onRedButtonActivation = [ ] + self.onReadyForAIT = [ ] + self.__et = ServiceEventTracker(screen=self, eventmap= + { + iPlayableService.evHBBTVInfo: self.detectedHbbtvApplication, + iPlayableService.evUpdatedInfo: self.updateInfomation + }) + + def updateAIT(self, orgId=0): + for x in self.onReadyForAIT: + try: + x(orgId) + except Exception, ErrMsg: + print ErrMsg + #self.onReadyForAIT.remove(x) + + def updateInfomation(self): + try: + self["HbbtvApplication"].setApplicationName("") + self.updateAIT() + except Exception, ErrMsg: + pass + + def detectedHbbtvApplication(self): + service = self.session.nav.getCurrentService() + info = service and service.info() + try: + for x in info.getInfoObject(iServiceInformation.sHBBTVUrl): + print x + if x[0] in (-1, 1): + self.updateAIT(x[3]) + self["HbbtvApplication"].setApplicationName(x[1]) + break + except Exception, ErrMsg: + pass + + def activateRedButton(self): + service = self.session.nav.getCurrentService() + info = service and service.info() + if info and info.getInfoString(iServiceInformation.sHBBTVUrl) != "": + for x in self.onHBBTVActivation: + x() + elif False: # TODO: other red button services + for x in self.onRedButtonActivation: + x() + class InfoBarAdditionalInfo: def __init__(self): @@ -2135,6 +2235,7 @@ class InfoBarSubtitleSupport(object): def __init__(self): object.__init__(self) self.subtitle_window = self.session.instantiateDialog(SubtitleDisplay) + self.subtitle_window.setAnimationMode(0) self.__subtitles_enabled = False self.__event_tracker = ServiceEventTracker(screen=self, eventmap=