From: Andreas Frisch Date: Fri, 5 Sep 2008 18:43:53 +0000 (+0000) Subject: add ProjectSettings class X-Git-Tag: 2.6.0~901 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/ef2243033f618a4fe3f7bb4c9a1efc763d62f44d add ProjectSettings class --- diff --git a/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py b/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py new file mode 100644 index 00000000..3cf7f9d0 --- /dev/null +++ b/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py @@ -0,0 +1,178 @@ +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 resolveFilename, SCOPE_PLAYLIST, SCOPE_SKIN, SCOPE_FONTS +from Components.config import config, getConfigListEntry +from Components.ConfigList import ConfigListScreen + +class WaitBox(MessageBox): + def __init__(self, session, callback): + MessageBox.__init__(self, session, text=_("please wait, loading picture..."), type = MessageBox.TYPE_INFO) + self.skinName = "MessageBox" + self.CB = callback + self.onShown.append(self.runCB) + + def ok(self): + pass + + def runCB(self): + from enigma import eTimer + self.delayTimer = eTimer() + self.delayTimer.callback.append(self.CB) + self.delayTimer.start(10,1) + +class FileBrowser(Screen, HelpableScreen): + skin = """ + + + """ + def __init__(self, session, scope, settings): + Screen.__init__(self, session) + HelpableScreen.__init__(self) + self.scope = scope + pattern = "" + currDir = "/" + if self.scope == "project": + currDir = resolveFilename(SCOPE_PLAYLIST) + pattern = "(?i)^.*\.(ddvdp\.xml)" + if self.scope == "menubg": + currDir = self.getDir(settings.menubg, resolveFilename(SCOPE_SKIN)) + pattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)" + elif self.scope == "menuaudio": + currDir = self.getDir(settings.menuaudio, resolveFilename(SCOPE_SKIN)) + pattern = "(?i)^.*\.(mp2|m2a|ac3)" + elif self.scope == "vmgm": + currDir = self.getDir(settings.vmgm, resolveFilename(SCOPE_SKIN)) + pattern = "(?i)^.*\.(mpg|mpeg)" + elif self.scope == "font_face": + currDir = self.getDir(settings.font_face, resolveFilename(SCOPE_FONTS)) + pattern = "(?i)^.*\.(ttf)" + + self.filelist = FileList(currDir, matchingPattern=pattern) + self["filelist"] = self.filelist + + self["FilelistActions"] = ActionMap(["OkCancelActions"], + { + "ok": self.ok, + "cancel": self.exit + }) + + def getDir(self, key, defaultDir): + settingDir = key.getValue() + if len(settingDir) > 1: + return (settingDir.rstrip("/").rsplit("/",1))[0] + else: + return defaultDir + + def ok(self): + if self.filelist.canDescent(): + self.filelist.descent() + else: + ret = self["filelist"].getCurrentDirectory() + '/' + self["filelist"].getFilename() + self.close(ret,self.scope) + + def exit(self): + self.close(None,False) + +class ProjectSettings(Screen,ConfigListScreen): + skin = """ + + + + + + + + + + + + """ + + def __init__(self, session, project = None): + Screen.__init__(self, session) + self.project = project + + self["key_red"] = StaticText(_("Cancel")) + self["key_green"] = StaticText(_("OK")) + self["key_yellow"] = StaticText(_("Load")) + self["key_blue"] = StaticText(_("Save")) + + infotext = _("Available format variables") + ":\n$i=" + _("Track") + ", $t=" + _("Title") + ", $d=" + _("Description") + ", $l=" + _("length") + ", $c=" + _("chapters") + "\n" + _("Record") + " $Y=" + _("year") + ", $M=" + _("month") + ", $D=" + _("day") + ", $h=" + _("hour") + ", $m=" + _("minute") + ", $f=" + _("filename") + self["info"] = StaticText(infotext) + + self.settings = project.settings + self.list = [] + self.list.append(getConfigListEntry("Collection name", self.settings.name)) + self.list.append(getConfigListEntry("Authoring mode", self.settings.authormode)) + self.list.append(getConfigListEntry("Menu background image", self.settings.menubg)) + self.list.append(getConfigListEntry("Menu title format", self.settings.titleformat)) + self.list.append(getConfigListEntry("Menu subtitle format", self.settings.subtitleformat)) + self.list.append(getConfigListEntry("Menu headline color", self.settings.color_headline)) + self.list.append(getConfigListEntry("Menu plain text color", self.settings.color_button)) + self.list.append(getConfigListEntry("Menu highlighted button color", self.settings.color_highlight)) + self.list.append(getConfigListEntry("Menu font face", self.settings.font_face)) + self.list.append(getConfigListEntry("Font size (headline, titles, subtitles)", self.settings.font_size)) + self.list.append(getConfigListEntry("Menu spaces (top, between rows, left)", self.settings.space)) + self.list.append(getConfigListEntry("Menu audio", self.settings.menuaudio)) + self.list.append(getConfigListEntry("VMGM (intro trailer)", self.settings.vmgm)) + ConfigListScreen.__init__(self, self.list) + + self.keydict = {} + for key, val in self.settings.dict().iteritems(): + self.keydict[val] = key + + self["setupActions"] = ActionMap(["SetupActions", "ColorActions"], + { + "green": self.exit, + "red": self.cancel, + "blue": self.saveProject, + "yellow": self.loadProject, + "cancel": self.cancel, + "ok": self.ok, + }, -2) + + def exit(self): + self.applySettings() + self.close(True) + + def applySettings(self): + for x in self["config"].list: + x[1].save() + + def ok(self): + key = self.keydict[self["config"].getCurrent()[1]] + browseKeys = ["menubg", "menuaudio", "vmgm", "font_face"] + if key in browseKeys: + self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, key, self.settings) + + def cancel(self): + self.close(False) + + def loadProject(self): + self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, "project", self.settings) + + def saveProject(self): + self.applySettings() + ret = self.project.saveProject(resolveFilename(SCOPE_PLAYLIST)) + if ret.startswith: + text = _("Save")+' '+_('OK')+':\n'+ret + self.session.open(MessageBox,text,type = MessageBox.TYPE_INFO) + else: + text = _("Save")+' '+_('Error') + self.session.open(MessageBox,text,type = MessageBox.TYPE_ERROR) + + def FileBrowserClosed(self, path, scope): + if scope == "project": + if not self.project.loadProject(path): + self.session.open(MessageBox,self.project.error,MessageBox.TYPE_ERROR) + elif scope: + self.settings.dict()[scope].setValue(path)