Support turbo2.
[vuplus_dvbapp] / lib / python / Screens / Subtitles.py
old mode 100644 (file)
new mode 100755 (executable)
index 6a1deed..e8cad4f
@@ -1,13 +1,16 @@
 from Screen import Screen
+from Components.ServiceEventTracker import ServiceEventTracker
 from Components.ActionMap import ActionMap
-from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.ConfigList import ConfigListScreen
 from Components.config import config, getConfigListEntry, ConfigNothing
-from Components.Label import Label
+from enigma import iPlayableService
 
 from Tools.ISO639 import LanguageCodes
 
+from Screens.InfoBar import InfoBar
+
 class Subtitles(Screen, ConfigListScreen):
-       def __init__(self, session):
+       def __init__(self, session, infobar=None):
                Screen.__init__(self, session)
         
                self["actions"] = ActionMap(["SetupActions"],
@@ -18,27 +21,63 @@ class Subtitles(Screen, ConfigListScreen):
 
                self.list = []
                ConfigListScreen.__init__(self, self.list)
-               self.infobar = self.session.infobar
+               if self.session.infobar is None:        
+                       if InfoBar.instance:
+                               self.infobar = InfoBar.instance
+               else:
+                       self.infobar = self.session.infobar
+
+               self.fillList()
+
+               self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+                       {
+                               iPlayableService.evUpdatedInfo: self.__updatedInfo
+                       })
+               self.cached_subtitle_checked = False
+               self.__selected_subtitle = None
+
+       def fillList(self):
+               list = self.list
+               del list[:]
+               print "self.list", list
                if self.subtitlesEnabled():
-                       self.list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
+                       list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
                        sel = self.infobar.selected_subtitle
                else:
                        sel = None
                for x in self.getSubtitleList():
-                       if sel and sel == x:
+                       if sel and sel[:4] == x[:4]: #ignore Language code in compare
                                text = _("Running")
                        else:
                                text = _("Enable")
                        if x[0] == 0:
-                               self.list.append(getConfigListEntry(text+" DVB "+LanguageCodes[x[4]][0], ConfigNothing(), x))
+                               if LanguageCodes.has_key(x[4]):
+                                       list.append(getConfigListEntry(text+" DVB "+LanguageCodes[x[4]][0], ConfigNothing(), x))
+                               else:
+                                       list.append(getConfigListEntry(text+" DVB "+x[4], ConfigNothing(), x))
                        elif x[0] == 1:
                                if x[4] == 'und': #undefined
-                                       self.list.append(getConfigListEntry(text+" TTX "+_("Page")+" "+str(x[2])+"/"+str(x[3]), ConfigNothing(), x))
+                                       list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2]), ConfigNothing(), x))
+                               else:
+                                       if LanguageCodes.has_key(x[4]):
+                                               list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+LanguageCodes[x[4]][0], ConfigNothing(), x))
+                                       else:
+                                               list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+x[4], ConfigNothing(), x))
+                       elif x[0] == 2:
+                               types = (" UTF-8 text "," SSA / AAS "," .SRT file ")
+                               if x[4] == 'und': #undefined
+                                       list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d" % x[1], ConfigNothing(), x))
                                else:
-                                       self.list.append(getConfigListEntry(text+" TTX "+LanguageCodes[x[4]][0], ConfigNothing(), x))
+                                       if LanguageCodes.has_key(x[4]):
+                                               list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles") + ' ' + LanguageCodes[x[4]][0], ConfigNothing(), x))
+                                       else:
+                                               list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d " % x[1] +x[4], ConfigNothing(), x))
 #              return _("Disable subtitles")
-               self["config"].list = self.list
-               self["config"].l.setList(self.list)
+               self["config"].list = list
+               self["config"].l.setList(list)
+
+       def __updatedInfo(self):
+               self.fillList()
 
        def getSubtitleList(self):
                s = self.infobar and self.infobar.getCurrentServiceSubtitle()
@@ -50,13 +89,10 @@ class Subtitles(Screen, ConfigListScreen):
 
        def enableSubtitle(self, subtitles):
                if self.infobar.selected_subtitle != subtitles:
-                       print "enable subtitles", subtitles
                        self.infobar.subtitles_enabled = False
                        self.infobar.selected_subtitle = subtitles
-                       self.infobar.subtitles_enabled = True
-
-       def disableSubtitles(self):
-               self.infobar.subtitles_enabled = False
+                       if subtitles:
+                               self.infobar.subtitles_enabled = True
 
        def keyLeft(self):
                ConfigListScreen.keyLeft(self)
@@ -65,7 +101,7 @@ class Subtitles(Screen, ConfigListScreen):
                ConfigListScreen.keyRight(self)
 
        def ok(self):
-               if len(self.list):
+               if self.list:
                        cur = self["config"].getCurrent()
                        self.enableSubtitle(cur[2])
                self.close(1)