+++ /dev/null
-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()