X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/340ad36b95c98a5de43d065c435bdcbdf6100fb8..2b557e7ef4b0518736c5162a501cd9bc743930b3:/lib/python/Screens/PictureInPicture.py diff --git a/lib/python/Screens/PictureInPicture.py b/lib/python/Screens/PictureInPicture.py index 403ecd3d..bd340d88 100644 --- a/lib/python/Screens/PictureInPicture.py +++ b/lib/python/Screens/PictureInPicture.py @@ -1,20 +1,41 @@ from Screens.Screen import Screen -from enigma import ePoint, eSize - +from enigma import ePoint, eSize, eServiceCenter, getBestPlayableServiceReference, eServiceReference from Components.VideoWindow import VideoWindow +from Components.config import config, ConfigPosition + +pip_config_initialized = False class PictureInPicture(Screen): def __init__(self, session): + global pip_config_initialized Screen.__init__(self, session) - self["video"] = VideoWindow() + self.currentService = None + if not pip_config_initialized: + config.av.pip = ConfigPosition(default=[-1, -1, -1, -1], args = (719, 567, 720, 568)) + pip_config_initialized = True + self.onLayoutFinish.append(self.LayoutFinished) + + def LayoutFinished(self): + self.onLayoutFinish.remove(self.LayoutFinished) + x = config.av.pip.value[0] + y = config.av.pip.value[1] + w = config.av.pip.value[2] + h = config.av.pip.value[3] + if x != -1 and y != -1 and w != -1 and h != -1: + self.move(x, y) + self.resize(w, h) def move(self, x, y): - print "moving pip to", str(x) + ":" + str(y) + config.av.pip.value[0] = x + config.av.pip.value[1] = y + config.av.pip.save() self.instance.move(ePoint(x, y)) def resize(self, w, h): - print "resizing pip to", str(w) + "x" + str(h) + config.av.pip.value[2] = w + config.av.pip.value[3] = h + config.av.pip.save() self.instance.resize(eSize(*(w, h))) self["video"].instance.resize(eSize(*(w, h))) @@ -22,4 +43,23 @@ class PictureInPicture(Screen): return ((self.instance.position().x(), self.instance.position().y())) def getSize(self): - return (self.instance.size().width(), self.instance.size().height()) \ No newline at end of file + return (self.instance.size().width(), self.instance.size().height()) + + def playService(self, service): + if service and (service.flags & eServiceReference.isGroup): + ref = getBestPlayableServiceReference(service, eServiceReference()) + else: + 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 +