+from Screens.PiPSetup import PiPSetup
+
+class InfoBarExtensions:
+ def __init__(self):
+ self.session.pipshown = False
+
+ self["InstantExtensionsActions"] = HelpableActionMap(self, "InfobarExtensions",
+ {
+ "extensions": (self.extensions, _("view extensions...")),
+ })
+
+ PIPON = 0
+ PIPOFF = 1
+ MOVEPIP = 2
+ PIPSWAP = 3
+ ENABLE_SUBTITLE = 4
+
+ def extensions(self):
+ list = []
+ if self.session.pipshown == False:
+ list.append((_("Activate Picture in Picture"), self.PIPON))
+ elif self.session.pipshown == True:
+ list.append((_("Disable Picture in Picture"), self.PIPOFF))
+ list.append((_("Move Picture in Picture"), self.MOVEPIP))
+ list.append((_("Swap services"), self.PIPSWAP))
+
+ s = self.getCurrentServiceSubtitle()
+ l = s and s.getSubtitleList() or [ ]
+
+ for x in l:
+ list.append(("Enable Subtitles: " + x[0], self.ENABLE_SUBTITLE, x[1]))
+
+ 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.pip = self.session.instantiateDialog(PictureInPicture)
+ newservice = self.session.nav.getCurrentlyPlayingServiceReference()
+ if self.session.pip.playService(newservice):
+ self.session.pipshown = True
+ self.session.pip.servicePath = self.servicelist.getCurrentServicePath()
+ else:
+ self.session.pipshown = False
+ del self.session.pip
+ self.session.nav.playService(newservice)
+ elif answer[1] == self.PIPOFF:
+ del self.session.pip
+ self.session.pipshown = False
+ elif answer[1] == self.PIPSWAP:
+ swapservice = self.session.nav.getCurrentlyPlayingServiceReference()
+ if self.session.pip.servicePath:
+ servicepath = self.servicelist.getCurrentServicePath()
+ ref=servicepath[len(servicepath)-1]
+ pipref=self.session.pip.getCurrentService()
+ self.session.pip.playService(swapservice)
+ self.servicelist.setCurrentServicePath(self.session.pip.servicePath)
+ if pipref.toString() != ref.toString(): # is a subservice ?
+ self.session.nav.stopService() # stop portal
+ self.session.nav.playService(pipref) # start subservice
+ self.session.pip.servicePath=servicepath
+ elif answer[1] == self.MOVEPIP:
+ self.session.open(PiPSetup, pip = self.session.pip)
+ elif answer[1] == self.ENABLE_SUBTITLE:
+ self.selected_subtitle = answer[2]
+ self.subtitles_enabled = True
+