improve usability: hide some advanced options below expert, clear out and resort...
authorFraxinas <andreas.frisch@multimedia-labs.de>
Fri, 20 Feb 2009 10:22:35 +0000 (11:22 +0100)
committerFraxinas <andreas.frisch@multimedia-labs.de>
Fri, 20 Feb 2009 10:22:35 +0000 (11:22 +0100)
when adding a new title which causes exceeding single and dual layer medium size

lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py
lib/python/Plugins/Extensions/DVDBurn/TitleList.py
lib/python/Plugins/Extensions/DVDBurn/TitleProperties.py

index 7407263..e97961b 100644 (file)
@@ -102,9 +102,15 @@ class ProjectSettings(Screen,ConfigListScreen):
                self["key_red"] = StaticText(_("Cancel"))
                self["key_green"] = StaticText(_("OK"))
                self["key_yellow"] = StaticText(_("Load"))
                self["key_red"] = StaticText(_("Cancel"))
                self["key_green"] = StaticText(_("OK"))
                self["key_yellow"] = StaticText(_("Load"))
-               self["key_blue"] = StaticText(_("Save"))
+               if config.usage.setup_level.index >= 2: # expert+
+                       self["key_blue"] = StaticText(_("Save"))
+               else:
+                       self["key_blue"] = StaticText()
                
                
-               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")
+               if config.usage.setup_level.index >= 2: # expert+
+                       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")
+               else:
+                       infotext = ""
                self["info"] = StaticText(infotext)
 
                self.settings = project.settings
                self["info"] = StaticText(infotext)
 
                self.settings = project.settings
@@ -141,9 +147,10 @@ class ProjectSettings(Screen,ConfigListScreen):
                        self.list.append(getConfigListEntry(_("ISO path"), self.settings.isopath))
                if authormode.startswith("menu"):
                        self.list.append(getConfigListEntry(_("Menu")+' '+_("template file"), self.settings.menutemplate))
                        self.list.append(getConfigListEntry(_("ISO path"), self.settings.isopath))
                if authormode.startswith("menu"):
                        self.list.append(getConfigListEntry(_("Menu")+' '+_("template file"), self.settings.menutemplate))
-                       self.list.append(getConfigListEntry(_("Menu")+' '+_("Title"), self.project.menutemplate.settings.titleformat))
-                       self.list.append(getConfigListEntry(_("Menu")+' '+_("Subtitles"), self.project.menutemplate.settings.subtitleformat))
-                       self.list.append(getConfigListEntry(_("Menu")+' '+_("background image"), self.project.menutemplate.settings.menubg))
+                       if config.usage.setup_level.index >= 2: # expert+
+                               self.list.append(getConfigListEntry(_("Menu")+' '+_("Title"), self.project.menutemplate.settings.titleformat))
+                               self.list.append(getConfigListEntry(_("Menu")+' '+_("Subtitles"), self.project.menutemplate.settings.subtitleformat))
+                               self.list.append(getConfigListEntry(_("Menu")+' '+_("background image"), self.project.menutemplate.settings.menubg))
                        #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")+' '+_("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))
@@ -151,12 +158,13 @@ class ProjectSettings(Screen,ConfigListScreen):
                        #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(_("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(_("Titleset mode"), self.settings.titlesetmode))
-                       if self.settings.titlesetmode.getValue() == "single" or authormode == "just_linked":
-                               self.list.append(getConfigListEntry(_("VMGM (intro trailer)"), self.settings.vmgm))
-               else:
-                       self.list.append(getConfigListEntry(("DVD data format"), self.settings.dataformat))
+               if config.usage.setup_level.index >= 2: # expert+
+                       if authormode != "data_ts":
+                               self.list.append(getConfigListEntry(_("Titleset mode"), self.settings.titlesetmode))
+                               if self.settings.titlesetmode.getValue() == "single" or authormode == "just_linked":
+                                       self.list.append(getConfigListEntry(_("VMGM (intro trailer)"), self.settings.vmgm))
+                       else:
+                               self.list.append(getConfigListEntry(("DVD data format"), self.settings.dataformat))
                
                self["config"].setList(self.list)
 
                
                self["config"].setList(self.list)
 
@@ -192,14 +200,15 @@ class ProjectSettings(Screen,ConfigListScreen):
                self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, "project", self.settings)
 
        def saveProject(self):
                self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, "project", self.settings)
 
        def saveProject(self):
