[DVDBurn] usability improvements: title list layout, bottom info area, consistency...
[enigma2.git] / lib / python / Plugins / Extensions / DVDBurn / DVDTitle.py
index 94e5c0f5528bf31bbadd8856a58d27a3b6fd29cf..6dff00d62772c3554b908d7061bae41cf24dcd7f 100644 (file)
@@ -1,4 +1,5 @@
 from Components.config import config, ConfigSubsection, ConfigSubList, ConfigInteger, ConfigText, ConfigSelection, getConfigListEntry, ConfigSequence, ConfigYesNo
+import TitleCutter
 
 class ConfigFixedText(ConfigText):
        def __init__(self, text, visible_width=60):
@@ -7,17 +8,17 @@ class ConfigFixedText(ConfigText):
                pass
 
 class DVDTitle:
-       def __init__(self):
+       def __init__(self, project):
                self.properties = ConfigSubsection()
                self.properties.menutitle = ConfigText(fixed_size = False, visible_width = 80)
                self.properties.menusubtitle = ConfigText(fixed_size = False, visible_width = 80)
-               self.DVBname = _("Title")
-               self.DVBdescr = _("Description")
-               self.DVBchannel = _("Channel")
-               self.properties.aspect = ConfigSelection(choices = [("4:3", "4:3"), ("16:9", "16:9")])
+               self.properties.aspect = ConfigSelection(choices = [("4:3", _("4:3")), ("16:9", _("16:9"))])
                self.properties.widescreen = ConfigSelection(choices = [("nopanscan", "nopanscan"), ("noletterbox", "noletterbox")])
                self.properties.autochapter = ConfigInteger(default = 0, limits = (0, 60))
                self.properties.audiotracks = ConfigSubList()
+               self.DVBname = _("Title")
+               self.DVBdescr = _("Description")
+               self.DVBchannel = _("Channel")
                self.cuesheet = [ ]
                self.source = None
                self.filesize = 0
@@ -27,6 +28,8 @@ class DVDTitle:
                self.chaptermarks = [ ]
                self.timeCreate = None
                self.VideoType = -1
+               self.project = project
+               self.length = 0
 
        def addService(self, service):
                from os import path
@@ -36,7 +39,7 @@ class DVDTitle:
                self.source = service
                serviceHandler = eServiceCenter.getInstance()
                info = serviceHandler.info(service)
-               sDescr = info and " " + info.getInfoString(service, iServiceInformation.sDescription) or ""
+               sDescr = info and info.getInfoString(service, iServiceInformation.sDescription) or ""
                self.DVBdescr = sDescr
                sTimeCreate = info.getInfo(service, iServiceInformation.sTimeCreate)
                if sTimeCreate > 1:
@@ -49,13 +52,24 @@ class DVDTitle:
                self.filesize = path.getsize(self.inputfile)
                self.estimatedDiskspace = self.filesize
                self.length = info.getLength(service)
+                                               
+       def addFile(self, filename):
+               from enigma import eServiceReference
+               ref = eServiceReference(1, 0, filename)
+               self.addService(ref)
+               self.project.session.openWithCallback(self.titleEditDone, TitleCutter.CutlistReader, self)
+       
+       def titleEditDone(self, cutlist):
+               self.initDVDmenuText(len(self.project.titles))
+               self.cuesheet = cutlist
+               self.produceFinalCuesheet()
 
-       def initDVDmenuText(self, project, track):
-               self.properties.menutitle.setValue(self.formatDVDmenuText(project.settings.titleformat.getValue(), track))
-               self.properties.menusubtitle.setValue(self.formatDVDmenuText(project.settings.subtitleformat.getValue(), track))
+       def initDVDmenuText(self, track):
+               s = self.project.menutemplate.settings
+               self.properties.menutitle.setValue(self.formatDVDmenuText(s.titleformat.getValue(), track))
+               self.properties.menusubtitle.setValue(self.formatDVDmenuText(s.subtitleformat.getValue(), track))
 
        def formatDVDmenuText(self, template, track):
-               properties = self.properties
                template = template.replace("$i", str(track))
                template = template.replace("$t", self.DVBname)
                template = template.replace("$d", self.DVBdescr)
@@ -76,7 +90,7 @@ class DVDTitle:
                                audiolist.append(trackstring)
                audiostring = ', '.join(audiolist)
                template = template.replace("$A", audiostring)
-               
+
                if template.find("$l") >= 0:
                        l = self.length
                        lengthstring = "%d:%02d:%02d" % (l/3600, l%3600/60, l%60)
@@ -90,7 +104,7 @@ class DVDTitle:
                else:
                        template = template.replace("$Y", "").replace("$M", "").replace("$D", "").replace("$T", "")
                return template
-       
+
        def produceFinalCuesheet(self):
                CUT_TYPE_IN = 0
                CUT_TYPE_OUT = 1