from Screens.MinuteInput import MinuteInput
from Screens.TimerSelection import TimerSelection
from Screens.PictureInPicture import PictureInPicture
+from Screens.SubtitleDisplay import SubtitleDisplay
from ServiceReference import ServiceReference
from Tools import Notifications
"zapUp": (self.zapUp, _("previous channel")),
"zapDown": (self.zapDown, _("next channel")),
"historyBack": (self.historyBack, _("previous channel in history")),
- "historyNext": (self.historyNext, _("next channel in history"))
+ "historyNext": (self.historyNext, _("next channel in history")),
+ "openServiceList": (self.openServiceList, _("open service list")),
})
def firstRun(self):
def switchChannelDown(self):
self.servicelist.moveDown()
self.session.execDialog(self.servicelist)
+
+ def openServiceList(self):
+ self.session.execDialog(self.servicelist)
def zapUp(self):
if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes":
def unPauseService(self):
print "unpause"
+ if self.seekstate == self.SEEK_STATE_PLAY:
+ return 0
self.setSeekState(self.SEEK_STATE_PLAY);
def doSeek(self, seektime):
PIPOFF = 1
MOVEPIP = 2
PIPSWAP = 3
+ ENABLE_SUBTITLE = 4
def extensions(self):
list = []
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(("DEBUG: 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):
elif answer[1] == self.MOVEPIP:
self.session.open(PiPSetup, pip = self.pip)
+ elif answer[1] == self.ENABLE_SUBTITLE:
+ self.selected_subtitle = answer[2]
+ self.subtitles_enabled = True
from RecordTimer import parseEvent
def checkSubservicesAvail(self, ev):
if ev == iPlayableService.evUpdatedEventInfo:
service = self.session.nav.getCurrentService()
- subservices = service.subServices()
- if subservices.getNumberOfSubservices() == 0:
+ subservices = service and service.subServices()
+ if not subservices or subservices.getNumberOfSubservices() == 0:
self["SubserviceQuickzapAction"].setEnabled(False)
def nextSubservice(self):
def changeSubservice(self, direction):
service = self.session.nav.getCurrentService()
- subservices = service.subServices()
- n = subservices.getNumberOfSubservices()
- if n > 0:
+ subservices = service and service.subServices()
+ n = subservices and subservices.getNumberOfSubservices()
+ if n and n > 0:
selection = -1
ref = self.session.nav.getCurrentlyPlayingServiceReference()
for x in range(n):
def subserviceSelection(self):
service = self.session.nav.getCurrentService()
- subservices = service.subServices()
+ subservices = service and service.subServices()
- n = subservices.getNumberOfSubservices()
+ n = subservices and subservices.getNumberOfSubservices()
selection = 0
- if n > 0:
+ if n and n > 0:
ref = self.session.nav.getCurrentlyPlayingServiceReference()
tlist = []
for x in range(n):
def startTeletext(self):
self.teletext_plugin(session=self.session, service=self.session.nav.getCurrentService())
+
+class InfoBarSubtitleSupport(object):
+ def __init__(self):
+ object.__init__(self)
+ self.subtitle_window = self.session.instantiateDialog(SubtitleDisplay)
+ self.__subtitles_enabled = False
+
+ self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+ {
+ iPlayableService.evStart: self.__serviceStarted,
+ })
+
+ def __serviceStarted(self):
+ # reenable if it was enabled
+ r = self.__subtitles_enabled
+ self.__subtitles_enabled = False
+ self.__selected_subtitle = None
+ self.setSubtitlesEnable(r)
+
+ def getCurrentServiceSubtitle(self):
+ service = self.session.nav.getCurrentService()
+ return service and service.subtitle()
+
+ def setSubtitlesEnable(self, enable=True):
+ subtitle = self.getCurrentServiceSubtitle()
+ if enable and self.__selected_subtitle:
+ if subtitle and not self.__subtitles_enabled:
+ subtitle.enableSubtitles(self.subtitle_window.instance, self.selected_subtitle)
+ self.subtitle_window.show()
+ self.__subtitles_enabled = True
+ else:
+ if subtitle:
+ subtitle.disableSubtitles(self.subtitle_window.instance)
+
+ self.subtitle_window.hide()
+ self.__subtitles_enabled = False
+
+ def setSelectedSubtitle(self, subtitle):
+ if self.__selected_subtitle != subtitle and self.subtitles_enabled:
+ # kick
+ self.__selected_subtitle = subtitle
+ self.__serviceStarted()
+ else:
+ self.__selected_subtitle = subtitle
+
+ subtitles_enabled = property(lambda self: self.__subtitles_enabled, setSubtitlesEnable)
+ selected_subtitle = property(lambda self: self.__selected_subtitle, setSelectedSubtitle)