-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 enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_LEFT
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=False)
+ try:
+ editor = source.edit
+ except AttributeError:
+ editor = True
+ self.editTitle(t, editor)
def removeCurrentTitle(self):
title = self.getCurrentTitle()
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)
else:
self["error_label"].text = self.project.error
self["error_label"].show()
- print self.project.error
return False
def burnProject(self):
- autochapter = self.project.settings.autochapter.getValue()
- if autochapter > 0:
- for title in self.project.titles:
- title.produceAutoChapter(autochapter)
- 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):
- if cutlist != False:
- t = self.current_edit_title
- t.cuesheet = cutlist
- t.produceFinalCuesheet()
+ t = self.current_edit_title
+ t.cuesheet = cutlist
+ t.produceFinalCuesheet()
+ 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.session.open(MessageBox,text = _("The DVD standard doesn't support H.264 (HDTV) video streams!"),type = MessageBox.TYPE_ERROR)
- self.removeTitle(self.current_edit_title)
+ self.removeTitle(t)
def leave(self):
self.close()