- service = self.session.nav.getCurrentService()
- audio = service and service.audioTracks()
- self.audioTracks = audio
- n = audio and audio.getNumberOfTracks() or 0
- keys = [ "red", "", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] + [""]*n
- tlist = []
- print "tlist:", tlist
- if n > 0:
- self.audioChannel = service.audioChannel()
-
- for x in range(n):
- i = audio.getTrackInfo(x)
- language = i.getLanguage()
- description = i.getDescription()
-
- if LanguageCodes.has_key(language):
- language = LanguageCodes[language][0]
-
- if len(description):
- description += " (" + language + ")"
- else:
- description = language
-
- tlist.append((description, x))
-
- selectedAudio = tlist[0][1]
- tlist.sort(lambda x,y : cmp(x[0], y[0]))
-
- selection = 2
- for x in tlist:
- if x[1] != selectedAudio:
- selection += 1
- else:
- break
-
- tlist = [([_("Left"), _("Stereo"), _("Right")][self.audioChannel.getCurrentChannel()], "mode"), ("--", "")] + tlist
- self.session.openWithCallback(self.audioSelected, ChoiceBox, title=_("Select audio track"), list = tlist, selection = selection, keys = keys)
- else:
- del self.audioTracks
-
- 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)
- 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