X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1837e66b4c16260152cc9e98d7331dea368ea565..cffee89d7b3567ee92901f6963108c33ea3ac469:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index f6f50b6d..754b673a 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -3,7 +3,6 @@ from ChannelSelection import ChannelSelection, BouquetSelector from Components.ActionMap import ActionMap, HelpableActionMap from Components.ActionMap import NumberActionMap from Components.BlinkingPixmap import BlinkingPixmapConditional -from Components.Clock import Clock from Components.Harddisk import harddiskmanager from Components.Input import Input from Components.Label import * @@ -15,6 +14,7 @@ from Components.Sources.CurrentService import CurrentService from Components.Sources.EventInfo import EventInfo from Components.Sources.FrontendStatus import FrontendStatus from Components.Sources.Boolean import Boolean +from Components.Sources.Clock import Clock from Components.TimerList import TimerEntryComponent from Components.config import config, configElement, ConfigSubsection, configSequence, configElementBoolean, configSelection, configElement_nonSave, getConfigListEntry from Components.config import configfile, configsequencearg @@ -254,13 +254,13 @@ class InfoBarChannelSelection: self["ChannelSelectActions"] = HelpableActionMap(self, "InfobarChannelSelection", { - "switchChannelUp": self.switchChannelUp, - "switchChannelDown": self.switchChannelDown, + "switchChannelUp": (self.switchChannelUp, _("open servicelist(up)")), + "switchChannelDown": (self.switchChannelDown, _("open servicelist(down)")), "zapUp": (self.zapUp, _("previous channel")), "zapDown": (self.zapDown, _("next channel")), "historyBack": (self.historyBack, _("previous channel in history")), "historyNext": (self.historyNext, _("next channel in history")), - "openServiceList": (self.openServiceList, _("open service list")), + "openServiceList": (self.openServiceList, _("open servicelist")), }) def showTvChannelList(self, zap=False): @@ -299,16 +299,36 @@ class InfoBarChannelSelection: self.session.execDialog(self.servicelist) def zapUp(self): - if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes": - if self.servicelist.inBouquet() and self.servicelist.atBegin(): - self.servicelist.prevBouquet() - self.servicelist.moveUp() + if self.servicelist.inBouquet(): + prev = self.servicelist.getCurrentSelection() + if prev: + prev = prev.toString() + while True: + if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes": + if self.servicelist.atBegin(): + self.servicelist.prevBouquet() + self.servicelist.moveUp() + cur = self.servicelist.getCurrentSelection() + if not cur or (not (cur.flags & 64)) or cur.toString() == prev: + break + else: + self.servicelist.moveUp() self.servicelist.zap() self.doShow() def zapDown(self): - if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes" and self.servicelist.inBouquet() and self.servicelist.atEnd(): - self.servicelist.nextBouquet() + if self.servicelist.inBouquet(): + prev = self.servicelist.getCurrentSelection() + if prev: + prev = prev.toString() + while True: + if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes" and self.servicelist.atEnd(): + self.servicelist.nextBouquet() + else: + self.servicelist.moveDown() + cur = self.servicelist.getCurrentSelection() + if not cur or (not (cur.flags & 64)) or cur.toString() == prev: + break else: self.servicelist.moveDown() self.servicelist.zap() @@ -319,7 +339,7 @@ class InfoBarMenu: def __init__(self): self["MenuActions"] = HelpableActionMap(self, "InfobarMenuActions", { - "mainMenu": (self.mainMenu, "Enter main menu..."), + "mainMenu": (self.mainMenu, _("Enter main menu...")), }) def mainMenu(self): @@ -559,13 +579,13 @@ class InfoBarSeek: self["SeekActions"] = InfoBarSeekActionMap(self, "InfobarSeekActions", { - "pauseService": (self.pauseService, "pause"), - "unPauseService": (self.unPauseService, "continue"), + "pauseService": (self.pauseService, _("pause")), + "unPauseService": (self.unPauseService, _("continue")), - "seekFwd": (self.seekFwd, "skip forward"), + "seekFwd": (self.seekFwd, _("skip forward")), "seekFwdDown": self.seekFwdDown, "seekFwdUp": self.seekFwdUp, - "seekBack": (self.seekBack, "skip backward"), + "seekBack": (self.seekBack, _("skip backward")), "seekBackDown": self.seekBackDown, "seekBackUp": self.seekBackUp, }, prio=-1) @@ -829,7 +849,6 @@ class InfoBarTimeshiftState(InfoBarPVRState): def __init__(self): InfoBarPVRState.__init__(self, screen=TimeshiftState) - class InfoBarShowMovies: # i don't really like this class. @@ -875,8 +894,8 @@ class InfoBarTimeshift: def __init__(self): self["TimeshiftActions"] = HelpableActionMap(self, "InfobarTimeshiftActions", { - "timeshiftStart": (self.startTimeshift, "start timeshift"), # the "yellow key" - "timeshiftStop": (self.stopTimeshift, "stop timeshift") # currently undefined :), probably 'TV' + "timeshiftStart": (self.startTimeshift, _("start timeshift")), # the "yellow key" + "timeshiftStop": (self.stopTimeshift, _("stop timeshift")) # currently undefined :), probably 'TV' }, prio=1) self["TimeshiftActivateActions"] = ActionMap(["InfobarTimeshiftActivateActions"], { @@ -903,9 +922,9 @@ class InfoBarTimeshift: print "enable timeshift" ts = self.getTimeshift() if ts is None: - self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR) - print "no ts interface" - return +# self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR) +# print "no ts interface" + return 0; if self.timeshift_enabled: print "hu, timeshift already enabled?" @@ -913,10 +932,10 @@ class InfoBarTimeshift: if not ts.startTimeshift(): import time self.timeshift_enabled = 1 - + # we remove the "relative time" for now. #self.pvrStateDialog["timeshift"].setRelative(time.time()) - + # PAUSE. self.setSeekState(self.SEEK_STATE_PAUSE) @@ -928,11 +947,11 @@ class InfoBarTimeshift: def stopTimeshift(self): if not self.timeshift_enabled: - return + return 0 print "disable timeshift" ts = self.getTimeshift() if ts is None: - return + return 0 self.session.openWithCallback(self.stopTimeshiftConfirmed, MessageBox, _("Stop Timeshift?"), MessageBox.TYPE_YESNO) def stopTimeshiftConfirmed(self, confirmed): @@ -1008,7 +1027,7 @@ class InfoBarExtensions: self["InstantExtensionsActions"] = HelpableActionMap(self, "InfobarExtensions", { - "extensions": (self.extensions, "Extensions..."), + "extensions": (self.extensions, _("view extensions...")), }) PIPON = 0 @@ -1030,7 +1049,7 @@ class InfoBarExtensions: l = s and s.getSubtitleList() or [ ] for x in l: - list.append(("DEBUG: Enable Subtitles: " + x[0], self.ENABLE_SUBTITLE, x[1])) + list.append(("Enable Subtitles: " + x[0], self.ENABLE_SUBTITLE, x[1])) self.session.openWithCallback(self.extensionCallback, ChoiceBox, title=_("Please choose an extension..."), list = list) @@ -1075,7 +1094,7 @@ class InfoBarInstantRecord: def __init__(self): self["InstantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord", { - "instantRecord": (self.instantRecord, "Instant Record..."), + "instantRecord": (self.instantRecord, _("Instant Record...")), }) self.recording = [] self["BlinkingPoint"] = BlinkingPixmapConditional() @@ -1187,7 +1206,7 @@ class InfoBarInstantRecord: except: self.session.open(MessageBox, _("No HDD found or HDD not initialized!"), MessageBox.TYPE_ERROR) return - + if self.isInstantRecordRunning(): self.session.openWithCallback(self.recordQuestionCallback, ChoiceBox, title=_("A recording is currently running.\nWhat do you want to do?"), list=[(_("stop recording"), "stop"), (_("change recording (duration)"), "changeduration"), (_("add recording (indefinitely)"), "indefinitely"), (_("add recording (stop after current event)"), "event"), (_("add recording (enter recording duration)"), "manualduration"), (_("do nothing"), "no")]) else: @@ -1199,7 +1218,7 @@ class InfoBarAudioSelection: def __init__(self): self["AudioSelectionAction"] = HelpableActionMap(self, "InfobarAudioSelectionActions", { - "audioSelection": (self.audioSelection, "Audio Options..."), + "audioSelection": (self.audioSelection, _("Audio Options...")), }) def audioSelection(self): @@ -1424,6 +1443,9 @@ class InfoBarCueSheetSupport: CUT_TYPE_IN = 0 CUT_TYPE_OUT = 1 CUT_TYPE_MARK = 2 + CUT_TYPE_LAST = 3 + + ENABLE_RESUME_SUPPORT = False def __init__(self): self["CueSheetActions"] = HelpableActionMap(self, "InfobarCueSheetActions", @@ -1434,14 +1456,34 @@ class InfoBarCueSheetSupport: }, prio=1) self.cut_list = [ ] + self.is_closing = False self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { iPlayableService.evStart: self.__serviceStarted, }) def __serviceStarted(self): + if self.is_closing: + return print "new service started! trying to download cuts!" self.downloadCuesheet() + + if self.ENABLE_RESUME_SUPPORT: + last = None + + for (pts, what) in self.cut_list: + if what == self.CUT_TYPE_LAST: + last = pts + + if last is not None: + self.resume_point = last + Notifications.AddNotificationWithCallback(self.playLastCB, MessageBox, _("Do you want to resume this playback?"), timeout=10) + + def playLastCB(self, answer): + if answer == True: + seekable = self.__getSeekable() + if seekable is not None: + seekable.seekTo(self.resume_point) def __getSeekable(self): service = self.session.nav.getCurrentService() @@ -1543,14 +1585,18 @@ class InfoBarCueSheetSupport: class InfoBarSummary(Screen): skin = """ - - + + WithSeconds + + + Name + """ def __init__(self, session, parent): Screen.__init__(self, session) self["CurrentService"] = CurrentService(self.session.nav) - self["Clock"] = Clock() + self["CurrentTime"] = Clock() class InfoBarSummarySupport: def __init__(self): @@ -1569,7 +1615,7 @@ class InfoBarTeletextPlugin: if self.teletext_plugin is not None: self["TeletextActions"] = HelpableActionMap(self, "InfobarTeletextActions", { - "startTeletext": (self.startTeletext, "View teletext...") + "startTeletext": (self.startTeletext, _("View teletext...")) }) else: print "no teletext plugin found!"