CreateMenu is now a task of its own
[enigma2.git] / lib / python / Plugins / Extensions / DVDBurn / ProjectSettings.py
index 3cf7f9d098ad7146ae88322e232d0359a9dd46de..311c7785cfcde0f39802a0d3e7607c9305f73a52 100644 (file)
@@ -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 resolveFilename, SCOPE_PLUGINS, 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 = """
        <screen name="FileBrowser" position="100,100" size="520,376" title="DVD File Browser" >
@@ -41,16 +25,16 @@ 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))
@@ -65,12 +49,12 @@ 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():
@@ -93,8 +77,8 @@ class ProjectSettings(Screen,ConfigListScreen):
                    <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
                    <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
                    <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
-                   <widget name="config" position="20,50" size="540,276" scrollbarMode="showOnDemand" />
-                   <widget source="info" render="Label" position="20,330" size="520,110" font="Regular;20" />
+                   <widget name="config" position="10,50" size="540,276" scrollbarMode="showOnDemand" />
+                   <widget source="info" render="Label" position="20,350" size="520,90" font="Regular;16" />
                </screen>"""
 
        def __init__(self, session, project = None):
@@ -106,26 +90,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") + " $Y=" + _("year") + ", $M=" + _("month") + ", $D=" + _("day") + ", $h=" + _("hour") + ", $m=" + _("minute") + ", $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 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)
-               
+               ConfigListScreen.__init__(self, [])
+               self.initConfigList(self.settings.authormode.getValue())
+                       
                self.keydict = {}
                for key, val in self.settings.dict().iteritems():
                        self.keydict[val] = key
@@ -139,7 +110,42 @@ class ProjectSettings(Screen,ConfigListScreen):
                    "cancel": self.cancel,
                    "ok": self.ok,
                }, -2)
-       
+
+       def changedConfigList(self):
+               if self.keydict[self["config"].getCurrent()[1]] == "authormode":
+                       self.initConfigList(self.settings.authormode.getValue())
+               
+       def initConfigList(self, authormode=""):
+               print "initConfigList(%s)" % authormode
+               self.list = []
+               self.list.append(getConfigListEntry(_("Collection name"), self.settings.name))
+               self.list.append(getConfigListEntry(_("Authoring mode"), self.settings.authormode))
+               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))
+               self["config"].setList(self.list)
+
+       def keyLeft(self):
+               ConfigListScreen.keyLeft(self)
+               if self.keydict[self["config"].getCurrent()[1]] == "authormode":
+                       self.initConfigList(self.settings.authormode.getValue())
+
+       def keyRight(self):
+               ConfigListScreen.keyRight(self)
+               if self.keydict[self["config"].getCurrent()[1]] == "authormode":
+                       self.initConfigList(self.settings.authormode.getValue())
+
        def exit(self):
                self.applySettings()
                self.close(True)
@@ -150,8 +156,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 +167,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 +176,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)