1 from Screen import Screen
2 from Components.ServiceEventTracker import ServiceEventTracker
3 from Components.ActionMap import ActionMap
4 from Components.ConfigList import ConfigListScreen
5 from Components.config import config, getConfigListEntry, ConfigNothing
6 from enigma import iPlayableService
8 from Tools.ISO639 import LanguageCodes
10 class Subtitles(Screen, ConfigListScreen):
11 def __init__(self, session):
12 Screen.__init__(self, session)
14 self["actions"] = ActionMap(["SetupActions"],
17 "cancel": self.cancel,
21 ConfigListScreen.__init__(self, self.list)
22 self.infobar = self.session.infobar
25 self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
27 iPlayableService.evUpdatedInfo: self.__updatedInfo
29 self.cached_subtitle_checked = False
30 self.__selected_subtitle = None
34 print "self.list", self.list
35 if self.subtitlesEnabled():
36 self.list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
37 sel = self.infobar.selected_subtitle
40 for x in self.getSubtitleList():
41 if sel and sel[:4] == x[:4]: #ignore Language code in compare
46 if LanguageCodes.has_key(x[4]):
47 self.list.append(getConfigListEntry(text+" DVB "+LanguageCodes[x[4]][0], ConfigNothing(), x))
49 self.list.append(getConfigListEntry(text+" DVB "+x[4], ConfigNothing(), x))
51 if x[4] == 'und': #undefined
52 self.list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2]), ConfigNothing(), x))
54 if LanguageCodes.has_key(x[4]):
55 self.list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+LanguageCodes[x[4]][0], ConfigNothing(), x))
57 self.list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+x[4], ConfigNothing(), x))
58 # return _("Disable subtitles")
59 self["config"].list = self.list
60 self["config"].l.setList(self.list)
62 def __updatedInfo(self):
65 def getSubtitleList(self):
66 s = self.infobar and self.infobar.getCurrentServiceSubtitle()
67 l = s and s.getSubtitleList() or [ ]
70 def subtitlesEnabled(self):
71 return self.infobar.subtitles_enabled
73 def enableSubtitle(self, subtitles):
74 if self.infobar.selected_subtitle != subtitles:
75 self.infobar.subtitles_enabled = False
76 self.infobar.selected_subtitle = subtitles
77 self.infobar.subtitles_enabled = True
79 def disableSubtitles(self):
80 self.infobar.subtitles_enabled = False
83 ConfigListScreen.keyLeft(self)
86 ConfigListScreen.keyRight(self)
90 cur = self["config"].getCurrent()
91 self.enableSubtitle(cur[2])