X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/4a5aad8a0d22f84f934f216ca33d1274fc3df89e..86fda4cfacce19566a0557375960d507e720afb6:/lib/python/Screens/InfoBar.py diff --git a/lib/python/Screens/InfoBar.py b/lib/python/Screens/InfoBar.py index 48ff8493..41df2475 100644 --- a/lib/python/Screens/InfoBar.py +++ b/lib/python/Screens/InfoBar.py @@ -1,4 +1,4 @@ -from Tools.Profile import profile, profile_final +from Tools.Profile import profile from Screen import Screen @@ -15,36 +15,35 @@ from Screens.ChoiceBox import ChoiceBox profile("LOAD:InfoBarGenerics") from Screens.InfoBarGenerics import InfoBarShowHide, \ InfoBarNumberZap, InfoBarChannelSelection, InfoBarMenu, InfoBarRdsDecoder, \ - InfoBarEPG, InfoBarEvent, InfoBarServiceName, InfoBarSeek, InfoBarInstantRecord, \ + InfoBarEPG, InfoBarSeek, InfoBarInstantRecord, \ InfoBarAudioSelection, InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, \ - InfoBarSubserviceSelection, InfoBarTuner, InfoBarShowMovies, InfoBarTimeshift, \ + InfoBarSubserviceSelection, InfoBarShowMovies, InfoBarTimeshift, \ InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarSimpleEventView, \ InfoBarSummarySupport, InfoBarMoviePlayerSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, \ InfoBarSubtitleSupport, InfoBarPiP, InfoBarPlugins, InfoBarSleepTimer, InfoBarServiceErrorPopupSupport profile("LOAD:InitBar_Components") -from Components.Sources.Source import ObsoleteSource from Components.ActionMap import HelpableActionMap from Components.config import config -from Components.ServiceEventTracker import ServiceEventTracker +from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase profile("LOAD:HelpableScreen") from Screens.HelpMenu import HelpableScreen -class InfoBar(InfoBarShowHide, +class InfoBar(InfoBarBase, InfoBarShowHide, InfoBarNumberZap, InfoBarChannelSelection, InfoBarMenu, InfoBarEPG, InfoBarRdsDecoder, - InfoBarEvent, InfoBarServiceName, InfoBarInstantRecord, InfoBarAudioSelection, + InfoBarInstantRecord, InfoBarAudioSelection, HelpableScreen, InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, - InfoBarSubserviceSelection, InfoBarTuner, InfoBarTimeshift, InfoBarSeek, + InfoBarSubserviceSelection, InfoBarTimeshift, InfoBarSeek, InfoBarSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, InfoBarPiP, InfoBarPlugins, InfoBarSubtitleSupport, InfoBarSleepTimer, InfoBarServiceErrorPopupSupport, Screen): ALLOW_SUSPEND = True + instance = None def __init__(self, session): Screen.__init__(self, session) - self["actions"] = HelpableActionMap(self, "InfobarActions", { "showMovies": (self.showMovies, _("Play recorded movies...")), @@ -53,11 +52,11 @@ class InfoBar(InfoBarShowHide, }, prio=2) for x in HelpableScreen, \ - InfoBarShowHide, \ + InfoBarBase, InfoBarShowHide, \ InfoBarNumberZap, InfoBarChannelSelection, InfoBarMenu, InfoBarEPG, InfoBarRdsDecoder, \ - InfoBarEvent, InfoBarServiceName, InfoBarInstantRecord, InfoBarAudioSelection, \ + InfoBarInstantRecord, InfoBarAudioSelection, \ InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, InfoBarSubserviceSelection, \ - InfoBarTuner, InfoBarTimeshift, InfoBarSeek, InfoBarSummarySupport, InfoBarTimeshiftState, \ + InfoBarTimeshift, InfoBarSeek, InfoBarSummarySupport, InfoBarTimeshiftState, \ InfoBarTeletextPlugin, InfoBarExtensions, InfoBarPiP, InfoBarSubtitleSupport, InfoBarSleepTimer, \ InfoBarPlugins, InfoBarServiceErrorPopupSupport: x.__init__(self) @@ -65,14 +64,17 @@ class InfoBar(InfoBarShowHide, self.helpList.append((self["actions"], "InfobarActions", [("showMovies", _("view recordings..."))])) self.helpList.append((self["actions"], "InfobarActions", [("showRadio", _("hear radio..."))])) - self["CurrentTime"] = ObsoleteSource(new_source = "global.CurrentTime", removal_date = "2008-01") - self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { iPlayableService.evUpdatedEventInfo: self.__eventInfoChanged }) self.current_begin_time=0 + assert InfoBar.instance is None, "class InfoBar is a singleton class and just one instance of this class is allowed!" + InfoBar.instance = self + + def __onClose(self): + InfoBar.instance = None def __eventInfoChanged(self): if self.execing: @@ -121,9 +123,9 @@ class InfoBar(InfoBarShowHide, if service is not None: self.session.open(MoviePlayer, service) -class MoviePlayer(InfoBarShowHide, \ +class MoviePlayer(InfoBarBase, InfoBarShowHide, \ InfoBarMenu, \ - InfoBarServiceName, InfoBarSeek, InfoBarShowMovies, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications, + InfoBarSeek, InfoBarShowMovies, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications, InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarSimpleEventView, InfoBarMoviePlayerSummarySupport, InfoBarSubtitleSupport, Screen, InfoBarTeletextPlugin, InfoBarServiceErrorPopupSupport): @@ -140,7 +142,7 @@ class MoviePlayer(InfoBarShowHide, \ }) for x in HelpableScreen, InfoBarShowHide, InfoBarMenu, \ - InfoBarServiceName, InfoBarSeek, InfoBarShowMovies, \ + InfoBarBase, InfoBarSeek, InfoBarShowMovies, \ InfoBarAudioSelection, InfoBarNotifications, InfoBarSimpleEventView, \ InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, \ InfoBarMoviePlayerSummarySupport, InfoBarSubtitleSupport, \ @@ -150,6 +152,10 @@ class MoviePlayer(InfoBarShowHide, \ self.lastservice = self.session.nav.getCurrentlyPlayingServiceReference() self.session.nav.playService(service) self.returning = False + self.onClose.append(self.__onClose) + + def __onClose(self): + self.session.nav.playService(self.lastservice) def leavePlayer(self): self.is_closing = True @@ -169,19 +175,19 @@ class MoviePlayer(InfoBarShowHide, \ def leavePlayerConfirmed(self, answer): answer = answer and answer[1] if answer == "quit": - self.session.nav.playService(self.lastservice) config.movielist.last_videodir.cancel() self.close() elif answer == "movielist": ref = self.session.nav.getCurrentlyPlayingServiceReference() self.returning = True self.session.openWithCallback(self.movieSelected, MovieSelection, ref) - self.session.nav.playService(self.lastservice) elif answer == "restart": self.doSeek(0) def doEofInternal(self, playing): - if not playing: + if not self.execing: + return + if not playing : return self.is_closing = True if config.usage.on_movie_eof.value == "ask":