show dvd burn jobs running in background in main menu and fix potential crash on...
authorFraxinas <andreas.frisch@multimedia-labs.de>
Mon, 17 Nov 2008 22:29:31 +0000 (23:29 +0100)
committerFraxinas <andreas.frisch@multimedia-labs.de>
Mon, 17 Nov 2008 22:29:31 +0000 (23:29 +0100)
lib/python/Plugins/Extensions/DVDBurn/Process.py
lib/python/Plugins/Extensions/DVDBurn/TitleList.py

index 89ca90f..946b44a 100644 (file)
@@ -368,6 +368,9 @@ class CheckDiskspaceTask(Task):
                self.global_preconditions.append(DiskspacePrecondition(diskSpaceNeeded))
                self.weighting = 5
 
+       def abort(self):
+               self.finish(aborted = True)
+
        def run(self, callback):
                failed_preconditions = self.checkPreconditions(True) + self.checkPreconditions(False)
                if len(failed_preconditions):
index 345af87..537da0d 100644 (file)
@@ -74,9 +74,22 @@ class TitleList(Screen, HelpableScreen):
 
                self["titles"] = List(list = [ ], enableWrapAround = True, item_height=30, fonts = [gFont("Regular", 20)])
                self.updateTitleList()
-               
+
+       def checkBackgroundJobs(self):
+               for job in job_manager.getPendingJobs():
+                       print "type(job):", type(job)
+                       print "Process.DVDJob:", Process.DVDJob
+                       if type(job) == Process.DVDJob:
+                               self.backgroundJob = job
+                               return
+               self.backgroundJob = None
+
        def showMenu(self):
                menu = []
+               self.checkBackgroundJobs()
+               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.project.settings.output.getValue() == "dvd":
                        menu.append((_("Burn DVD"), self.burnProject))
                elif self.project.settings.output.getValue() == "iso":
@@ -97,6 +110,11 @@ class TitleList(Screen, HelpableScreen):
                if choice:
                        choice[1]()
 
+       def showBackgroundJob(self):
+               job_manager.in_background = False
+               self.session.openWithCallback(self.JobViewCB, JobView, self.backgroundJob)
+               self.backgroundJob = None
+       
        def titleProperties(self):
                if self.getCurrentTitle():
                        self.session.openWithCallback(self.updateTitleList, TitleProperties.TitleProperties, self, self.project, self["titles"].getIndex())
@@ -217,7 +235,7 @@ class TitleList(Screen, HelpableScreen):
                        totalsize += title.estimatedDiskspace
                self["titles"].list = res
                self.updateSize(totalsize)
-               
+
        def updateSize(self, totalsize):
                size = int((totalsize/1024)/1024)
                max_SL = 4370