From 5e57d6b68efa092a6a85fdee2c6904c6bd473905 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Mon, 22 May 2006 03:26:50 +0000 Subject: [PATCH] add extension to swap picture in picture with big picture --- lib/python/Screens/InfoBarGenerics.py | 18 ++++++++++-------- lib/python/Screens/PictureInPicture.py | 19 +++++++++++++++++-- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 67212656..13bca8d1 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -1020,6 +1020,7 @@ class InfoBarExtensions: PIPON = 0 PIPOFF = 1 MOVEPIP = 2 + PIPSWAP = 3 def extensions(self): list = [] @@ -1028,29 +1029,30 @@ class InfoBarExtensions: elif self.pipshown == True: list.append((_("Disable Picture in Picture"), self.PIPOFF)) list.append((_("Move Picture in Picture"), self.MOVEPIP)) + list.append((_("Swap services"), self.PIPSWAP)) self.session.openWithCallback(self.extensionCallback, ChoiceBox, title=_("Please choose an extension..."), list = list) def extensionCallback(self, answer): if answer is not None: if answer[1] == self.PIPON: -# self.session.nav.stopService() self.pip = self.session.instantiateDialog(PictureInPicture) - #self.pip.show() newservice = self.session.nav.getCurrentlyPlayingServiceReference() - self.pipservice = eServiceCenter.getInstance().play(newservice) - if self.pipservice and not self.pipservice.setTarget(1): - self.pipservice.start() + + if self.pip.playService(newservice): self.pipshown = True else: - self.pipservice = None + self.pipshown = False del self.pip self.session.nav.playService(newservice) elif answer[1] == self.PIPOFF: - #self.pip.hide() - self.pipservice = None del self.pip self.pipshown = False + elif answer[1] == self.PIPSWAP: + swapservice = self.pip.getCurrentService() + self.pip.playService(self.session.nav.getCurrentlyPlayingServiceReference()) + self.session.nav.playService(swapservice) + elif answer[1] == self.MOVEPIP: self.session.open(PiPSetup, pip = self.pip) diff --git a/lib/python/Screens/PictureInPicture.py b/lib/python/Screens/PictureInPicture.py index 403ecd3d..20cdb236 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 +from enigma import ePoint, eSize, eServiceCenter from Components.VideoWindow import VideoWindow @@ -8,6 +8,7 @@ class PictureInPicture(Screen): Screen.__init__(self, session) self["video"] = VideoWindow() + self.currentService = None def move(self, x, y): print "moving pip to", str(x) + ":" + str(y) @@ -22,4 +23,18 @@ 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): + self.pipservice = eServiceCenter.getInstance().play(service) + 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 + -- 2.30.2