-import DVDProject, TitleList, TitleCutter, ProjectSettings, DVDToolbox, Process
+import DVDProject, TitleList, TitleCutter, TitleProperties, ProjectSettings, DVDToolbox, Process
from Screens.Screen import Screen
from Screens.ChoiceBox import ChoiceBox
from Screens.InputBox import InputBox
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
self["titleactions"] = HelpableActionMap(self, "DVDTitleList",
{
"addTitle": (self.addTitle, _("Add a new title"), _("Add title")),
- "editTitle": (self.editTitle, _("Edit chapters of current title"), _("Edit title")),
+ "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")),
"cancel": self.leave
})
- self["key_red"] = StaticText(_("Remove title"))
+ self["key_red"] = StaticText()
self["key_green"] = StaticText(_("Add title"))
- self["key_yellow"] = StaticText(_("Edit title"))
+ self["key_yellow"] = StaticText()
self["key_blue"] = StaticText(_("Settings"))
self["title_label"] = StaticText()
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():
+ 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 = []
- menu.append((_("Burn DVD"), "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((_("Exit"), "exit"));
+ 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))
+ 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))
+ menu.append((_("Edit chapters of current title"), self.editTitle))
+ menu.append((_("Reset and renumerate title names"), self.resetTitles))
+ menu.append((_("Exit"), self.leave))
self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)
def menuCallback(self, choice):
- if choice is None:
- return
- if choice[1] == "removetitle":
- self.removeCurrentTitle()
- elif choice[1] == "addtitle":
- self.addTitle()
- elif choice[1] == "edittitle":
- self.editTitle()
- elif choice[1] == "toolbox":
- self.toolbox()
- elif choice[1] == "settings":
- self.settings()
- elif choice[1] == "previewMenu":
- self.previewMenu()
- elif choice[1] == "burn":
- self.burnProject()
- elif choice[1] == "exit":
- self.leave()
+ 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())
+
+ def selectImage(self):
+ self.session.openWithCallback(self.burnISO, ProjectSettings.FileBrowser, "image", self.project.settings)
def newProject(self):
self.project = DVDProject.DVDProject()
self["title_label"].text = _("Table of content for collection") + " \"" + self.project.settings.name.getValue() + "\":"
def loadTemplate(self):
- filename = resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/DreamboxDVDtemplate.ddvdp.xml"
- if self.project.loadProject(filename):
+ filename = resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/DreamboxDVD.ddvdp.xml"
+ if self.project.load(filename):
self["error_label"].hide()
return True
else:
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)
job = Process.DVDJob(self.project)
job_manager.AddJob(job)
job_manager.in_background = False
self.session.openWithCallback(self.JobViewCB, JobView, job)
+ def burnISO(self, path, scope):
+ if path:
+ 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
res = [ ]
totalsize = 0
for title in self.project.titles:
- a = [ title, (eListboxPythonMultiContent.TYPE_TEXT, 0, 10, 500, 50, 0, RT_HALIGN_LEFT, title.name) ]
+ a = [ title, (eListboxPythonMultiContent.TYPE_TEXT, 0, 5, 500, 25, 0, RT_HALIGN_LEFT, title.properties.menutitle.getValue()) ]
res.append(a)
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)
max_SL = 4370
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)
+ 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)
+ self.previous_size = size
def getCurrentTitle(self):
t = self["titles"].getCurrent()
def titleEditDone(self, cutlist):
t = self.current_edit_title
+ t.initDVDmenuText(self.project,len(self.project.titles))
t.cuesheet = cutlist
t.produceFinalCuesheet()
- if t.sVideoType != 0:
+ if t.VideoType != 0:
self.session.openWithCallback(self.DVDformatCB,MessageBox,text = _("The DVD standard doesn't support H.264 (HDTV) video streams. Do you want to create a Dreambox format data DVD (which will not play in stand-alone DVD players) instead?"), type = MessageBox.TYPE_YESNO)
else:
self.updateTitleList()
+ def resetTitles(self):
+ count = 0
+ for title in self.project.titles:
+ count += 1
+ title.initDVDmenuText(self.project,count)
+ self.updateTitleList()
+
def DVDformatCB(self, answer):
t = self.current_edit_title
if answer == True: