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 # ikseong for subtitle hotkey
11 from Screens.InfoBar import InfoBar
13 class Subtitles(Screen, ConfigListScreen):
14 def __init__(self, session, infobar=None):
15 Screen.__init__(self, session)
17 self["actions"] = ActionMap(["SetupActions"],
20 "cancel": self.cancel,
24 ConfigListScreen.__init__(self, self.list)
25 # ikseong for subtitle hotkey
26 if self.session.infobar is None:
28 self.infobar = InfoBar.instance
30 self.infobar = self.session.infobar
34 self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
36 iPlayableService.evUpdatedInfo: self.__updatedInfo
38 self.cached_subtitle_checked = False
39 self.__selected_subtitle = None
44 print "self.list", list
45 if self.subtitlesEnabled():
46 list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
47 sel = self.infobar.selected_subtitle
50 for x in self.getSubtitleList():
51 if sel and sel[:4] == x[:4]: #ignore Language code in compare
56 if LanguageCodes.has_key(x[4]):
57 list.append(getConfigListEntry(text+" DVB "+LanguageCodes[x[4]][0], ConfigNothing(), x))
59 list.append(getConfigListEntry(text+" DVB "+x[4], ConfigNothing(), x))
61 if x[4] == 'und': #undefined
62 list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2]), ConfigNothing(), x))
64 if LanguageCodes.has_key(x[4]):
65 list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+LanguageCodes[x[4]][0], ConfigNothing(), x))
67 list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+x[4], ConfigNothing(), x))
69 types = (" UTF-8 text "," SSA / AAS "," .SRT file ")
70 if x[4] == 'und': #undefined
71 list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d" % x[1], ConfigNothing(), x))
73 if LanguageCodes.has_key(x[4]):
74 list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles") + ' ' + LanguageCodes[x[4]][0], ConfigNothing(), x))
76 list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d " % x[1] +x[4], ConfigNothing(), x))
77 # return _("Disable subtitles")
78 self["config"].list = list
79 self["config"].l.setList(list)
81 def __updatedInfo(self):
84 def getSubtitleList(self):
85 s = self.infobar and self.infobar.getCurrentServiceSubtitle()
86 l = s and s.getSubtitleList() or [ ]
89 def subtitlesEnabled(self):
90 return self.infobar.subtitles_enabled
92 def enableSubtitle(self, subtitles):
93 if self.infobar.selected_subtitle != subtitles:
94 self.infobar.subtitles_enabled = False
95 self.infobar.selected_subtitle = subtitles
97 self.infobar.subtitles_enabled = True
100 ConfigListScreen.keyLeft(self)
103 ConfigListScreen.keyRight(self)
107 cur = self["config"].getCurrent()
108 self.enableSubtitle(cur[2])