+from Components.config import config, ConfigSubsection, ConfigSubList, ConfigInteger, ConfigText, ConfigSelection, getConfigListEntry, ConfigSequence, ConfigYesNo
+
+class ConfigFixedText(ConfigText):
+ def __init__(self, text, visible_width=60):
+ ConfigText.__init__(self, default = text, fixed_size = True, visible_width = visible_width)
+ def handleKey(self, key):
+ pass
+
class DVDTitle:
def __init__(self):
+ 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.widescreen = ConfigSelection(choices = [("nopanscan", "nopanscan"), ("noletterbox", "noletterbox")])
+ self.properties.autochapter = ConfigInteger(default = 0, limits = (0, 60))
+ self.properties.audiotracks = ConfigSubList()
self.cuesheet = [ ]
self.source = None
- self.name = ""
- self.descr = ""
self.filesize = 0
self.estimatedDiskspace = 0
self.inputfile = ""
self.cutlist = [ ]
self.chaptermarks = [ ]
self.timeCreate = None
+ self.VideoType = -1
def addService(self, service):
from os import path
self.source = service
serviceHandler = eServiceCenter.getInstance()
info = serviceHandler.info(service)
- self.descr = 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:
self.timeCreate = localtime(sTimeCreate)
serviceref = ServiceReference(info.getInfoString(service, iServiceInformation.sServiceref))
- self.name = info and info.getName(service) or "Title" + t.descr
- self.channel = serviceref.getServiceName()
+ name = info and info.getName(service) or "Title" + sDescr
+ self.DVBname = name
+ self.DVBchannel = serviceref.getServiceName()
self.inputfile = service.getPath()
self.filesize = path.getsize(self.inputfile)
self.estimatedDiskspace = self.filesize
self.length = info.getLength(service)
- def produceFinalCuesheet(self):
- print "[produceFinalCuesheet] >>> ", self.inputfile, self.cuesheet
+ 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 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)
+ template = template.replace("$c", str(len(self.chaptermarks)+1))
+ template = template.replace("$f", self.inputfile)
+ template = template.replace("$C", self.DVBchannel)
+
+ #if template.find("$A") >= 0:
+ from TitleProperties import languageChoices
+ audiolist = [ ]
+ for audiotrack in self.properties.audiotracks:
+ active = audiotrack.active.getValue()
+ if active:
+ trackstring = audiotrack.format.getValue()
+ language = audiotrack.language.getValue()
+ if languageChoices.langdict.has_key(language):
+ trackstring += ' (' + languageChoices.langdict[language] + ')'
+ 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)
+ template = template.replace("$l", lengthstring)
+ if self.timeCreate:
+ template = template.replace("$Y", str(self.timeCreate[0]))
+ template = template.replace("$M", str(self.timeCreate[1]))
+ template = template.replace("$D", str(self.timeCreate[2]))
+ timestring = "%d:%02d" % (self.timeCreate[3], self.timeCreate[4])
+ template = template.replace("$T", timestring)
+ else:
+ template = template.replace("$Y", "").replace("$M", "").replace("$D", "").replace("$T", "")
+ return template
+
+ def produceFinalCuesheet(self):
CUT_TYPE_IN = 0
CUT_TYPE_OUT = 1
CUT_TYPE_MARK = 2
reloc_pts = pts - last_in + accumulated_in
self.chaptermarks.append(reloc_pts)
- print "cutlist =", self.cutlist, "chaptermarks =", self.chaptermarks, "accumulated_in =", accumulated_in
-
if len(self.cutlist) > 1:
part = accumulated_in / (self.length*90000.0)
usedsize = int ( part * self.filesize )
- print "part=", part, "filesize=", self.filesize, "estimatedDiskspace=", usedsize
self.estimatedDiskspace = usedsize
self.length = accumulated_in / 90000
+
+ def getChapterMarks(self, template="$h:$m:$s.$t"):
+ timestamps = [ ]
+ chapters = [ ]
+ minutes = self.properties.autochapter.getValue()
+ if len(self.chaptermarks) < 1 and minutes > 0:
+ chapterpts = 0
+ while chapterpts < (self.length-60*minutes)*90000:
+ chapterpts += 90000 * 60 * minutes
+ chapters.append(chapterpts)
+ else:
+ chapters = self.chaptermarks
+ for p in chapters:
+ timestring = template.replace("$h", str(p / (90000 * 3600)))
+ timestring = timestring.replace("$m", ("%02d" % (p % (90000 * 3600) / (90000 * 60))))
+ timestring = timestring.replace("$s", ("%02d" % (p % (90000 * 60) / 90000)))
+ timestring = timestring.replace("$t", ("%03d" % ((p % 90000) / 90)))
+ timestamps.append(timestring)
+ return timestamps
\ No newline at end of file