X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/aa4989974a32ab2437d51fb6352b3eb54cecd83d..ce05a664f5cdd9204e2e1d1754d4d5eccac6a458:/lib/python/Plugins/Extensions/ZappingAlternatives/plugin.py diff --git a/lib/python/Plugins/Extensions/ZappingAlternatives/plugin.py b/lib/python/Plugins/Extensions/ZappingAlternatives/plugin.py index 118f0cb6..d3cfce20 100644 --- a/lib/python/Plugins/Extensions/ZappingAlternatives/plugin.py +++ b/lib/python/Plugins/Extensions/ZappingAlternatives/plugin.py @@ -173,10 +173,11 @@ class AlternativeZapping(Screen): self.updateServices() self.updateAlternatives() - def finishedAlternativeSelection(self, args): - self.alternatives[self["serviceslist"].getCurrent()[1]].append(str(ServiceReference(args))) - addAlternative(self["serviceslist"].getCurrent()[1], str(ServiceReference(args))) - self.updateAlternatives() + def finishedAlternativeSelection(self, *args): + if len(args): + self.alternatives[self["serviceslist"].getCurrent()[1]].append(str(ServiceReference(args))) + addAlternative(self["serviceslist"].getCurrent()[1], str(ServiceReference(args))) + self.updateAlternatives() def updateServices(self): self.serviceslist = [] @@ -216,13 +217,14 @@ class AlternativeZapping(Screen): def greenKey(self): self.session.openWithCallback(self.finishedChannelSelection, SimpleChannelSelection, _("Select reference service")) - def finishedChannelSelection(self, args): - serviceString = str(ServiceReference(args)) - if not self.alternatives.has_key(serviceString): - self.alternatives[serviceString] = [] - self.updateServices() - self.selectService(serviceString) - self.updateAlternatives() + def finishedChannelSelection(self, *args): + if len(args): + serviceString = str(ServiceReference(args[0])) + if not self.alternatives.has_key(serviceString): + self.alternatives[serviceString] = [] + self.updateServices() + self.selectService(serviceString) + self.updateAlternatives() def yellowKey(self): if len(self.serviceslist) > 0: @@ -232,7 +234,7 @@ class AlternativeZapping(Screen): pass -oldPlayService = NavigationInstance.instance.playService +oldPlayService = None from Components.PerServiceDisplay import PerServiceDisplay @@ -274,29 +276,32 @@ class ServiceChanged(PerServiceDisplay): #print "Alternatives: No playable alternative found!" -servicechanged = ServiceChanged(NavigationInstance.instance) +servicechanged = None -def playService(self, ref): +def playService(self, ref, **kwargs): #print "--------------------Alternatives: trying to play service", str(ServiceReference(ref)) - servicechanged.lastPlayAction = str(ServiceReference(ref)) + if ref is not None: + servicechanged.lastPlayAction = str(ServiceReference(ref)) servicechanged.nextPlayTry = 0 - result = oldPlayService(ref) - - + result = oldPlayService(ref, **kwargs) return result -def autostart(reason): +def sessionstart(reason, session, **kwargs): if reason == 0: try: loadAlternatives() - except: + except: # FIXME, THIS IS ILLEGAL CODE AND WILL BE PROSECUTED! pass - NavigationInstance.instance.playService = type(NavigationInstance.instance.playService)(playService, NavigationInstance, Navigation) + # attach to this sessions navigation instance. + global oldPlayService, servicechanged + oldPlayService = session.nav.playService + session.nav.playService = type(session.nav.playService)(playService, NavigationInstance, Navigation) + servicechanged = ServiceChanged(session.nav) def AlternativeZappingSetup(session, **kwargs): session.open(AlternativeZapping) def Plugins(**kwargs): - return [PluginDescriptor(where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart), + return [PluginDescriptor(where = PluginDescriptor.WHERE_SESSIONSTART, fnc = sessionstart), PluginDescriptor(name="Alternative services setup" , description="Defines alternatives for services.", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=AlternativeZappingSetup)]