Merge remote branch 'origin/bug_306_sort_by_date'
[vuplus_dvbapp] / lib / python / Plugins / Extensions / DVDBurn / Process.py
index 5f22f13..642a898 100644 (file)
@@ -264,6 +264,7 @@ class WaitForResidentTasks(Task):
                
        def run(self, callback):
                print "waiting for %d resident task(s) %s to finish..." % (len(self.job.resident_tasks),str(self.job.resident_tasks))
+               self.callback = callback
                if self.job.resident_tasks == 0:
                        callback(self, [])
 
@@ -315,9 +316,9 @@ class BurnTask(Task):
                elif line.startswith(":-["):
                        if line.find("ASC=30h") != -1:
                                self.error = self.ERROR_NOTWRITEABLE
-                       if line.find("ASC=24h") != -1:
+                       elif line.find("ASC=24h") != -1:
                                self.error = self.ERROR_LOAD
-                       if line.find("SK=5h/ASC=A8h/ACQ=04h") != -1:
+                       elif line.find("SK=5h/ASC=A8h/ACQ=04h") != -1:
                                self.error = self.ERROR_MINUSRWBUG
                        else:
                                self.error = self.ERROR_UNKNOWN
@@ -679,7 +680,7 @@ def CreateAuthoringXML_singleset(job):
        authorxml.append('<?xml version="1.0" encoding="utf-8"?>\n')
        authorxml.append(' <dvdauthor dest="' + (job.workspace+"/dvd") + '">\n')
        authorxml.append('  <vmgm>\n')
-       authorxml.append('   <menus>\n')
+       authorxml.append('   <menus lang="' + job.project.menutemplate.settings.menulang.getValue() + '">\n')
        authorxml.append('    <pgc>\n')
        authorxml.append('     <vob file="' + job.project.settings.vmgm.getValue() + '" />\n', )
        if mode.startswith("menu"):
@@ -691,7 +692,7 @@ def CreateAuthoringXML_singleset(job):
        authorxml.append('  </vmgm>\n')
        authorxml.append('  <titleset>\n')
        if mode.startswith("menu"):
-               authorxml.append('   <menus>\n')
+               authorxml.append('   <menus lang="' + job.project.menutemplate.settings.menulang.getValue() + '">\n')
                authorxml.append('    <video aspect="4:3"/>\n')
                for menu_count in range(1 , job.nr_menus+1):
                        if menu_count == 1:
@@ -747,11 +748,14 @@ def CreateAuthoringXML_multiset(job):
        authorxml.append('<?xml version="1.0" encoding="utf-8"?>\n')
        authorxml.append(' <dvdauthor dest="' + (job.workspace+"/dvd") + '" jumppad="yes">\n')
        authorxml.append('  <vmgm>\n')
-       authorxml.append('   <menus>\n')
+       authorxml.append('   <menus lang="' + job.project.menutemplate.settings.menulang.getValue() + '">\n')
        authorxml.append('    <video aspect="4:3"/>\n')
        if mode.startswith("menu"):
                for menu_count in range(1 , job.nr_menus+1):
-                       authorxml.append('    <pgc>\n')
+                       if menu_count == 1:
+                               authorxml.append('    <pgc>\n')
+                       else:
+                               authorxml.append('    <pgc>\n')
                        menu_start_title = (menu_count-1)*job.titles_per_menu + 1
                        menu_end_title = (menu_count)*job.titles_per_menu + 1
                        if menu_end_title > nr_titles:
@@ -776,6 +780,13 @@ def CreateAuthoringXML_multiset(job):
        for i in range( nr_titles ):
                title = job.project.titles[i]
                authorxml.append('  <titleset>\n')
+               authorxml.append('   <menus lang="' + job.project.menutemplate.settings.menulang.getValue() + '">\n')
+               authorxml.append('    <pgc entry="root">\n')
+               authorxml.append('     <pre>\n')
+               authorxml.append('      jump vmgm menu entry title;\n')
+               authorxml.append('     </pre>\n')
+               authorxml.append('    </pgc>\n')
+               authorxml.append('   </menus>\n')
                authorxml.append('   <titles>\n')
                for audiotrack in title.properties.audiotracks:
                        active = audiotrack.active.getValue()
@@ -873,6 +884,8 @@ class DVDJob(Job):
                                self.name = _("Burn DVD")
                                tool = "/bin/growisofs"
                                burnargs = [ "-Z", "/dev/" + harddiskmanager.getCD(), "-dvd-compat" ]
+                               if self.project.size/(1024*1024) > self.project.MAX_SL:
+                                       burnargs += [ "-use-the-force-luke=4gms", "-speed=1", "-R" ]
                        elif output == "iso":
                                self.name = _("Create DVD-ISO")
                                tool = "/usr/bin/mkisofs"
@@ -911,6 +924,8 @@ class DVDdataJob(Job):
                if output == "dvd":
                        self.name = _("Burn DVD")
                        burnargs = [ "-Z", "/dev/" + harddiskmanager.getCD(), "-dvd-compat" ]
+                       if self.project.size/(1024*1024) > self.project.MAX_SL:
+                               burnargs += [ "-use-the-force-luke=4gms", "-speed=1", "-R" ]
                elif output == "iso":
                        tool = "/usr/bin/mkisofs"
                        self.name = _("Create DVD-ISO")
@@ -931,13 +946,18 @@ class DVDisoJob(Job):
                Job.__init__(self, _("Burn DVD"))
                self.project = project
                self.menupreview = False
+               from Tools.Directories import getSize
                if imagepath.endswith(".iso"):
                        PreviewTask(self, imagepath)
                        burnargs = [ "-Z", "/dev/" + harddiskmanager.getCD() + '='+imagepath, "-dvd-compat" ]
+                       if getSize(imagepath)/(1024*1024) > self.project.MAX_SL:
+                               burnargs += [ "-use-the-force-luke=4gms", "-speed=1", "-R" ]
                else:
                        PreviewTask(self, imagepath + "/VIDEO_TS/")
                        volName = self.project.settings.name.getValue()
                        burnargs = [ "-Z", "/dev/" + harddiskmanager.getCD(), "-dvd-compat" ]
+                       if getSize(imagepath)/(1024*1024) > self.project.MAX_SL:
+                               burnargs += [ "-use-the-force-luke=4gms", "-speed=1", "-R" ]
                        burnargs += [ "-dvd-video", "-publisher", "Dreambox", "-V", volName, imagepath ]
                tool = "/bin/growisofs"
                BurnTask(self, burnargs, tool)