[videomode] support VusoloSE
[vuplus_dvbapp] / lib / python / Screens / Subtitles.py
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
7
8 from Tools.ISO639 import LanguageCodes
9
10 #       ikseong for subtitle hotkey
11 from Screens.InfoBar import InfoBar
12
13 class Subtitles(Screen, ConfigListScreen):
14         def __init__(self, session, infobar=None):
15                 Screen.__init__(self, session)
16         
17                 self["actions"] = ActionMap(["SetupActions"],
18                 {
19                         "ok": self.ok,
20                         "cancel": self.cancel,
21                 }, -2)
22
23                 self.list = []
24                 ConfigListScreen.__init__(self, self.list)
25 #       ikseong for subtitle hotkey
26                 if self.session.infobar is None:        
27                         if InfoBar.instance:
28                                 self.infobar = InfoBar.instance
29                 else:
30                         self.infobar = self.session.infobar
31 #
32                 self.fillList()
33
34                 self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
35                         {
36                                 iPlayableService.evUpdatedInfo: self.__updatedInfo
37                         })
38                 self.cached_subtitle_checked = False
39                 self.__selected_subtitle = None
40
41         def fillList(self):
42                 list = self.list
43                 del list[:]
44                 print "self.list", list
45                 if self.subtitlesEnabled():
46                         list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
47                         sel = self.infobar.selected_subtitle
48                 else:
49                         sel = None
50                 for x in self.getSubtitleList():
51                         if sel and sel[:4] == x[:4]: #ignore Language code in compare
52                                 text = _("Running")
53                         else:
54                                 text = _("Enable")
55                         if x[0] == 0:
56                                 if LanguageCodes.has_key(x[4]):
57                                         list.append(getConfigListEntry(text+" DVB "+LanguageCodes[x[4]][0], ConfigNothing(), x))
58                                 else:
59                                         list.append(getConfigListEntry(text+" DVB "+x[4], ConfigNothing(), x))
60                         elif x[0] == 1:
61                                 if x[4] == 'und': #undefined
62                                         list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2]), ConfigNothing(), x))
63                                 else:
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))
66                                         else:
67                                                 list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+x[4], ConfigNothing(), x))
68                         elif x[0] == 2:
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))
72                                 else:
73                                         if LanguageCodes.has_key(x[4]):
74                                                 list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles") + ' ' + LanguageCodes[x[4]][0], ConfigNothing(), x))
75                                         else:
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)
80
81         def __updatedInfo(self):
82                 self.fillList()
83
84         def getSubtitleList(self):
85                 s = self.infobar and self.infobar.getCurrentServiceSubtitle()
86                 l = s and s.getSubtitleList() or [ ]
87                 return l
88
89         def subtitlesEnabled(self):
90                 return self.infobar.subtitles_enabled
91
92         def enableSubtitle(self, subtitles):
93                 if self.infobar.selected_subtitle != subtitles:
94                         self.infobar.subtitles_enabled = False
95                         self.infobar.selected_subtitle = subtitles
96                         if subtitles:
97                                 self.infobar.subtitles_enabled = True
98
99         def keyLeft(self):
100                 ConfigListScreen.keyLeft(self)
101
102         def keyRight(self):
103                 ConfigListScreen.keyRight(self)
104
105         def ok(self):
106                 if self.list:
107                         cur = self["config"].getCurrent()
108                         self.enableSubtitle(cur[2])
109                 self.close(1)
110
111         def cancel(self):
112                 self.close()