X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ec970c4f4534a4ed6f1f4d930bfb8d56bf5531a9..25a66e5ff609eeb03907030f16c408197b646ecc:/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py diff --git a/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py b/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py index ba78e5e1..7491e046 100644 --- a/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py +++ b/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py @@ -9,26 +9,10 @@ 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 Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_FONTS, SCOPE_HDD 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 = """ @@ -41,20 +25,25 @@ class FileBrowser(Screen, HelpableScreen): pattern = "" currDir = "/" if self.scope == "project": - currDir = resolveFilename(SCOPE_PLAYLIST) + currDir = self.getDir() pattern = "(?i)^.*\.(ddvdp\.xml)" if self.scope == "menubg": - currDir = self.getDir(settings.menubg, resolveFilename(SCOPE_SKIN)) + currDir = self.getDir(settings.menubg) pattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)" elif self.scope == "menuaudio": - currDir = self.getDir(settings.menuaudio, resolveFilename(SCOPE_SKIN)) + currDir = self.getDir(settings.menuaudio) pattern = "(?i)^.*\.(mp2|m2a|ac3)" elif self.scope == "vmgm": - currDir = self.getDir(settings.vmgm, resolveFilename(SCOPE_SKIN)) + currDir = self.getDir(settings.vmgm) pattern = "(?i)^.*\.(mpg|mpeg)" elif self.scope == "font_face": currDir = self.getDir(settings.font_face, resolveFilename(SCOPE_FONTS)) pattern = "(?i)^.*\.(ttf)" + elif self.scope == "isopath": + currDir = settings.isopath.getValue() + elif self.scope == "image": + currDir = resolveFilename(SCOPE_HDD) + pattern = "(?i)^.*\.(iso)" self.filelist = FileList(currDir, matchingPattern=pattern) self["filelist"] = self.filelist @@ -65,21 +54,27 @@ class FileBrowser(Screen, HelpableScreen): "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 getDir(self, key=None, defaultDir=None): + if key: + settingDir = key.getValue() + if len(settingDir) > 1: + return (settingDir.rstrip("/").rsplit("/",1))[0] + return defaultDir or (resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/") def ok(self): if self.filelist.canDescent(): self.filelist.descent() + if self.scope == "image": + path = self["filelist"].getCurrentDirectory() or "" + if fileExists(path+"VIDEO_TS"): + self.close(path,self.scope) else: ret = self["filelist"].getCurrentDirectory() + '/' + self["filelist"].getFilename() self.close(ret,self.scope) def exit(self): + if self.scope == "isopath": + self.close(self["filelist"].getCurrentDirectory(),self.scope) self.close(None,False) class ProjectSettings(Screen,ConfigListScreen): @@ -106,26 +101,13 @@ class ProjectSettings(Screen,ConfigListScreen): 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") + " %T=" + _("Begin time") + ", %Y=" + _("year") + ", %M=" + _("month") + ", %D=" + _("day") + ",\n%C=" + _("Channel") + ", %f=" + _("filename") + 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) 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"), self.settings.titleformat)) - self.list.append(getConfigListEntry(_("Menu")+' '+_("Subtitles"), self.settings.subtitleformat)) - self.list.append(getConfigListEntry(_("Menu")+' '+_("headline")+' '+_("color"), self.settings.color_headline)) - self.list.append(getConfigListEntry(_("Menu")+' '+_("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")+', '+_("Title")+', '+_("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) - + ConfigListScreen.__init__(self, []) + self.initConfigList() + self.keydict = {} for key, val in self.settings.dict().iteritems(): self.keydict[val] = key @@ -139,7 +121,52 @@ class ProjectSettings(Screen,ConfigListScreen): "cancel": self.cancel, "ok": self.ok, }, -2) - + + def changedConfigList(self): + key = self.keydict[self["config"].getCurrent()[1]] + if key == "authormode" or key == "output": + self.initConfigList() + + def initConfigList(self): + authormode = self.settings.authormode.getValue() + output = self.settings.output.getValue() + self.list = [] + self.list.append(getConfigListEntry(_("Collection name"), self.settings.name)) + self.list.append(getConfigListEntry(_("Authoring mode"), self.settings.authormode)) + self.list.append(getConfigListEntry(("Output"), self.settings.output)) + if output == "iso": + self.list.append(getConfigListEntry(_("ISO path"), self.settings.isopath)) + if authormode.startswith("menu"): + self.list.append(getConfigListEntry(_("Menu")+' '+_("background image"), self.settings.menubg)) + self.list.append(getConfigListEntry(_("Menu")+' '+_("Title"), self.settings.titleformat)) + self.list.append(getConfigListEntry(_("Menu")+' '+_("Subtitles"), self.settings.subtitleformat)) + self.list.append(getConfigListEntry(_("Menu")+' '+_("headline")+' '+_("color"), self.settings.color_headline)) + self.list.append(getConfigListEntry(_("Menu")+' '+_("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")+', '+_("Title")+', '+_("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)) + if authormode != "data_ts": + self.list.append(getConfigListEntry(_("VMGM (intro trailer)"), self.settings.vmgm)) + self.list.append(getConfigListEntry(_("Auto chapter split every ? minutes (0=never)"), self.settings.autochapter)) + else: + self.list.append(getConfigListEntry(("DVD data format"), self.settings.dataformat)) + + self["config"].setList(self.list) + + def keyLeft(self): + ConfigListScreen.keyLeft(self) + key = self.keydict[self["config"].getCurrent()[1]] + if key == "authormode" or key == "output": + self.initConfigList() + + def keyRight(self): + ConfigListScreen.keyRight(self) + key = self.keydict[self["config"].getCurrent()[1]] + if key == "authormode" or key == "output": + self.initConfigList() + def exit(self): self.applySettings() self.close(True) @@ -150,8 +177,7 @@ class ProjectSettings(Screen,ConfigListScreen): def ok(self): key = self.keydict[self["config"].getCurrent()[1]] - browseKeys = ["menubg", "menuaudio", "vmgm", "font_face"] - if key in browseKeys: + if key in self.project.filekeys: self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, key, self.settings) def cancel(self): @@ -162,7 +188,7 @@ class ProjectSettings(Screen,ConfigListScreen): def saveProject(self): self.applySettings() - ret = self.project.saveProject(resolveFilename(SCOPE_PLAYLIST)) + ret = self.project.saveProject(resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/") if ret.startswith: text = _("Save")+' '+_('OK')+':\n'+ret self.session.open(MessageBox,text,type = MessageBox.TYPE_INFO) @@ -171,8 +197,8 @@ class ProjectSettings(Screen,ConfigListScreen): self.session.open(MessageBox,text,type = MessageBox.TYPE_ERROR) def FileBrowserClosed(self, path, scope): - if scope == "project": + if scope in self.project.filekeys: + self.settings.dict()[scope].setValue(path) + elif 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)