X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FAudioSelection.py;h=715d922df6aafa4440c9623de44aa946c2ce76f5;hp=a5e09c0ba8d1c57fc315b9620e43afefb937cef8;hb=0fee8bdaa26f854460b63475c91f1f2cf762594b;hpb=fc1dd11742a464ade58d161b25e9cf59f6998634 diff --git a/lib/python/Screens/AudioSelection.py b/lib/python/Screens/AudioSelection.py old mode 100644 new mode 100755 index a5e09c0..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 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 @@ -80,7 +82,7 @@ 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: @@ -129,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 @@ -249,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: @@ -329,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()