X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3ecd3b8d7f2d52fd7b5956c1fe08f926cc2a2858..95c570d26ce81e3dd1e0610ff6c5c0b34d75ba5a:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index b61436c4..a85bcc97 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -344,12 +344,21 @@ class InfoBarMenu: { "mainMenu": (self.mainMenu, _("Enter main menu...")), }) + self.session.infobar = None def mainMenu(self): print "loading mainmenu XML..." menu = mdom.childNodes[0] assert menu.tagName == "menu", "root element in menu must be 'menu'!" - self.session.open(MainMenu, menu, menu.childNodes) + + self.session.infobar = self + # so we can access the currently active infobar from screens opened from within the mainmenu + # at the moment used from the SubserviceSelection + + self.session.openWithCallback(self.mainMenuClosed, MainMenu, menu, menu.childNodes) + + def mainMenuClosed(self, *val): + self.session.infobar = None class InfoBarSimpleEventView: """ Opens the Eventview for now/next """ @@ -1124,44 +1133,12 @@ class InfoBarPlugins: def runPlugin(self, plugin): plugin(session = self.session) -# depends on InfoBarExtensions and InfoBarSubtitleSupport -class InfoBarSubtitles: - def __init__(self): - self.addExtension((self.getDisableSubtitleName, self.disableSubtitles, self.subtitlesEnabled), "4") - self.addExtension(extension = self.getSubtitleList, type = InfoBarExtensions.EXTENSION_LIST) - - def getDisableSubtitleName(self): - return _("Disable subtitles") - - def getSubtitleList(self): - list = [] - s = self.getCurrentServiceSubtitle() - l = s and s.getSubtitleList() or [ ] - - for x in l: - list.append(((boundFunction(self.getSubtitleEntryName, x[0]), boundFunction(self.enableSubtitle, x[1]), lambda: True), None)) - return list - - def getSubtitleEntryName(self, name): - return "Enable Subtitles: " + name - - def enableSubtitle(self, subtitles): - print "enable subtitles", subtitles - self.selected_subtitle = subtitles - self.subtitles_enabled = True - - def subtitlesEnabled(self): - return self.subtitles_enabled - - def disableSubtitles(self): - self.subtitles_enabled = False - # depends on InfoBarExtensions class InfoBarPiP: def __init__(self): self.session.pipshown = False - self.addExtension((self.getShowHideName, self.showPiP, self.available), "red") + self.addExtension((self.getShowHideName, self.showPiP, self.available), "blue") self.addExtension((self.getMoveName, self.movePiP, self.pipShown), "green") self.addExtension((self.getSwapName, self.swapPiP, self.pipShown), "yellow") @@ -1773,14 +1750,24 @@ class InfoBarSubtitleSupport(object): self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { iPlayableService.evStart: self.__serviceStarted, + iPlayableService.evUpdatedInfo: self.__updatedInfo }) def __serviceStarted(self): - # reenable if it was enabled - r = self.__subtitles_enabled + self.cached_subtitle_checked = False + self.subtitle_window.hide() self.__subtitles_enabled = False - self.__selected_subtitle = None - self.setSubtitlesEnable(r) + + def __updatedInfo(self): + if not self.cached_subtitle_checked: + subtitle = self.getCurrentServiceSubtitle() + self.cached_subtitle_checked = True + if subtitle: + self.__selected_subtitle = subtitle.getCachedSubtitle() + if self.__selected_subtitle: + subtitle.enableSubtitles(self.subtitle_window.instance, self.selected_subtitle) + self.subtitle_window.show() + self.__subtitles_enabled = True def getCurrentServiceSubtitle(self): service = self.session.nav.getCurrentService() @@ -1796,17 +1783,11 @@ class InfoBarSubtitleSupport(object): else: if subtitle: subtitle.disableSubtitles(self.subtitle_window.instance) - - self.subtitle_window.hide() self.__subtitles_enabled = False + self.subtitle_window.hide() 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 + self.__selected_subtitle = subtitle subtitles_enabled = property(lambda self: self.__subtitles_enabled, setSubtitlesEnable) selected_subtitle = property(lambda self: self.__selected_subtitle, setSelectedSubtitle)