def changeFps(self): subsFps = self.engine.getSubsFps() if subsFps is None: return currIdx = self.fpsChoices.index(str(subsFps)) if currIdx == len(self.fpsChoices) - 1: nextIdx = 0 else: nextIdx = currIdx + 1 self.engine.setSubsFps(fps_float(self.fpsChoices[nextIdx])) self.updateSubtitlesFps() sub = self.engine.getCurrentSub() active = self.engine.renderer.subShown self.updateSubtitle(sub, active) self.updateSubtitlesPosition() self.showStatus(True)
def __init__(self, session, engine, autoSync=False, setSubtitlesFps=False, subtitlesFps=None): desktopWidth = getDesktop(0).size().width() offset = 20 screenWidth = desktopWidth - (2 * offset) widgetWidth = screenWidth / 2 - 5 self.skin = """ <screen position="%d,0" size="%d,140" zPosition="2" backgroundColor="transparent" flags="wfNoBorder"> <widget name="subtitle" position="0,0" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesTime" position="0,35" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesPosition" position="0,70" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesFps" position="0,105" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#6F9EF5" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventName" position="%d,0" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventTime" position="%d,35" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventDuration" position="%d,70" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> </screen>""" % (offset, screenWidth, widgetWidth, widgetWidth, widgetWidth, widgetWidth, widgetWidth + 5, widgetWidth, widgetWidth + 5, widgetWidth, widgetWidth + 5, widgetWidth) Screen.__init__(self, session) HelpableScreen.__init__(self) self.engine = engine self.engine.onRenderSub.append(self.onRenderSub) self.engine.onHideSub.append(self.onHideSub) self.engine.onPositionUpdate.append(self.onUpdateSubPosition) subtitlesFps = subtitlesFps and fps_float(subtitlesFps) if subtitlesFps and str(subtitlesFps) in self.fpsChoices: self.providedSubtitlesFps = subtitlesFps else: self.providedSubtitlesFps = None self.hideTimer = eTimer() self.hideTimer.callback.append(self.hideStatus) self.hideTimerDelay = 5000 self.eventTimer = eTimer() self.eventTimer.callback.append(self.updateEventStatus) self.subtitlesTimer = eTimer() self.subtitlesTimer.callback.append(self.updateSubtitlesTime) self.subtitlesTimerStep = 500 self._baseTime = 0 self._accTime = 0 self.statusLocked = False self['subtitle'] = Label() self['subtitlesPosition'] = Label(_("Subtitles Position") + ":") self['subtitlesTime'] = Label(_("Subtitles Time") + ":") self['subtitlesFps'] = Label(_("Subtitles FPS") + ":") self["eventName"] = Label(_("Event Name") + ":") self["eventTime"] = Label(_("Event Time") + ":") self["eventDuration"] = Label(_("Event Duration") + ":") self['actions'] = HelpableActionMap(self, "SubtitlesDVBActions", { "closePlugin": (self.close, _("close plugin")), "showHideStatus": (self.showHideStatus, _("show/hide subtitles status")), "playPauseSub": (self.playPause, _("play/pause subtitles playback")), "pauseSub": (self.pause, _("pause subtitles playback")), "resumeSub": (self.resume, _("resumes subtitles playback")), "restartSub":(self.restart, _("restarts current subtitle")), "nextSub": (self.nextSkip, _("skip to next subtitle")), "nextSubMinute": (self.nextMinuteSkip, _("skip to next subtitle (minute jump)")), "nextSubManual":(self.nextManual, _("skip to next subtitle by setting time in minutes")), "prevSub":(self.previousSkip, _("skip to previous subtitle")), "prevSubMinute":(self.previousMinuteSkip, _("skip to previous subtitle (minute jump)")), "prevSubManual":(self.previousManual, _("skip previous subtitle by setting time in minutes")), "eventSync":(self.eventSync, _("skip subtitle to current event position")), "changeFps":(self.changeFps, _("change subtitles fps")), }, 0) try: from Screens.InfoBar import InfoBar InfoBar.instance.subtitle_window.hide() except: pass self.onLayoutFinish.append(self.hideStatus) self.onLayoutFinish.append(self.engine.start) self.onLayoutFinish.append(self.startEventTimer) self.onLayoutFinish.append(self.startSubtitlesTimer) self.onLayoutFinish.append(self.showStatusWithTimer) if setSubtitlesFps and self.providedSubtitlesFps: self.onFirstExecBegin.append(self.setProvidedSubtitlesFps) if autoSync: self.onFirstExecBegin.append(self.eventSync) self.onClose.append(self.engine.close) self.onClose.append(self.stopTimers)
def getSubsFps(self): videoFps = getFps(self.session, True) if videoFps is None: return None return fps_float(self.fpsRatio * videoFps)
def __init__(self, session, engine, autoSync=False, setSubtitlesFps=False, subtitlesFps=None): desktopWidth = getDesktop(0).size().width() offset = 20 screenWidth = desktopWidth - (2 * offset) widgetWidth = screenWidth / 2 - 5 self.skin = """ <screen position="%d,0" size="%d,140" zPosition="2" backgroundColor="transparent" flags="wfNoBorder"> <widget name="subtitle" position="0,0" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesTime" position="0,35" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesPosition" position="0,70" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesFps" position="0,105" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#6F9EF5" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventName" position="%d,0" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventTime" position="%d,35" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventDuration" position="%d,70" size="%d,30" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> </screen>""" % (offset, screenWidth, widgetWidth, widgetWidth, widgetWidth, widgetWidth, widgetWidth + 5, widgetWidth, widgetWidth + 5, widgetWidth, widgetWidth + 5, widgetWidth) Screen.__init__(self, session) HelpableScreen.__init__(self) self.engine = engine self.engine.onRenderSub.append(self.onRenderSub) self.engine.onHideSub.append(self.onHideSub) self.engine.onPositionUpdate.append(self.onUpdateSubPosition) subtitlesFps = subtitlesFps and fps_float(subtitlesFps) if subtitlesFps and str(subtitlesFps) in self.fpsChoices: self.providedSubtitlesFps = subtitlesFps else: self.providedSubtitlesFps = None self.hideTimer = eTimer() self.hideTimer.callback.append(self.hideStatus) self.hideTimerDelay = 5000 self.eventTimer = eTimer() self.eventTimer.callback.append(self.updateEventStatus) self.subtitlesTimer = eTimer() self.subtitlesTimer.callback.append(self.updateSubtitlesTime) self.subtitlesTimerStep = 500 self._baseTime = 0 self._accTime = 0 self.statusLocked = False self['subtitle'] = Label() self['subtitlesPosition'] = Label(_("Subtitles Position") + ":") self['subtitlesTime'] = Label(_("Subtitles Time") + ":") self['subtitlesFps'] = Label(_("Subtitles FPS") + ":") self["eventName"] = Label(_("Event Name") + ":") self["eventTime"] = Label(_("Event Time") + ":") self["eventDuration"] = Label(_("Event Duration") + ":") self['actions'] = HelpableActionMap( self, "SubtitlesDVBActions", { "closePlugin": (self.close, _("close plugin")), "showHideStatus": (self.showHideStatus, _("show/hide subtitles status")), "playPauseSub": (self.playPause, _("play/pause subtitles playback")), "pauseSub": (self.pause, _("pause subtitles playback")), "resumeSub": (self.resume, _("resumes subtitles playback")), "restartSub": (self.restart, _("restarts current subtitle")), "nextSub": (self.nextSkip, _("skip to next subtitle")), "nextSubMinute": (self.nextMinuteSkip, _("skip to next subtitle (minute jump)")), "nextSubManual": (self.nextManual, _("skip to next subtitle by setting time in minutes")), "prevSub": (self.previousSkip, _("skip to previous subtitle")), "prevSubMinute": (self.previousMinuteSkip, _("skip to previous subtitle (minute jump)")), "prevSubManual": (self.previousManual, _("skip previous subtitle by setting time in minutes")), "eventSync": (self.eventSync, _("skip subtitle to current event position")), "changeFps": (self.changeFps, _("change subtitles fps")), }, 0) try: from Screens.InfoBar import InfoBar InfoBar.instance.subtitle_window.hide() except: pass self.onLayoutFinish.append(self.hideStatus) self.onLayoutFinish.append(self.engine.start) self.onLayoutFinish.append(self.startEventTimer) self.onLayoutFinish.append(self.startSubtitlesTimer) self.onLayoutFinish.append(self.showStatusWithTimer) if setSubtitlesFps and self.providedSubtitlesFps: self.onFirstExecBegin.append(self.setProvidedSubtitlesFps) if autoSync: self.onFirstExecBegin.append(self.eventSync) self.onClose.append(self.engine.close) self.onClose.append(self.stopTimers)
def __init__(self, session, engine, autoSync=False, setSubtitlesFps=False, subtitlesFps=None): desktopSize = getDesktopSize() windowPosition = (int(0.03 * desktopSize[0]), int(0.05 * desktopSize[1])) windowSize = (int(0.9 * desktopSize[0]), int(0.4 * desktopSize[1])) fontSize = 33 if isFullHD() else 22 leftWidget = (int(0.4 * windowSize[0]), fontSize + 10, fontSize) rightWidget = (int(0.4 * windowSize[0]), fontSize + 10, fontSize) xpos = (int(0.6 * windowSize[0]), ) self.skin = """ <screen position="%d,%d" size="%d,%d" zPosition="2" backgroundColor="transparent" flags="wfNoBorder"> <widget name="subtitle" position="0,0" size="%d,%d" valign="center" halign="left" font="Regular;%d" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesTime" position="0,%d" size="%d,%d" valign="center" halign="left" font="Regular;%d" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesPosition" position="0,%d" size="%d,%d" valign="center" halign="left" font="Regular;%d" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="subtitlesFps" position="0,%d" size="%d,%d" valign="center" halign="left" font="Regular;%d" transparent="1" foregroundColor="#6F9EF5" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventName" position="%d,%d" size="%d,%d" valign="center" halign="left" font="Regular;%d" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventTime" position="%d,%d" size="%d,%d" valign="center" halign="left" font="Regular;%d" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> <widget name="eventDuration" position="%d,%d" size="%d,%d" valign="center" halign="left" font="Regular;%d" transparent="1" foregroundColor="#ffffff" shadowColor="#40101010" shadowOffset="2,2" /> </screen>""" % (windowPosition + windowSize + \ leftWidget + \ (leftWidget[1] + 10,) + leftWidget + \ ((leftWidget[1] + 10) * 2,) + leftWidget + \ ((leftWidget[1] + 10) * 3,) + leftWidget + \ xpos + (0,) + rightWidget + \ xpos + ((rightWidget[1] + 10) * 1,) + rightWidget + \ xpos + ((rightWidget[1] + 10) * 2,) + rightWidget) Screen.__init__(self, session) HelpableScreen.__init__(self) self.engine = engine self.engine.onRenderSub.append(self.onRenderSub) self.engine.onHideSub.append(self.onHideSub) self.engine.onPositionUpdate.append(self.onUpdateSubPosition) subtitlesFps = subtitlesFps and fps_float(subtitlesFps) if subtitlesFps and str(subtitlesFps) in self.fpsChoices: self.providedSubtitlesFps = subtitlesFps else: self.providedSubtitlesFps = None self.hideTimer = eTimer() self.hideTimer_conn = eConnectCallback(self.hideTimer.timeout, self.hideStatus) self.hideTimerDelay = 5000 self.eventTimer = eTimer() self.eventTimer_conn = eConnectCallback(self.eventTimer.timeout, self.updateEventStatus) self.subtitlesTimer = eTimer() self.subtitlesTimer_conn = eConnectCallback( self.subtitlesTimer.timeout, self.updateSubtitlesTime) self.subtitlesTimerStep = 500 self._baseTime = 0 self._accTime = 0 self.statusLocked = False self['subtitle'] = Label() self['subtitlesPosition'] = Label(_("Subtitles Position") + ":") self['subtitlesTime'] = Label(_("Subtitles Time") + ":") self['subtitlesFps'] = Label(_("Subtitles FPS") + ":") self["eventName"] = Label(_("Event Name") + ":") self["eventTime"] = Label(_("Event Time") + ":") self["eventDuration"] = Label(_("Event Duration") + ":") self['actions'] = HelpableActionMap( self, "SubtitlesDVBActions", { "closePlugin": (self.close, _("close plugin")), "showHideStatus": (self.showHideStatus, _("show/hide subtitles status")), "playPauseSub": (self.playPause, _("play/pause subtitles playback")), "pauseSub": (self.pause, _("pause subtitles playback")), "resumeSub": (self.resume, _("resumes subtitles playback")), "restartSub": (self.restart, _("restarts current subtitle")), "nextSub": (self.nextSkip, _("skip to next subtitle")), "nextSubMinute": (self.nextMinuteSkip, _("skip to next subtitle (minute jump)")), "nextSubManual": (self.nextManual, _("skip to next subtitle by setting time in minutes")), "prevSub": (self.previousSkip, _("skip to previous subtitle")), "prevSubMinute": (self.previousMinuteSkip, _("skip to previous subtitle (minute jump)")), "prevSubManual": (self.previousManual, _("skip previous subtitle by setting time in minutes")), "eventSync": (self.eventSync, _("skip subtitle to current event position")), "changeFps": (self.changeFps, _("change subtitles fps")), }, 0) try: from Screens.InfoBar import InfoBar InfoBar.instance.subtitle_window.hide() except: pass self.onLayoutFinish.append(self.hideStatus) self.onLayoutFinish.append(self.engine.start) self.onLayoutFinish.append(self.startEventTimer) self.onLayoutFinish.append(self.startSubtitlesTimer) self.onLayoutFinish.append(self.showStatusWithTimer) if setSubtitlesFps and self.providedSubtitlesFps: self.onFirstExecBegin.append(self.setProvidedSubtitlesFps) if autoSync: self.onFirstExecBegin.append(self.eventSync) self.onClose.append(self.engine.close) self.onClose.append(self.delTimers)