from Components.Sources.List import List
from Components.Sources.StaticText import StaticText
from Components.Sources.Progress import Progress
-from Components.Label import Label
from enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_LEFT
from Tools.Directories import resolveFilename, SCOPE_PLUGINS
class TitleList(Screen, HelpableScreen):
skin = """
- <screen position="90,83" size="560,445" title="DVD Tool" >
- <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
- <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
- <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
- <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
- <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
- <widget source="title_label" render="Label" position="10,48" size="540,38" font="Regular;18" />
- <widget name="error_label" position="10,48" size="540,395" zPosition="3" font="Regular;20" />
- <widget source="titles" render="Listbox" scrollbarMode="showOnDemand" position="10,86" size="540,312">
- <convert type="StaticMultiList" />
- </widget>
- <widget source="space_bar" render="Progress" position="10,410" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
- <widget source="space_label" render="Label" position="40,414" size="480,22" zPosition="2" font="Regular;18" halign="center" transparent="1" foregroundColor="#000000" />
+ <screen name="TitleList" position="center,center" size="560,445" title="DVD Tool" >
+ <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
+ <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+ <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+ <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
+ <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
+ <widget source="title_label" render="Label" position="10,48" size="540,38" font="Regular;18" transparent="1" />
+ <widget source="error_label" render="Label" position="10,48" size="540,395" zPosition="3" font="Regular;20" transparent="1" />
+ <widget source="titles" render="Listbox" scrollbarMode="showOnDemand" position="10,86" size="540,312" zPosition="3" transparent="1" >
+ <convert type="StaticMultiList" />
+ </widget>
+ <widget source="space_bar" render="Progress" position="10,410" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
+ <widget source="space_label" render="Label" position="40,414" size="480,22" zPosition="2" font="Regular;18" halign="center" transparent="1" foregroundColor="#000000" />
</screen>"""
def __init__(self, session, project = None):
"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",
"cancel": self.leave
})
- self["key_red"] = StaticText(_("Remove title"))
+ self["key_red"] = StaticText()
self["key_green"] = StaticText(_("Add title"))
- self["key_yellow"] = StaticText(_("Title properties"))
+ self["key_yellow"] = StaticText()
self["key_blue"] = StaticText(_("Settings"))
self["title_label"] = StaticText()
- self["error_label"] = Label("")
+ self["error_label"] = StaticText()
self["space_label"] = StaticText()
self["space_bar"] = Progress()
self["titles"] = List(list = [ ], enableWrapAround = True, item_height=30, fonts = [gFont("Regular", 20)])
self.updateTitleList()
+ self.previous_size = 0
+ self.onLayoutFinish.append(self.layoutFinished)
+
+ def layoutFinished(self):
+ self.setTitle(_("DVD Titlelist"))
def checkBackgroundJobs(self):
for job in job_manager.getPendingJobs():
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))
+ 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))
- menu.append((_("DVD media toolbox"), self.toolbox))
- menu.append((_("Preview menu"), self.previewMenu))
- menu.append((_("Collection settings"), self.settings))
- menu.append((_("Reset and renumerate title names"), self.resetTitles))
menu.append((_("Edit chapters of current title"), self.editTitle))
- menu.append((_("Properties of current title"), self.titleProperties))
- menu.append((_("Add a new title"), self.addTitle))
- menu.append((_("Remove title"), self.removeCurrentTitle))
+ menu.append((_("Reset and renumerate title names"), self.resetTitles))
menu.append((_("Exit"), self.leave))
self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)
def addTitle(self):
from Screens.MovieSelection import MovieSelection
- from Components.Button import Button
from Components.ActionMap import HelpableActionMap
- class MovieSelectionNoMenu(MovieSelection):
+ class DVDMovieSelection(MovieSelection):
+ skin = """<screen name="DVDMovieSelection" position="center,center" size="560,445" title="Select a movie">
+ <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+ <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
+ <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+ <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+ <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
+ <widget name="waitingtext" position="0,45" size="560,395" zPosition="4" font="Regular;22" halign="center" valign="center" />
+ <widget name="list" position="5,40" size="550,375" zPosition="2" scrollbarMode="showOnDemand" />
+ <widget name="DescriptionBorder" pixmap="skin_default/border_eventinfo.png" position="0,316" zPosition="1" size="560,103" transparent="1" alphatest="on" />
+ <widget source="Service" render="Label" position="5,318" zPosition="1" size="480,35" font="Regular;17" foregroundColor="#cccccc">
+ <convert type="MovieInfo">ShortDescription</convert>
+ </widget>
+ <widget source="Service" render="Label" position="495,318" zPosition="1" size="60,22" font="Regular;17" halign="right">
+ <convert type="ServiceTime">Duration</convert>
+ <convert type="ClockToText">AsLength</convert>
+ </widget>
+ <widget source="Service" render="Label" position="380,337" zPosition="2" size="175,22" font="Regular;17" halign="right">
+ <convert type="MovieInfo">RecordServiceName</convert>
+ </widget>
+ <widget source="Service" render="Label" position="5,357" zPosition="1" size="550,58" font="Regular;19">
+ <convert type="EventName">ExtendedDescription</convert>
+ </widget>
+ <widget name="freeDiskSpace" position="10,425" size="540,20" font="Regular;19" valign="center" halign="right" />
+ </screen>"""
def __init__(self, session):
MovieSelection.__init__(self, session)
- self.skinName = "MovieSelection"
- self["key_red"] = Button(_("Edit title"))
- self["key_green"] = Button(_("Add"))
+ self["key_red"] = StaticText(_("Close"))
+ self["key_green"] = StaticText(_("Add"))
+ self["key_yellow"] = StaticText(_("Edit title"))
self["ColorActions"] = HelpableActionMap(self, "ColorActions",
{
- "red": (self.movieSelected, _("Add a new title")),
- "green": (self.insertWithoutEdit, ("insert without cutlist editor"))
+ "red": (self.close, _("Close title selection")),
+ "green": (self.insertWithoutEdit, ("insert without cutlist editor")),
+ "yellow": (self.movieSelected, _("Add a new title"))
})
def updateTags(self):
pass
if current is not None:
current.edit = True
self.close(current)
- self.session.openWithCallback(self.selectedSource, MovieSelectionNoMenu)
+ self.session.openWithCallback(self.selectedSource, DVDMovieSelection)
def selectedSource(self, source):
if source is None:
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):
- self["error_label"].hide()
+ filename = resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/DreamboxDVD.ddvdp.xml"
+ if self.project.load(filename):
+ self["error_label"].setText("")
return True
else:
- self["error_label"].text = self.project.error
- self["error_label"].show()
+ self["error_label"].setText(self.project.error)
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)
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)
def updateTitleList(self):
res = [ ]
- totalsize = 0
for title in self.project.titles:
- a = [ title, (eListboxPythonMultiContent.TYPE_TEXT, 0, 10, 500, 50, 0, RT_HALIGN_LEFT, title.properties.menutitle.getValue()) ]
+ 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)
-
- def updateSize(self, totalsize):
- size = int((totalsize/1024)/1024)
- max_SL = 4370
- max_DL = 7950
- if size > max_DL:
- percent = 100 * size / float(max_DL)
+ self.updateSize()
+ 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):
+ size = self.project.size/(1024*1024)
+ MAX_DL = self.project.MAX_DL-100
+ MAX_SL = self.project.MAX_SL-100
+ print "updateSize:", size, "MAX_DL:", MAX_DL, "MAX_SL:", MAX_SL
+ if size > MAX_DL:
+ 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)
- elif size > max_SL:
- percent = 100 * size / float(max_DL)
+ 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)
- elif size < max_SL:
- percent = 100 * size / float(max_SL)
+ 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()