allow creating .ISO files. allow burning .ISO images or preauthored dvd structures...
[enigma2.git] / lib / python / Plugins / Extensions / DVDBurn / TitleList.py
index 3a73211559220d02150727aa3e556f5bfe293fe5..600411ce33775f50b409e6d7237d7ded4a757448 100644 (file)
@@ -1,14 +1,15 @@
-import DVDProject, TitleList, TitleCutter, ProjectSettings, DVDToolbox
+import DVDProject, TitleList, TitleCutter, ProjectSettings, DVDToolbox, Process
 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 Screens.TaskView import JobView
+from Components.Task import job_manager
 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 Components.Label import Label
 from enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_LEFT
 from Tools.Directories import resolveFilename, SCOPE_PLUGINS
@@ -76,13 +77,17 @@ class TitleList(Screen, HelpableScreen):
                
        def showMenu(self):
                menu = []
-               menu.append((_("Burn DVD"), "burn"));
+               if self.project.settings.output.getValue() == "dvd":
+                       menu.append((_("Burn DVD"), "burn"));
+               elif self.project.settings.output.getValue() == "iso":
+                       menu.append((_("Create DVD-ISO"), "burn"));
                menu.append((_("Preview menu"), "previewMenu"));
                menu.append((_("DVD media toolbox"), "toolbox"));
                menu.append((_("Collection settings"), "settings"));
                menu.append((_("Add a new title"), "addtitle"));
                menu.append((_("Remove title"), "removetitle"));
                menu.append((_("Edit chapters of current title"), "edittitle"));
+               menu.append((_("Burn existing image to DVD"), "burniso"));
                menu.append((_("Exit"), "exit"));
                self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)
 
@@ -103,6 +108,8 @@ class TitleList(Screen, HelpableScreen):
                        self.previewMenu()
                elif choice[1] == "burn":
                        self.burnProject()
+               elif choice[1] == "burniso":
+                       self.session.openWithCallback(self.burnISO, ProjectSettings.FileBrowser, "image", self.project.settings)
                elif choice[1] == "exit":
                        self.leave()
 
@@ -163,7 +170,7 @@ class TitleList(Screen, HelpableScreen):
                        self.updateTitleList()
 
        def toolbox(self):
-               self.session.open(DVDToolbox.DVDToolbox, self.project)
+               self.session.open(DVDToolbox.DVDToolbox)
 
        def settings(self):
                self.session.openWithCallback(self.settingsCB, ProjectSettings.ProjectSettings, self.project)
@@ -185,24 +192,34 @@ class TitleList(Screen, HelpableScreen):
 
        def burnProject(self):
                if self.project.settings.authormode.getValue() == "data_ts":
-                       import Process
-                       job = Process.BurnDataTS(self.session, self.project)
-                       from Screens.TaskView import JobView
-                       self.session.open(JobView, job)
+                       job = Process.DVDdataJob(self.project)
+                       job_manager.AddJob(job)
+                       job_manager.in_background = False
+                       self.session.openWithCallback(self.JobViewCB, JobView, job)
                else:
                        autochapter = self.project.settings.autochapter.getValue()
                        if autochapter > 0:
                                for title in self.project.titles:
                                        title.produceAutoChapter(autochapter)
-                       import Process
-                       job = Process.Burn(self.session, self.project)
-                       from Screens.TaskView import JobView
-                       self.session.open(JobView, job)
+                       job = Process.DVDJob(self.project)
+                       job_manager.AddJob(job)
+                       job_manager.in_background = False
+                       self.session.openWithCallback(self.JobViewCB, JobView, job)
 
-       def previewMenu(self):
-               import Process
-               job = Process.PreviewMenu(self.session, self.project)
+       def burnISO(self, path, scope):
+               job = Process.DVDisoJob(self.project, path)
+               job_manager.AddJob(job)
+               job_manager.in_background = False
+               self.session.openWithCallback(self.JobViewCB, JobView, job)
+
+       def JobViewCB(self, in_background):
+               job_manager.in_background = in_background
 
+       def previewMenu(self):
+               job = Process.DVDJob(self.project, menupreview=True)
+               job_manager.in_background = False
+               job_manager.AddJob(job)
+               
        def updateTitleList(self):
                res = [ ]
                totalsize = 0