1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
from Screen import Screen
from Components.ServiceEventTracker import ServiceEventTracker
from Components.ActionMap import ActionMap
from Components.ConfigList import ConfigListScreen
from Components.config import config, getConfigListEntry, ConfigNothing
from enigma import iPlayableService
from Tools.ISO639 import LanguageCodes
class Subtitles(Screen, ConfigListScreen):
def __init__(self, session, infobar=None):
Screen.__init__(self, session)
self["actions"] = ActionMap(["SetupActions"],
{
"ok": self.ok,
"cancel": self.cancel,
}, -2)
self.list = []
ConfigListScreen.__init__(self, self.list)
self.infobar = infobar or 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():
list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
sel = self.infobar.selected_subtitle
else:
sel = None
for x in self.getSubtitleList():
if sel and sel[:4] == x[:4]: #ignore Language code in compare
text = _("Running")
else:
text = _("Enable")
if x[0] == 0:
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
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:
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 = list
self["config"].l.setList(list)
def __updatedInfo(self):
self.fillList()
def getSubtitleList(self):
s = self.infobar and self.infobar.getCurrentServiceSubtitle()
l = s and s.getSubtitleList() or [ ]
return l
def subtitlesEnabled(self):
return self.infobar.subtitles_enabled
def enableSubtitle(self, subtitles):
if self.infobar.selected_subtitle != subtitles:
self.infobar.subtitles_enabled = False
self.infobar.selected_subtitle = subtitles
if subtitles:
self.infobar.subtitles_enabled = True
def keyLeft(self):
ConfigListScreen.keyLeft(self)
def keyRight(self):
ConfigListScreen.keyRight(self)
def ok(self):
if self.list:
cur = self["config"].getCurrent()
self.enableSubtitle(cur[2])
self.close(1)
def cancel(self):
self.close()
|