aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFraxinas <andreas.frisch@multimedia-labs.de>2009-03-03 11:50:35 +0100
committerFraxinas <andreas.frisch@multimedia-labs.de>2009-03-03 11:50:35 +0100
commit1354d745469c0595f4c379edf543d5a613663e03 (patch)
treef9ffbd969363e88ae6317d9cc62ade145edb59a1 /lib
parent4a5818c82c71caa97447d4f91bd418a68c0bf174 (diff)
downloadenigma2-1354d745469c0595f4c379edf543d5a613663e03.tar.gz
enigma2-1354d745469c0595f4c379edf543d5a613663e03.zip
fix selecting menu template and background image files, only allow start of burning process if at least one title is in the collection, otherwise
hide menu entry and add yes-no-box before burning with RECORD key on rcu
Diffstat (limited to 'lib')
-rw-r--r--lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py67
-rw-r--r--lib/python/Plugins/Extensions/DVDBurn/TitleList.py15
2 files changed, 47 insertions, 35 deletions
diff --git a/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py b/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py
index e97961b4..a8888da3 100644
--- a/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py
+++ b/lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py
@@ -18,11 +18,12 @@ class FileBrowser(Screen, HelpableScreen):
<screen name="FileBrowser" position="100,100" size="520,376" title="DVD File Browser" >
<widget name="filelist" position="0,0" size="520,376" scrollbarMode="showOnDemand" />
</screen>"""
- def __init__(self, session, scope, settings):
+ def __init__(self, session, scope, configRef):
Screen.__init__(self, session)
HelpableScreen.__init__(self)
self.scope = scope
pattern = ""
+ self.configRef = configRef
currDir = "/"
if self.scope == "project":
currDir = self.getDir()
@@ -31,19 +32,19 @@ class FileBrowser(Screen, HelpableScreen):
currDir = self.getDir()
pattern = "(?i)^.*\.(ddvdm\.xml)"
if self.scope == "menubg":
- currDir = self.getDir(settings.menubg)
+ currDir = self.getDir(configRef.getValue())
pattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)"
elif self.scope == "menuaudio":
- currDir = self.getDir(settings.menuaudio)
+ currDir = self.getDir(configRef.getValue())
pattern = "(?i)^.*\.(mp2|m2a|ac3)"
elif self.scope == "vmgm":
- currDir = self.getDir(settings.vmgm)
+ currDir = self.getDir(configRef.getValue())
pattern = "(?i)^.*\.(mpg|mpeg)"
elif self.scope == "font_face":
- currDir = self.getDir(settings.font_face, resolveFilename(SCOPE_FONTS))
+ currDir = self.getDir(configRef.getValue(), resolveFilename(SCOPE_FONTS))
pattern = "(?i)^.*\.(ttf)"
elif self.scope == "isopath":
- currDir = settings.isopath.getValue()
+ currDir = configRef.getValue()
elif self.scope == "image":
currDir = resolveFilename(SCOPE_HDD)
pattern = "(?i)^.*\.(iso)"
@@ -57,11 +58,9 @@ class FileBrowser(Screen, HelpableScreen):
"cancel": self.exit
})
- def getDir(self, key=None, defaultDir=None):
- if key:
- settingDir = key.getValue()
- if len(settingDir) > 1:
- return (settingDir.rstrip("/").rsplit("/",1))[0]
+ def getDir(self, currentVal=None, defaultDir=None):
+ if currentVal:
+ return (currentVal.rstrip("/").rsplit("/",1))[0]
return defaultDir or (resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/")
def ok(self):
@@ -70,15 +69,15 @@ class FileBrowser(Screen, HelpableScreen):
if self.scope == "image":
path = self["filelist"].getCurrentDirectory() or ""
if fileExists(path+"VIDEO_TS"):
- self.close(path,self.scope)
+ self.close(path,self.scope,self.configRef)
else:
ret = self["filelist"].getCurrentDirectory() + '/' + self["filelist"].getFilename()
- self.close(ret,self.scope)
+ self.close(ret,self.scope,self.configRef)
def exit(self):
if self.scope == "isopath":
- self.close(self["filelist"].getCurrentDirectory(),self.scope)
- self.close(None,False)
+ self.close(self["filelist"].getCurrentDirectory(),self.scope,self.configRef)
+ self.close(None,False,None)
class ProjectSettings(Screen,ConfigListScreen):
skin = """
@@ -113,13 +112,10 @@ class ProjectSettings(Screen,ConfigListScreen):
infotext = ""
self["info"] = StaticText(infotext)
+ self.keydict = {}
self.settings = project.settings
ConfigListScreen.__init__(self, [])
self.initConfigList()
-
- self.keydict = {}
- for key, val in self.settings.dict().iteritems():
- self.keydict[val] = key
self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
{
@@ -167,6 +163,11 @@ class ProjectSettings(Screen,ConfigListScreen):
self.list.append(getConfigListEntry(("DVD data format"), self.settings.dataformat))
self["config"].setList(self.list)
+ self.keydict = {}
+ for key, val in self.settings.dict().iteritems():
+ self.keydict[val] = key
+ for key, val in self.project.menutemplate.settings.dict().iteritems():
+ self.keydict[val] = key
def keyLeft(self):
ConfigListScreen.keyLeft(self)
@@ -190,8 +191,9 @@ class ProjectSettings(Screen,ConfigListScreen):
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)
+ from DVDProject import ConfigFilename
+ if type(self["config"].getCurrent()[1]) == ConfigFilename:
+ self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, key, self["config"].getCurrent()[1])
def cancel(self):
self.close(False)
@@ -210,17 +212,20 @@ class ProjectSettings(Screen,ConfigListScreen):
text = _("Save")+' '+_('Error')
self.session.open(MessageBox,text,type = MessageBox.TYPE_ERROR)
- def FileBrowserClosed(self, path, scope):
+ def FileBrowserClosed(self, path, scope, configRef):
if scope == "menutemplate":
- if not self.project.menutemplate.loadTemplate(path):
- self.session.open(MessageBox,self.project.error,MessageBox.TYPE_ERROR)
- else:
+ if self.project.menutemplate.loadTemplate(path):
print "[ProjectSettings] menu template loaded"
-
- 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)
+ configRef.setValue(path)
+ self.initConfigList()
else:
+ self.session.open(MessageBox,self.project.error,MessageBox.TYPE_ERROR)
+ elif scope == "project":
+ if self.project.loadProject(path):
+ configRef.setValue(path)
self.initConfigList()
+ else:
+ self.session.open(MessageBox,self.project.error,MessageBox.TYPE_ERROR)
+ elif scope:
+ configRef.setValue(path)
+ self.initConfigList()
diff --git a/lib/python/Plugins/Extensions/DVDBurn/TitleList.py b/lib/python/Plugins/Extensions/DVDBurn/TitleList.py
index 7e736f9f..fd4c7134 100644
--- a/lib/python/Plugins/Extensions/DVDBurn/TitleList.py
+++ b/lib/python/Plugins/Extensions/DVDBurn/TitleList.py
@@ -44,7 +44,7 @@ class TitleList(Screen, HelpableScreen):
"titleProperties": (self.titleProperties, _("Properties of current title"), _("Title properties")),
"removeCurrentTitle": (self.removeCurrentTitle, _("Remove currently selected title"), _("Remove title")),
"settings": (self.settings, _("Collection settings"), _("Settings")),
- "burnProject": (self.burnProject, _("Burn DVD"), _("Burn DVD")),
+ "burnProject": (self.askBurnProject, _("Burn DVD"), _("Burn DVD")),
})
self["MovieSelectionActions"] = HelpableActionMap(self, "MovieSelectionActions",
@@ -94,7 +94,8 @@ class TitleList(Screen, HelpableScreen):
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))
+ if len(self["titles"].list):
+ 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))
@@ -196,7 +197,13 @@ class TitleList(Screen, HelpableScreen):
self["error_label"].show()
return False
- def burnProject(self):
+ def askBurnProject(self):
+ if len(self["titles"].list):
+ self.session.openWithCallback(self.burnProject,MessageBox,text = _("Do you want to burn this collection to DVD medium?"), type = MessageBox.TYPE_YESNO)
+
+ def burnProject(self, answer=True):
+ if not answer:
+ return
if self.project.settings.authormode.getValue() == "data_ts":
job = Process.DVDdataJob(self.project)
job_manager.AddJob(job)
@@ -208,7 +215,7 @@ class TitleList(Screen, HelpableScreen):
job_manager.in_background = False
self.session.openWithCallback(self.JobViewCB, JobView, job)
- def burnISO(self, path, scope):
+ def burnISO(self, path, scope, configRef):
if path:
job = Process.DVDisoJob(self.project, path)
job_manager.AddJob(job)