From 2b557e7ef4b0518736c5162a501cd9bc743930b3 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Thu, 30 Nov 2006 20:03:35 +0000 Subject: more changes for service groups (replacement for zapping alternatives plugin).. now its basicaly working.. TODO: change zapping alternatives editor for new style --- lib/python/Screens/ChannelSelection.py | 7 +++---- lib/python/Screens/EventView.py | 4 ++-- lib/python/Screens/InfoBarGenerics.py | 2 +- lib/python/Screens/PictureInPicture.py | 21 +++++++++++++-------- lib/python/Tools/XMLTools.py | 2 +- 5 files changed, 20 insertions(+), 16 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index 8d728f0c..6a5605c7 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -1043,7 +1043,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect if ref is None or ref != nref: self.session.nav.playService(nref) self.saveRoot() - self.saveChannel() + self.saveChannel(nref) config.servicelist.lastmode.save() self.addToHistory(nref) @@ -1086,7 +1086,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect self.setRoot(root) self.session.nav.playService(ref) self.setCurrentSelection(ref) - self.saveChannel() + self.saveChannel(ref) def saveRoot(self): path = '' @@ -1123,8 +1123,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect return True return False - def saveChannel(self): - ref = self.session.nav.getCurrentlyPlayingServiceReference() + def saveChannel(self, ref): if ref is not None: refstr = ref.toString() else: diff --git a/lib/python/Screens/EventView.py b/lib/python/Screens/EventView.py index 8a684ead..82bca9fd 100644 --- a/lib/python/Screens/EventView.py +++ b/lib/python/Screens/EventView.py @@ -3,7 +3,7 @@ from Components.ActionMap import ActionMap from Components.Button import Button from Components.Label import Label from Components.ScrollLabel import ScrollLabel -from enigma import eServiceEventPtr, eEPGCache, eTimer +from enigma import eServiceEventPtr, eEPGCache, eTimer, eServiceReference from ServiceReference import ServiceReference from RecordTimer import RecordTimerEntry, parseEvent from TimerEntry import TimerEntry @@ -14,7 +14,7 @@ class EventViewBase: self.similarEPGCB = similarEPGCB self.cbFunc = callback self.currentService=Ref - self.isRecording = len(Ref.ref.getPath()) + self.isRecording = (not Ref.ref.flags & eServiceReference.isGroup) and len(Ref.ref.getPath()) self.event = Event self["epg_description"] = ScrollLabel() self["datetime"] = Label() diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 3ec37c64..ed8149e4 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -425,7 +425,7 @@ class InfoBarEPG: service = servicelist.getNext() if not service.valid(): #check if end of list break - if service.flags: #ignore non playable services + if service.flags & (eServiceReference.isDirectory | eServiceReference.isMarker): #ignore non playable services continue services.append(ServiceReference(service)) return services diff --git a/lib/python/Screens/PictureInPicture.py b/lib/python/Screens/PictureInPicture.py index 5c496833..bd340d88 100644 --- a/lib/python/Screens/PictureInPicture.py +++ b/lib/python/Screens/PictureInPicture.py @@ -1,5 +1,5 @@ from Screens.Screen import Screen -from enigma import ePoint, eSize, eServiceCenter +from enigma import ePoint, eSize, eServiceCenter, getBestPlayableServiceReference, eServiceReference from Components.VideoWindow import VideoWindow from Components.config import config, ConfigPosition @@ -46,14 +46,19 @@ class PictureInPicture(Screen): return (self.instance.size().width(), self.instance.size().height()) def playService(self, service): - self.pipservice = eServiceCenter.getInstance().play(service) - if self.pipservice and not self.pipservice.setTarget(1): - self.pipservice.start() - self.currentService = service - return True + if service and (service.flags & eServiceReference.isGroup): + ref = getBestPlayableServiceReference(service, eServiceReference()) else: - self.pipservice = None - return False + ref = service + if ref: + self.pipservice = eServiceCenter.getInstance().play(ref) + if self.pipservice and not self.pipservice.setTarget(1): + self.pipservice.start() + self.currentService = service + return True + else: + self.pipservice = None + return False def getCurrentService(self): return self.currentService diff --git a/lib/python/Tools/XMLTools.py b/lib/python/Tools/XMLTools.py index e248c80e..72b90388 100644 --- a/lib/python/Tools/XMLTools.py +++ b/lib/python/Tools/XMLTools.py @@ -24,4 +24,4 @@ def mergeText(nodelist): return rc def stringToXML(text): - return text.replace('&', '&').replace('<', '<').replace('>', '>').replace("'", ''').replace('"', '"') + return text.replace('&', '&').replace('<', '<').replace('>', '>').replace("'", ''').replace('"', '"') -- cgit v1.2.3