X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FAudioSelection.py;h=715d922df6aafa4440c9623de44aa946c2ce76f5;hp=068da8708c4699a2677bea9a666f8dde3d146f65;hb=0fee8bdaa26f854460b63475c91f1f2cf762594b;hpb=13fa6a99a041ecae345d3a3f5e4ace9d23815a8a diff --git a/lib/python/Screens/AudioSelection.py b/lib/python/Screens/AudioSelection.py old mode 100644 new mode 100755 index 068da87..715d922 --- a/lib/python/Screens/AudioSelection.py +++ b/lib/python/Screens/AudioSelection.py @@ -1,15 +1,17 @@ from Screen import Screen +from Screens.Setup import getConfigMenuItem from Components.ServiceEventTracker import ServiceEventTracker -from Components.ActionMap import ActionMap +from Components.ActionMap import NumberActionMap from Components.ConfigList import ConfigListScreen from Components.ChoiceList import ChoiceList, ChoiceEntryComponent from Components.config import config, ConfigSubsection, getConfigListEntry, ConfigNothing, ConfigSelection, ConfigOnOff +from Components.Label import Label from Components.MultiContent import MultiContentEntryText from Components.Sources.List import List from Components.Sources.Boolean import Boolean from Components.SystemInfo import SystemInfo -from enigma import iPlayableService +from enigma import iPlayableService, eTimer, eSize from Tools.ISO639 import LanguageCodes from Tools.BoundFunction import boundFunction @@ -36,7 +38,7 @@ class AudioSelection(Screen, ConfigListScreen): self.cached_subtitle_checked = False self.__selected_subtitle = None - self["actions"] = ActionMap(["ColorActions", "SetupActions", "DirectionActions"], + self["actions"] = NumberActionMap(["ColorActions", "SetupActions", "DirectionActions"], { "red": self.keyRed, "green": self.keyGreen, @@ -46,6 +48,15 @@ class AudioSelection(Screen, ConfigListScreen): "cancel": self.cancel, "up": self.keyUp, "down": self.keyDown, + "1": self.keyNumberGlobal, + "2": self.keyNumberGlobal, + "3": self.keyNumberGlobal, + "4": self.keyNumberGlobal, + "5": self.keyNumberGlobal, + "6": self.keyNumberGlobal, + "7": self.keyNumberGlobal, + "8": self.keyNumberGlobal, + "9": self.keyNumberGlobal, }, -2) self.settings = ConfigSubsection() @@ -71,19 +82,23 @@ class AudioSelection(Screen, ConfigListScreen): if SystemInfo["CanDownmixAC3"]: self.settings.downmix = ConfigOnOff(default=config.av.downmix_ac3.value) self.settings.downmix.addNotifier(self.changeAC3Downmix, initial_call = False) - conflist.append(getConfigListEntry(_("AC3 downmix"), self.settings.downmix)) + conflist.append(getConfigListEntry(_("Dolby Digital / DTS downmix"), self.settings.downmix)) self["key_red"].setBoolean(True) if n > 0: self.audioChannel = service.audioChannel() - choicelist = [("0",_("left")), ("1",_("stereo")), ("2", _("right"))] - self.settings.channelmode = ConfigSelection(choices = choicelist, default = str(self.audioChannel.getCurrentChannel())) - self.settings.channelmode.addNotifier(self.changeMode, initial_call = False) - conflist.append(getConfigListEntry(_("Channel"), self.settings.channelmode)) - self["key_green"].setBoolean(True) + if self.audioChannel: + choicelist = [("0",_("left")), ("1",_("stereo")), ("2", _("right"))] + self.settings.channelmode = ConfigSelection(choices = choicelist, default = str(self.audioChannel.getCurrentChannel())) + self.settings.channelmode.addNotifier(self.changeMode, initial_call = False) + conflist.append(getConfigListEntry(_("Channel"), self.settings.channelmode)) + self["key_green"].setBoolean(True) + else: + conflist.append(('',)) + self["key_green"].setBoolean(False) selectedAudio = self.audioTracks.getCurrentTrack() for x in range(n): - number = str(x) + number = str(x + 1) i = audio.getTrackInfo(x) languages = i.getLanguage().split('/') description = i.getDescription() or _("") @@ -116,9 +131,13 @@ class AudioSelection(Screen, ConfigListScreen): elif self.settings.menupage.getValue() == PAGE_SUBTITLES: self.setTitle(_("Subtitle selection")) conflist.append(('',)) - conflist.append(('',)) self["key_red"].setBoolean(False) - self["key_green"].setBoolean(False) + if self.infobar.selected_subtitle: + conflist.append(getConfigListEntry(_("Subtitle Quickmenu"), ConfigNothing())) + self["key_green"].setBoolean(True) + else: + conflist.append(('',)) + self["key_green"].setBoolean(False) if self.subtitlesEnabled(): sel = self.infobar.selected_subtitle @@ -136,7 +155,7 @@ class AudioSelection(Screen, ConfigListScreen): language = _("") selected = "" - if sel and x[:4] == sel[:4]: + if sel and x == sel: selected = _("Running") selectedidx = idx @@ -218,7 +237,7 @@ class AudioSelection(Screen, ConfigListScreen): config.av.downmix_ac3.save() def changeMode(self, mode): - if mode is not None: + if mode is not None and self.audioChannel: self.audioChannel.selectChannel(int(mode.getValue())) def changeAudio(self, audio): @@ -236,7 +255,10 @@ class AudioSelection(Screen, ConfigListScreen): def keyRight(self, config = False): if config or self.focus == FOCUS_CONFIG: if self["config"].getCurrentIndex() < 3: - ConfigListScreen.keyRight(self) + if self["config"].getCurrentIndex() == 1 and self.settings.menupage.getValue() == PAGE_SUBTITLES and self.infobar.selected_subtitle: + self.session.open(QuickSubtitlesConfigMenu, self.infobar) + else: + ConfigListScreen.keyRight(self) elif hasattr(self, "plugincallfunc"): self.plugincallfunc() if self.focus == FOCUS_STREAMS and self["streams"].count() and config == False: @@ -285,11 +307,16 @@ class AudioSelection(Screen, ConfigListScreen): elif self.focus == FOCUS_STREAMS: self["streams"].selectNext() + def keyNumberGlobal(self, number): + if number <= len(self["streams"].list): + self["streams"].setIndex(number-1) + self.keyOk() + def keyOk(self): if self.focus == FOCUS_STREAMS and self["streams"].list: cur = self["streams"].getCurrent() if self.settings.menupage.getValue() == PAGE_AUDIO and cur[0] is not None: - self.changeAudio(cur[2]) + self.changeAudio(cur[0]) self.__updatedInfo() if self.settings.menupage.getValue() == PAGE_SUBTITLES and cur[0] is not None: if self.infobar.selected_subtitle == cur[0]: @@ -311,3 +338,107 @@ class SubtitleSelection(AudioSelection): def __init__(self, session, infobar=None): AudioSelection.__init__(self, session, infobar, page=PAGE_SUBTITLES) self.skinName = ["AudioSelection"] + +class QuickSubtitlesConfigMenu(ConfigListScreen, Screen): + skin = """ + + + + """ + + def __init__(self, session, infobar): + Screen.__init__(self, session) + self.skin = QuickSubtitlesConfigMenu.skin + self.infobar = infobar or self.session.infobar + + self.wait = eTimer() + self.wait.timeout.get().append(self.resyncSubtitles) + + self["videofps"] = Label("") + + sub = self.infobar.selected_subtitle + if sub[0] == 0: # dvb + menu = [ + getConfigMenuItem("config.subtitles.subtitle_fontcolor"), + getConfigMenuItem("config.subtitles.dvb_subtitles_centered"), + getConfigMenuItem("config.subtitles.subtitle_bgopacity"), + getConfigMenuItem("config.subtitles.subtitle_original_position"), + getConfigMenuItem("config.subtitles.subtitle_position"), + getConfigMenuItem("config.subtitles.subtitle_bad_timing_delay"), + getConfigMenuItem("config.subtitles.subtitle_noPTSrecordingdelay"), + ] + elif sub[0] == 1: # teletext + menu = [ + getConfigMenuItem("config.subtitles.subtitle_fontcolor"), + getConfigMenuItem("config.subtitles.subtitle_fontsize"), + getConfigMenuItem("config.subtitles.subtitle_opacity"), + getConfigMenuItem("config.subtitles.subtitle_bgcolor"), + getConfigMenuItem("config.subtitles.subtitle_bgopacity"), + getConfigMenuItem("config.subtitles.subtitle_edgestyle"), + getConfigMenuItem("config.subtitles.subtitle_edgestyle_level"), + getConfigMenuItem("config.subtitles.subtitle_original_position"), + getConfigMenuItem("config.subtitles.subtitle_alignment"), + getConfigMenuItem("config.subtitles.subtitle_position"), + getConfigMenuItem("config.subtitles.subtitle_rewrap"), + getConfigMenuItem("config.subtitles.subtitle_bad_timing_delay"), + getConfigMenuItem("config.subtitles.subtitle_noPTSrecordingdelay"), + ] + else: # pango + menu = [ + getConfigMenuItem("config.subtitles.subtitle_fontcolor"), + getConfigMenuItem("config.subtitles.subtitle_fontsize"), + getConfigMenuItem("config.subtitles.subtitle_opacity"), + getConfigMenuItem("config.subtitles.subtitle_bgcolor"), + getConfigMenuItem("config.subtitles.subtitle_bgopacity"), + getConfigMenuItem("config.subtitles.subtitle_edgestyle"), + getConfigMenuItem("config.subtitles.subtitle_edgestyle_level"), + getConfigMenuItem("config.subtitles.subtitle_original_position"), + getConfigMenuItem("config.subtitles.subtitle_alignment"), + getConfigMenuItem("config.subtitles.subtitle_position"), + getConfigMenuItem("config.subtitles.pango_subtitle_fontswitch"), + getConfigMenuItem("config.subtitles.colourise_dialogs"), + getConfigMenuItem("config.subtitles.subtitle_rewrap"), + getConfigMenuItem("config.subtitles.pango_subtitles_delay"), + getConfigMenuItem("config.subtitles.pango_subtitles_fps"), + ] + self["videofps"].setText(_("Video: %s fps") % (self.getFps().rstrip(".000"))) + + ConfigListScreen.__init__(self, menu, self.session, on_change = self.changedEntry) + + self["actions"] = NumberActionMap(["SetupActions"], + { + "cancel": self.cancel, + "ok": self.ok, + },-2) + + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + if not self["videofps"].text: + self.instance.resize(eSize(self.instance.size().width(), self["config"].l.getItemSize().height()*len(self["config"].getList()) + 10)) + + def changedEntry(self): + if self["config"].getCurrent() in [getConfigMenuItem("config.subtitles.pango_subtitles_delay"),getConfigMenuItem("config.subtitles.pango_subtitles_fps")]: + self.wait.start(500, True) + + def resyncSubtitles(self): + self.infobar.setSeekState(self.infobar.SEEK_STATE_PAUSE) + self.infobar.setSeekState(self.infobar.SEEK_STATE_PLAY) + + def getFps(self): + from enigma import iServiceInformation + service = self.session.nav.getCurrentService() + info = service and service.info() + if not info: + return "" + fps = info.getInfo(iServiceInformation.sFrameRate) + if fps > 0: + return "%6.3f" % (fps/1000.) + return "" + + def cancel(self): + self.close() + + def ok(self): + config.subtitles.save() + self.close()