-import DVDProject, TitleList, TitleCutter, ProjectSettings
+import DVDProject, TitleList, TitleCutter, ProjectSettings, DVDToolbox
from Screens.Screen import Screen
from Screens.ChoiceBox import ChoiceBox
from Screens.InputBox import InputBox
from Components.FileList import FileList
from Components.Label import Label
from enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_LEFT
-from Tools.Directories import resolveFilename, SCOPE_PLAYLIST
+from Tools.Directories import resolveFilename, SCOPE_PLUGINS
-class TitleList(Screen):
+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" />
def __init__(self, session, project = None):
Screen.__init__(self, session)
+ HelpableScreen.__init__(self)
self["titleactions"] = HelpableActionMap(self, "DVDTitleList",
{
self["titles"] = List(list = [ ], enableWrapAround = True, item_height=30, fonts = [gFont("Regular", 20)])
self.updateTitleList()
-
- #self["addTitle"] = ActionButton("titleactions", "addTitle")
- #self["editTitle"] = ActionButton("titleactions", "editTitle")
- #self["removeCurrentTitle"] = ActionButton("titleactions", "removeCurrentTitle")
- #self["saveProject"] = ActionButton("titleactions", "saveProject")
- #self["burnProject"] = ActionButton("titleactions", "burnProject")
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"));
self.addTitle()
elif choice[1] == "edittitle":
self.editTitle()
+ elif choice[1] == "toolbox":
+ self.toolbox()
elif choice[1] == "settings":
self.settings()
elif choice[1] == "previewMenu":
def addTitle(self):
from Screens.MovieSelection import MovieSelection
+ from Components.Button import Button
+ from Components.ActionMap import HelpableActionMap
class MovieSelectionNoMenu(MovieSelection):
def __init__(self, session):
MovieSelection.__init__(self, session)
self.skinName = "MovieSelection"
-
+ self["key_red"] = Button(_("Edit title"))
+ self["key_green"] = Button(_("Add"))
+ self["ColorActions"] = HelpableActionMap(self, "ColorActions",
+ {
+ "red": (self.movieSelected, _("Add a new title")),
+ "green": (self.insertWithoutEdit, ("insert without cutlist editor"))
+ })
+ def updateTags(self):
+ pass
def doContext(self):
print "context menu forbidden inside DVDBurn to prevent calling multiple instances"
-
+ def insertWithoutEdit(self):
+ current = self.getCurrent()
+ if current is not None:
+ current.edit = False
+ self.close(current)
+ def movieSelected(self):
+ current = self.getCurrent()
+ if current is not None:
+ current.edit = True
+ self.close(current)
self.session.openWithCallback(self.selectedSource, MovieSelectionNoMenu)
def selectedSource(self, source):
if source is None:
return None
t = self.project.addService(source)
- self.editTitle(t, readOnly=True)
+ try:
+ editor = source.edit
+ except AttributeError:
+ editor = True
+ self.editTitle(t, editor)
def removeCurrentTitle(self):
title = self.getCurrentTitle()
+ self.removeTitle(title)
+
+ def removeTitle(self, title):
if title is not None:
self.project.titles.remove(title)
self.updateTitleList()
+ def toolbox(self):
+ self.session.open(DVDToolbox.DVDToolbox, self.project)
+
def settings(self):
self.session.openWithCallback(self.settingsCB, ProjectSettings.ProjectSettings, self.project)
self["title_label"].text = _("Table of content for collection") + " \"" + self.project.settings.name.getValue() + "\":"
def loadTemplate(self):
- filename = resolveFilename(SCOPE_PLAYLIST)+"DreamboxDVDtemplate.ddvdp.xml"
+ filename = resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/DreamboxDVDtemplate.ddvdp.xml"
if self.project.loadProject(filename):
self["error_label"].hide()
return True
else:
self["error_label"].text = self.project.error
self["error_label"].show()
- print self.project.error
return False
def burnProject(self):
- self.project.waitboxref = self.project.session.open(ProjectSettings.WaitBox,self.burnProjectCB)
-
- def burnProjectCB(self):
- import Process
- job = Process.Burn(self.session, self.project)
- from Screens.TaskView import JobView
- self.session.open(JobView, job)
+ 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)
+ 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)
def previewMenu(self):
- self.project.waitboxref = self.project.session.open(ProjectSettings.WaitBox,self.previewMenuCB)
-
- def previewMenuCB(self):
import Process
job = Process.PreviewMenu(self.session, self.project)
t = self["titles"].getCurrent()
return t and t[0]
- def editTitle(self, title = None, readOnly = False):
+ def editTitle(self, title = None, editor = True):
t = title or self.getCurrentTitle()
if t is not None:
self.current_edit_title = t
- if readOnly:
- self.session.openWithCallback(self.titleEditDone, TitleCutter.CutlistReader, t)
- else:
+ if editor:
self.session.openWithCallback(self.titleEditDone, TitleCutter.TitleCutter, t)
+ else:
+ self.session.openWithCallback(self.titleEditDone, TitleCutter.CutlistReader, t)
def titleEditDone(self, cutlist):
t = self.current_edit_title
t.cuesheet = cutlist
t.produceFinalCuesheet()
- print "title edit of %s done, resulting cutlist:" % (t.source.toString()), t.cutlist, "chaptermarks:", t.chaptermarks
- self.updateTitleList()
+ if t.sVideoType != 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 DVDformatCB(self, answer):
+ t = self.current_edit_title
+ if answer == True:
+ self.project.settings.authormode.setValue("data_ts")
+ self.updateTitleList()
+ else:
+ self.removeTitle(t)
def leave(self):
self.close()