remove GUIComponent from PerServiceDisplay
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index 528bca2e3bce0d2b023cadc7199472e7642fd393..36f1d90c0d47ba6d6bd4bd8f8ef0f66f39d3526e 100644 (file)
@@ -1214,14 +1214,16 @@ class InfoBarAudioSelection:
                audio = service.audioTracks()
                self.audioTracks = audio
                n = audio.getNumberOfTracks()
+               keys = [ "red", "", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] + [""]*n
+               tlist = []
+               print "tlist:", tlist
                if n > 0:
-#                      self.audioChannel = service.audioChannel()
-#                      config.audio.audiochannel = configElement_nonSave("config.audio.audiochannel", configSelection, self.audioChannel.getCurrentChannel(), (("left", _("Left  >")), ("stereo", _("<  Stereo  >")), ("right", _("<  Right"))))
-                       tlist = []
+                       self.audioChannel = service.audioChannel()
+
                        for x in range(n):
                                i = audio.getTrackInfo(x)
                                language = i.getLanguage()
-                               description = i.getDescription();
+                               description = i.getDescription()
        
                                if len(language) == 3:
                                        if language in LanguageCodes:
@@ -1237,25 +1239,38 @@ class InfoBarAudioSelection:
                        selectedAudio = tlist[0][1]
                        tlist.sort(lambda x,y : cmp(x[0], y[0]))
 
-#                      tlist.insert(0, getConfigListEntry(_("Audio Channel"), config.audio.audiochannel))
-
-                       selection = 0
+                       selection = 2
                        for x in tlist:
                                if x[1] != selectedAudio:
                                        selection += 1
                                else:
                                        break
-                       
-                       self.session.openWithCallback(self.audioSelected, ChoiceBox, title=_("Select audio track"), list = tlist, selection = selection)
+
+                       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:
-                       self.audioTracks.selectTrack(audio[1])
+                       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
-#              del self.audioChannel
-#              del config.audio.audiochannel
+
+       def modeSelected(self, mode):
+               if mode is not None:
+                       self.audioChannel.selectChannel(mode[1])
+               del self.audioChannel
 
 class InfoBarSubserviceSelection:
        def __init__(self):
@@ -1276,8 +1291,8 @@ class InfoBarSubserviceSelection:
        def checkSubservicesAvail(self, ev):
                if ev == iPlayableService.evUpdatedEventInfo:
                        service = self.session.nav.getCurrentService()
-                       subservices = service.subServices()
-                       if subservices.getNumberOfSubservices() == 0:
+                       subservices = service and service.subServices()
+                       if not subservices or subservices.getNumberOfSubservices() == 0:
                                self["SubserviceQuickzapAction"].setEnabled(False)
 
        def nextSubservice(self):
@@ -1288,9 +1303,9 @@ class InfoBarSubserviceSelection:
 
        def changeSubservice(self, direction):
                service = self.session.nav.getCurrentService()
-               subservices = service.subServices()
-               n = subservices.getNumberOfSubservices()
-               if n > 0:
+               subservices = service and service.subServices()
+               n = subservices and subservices.getNumberOfSubservices()
+               if n and n > 0:
                        selection = -1
                        ref = self.session.nav.getCurrentlyPlayingServiceReference()
                        for x in range(n):
@@ -1310,11 +1325,11 @@ class InfoBarSubserviceSelection:
 
        def subserviceSelection(self):
                service = self.session.nav.getCurrentService()
-               subservices = service.subServices()
+               subservices = service and service.subServices()
                
-               n = subservices.getNumberOfSubservices()
+               n = subservices and subservices.getNumberOfSubservices()
                selection = 0
-               if n > 0:
+               if n and n > 0:
                        ref = self.session.nav.getCurrentlyPlayingServiceReference()
                        tlist = []
                        for x in range(n):