-               self.applySettings()
-               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)
-               else:
-                       text = _("Save")+' '+_('Error')
-                       self.session.open(MessageBox,text,type = MessageBox.TYPE_ERROR)
+               if config.usage.setup_level.index >= 2: # expert+
+                       self.applySettings()
+                       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)
+                       else:
+                               text = _("Save")+' '+_('Error')
+                               self.session.open(MessageBox,text,type = MessageBox.TYPE_ERROR)
 
        def FileBrowserClosed(self, path, scope):
                if scope == "menutemplate":
 
        def FileBrowserClosed(self, path, scope):
                if scope == "menutemplate":
index 749f80e..7e736f9 100644 (file)
@@ -57,9 +57,9 @@ class TitleList(Screen, HelpableScreen):
                                "cancel": self.leave
                        })
 
                                "cancel": self.leave
                        })
 
-               self["key_red"] = StaticText(_("Remove title"))
+               self["key_red"] = StaticText()
                self["key_green"] = StaticText(_("Add title"))
                self["key_green"] = StaticText(_("Add title"))
-               self["key_yellow"] = StaticText(_("Title properties"))
+               self["key_yellow"] = StaticText()
                self["key_blue"] = StaticText(_("Settings"))
 
                self["title_label"] = StaticText()
                self["key_blue"] = StaticText(_("Settings"))
 
                self["title_label"] = StaticText()
@@ -74,6 +74,7 @@ class TitleList(Screen, HelpableScreen):
 
                self["titles"] = List(list = [ ], enableWrapAround = True, item_height=30, fonts = [gFont("Regular", 20)])
                self.updateTitleList()
 
                self["titles"] = List(list = [ ], enableWrapAround = True, item_height=30, fonts = [gFont("Regular", 20)])
                self.updateTitleList()
+               self.previous_size = 0
 
        def checkBackgroundJobs(self):
                for job in job_manager.getPendingJobs():
 
        def checkBackgroundJobs(self):
                for job in job_manager.getPendingJobs():
@@ -90,19 +91,15 @@ class TitleList(Screen, HelpableScreen):
                if self.backgroundJob:
                        j = self.backgroundJob
                        menu.append(("%s: %s (%d%%)" % (j.getStatustext(), j.name, int(100*j.progress/float(j.end))), self.showBackgroundJob))
                if self.backgroundJob:
                        j = self.backgroundJob
                        menu.append(("%s: %s (%d%%)" % (j.getStatustext(), j.name, int(100*j.progress/float(j.end))), self.showBackgroundJob))
+               menu.append((_("DVD media toolbox"), self.toolbox))
+               menu.append((_("Preview menu"), self.previewMenu))
                if self.project.settings.output.getValue() == "dvd":
                        menu.append((_("Burn DVD"), self.burnProject))
                elif self.project.settings.output.getValue() == "iso":
                        menu.append((_("Create DVD-ISO"), self.burnProject))
                menu.append((_("Burn existing image to DVD"), self.selectImage))
                if self.project.settings.output.getValue() == "dvd":
                        menu.append((_("Burn DVD"), self.burnProject))
                elif self.project.settings.output.getValue() == "iso":
                        menu.append((_("Create DVD-ISO"), self.burnProject))
                menu.append((_("Burn existing image to DVD"), self.selectImage))
-               menu.append((_("DVD media toolbox"), self.toolbox))
-               menu.append((_("Preview menu"), self.previewMenu))
-               menu.append((_("Collection settings"), self.settings))
-               menu.append((_("Reset and renumerate title names"), self.resetTitles))
                menu.append((_("Edit chapters of current title"), self.editTitle))
                menu.append((_("Edit chapters of current title"), self.editTitle))
-               menu.append((_("Properties of current title"), self.titleProperties))
-               menu.append((_("Add a new title"), self.addTitle))
-               menu.append((_("Remove title"), self.removeCurrentTitle))
+               menu.append((_("Reset and renumerate title names"), self.resetTitles))
                menu.append((_("Exit"), self.leave))
                self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)
 
                menu.append((_("Exit"), self.leave))
                self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)
 
@@ -235,6 +232,12 @@ class TitleList(Screen, HelpableScreen):
                        totalsize += title.estimatedDiskspace
                self["titles"].list = res
                self.updateSize(totalsize)
                        totalsize += title.estimatedDiskspace
                self["titles"].list = res
                self.updateSize(totalsize)
