if list:
list.append((_("show single service EPG..."), self.openSingleServiceEPG))
+ list.append((_("Multi EPG"), self.openMultiServiceEPG))
self.session.openWithCallback(self.EventInfoPluginChosen, ChoiceBox, title=_("Please choose an extension..."), list = list, skin_name = "EPGExtensionsList")
else:
self.openSingleServiceEPG()
answer[1][1]()
from Tools.BoundFunction import boundFunction
+import inspect
# depends on InfoBarExtensions
return name
def getPluginList(self):
- list = [((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None, p.name) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU)]
- list.sort(key = lambda e: e[2]) # sort by name
- return list
+ l = []
+ for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU):
+ args = inspect.getargspec(p.__call__)[0]
+ if len(args) == 1 or len(args) == 2 and isinstance(self, InfoBarChannelSelection):
+ l.append(((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None, p.name))
+ l.sort(key = lambda e: e[2]) # sort by name
+ return l
def runPlugin(self, plugin):
if isinstance(self, InfoBarChannelSelection):
recording = RecordTimerEntry(serviceref, begin, end, name, description, eventid, dirname = preferredInstantRecordPath())
recording.dontSave = True
-
+
if event is None or limitEvent == False:
recording.autoincrease = True
- if recording.setAutoincreaseEnd():
- self.session.nav.RecordTimer.record(recording)
- self.recording.append(recording)
+ recording.setAutoincreaseEnd()
+
+ simulTimerList = self.session.nav.RecordTimer.record(recording)
+
+ if simulTimerList is None: # no conflict
+ self.recording.append(recording)
else:
- simulTimerList = self.session.nav.RecordTimer.record(recording)
- if simulTimerList is not None: # conflict with other recording
- name = simulTimerList[1].name
- name_date = ' '.join((name, strftime('%c', localtime(simulTimerList[1].begin))))
- print "[TIMER] conflicts with", name_date
- recording.autoincrease = True # start with max available length, then increment
- if recording.setAutoincreaseEnd():
- self.session.nav.RecordTimer.record(recording)
- self.recording.append(recording)
- self.session.open(MessageBox, _("Record time limited due to conflicting timer %s") % name_date, MessageBox.TYPE_INFO)
- else:
- self.session.open(MessageBox, _("Couldn't record due to conflicting timer %s") % name, MessageBox.TYPE_INFO)
- recording.autoincrease = False
- else:
+ if len(simulTimerList) > 1: # with other recording
+ name = simulTimerList[1].name
+ name_date = ' '.join((name, strftime('%c', localtime(simulTimerList[1].begin))))
+ print "[TIMER] conflicts with", name_date
+ recording.autoincrease = True # start with max available length, then increment
+ if recording.setAutoincreaseEnd():
+ self.session.nav.RecordTimer.record(recording)
self.recording.append(recording)
+ self.session.open(MessageBox, _("Record time limited due to conflicting timer %s") % name_date, MessageBox.TYPE_INFO)
+ else:
+ self.session.open(MessageBox, _("Couldn't record due to conflicting timer %s") % name, MessageBox.TYPE_INFO)
+ else:
+ self.session.open(MessageBox, _("Couldn't record due to invalid service %s") % serviceref, MessageBox.TYPE_INFO)
+ recording.autoincrease = False
def isInstantRecordRunning(self):
print "self.recording:", self.recording
})
def audioSelection(self):
- service = self.session.nav.getCurrentService()
- self.audioTracks = audio = service and service.audioTracks()
- n = audio and audio.getNumberOfTracks() or 0
- tlist = []
- if n > 0:
- self.audioChannel = service.audioChannel()
-
- idx = 0
- while idx < n:
- cnt = 0
- i = audio.getTrackInfo(idx)
- languages = i.getLanguage().split('/')
- description = i.getDescription()
- language = ""
-
- for lang in languages:
- if cnt:
- language += ' / '
- if LanguageCodes.has_key(lang):
- language += LanguageCodes[lang][0]
- else:
- language += lang
- cnt += 1
-
- if len(description):
- description += " (" + language + ")"
- else:
- description = language
-
- tlist.append((description, idx))
- idx += 1
-
- tlist.sort(key=lambda x: x[0])
-
- selectedAudio = self.audioTracks.getCurrentTrack()
-
- selection = 0
-
- for x in tlist:
- if x[1] != selectedAudio:
- selection += 1
- else:
- break
-
- availableKeys = []
- usedKeys = []
-
- if SystemInfo["CanDownmixAC3"]:
- flist = [(_("AC3 downmix") + " - " +(_("Off"), _("On"))[config.av.downmix_ac3.value and 1 or 0], "CALLFUNC", self.changeAC3Downmix),
- ((_("Left"), _("Stereo"), _("Right"))[self.audioChannel.getCurrentChannel()], "mode")]
- usedKeys.extend(["red", "green"])
- availableKeys.extend(["yellow", "blue"])
- selection += 2
- else:
- flist = [((_("Left"), _("Stereo"), _("Right"))[self.audioChannel.getCurrentChannel()], "mode")]
- usedKeys.extend(["red"])
- availableKeys.extend(["green", "yellow", "blue"])
- selection += 1
-
- if hasattr(self, "runPlugin"):
- class PluginCaller:
- def __init__(self, fnc, *args):
- self.fnc = fnc
- self.args = args
- def __call__(self, *args, **kwargs):
- self.fnc(*self.args)
-
- Plugins = [ (p.name, PluginCaller(self.runPlugin, p)) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_AUDIOMENU) ]
-
- for p in Plugins:
- selection += 1
- flist.append((p[0], "CALLFUNC", p[1]))
- if availableKeys:
- usedKeys.append(availableKeys[0])
- del availableKeys[0]
- else:
- usedKeys.append("")
-
- flist.append(("--", ""))
- usedKeys.append("")
- selection += 1
-
- keys = usedKeys + [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" ] + [""] * n
- self.session.openWithCallback(self.audioSelected, ChoiceBox, title=_("Select audio track"), list = flist + tlist, selection = selection, keys = keys, skin_name = "AudioTrackSelection")
- 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):
- if audio[1] == "mode":
- keys = ["red", "green", "yellow"]
- selection = self.audioChannel.getCurrentChannel()
- tlist = ((_("left"), 0), (_("stereo"), 1), (_("right"), 2))
- self.session.openWithCallback(self.modeSelected, ChoiceBox, title=_("Select audio mode"), list = tlist, selection = selection, keys = keys, skin_name ="AudioModeSelection")
- else:
- del self.audioChannel
- if self.session.nav.getCurrentService().audioTracks().getNumberOfTracks() > audio[1]:
- self.audioTracks.selectTrack(audio[1])
- else:
- del self.audioChannel
- del self.audioTracks
-
- def modeSelected(self, mode):
- if mode is not None:
- self.audioChannel.selectChannel(mode[1])
- del self.audioChannel
+ from Screens.AudioSelection import AudioSelection
+ self.session.openWithCallback(self.audioSelected, AudioSelection, infobar=self)
+
+ def audioSelected(self, ret=None):
+ print "[infobar::audioSelected]", ret
class InfoBarSubserviceSelection:
def __init__(self):