from Screens.Screen import Screen from Screens.ChoiceBox import ChoiceBox from Screens.InputBox import InputBox from Screens.MessageBox import MessageBox from Screens.HelpMenu import HelpableScreen from Components.ActionMap import HelpableActionMap, ActionMap from Components.Sources.List import List from Components.Sources.StaticText import StaticText from Components.Sources.Progress import Progress from Components.FileList import FileList from enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_LEFT from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_FONTS, SCOPE_HDD from Components.config import config, getConfigListEntry, ConfigInteger, ConfigSubsection, ConfigSelection from Components.ConfigList import ConfigListScreen import DVDTitle class TitleProperties(Screen,ConfigListScreen): skin = """ """ def __init__(self, session, parent, project, title_idx): Screen.__init__(self, session) self.parent = parent self.project = project self.title_idx = title_idx self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("OK")) self["key_yellow"] = StaticText(_("Edit Title")) self["key_blue"] = StaticText(_("Save")) self["serviceinfo_headline"] = StaticText("DVB info:") self["serviceinfo"] = StaticText() self.properties = project.titles[title_idx].properties ConfigListScreen.__init__(self, []) self.properties.crop = DVDTitle.ConfigFixedText("crop") self.initConfigList() self["setupActions"] = ActionMap(["SetupActions", "ColorActions"], { "green": self.exit, "red": self.cancel, #"blue": self.saveProject, "yellow": self.editTitle, "cancel": self.cancel, "ok": self.ok, }, -2) def initConfigList(self): self.properties.position = ConfigInteger(default = self.title_idx+1, limits = (1, len(self.project.titles))) title = self.project.titles[self.title_idx] self.list = [] self.list.append(getConfigListEntry("DVD " + _("Track"), self.properties.position)) self.list.append(getConfigListEntry("DVD " + _("Title"), self.properties.menutitle)) self.list.append(getConfigListEntry("DVD " + _("Description"), self.properties.menusubtitle)) for audiotrack in self.properties.audiotracks: pid = audiotrack.pid.getValue() self.list.append(getConfigListEntry("burn audio track (%s)" % pid, audiotrack.active)) if audiotrack.active.getValue(): self.list.append(getConfigListEntry("audio track (%s) format" % pid, audiotrack.format)) self.list.append(getConfigListEntry("audio track (%s) language" % pid, audiotrack.language)) self.list.append(getConfigListEntry("DVD " + _("Aspect Ratio"), self.properties.aspect)) if self.properties.aspect.getValue() == "16:9": self.list.append(getConfigListEntry("DVD " + "widescreen", self.properties.widescreen)) else: self.list.append(getConfigListEntry("DVD " + "widescreen", self.properties.crop)) self["config"].setList(self.list) infotext = _("Available format variables") + ":\n$i=" + _("Track") + ", $t=" + _("Title") + ", $d=" + _("Description") + ", $l=" + _("length") + ", $c=" + _("chapters") + ",\n" + _("Record") + " $T=" + _("Begin time") + ", $Y=" + _("year") + ", $M=" + _("month") + ", $D=" + _("day") + ",\n$A=" + _("audio tracks") + ", $C=" + _("Channel") + ", $f=" + _("filename") self["info"] = StaticText(infotext) chapters_count = len(title.chaptermarks) infotext = _("Title") + ': ' + title.DVBname + "\n" + _("Description") + ': ' + title.DVBdescr + "\n" + _("Channel") + ': ' + title.DVBchannel if chapters_count: infotext += ', ' + str(chapters_count+1) + ' ' + _("chapters") + ' (' infotext += ' / '.join(title.getChapterMarks()) + ')' self["serviceinfo"].setText(infotext) def editTitle(self): self.parent.editTitle() self.initConfigList() def changedConfigList(self): self.initConfigList() def keyLeft(self): ConfigListScreen.keyLeft(self) if type(self["config"].getCurrent()[1]) in [DVDTitle.ConfigActiveTrack, ConfigSelection]: self.initConfigList() def keyRight(self): ConfigListScreen.keyRight(self) if type(self["config"].getCurrent()[1]) in [DVDTitle.ConfigActiveTrack, ConfigSelection]: self.initConfigList() def exit(self): self.applySettings() self.close() def applySettings(self): for x in self["config"].list: x[1].save() current_pos = self.title_idx+1 new_pos = self.properties.position.getValue() if new_pos != current_pos: print "title got repositioned from ", current_pos, "to", new_pos swaptitle = self.project.titles.pop(current_pos-1) self.project.titles.insert(new_pos-1, swaptitle) def ok(self): #key = self.keydict[self["config"].getCurrent()[1]] #if key in self.project.filekeys: #self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, key, self.settings) pass def cancel(self): self.close() class LanguageChoices(): def __init__(self): from Tools.ISO639 import LanguageCodes from Components.Language import language as syslanguage syslang = syslanguage.getLanguage()[:2] self.langdict = { } self.choices = [] for key, val in LanguageCodes.iteritems(): if len(key) == 2: self.langdict[key] = val[0] for key, val in self.langdict.iteritems(): if key not in [syslang, 'en']: self.langdict[key] = val self.choices.append((key, val)) self.choices.sort() self.choices.insert(0,("nolang", ("unspecified"))) self.choices.insert(1,(syslang, self.langdict[syslang])) self.choices.insert(2,("en", self.langdict["en"])) languageChoices = LanguageChoices()