+               if len(res):
+                       self["key_red"].text = _("Remove title")
+                       self["key_yellow"].text = _("Title properties")
+               else:
+                       self["key_red"].text = ""
+                       self["key_yellow"].text = ""
 
        def updateSize(self, totalsize):
                size = int((totalsize/1024)/1024)
 
        def updateSize(self, totalsize):
                size = int((totalsize/1024)/1024)
@@ -244,14 +247,19 @@ class TitleList(Screen, HelpableScreen):
                        percent = 100 * size / float(max_DL)
                        self["space_label"].text = "%d MB - " % size + _("exceeds dual layer medium!") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
                        percent = 100 * size / float(max_DL)
                        self["space_label"].text = "%d MB - " % size + _("exceeds dual layer medium!") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
+                       if self.previous_size < max_DL:
+                               self.session.open(MessageBox,text = _("exceeds dual layer medium!"), type = MessageBox.TYPE_ERROR)
                elif size > max_SL:
                        percent = 100 * size / float(max_DL)
                        self["space_label"].text = "%d MB  " % size + _("of a DUAL layer medium used.") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
                elif size > max_SL:
                        percent = 100 * size / float(max_DL)
                        self["space_label"].text = "%d MB  " % size + _("of a DUAL layer medium used.") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
+                       if self.previous_size < max_SL:
+                               self.session.open(MessageBox,text = _("Your collection exceeds the size of a single layer medium, you will need a blank dual layer DVD!"), type = MessageBox.TYPE_INFO)
                elif size < max_SL:
                        percent = 100 * size / float(max_SL)
                        self["space_label"].text = "%d MB " % size + _("of a SINGLE layer medium used.") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
                elif size < max_SL:
                        percent = 100 * size / float(max_SL)
                        self["space_label"].text = "%d MB " % size + _("of a SINGLE layer medium used.") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
+               self.previous_size = size
 
        def getCurrentTitle(self):
                t = self["titles"].getCurrent()
 
        def getCurrentTitle(self):
                t = self["titles"].getCurrent()
index 63ae6c1..40b85b7 100644 (file)
@@ -72,19 +72,19 @@ class TitleProperties(Screen,ConfigListScreen):
                        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))
                        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:
-                               DVB_aud = audiotrack.DVB_lang.getValue() or audiotrack.pid.getValue()
-                               self.list.append(getConfigListEntry(_("burn audio track (%s)") % DVB_aud, audiotrack.active))
-                               if audiotrack.active.getValue():
-                                       self.list.append(getConfigListEntry(_("audio track (%s) format") % DVB_aud, audiotrack.format))
-                                       self.list.append(getConfigListEntry(_("audio track (%s) language") % DVB_aud, 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))
-
+                       if config.usage.setup_level.index >= 2: # expert+
+                               for audiotrack in self.properties.audiotracks:
+                                       DVB_aud = audiotrack.DVB_lang.getValue() or audiotrack.pid.getValue()
+                                       self.list.append(getConfigListEntry(_("burn audio track (%s)") % DVB_aud, audiotrack.active))
+                                       if audiotrack.active.getValue():
+                                               self.list.append(getConfigListEntry(_("audio track (%s) format") % DVB_aud, audiotrack.format))
+                                               self.list.append(getConfigListEntry(_("audio track (%s) language") % DVB_aud, 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))
                        if len(title.chaptermarks) == 0:
                                self.list.append(getConfigListEntry(_("Auto chapter split every ? minutes (0=never)"), self.properties.autochapter))
                        infotext = "DVB " + _("Title") + ': ' + title.DVBname + "\n" + _("Description") + ': ' + title.DVBdescr + "\n" + _("Channel") + ': ' + title.DVBchannel + '\n' + _("Begin time") + title.formatDVDmenuText(": $D.$M.$Y, $T\n", self.title_idx+1)
                        if len(title.chaptermarks) == 0:
                                self.list.append(getConfigListEntry(_("Auto chapter split every ? minutes (0=never)"), self.properties.autochapter))
                        infotext = "DVB " + _("Title") + ': ' + title.DVBname + "\n" + _("Description") + ': ' + title.DVBdescr + "\n" + _("Channel") + ': ' + title.DVBchannel + '\n' + _("Begin time") + title.formatDVDmenuText(": $D.$M.$Y, $T\n", self.title_idx+1)