X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/f7473842135096d46bd9d3adfb85bf2c23c8b128..b17019f43527d615589ce2083fb3d2a9058f2c3c:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index f2516c4b..e3caa6e8 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -12,12 +12,12 @@ from Components.ProgressBar import * from Components.ServiceEventTracker import ServiceEventTracker from Components.Sources.CurrentService import CurrentService from Components.Sources.EventInfo import EventInfo +from Components.Sources.RadioText import RadioText 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 +from Components.config import config, ConfigBoolean from EpgSelection import EPGSelection from Plugins.Plugin import PluginDescriptor @@ -44,8 +44,6 @@ import time import os import bisect -from Components.config import config, currentConfigSelectionElement - # hack alert! from Menu import MainMenu, mdom @@ -87,7 +85,9 @@ class InfoBarShowHide: def startHideTimer(self): if self.__state == self.STATE_SHOWN and not self.__locked: - self.hideTimer.start(5000, True) + idx = config.usage.infobar_timeout.index + if idx: + self.hideTimer.start(idx*1000, True) def __onHide(self): self.__state = self.STATE_HIDDEN @@ -192,7 +192,8 @@ class InfoBarNumberZap: # print "You pressed number " + str(number) if number == 0: self.servicelist.recallPrevService() - self.doShow() + if config.usage.show_infobar_on_zap.value: + self.doShow() else: self.session.openWithCallback(self.numberEntered, NumberZap, number) @@ -240,7 +241,7 @@ class InfoBarNumberZap: self.servicelist.setCurrentSelection(service) #select the service in servicelist self.servicelist.zap() -config.misc.initialchannelselection = configElementBoolean("config.misc.initialchannelselection", 1); +config.misc.initialchannelselection = ConfigBoolean(default = True) class InfoBarChannelSelection: """ ChannelSelection - handles the channelSelection dialog and the initial @@ -249,7 +250,7 @@ class InfoBarChannelSelection: #instantiate forever self.servicelist = self.session.instantiateDialog(ChannelSelection) - if config.misc.initialchannelselection.value == 1: + if config.misc.initialchannelselection.value: self.onShown.append(self.firstRun) self["ChannelSelectActions"] = HelpableActionMap(self, "InfobarChannelSelection", @@ -277,7 +278,7 @@ class InfoBarChannelSelection: def firstRun(self): self.onShown.remove(self.firstRun) - config.misc.initialchannelselection.value = 0 + config.misc.initialchannelselection.value = False config.misc.initialchannelselection.save() self.switchChannelDown() @@ -304,7 +305,7 @@ class InfoBarChannelSelection: if prev: prev = prev.toString() while True: - if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes": + if config.usage.quickzap_bouquet_change.value: if self.servicelist.atBegin(): self.servicelist.prevBouquet() self.servicelist.moveUp() @@ -314,7 +315,8 @@ class InfoBarChannelSelection: else: self.servicelist.moveUp() self.servicelist.zap() - self.doShow() + if config.usage.show_infobar_on_zap.value: + self.doShow() def zapDown(self): if self.servicelist.inBouquet(): @@ -322,7 +324,7 @@ class InfoBarChannelSelection: if prev: prev = prev.toString() while True: - if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes" and self.servicelist.atEnd(): + if config.usage.quickzap_bouquet_change.value and self.servicelist.atEnd(): self.servicelist.nextBouquet() else: self.servicelist.moveDown() @@ -332,7 +334,8 @@ class InfoBarChannelSelection: else: self.servicelist.moveDown() self.servicelist.zap() - self.doShow() + if config.usage.show_infobar_on_zap.value: + self.doShow() class InfoBarMenu: """ Handles a menu action, to open the (main) menu """ @@ -528,6 +531,11 @@ class InfoBarEvent: self["Event_Now"] = EventInfo(self.session.nav, EventInfo.NOW) self["Event_Next"] = EventInfo(self.session.nav, EventInfo.NEXT) +class InfoBarRadioText: + """provides radio (RDS) text info display""" + def __init__(self): + self["RadioText"] = RadioText(self.session.nav) + class InfoBarServiceName: def __init__(self): self["CurrentService"] = CurrentService(self.session.nav) @@ -801,13 +809,14 @@ class InfoBarSeek: def checkSkipShowHideLock(self): wantlock = self.seekstate != self.SEEK_STATE_PLAY - if self.lockedBecauseOfSkipping and not wantlock: - self.unlockShow() - self.lockedBecauseOfSkipping = False + if config.usage.show_infobar_on_zap.value: + if self.lockedBecauseOfSkipping and not wantlock: + self.unlockShow() + self.lockedBecauseOfSkipping = False - if wantlock and not self.lockedBecauseOfSkipping: - self.lockShow() - self.lockedBecauseOfSkipping = True + if wantlock and not self.lockedBecauseOfSkipping: + self.lockShow() + self.lockedBecauseOfSkipping = True def __evEOF(self): if self.seekstate != self.SEEK_STATE_PLAY: @@ -827,6 +836,11 @@ class InfoBarSeek: if seekable is not None: seekable.seekRelative(1, diff) + def seekAbsolute(self, abs): + seekable = self.getSeek() + if seekable is not None: + seekable.seekTo(abs) + from Screens.PVRState import PVRState, TimeshiftState class InfoBarPVRState: @@ -922,8 +936,8 @@ 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" + self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR) + print "no ts interface" return 0; if self.timeshift_enabled: @@ -1090,6 +1104,26 @@ class InfoBarExtensions: from Tools.BoundFunction import boundFunction +# depends on InfoBarExtensions +from Components.PluginComponent import plugins + +class InfoBarPlugins: + def __init__(self): + self.addExtension(extension = self.getPluginList, type = InfoBarExtensions.EXTENSION_LIST) + + + def getPluginName(self, name): + return name + + def getPluginList(self): + list = [] + for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU): + list.append(((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None)) + return list + + def runPlugin(self, plugin): + plugin(session = self.session) + # depends on InfoBarExtensions and InfoBarSubtitleSupport class InfoBarSubtitles: def __init__(self): @@ -1112,10 +1146,12 @@ class InfoBarSubtitles: return "Enable Subtitles: " + name def enableSubtitle(self, subtitles): - print "enable subitles", subtitles - self.selected_subtitle = subtitles - self.subtitles_enabled = True - + if self.selected_subtitle != subtitles: + print "enable subtitles", subtitles + self.subtitles_enabled = False + self.selected_subtitle = subtitles + self.subtitles_enabled = True + def subtitlesEnabled(self): return self.subtitles_enabled @@ -1126,11 +1162,10 @@ class InfoBarSubtitles: class InfoBarPiP: def __init__(self): self.session.pipshown = False - - self.addExtension((self.getShowHideName, self.showPiP, self.available), "1") - self.addExtension((self.getMoveName, self.movePiP, self.pipShown), "2") - self.addExtension((self.getSwapName, self.swapPiP, self.pipShown), "3") + 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") def available(self): return True @@ -1379,7 +1414,6 @@ class InfoBarAudioSelection: self.audioChannel.selectChannel(mode[1]) del self.audioChannel - class InfoBarSubserviceSelection: def __init__(self): self["SubserviceSelectionAction"] = HelpableActionMap(self, "InfobarSubserviceSelectionActions", @@ -1429,6 +1463,8 @@ class InfoBarSubserviceSelection: if newservice.valid(): del subservices del service + if config.usage.show_infobar_on_zap.value: + self.doShow() self.session.nav.playService(newservice) def subserviceSelection(self): @@ -1460,6 +1496,8 @@ class InfoBarSubserviceSelection: self.session.open(SubservicesQuickzap, service[2]) else: self["SubserviceQuickzapAction"].setEnabled(True) + if config.usage.show_infobar_on_zap.value: + self.doShow() self.session.nav.playService(service[1]) class InfoBarAdditionalInfo: @@ -1690,10 +1728,10 @@ class InfoBarCueSheetSupport: class InfoBarSummary(Screen): skin = """ - + WithSeconds - + Name """ @@ -1752,7 +1790,7 @@ class InfoBarSubtitleSupport(object): def setSubtitlesEnable(self, enable=True): subtitle = self.getCurrentServiceSubtitle() - if enable and self.__selected_subtitle: + if enable and self.__selected_subtitle is not None: if subtitle and not self.__subtitles_enabled: subtitle.enableSubtitles(self.subtitle_window.instance, self.selected_subtitle) self.subtitle_window.show()