X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b356016054ad071ce47cdc9028ea305019f270f4..bcbd5801c2be23b2ee1a22e7b088fc2fb654f1c9:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index dfbb3f47..2227f8b9 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -1279,10 +1279,7 @@ class InfoBarPlugins: # depends on InfoBarExtensions class InfoBarSleepTimer: def __init__(self): - self.addExtension((self.getSleepTimerName, self.showSleepTimerSetup, self.available), "1") - - def available(self): - return True + self.addExtension((self.getSleepTimerName, self.showSleepTimerSetup, lambda: True), "1") def getSleepTimerName(self): return _("Sleep Timer") @@ -1295,13 +1292,10 @@ class InfoBarPiP: def __init__(self): self.session.pipshown = False if SystemInfo.get("NumVideoDecoders", 1) > 1: - self.addExtension((self.getShowHideName, self.showPiP, self.available), "blue") + self.addExtension((self.getShowHideName, self.showPiP, lambda: True), "blue") self.addExtension((self.getMoveName, self.movePiP, self.pipShown), "green") self.addExtension((self.getSwapName, self.swapPiP, self.pipShown), "yellow") - def available(self): - return SystemInfo.get("NumVideoDecoders", 1) > 1 - def pipShown(self): return self.session.pipshown @@ -1362,7 +1356,7 @@ class InfoBarPiP: elif "stop" == use: self.showPiP() -from RecordTimer import parseEvent +from RecordTimer import parseEvent, RecordTimerEntry class InfoBarInstantRecord: """Instant Record - handles the instantRecord action in order to @@ -1412,10 +1406,14 @@ class InfoBarInstantRecord: if limitEvent: self.session.open(MessageBox, _("No event info found, recording indefinitely."), MessageBox.TYPE_INFO) - data = (begin, end, name, description, eventid) + # TODO: needed? + if isinstance(serviceref, eServiceReference): + serviceref = ServiceReference(serviceref) - recording = self.session.nav.recordWithTimer(serviceref, *data) + recording = RecordTimerEntry(serviceref, begin, end, name, description, eventid, dirname = config.movielist.last_videodir.value) recording.dontSave = True + + self.session.nav.RecordTimer.record(recording) self.recording.append(recording) def isInstantRecordRunning(self): @@ -1526,10 +1524,8 @@ class InfoBarAudioSelection: def audioSelection(self): service = self.session.nav.getCurrentService() - audio = service and service.audioTracks() - self.audioTracks = audio + self.audioTracks = audio = service and service.audioTracks() n = audio and audio.getNumberOfTracks() or 0 - keys = [ "red", "", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] + [""]*n tlist = [] if n > 0: self.audioChannel = service.audioChannel() @@ -1549,21 +1545,45 @@ class InfoBarAudioSelection: tlist.append((description, x)) - selectedAudio = audio.getCurrentTrack() tlist.sort(key=lambda x: x[0]) - selection = 2 + selectedAudio = self.audioTracks.getCurrentTrack() + + selection = 0 + for x in tlist: if x[1] != selectedAudio: selection += 1 else: break - tlist = [([_("Left"), _("Stereo"), _("Right")][self.audioChannel.getCurrentChannel()], "mode"), ("--", "")] + tlist + if SystemInfo["CanDownmixAC3"]: + tlist = [(_("AC3 downmix") + " - " +[_("Off"), _("On")][config.av.downmix_ac3.value and 1 or 0], "CALLFUNC", self.changeAC3Downmix), + ([_("Left"), _("Stereo"), _("Right")][self.audioChannel.getCurrentChannel()], "mode"), + ("--", "")] + tlist + keys = [ "red", "green", "", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] + [""]*n + selection += 3 + else: + tlist = [([_("Left"), _("Stereo"), _("Right")][self.audioChannel.getCurrentChannel()], "mode"), ("--", "")] + tlist + keys = [ "red", "", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] + [""]*n + selection += 2 self.session.openWithCallback(self.audioSelected, ChoiceBox, title=_("Select audio track"), list = tlist, selection = selection, keys = keys) else: del self.audioTracks + def changeAC3Downmix(self, arg): + choicelist = self.session.current_dialog["list"] + list = choicelist.list + t = list[0][1] + list[0][1]=(t[0], t[1], t[2], t[3], t[4], t[5], t[6], + _("AC3 downmix") + " - " +[_("On"), _("Off")][config.av.downmix_ac3.value and 1 or 0]) + choicelist.setList(list) + if config.av.downmix_ac3.value: + config.av.downmix_ac3.value = False + else: + config.av.downmix_ac3.value = True + config.av.downmix_ac3.save() + def audioSelected(self, audio): if audio is not None: if isinstance(audio[1], str): @@ -1599,16 +1619,18 @@ class InfoBarSubserviceSelection: }, -1) self["SubserviceQuickzapAction"].setEnabled(False) - self.session.nav.event.append(self.checkSubservicesAvail) # we like to get service events + self.__event_tracker = ServiceEventTracker(screen=self, eventmap= + { + iPlayableService.evUpdatedInfo: self.checkSubservicesAvail + }) self.bsel = None - def checkSubservicesAvail(self, ev): - if ev == iPlayableService.evUpdatedEventInfo: - service = self.session.nav.getCurrentService() - subservices = service and service.subServices() - if not subservices or subservices.getNumberOfSubservices() == 0: - self["SubserviceQuickzapAction"].setEnabled(False) + def checkSubservicesAvail(self): + service = self.session.nav.getCurrentService() + subservices = service and service.subServices() + if not subservices or subservices.getNumberOfSubservices() == 0: + self["SubserviceQuickzapAction"].setEnabled(False) def nextSubservice(self): self.changeSubservice(+1) @@ -1636,7 +1658,7 @@ class InfoBarSubserviceSelection: if newservice.valid(): del subservices del service - self.session.nav.playService(newservice) + self.session.nav.playService(newservice, False) def subserviceSelection(self): service = self.session.nav.getCurrentService() @@ -1654,7 +1676,7 @@ class InfoBarSubserviceSelection: tlist.append((i.getName(), i)) if self.bouquets and len(self.bouquets): - keys = ["red", "green", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n + keys = ["red", "blue", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n if config.usage.multibouquet.value: tlist = [(_("Quickzap"), "quickzap", service.subServices()), (_("Add to bouquet"), "CALLFUNC", self.addSubserviceToBouquetCallback), ("--", "")] + tlist else: @@ -1676,7 +1698,7 @@ class InfoBarSubserviceSelection: self.session.open(SubservicesQuickzap, service[2]) else: self["SubserviceQuickzapAction"].setEnabled(True) - self.session.nav.playService(service[1]) + self.session.nav.playService(service[1], False) def addSubserviceToBouquetCallback(self, service): if len(service) > 1 and isinstance(service[1], eServiceReference):