def pageDown(self):
self["details"].pageDown()
- def update(self, dev="", media_state=""):
+ def update(self, dev="", action=""):
self["space_label"].text = _("Please wait... Loading list...")
self["info"].text = ""
self["details"].setText("")
def cleanup(self, failed):
if failed:
import os
- for file in self.generated_files.itervalues():
+ for file in self.generated_files:
os.remove(file)
class MplexTaskPostcondition(Condition):
def prepare(self):
self.args += ["-f"]
- self.args += self.demux_task.generated_files.values()
+ self.args += self.demux_task.generated_files
self.args += [self.demux_task.cutfile]
class DVDAuthorTask(Task):
self.global_preconditions.append(DiskspacePrecondition(diskSpaceNeeded))
self.weighting = 5
+ def abort(self):
+ self.finish(aborted = True)
+
def run(self, callback):
failed_preconditions = self.checkPreconditions(True) + self.checkPreconditions(False)
if len(failed_preconditions):
demux = DemuxTask(self, link_name)
self.mplextask = MplexTask(self, outputfile=title_filename, demux_task=demux)
self.mplextask.end = self.estimateddvdsize
- #RemoveESFiles(self, demux)
+ RemoveESFiles(self, demux)
WaitForResidentTasks(self)
PreviewTask(self, self.workspace + "/dvd/VIDEO_TS/")
output = self.project.settings.output.getValue()
self["titles"] = List(list = [ ], enableWrapAround = True, item_height=30, fonts = [gFont("Regular", 20)])
self.updateTitleList()
-
+
+ def checkBackgroundJobs(self):
+ for job in job_manager.getPendingJobs():
+ print "type(job):", type(job)
+ print "Process.DVDJob:", Process.DVDJob
+ if type(job) == Process.DVDJob:
+ self.backgroundJob = job
+ return
+ self.backgroundJob = None
+
def showMenu(self):
menu = []
+ self.checkBackgroundJobs()
+ if self.backgroundJob:
+ j = self.backgroundJob
+ menu.append(("%s: %s (%d%%)" % (j.getStatustext(), j.name, int(100*j.progress/float(j.end))), self.showBackgroundJob))
if self.project.settings.output.getValue() == "dvd":
menu.append((_("Burn DVD"), self.burnProject))
elif self.project.settings.output.getValue() == "iso":
if choice:
choice[1]()
+ def showBackgroundJob(self):
+ job_manager.in_background = False
+ self.session.openWithCallback(self.JobViewCB, JobView, self.backgroundJob)
+ self.backgroundJob = None
+
def titleProperties(self):
if self.getCurrentTitle():
self.session.openWithCallback(self.updateTitleList, TitleProperties.TitleProperties, self, self.project, self["titles"].getIndex())
totalsize += title.estimatedDiskspace
self["titles"].list = res
self.updateSize(totalsize)
-
+
def updateSize(self, totalsize):
size = int((totalsize/1024)/1024)
max_SL = 4370
self.session.open(Subtitles)
def hotplugCB(self, dev, media_state):
- if dev == harddiskmanager.getCD():
- from Components.Scanner import scanDevice
- devpath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
- self.cdAudioTrackFiles = []
- res = scanDevice(devpath)
- list = [ (r.description, r, res[r], self.session) for r in res ]
- if list:
- (desc, scanner, files, session) = list[0]
- for file in files:
- if file.mimetype == "audio/x-cda":
- self.cdAudioTrackFiles.append(file.path)
+ if dev == harddiskmanager.getCD():
+ if media_state == "1":
+ from Components.Scanner import scanDevice
+ devpath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
+ self.cdAudioTrackFiles = []
+ res = scanDevice(devpath)
+ list = [ (r.description, r, res[r], self.session) for r in res ]
+ if list:
+ (desc, scanner, files, session) = list[0]
+ for file in files:
+ if file.mimetype == "audio/x-cda":
+ self.cdAudioTrackFiles.append(file.path)
+ else:
+ self.cdAudioTrackFiles = []
+ if self.isAudioCD:
+ self.clear_playlist()
class MediaPlayerLCDScreen(Screen):
skin = """
for callback in hotplugNotifier:
try:
- callback(dev, media_state)
+ callback(dev, action or media_state)
except AttributeError:
hotplugNotifier.remove(callback)
from twisted.web import client
from twisted.internet import reactor, defer
from twisted.python import failure
+from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
class UserRequestedCancel(Exception):
pass
self.download = self.nfo_download
self.downloading(True)
client.getPage(nfourl).addCallback(self.nfo_finished).addErrback(self.nfo_failed)
- self["statusbar"].text = _("Downloading image description...")
+ self["statusbar"].text = ("Downloading image description...")
def nfo_failed(self, failure_instance):
print "[nfo_failed] " + str(failure_instance)
pos = self.nfo.find("MD5:")
if pos > 0 and len(self.nfo) >= pos+5+32:
- self["statusbar"].text = _("Please wait for md5 signature verification...")
+ self["statusbar"].text = ("Please wait for md5 signature verification...")
cmd = "md5sum -c -"
md5 = self.nfo[pos+5:pos+5+32] + " " + self.nfilocal
print cmd, md5
def umount_finished(self, retval):
self.container.appClosed.remove(self.umount_finished)
- self.session.openWithCallback(self.dmesg_clear, MessageBox, _("To make sure you intend to do this, please remove the target USB stick now and stick it back in upon prompt. Press OK when you have taken the stick out."), MessageBox.TYPE_INFO)
-
- def dmesg_clear(self, answer):
self.container.appClosed.append(self.dmesg_cleared)
self.taskstring = ""
self.cmd = "dmesg -c"
print "executing " + self.cmd
self.container.execute(self.cmd)
- def dmesg_cleared(self, retval):
+ def dmesg_cleared(self, answer):
self.container.appClosed.remove(self.dmesg_cleared)
- self.session.openWithCallback(self.stick_back_in, MessageBox, (_("Now please insert the USB stick (minimum size is 64 MB) that you want to format and use as .NFI image flasher. Press OK after you've put the stick back in.")), MessageBox.TYPE_INFO)
-
- def stick_back_in(self, answer):
- self["statusbar"].text = _("Waiting for USB stick to settle...")
- self.delayTimer = eTimer()
- self.delayTimer.callback.append(self.waiting_for_stick)
- self.delayCount = -1
- self.delayTimer.start(1000)
-
- def waiting_for_stick(self):
- self.delayCount += 1
- self["job_progressbar"].range = 6
- self["job_progressbar"].value = self.delayCount
- self["job_progresslabel"].text = "-%d s" % (6-self.delayCount)
- if self.delayCount > 5:
- self.delayTimer.stop()
+ self.msgbox = self.session.open(MessageBox, _("Please disconnect all USB devices from your Dreambox and (re-)attach the target USB stick (minimum size is 64 MB) now!"), MessageBox.TYPE_INFO)
+ hotplugNotifier.append(self.hotplugCB)
+
+ def hotplugCB(self, dev, action):
+ print "[hotplugCB]", dev, action
+ if dev.startswith("sd") and action == "add":
+ self.msgbox.close()
+ hotplugNotifier.remove(self.hotplugCB)
self.container.appClosed.append(self.dmesg_scanned)
self.taskstring = ""
self.cmd = "dmesg"
self.session.openWithCallback(self.fdisk_query, MessageBox, (_("The following device was found:\n\n%s\n\nDo you want to write the USB flasher to this stick?") % self.devicetext), MessageBox.TYPE_YESNO)
def fdisk_query(self, answer):
- if answer == True:
- self["statusbar"].text = _("Partitioning USB stick...")
+ if answer == True and self.stickdevice:
+ self["statusbar"].text = ("Partitioning USB stick...")
self["job_progressbar"].range = 1000
self["job_progressbar"].value = 100
self["job_progresslabel"].text = "5.00%"
self.tar_finished(0)
self["job_progressbar"].value = 700
else:
- self["statusbar"].text = _("Decompressing USB stick flasher boot image...")
+ self["statusbar"].text = ("Decompressing USB stick flasher boot image...")
self.taskstring = ""
self.container.appClosed.append(self.tar_finished)
self.container.setCWD("/tmp")
self.container.appClosed.remove(self.tar_finished)
if retval == 0:
self.imagefilename = "/tmp/nfiflash_" + self.box + ".img"
- self["statusbar"].text = _("Copying USB flasher boot image to stick...")
+ self["statusbar"].text = ("Copying USB flasher boot image to stick...")
self.taskstring = ""
self.container.appClosed.append(self.dd_finished)
self.cmd = "dd if=%s of=%s" % (self.imagefilename,self.stickdevice+"/part1")
if retval == 0:
self["job_progressbar"].value = 950
self["job_progresslabel"].text = "95.00%"
- self["statusbar"].text = _("Remounting stick partition...")
+ self["statusbar"].text = ("Remounting stick partition...")
self.taskstring = ""
self.container.appClosed.append(self.mount_finished)
self.cmd = "mount %s /mnt/usb -o rw,sync" % (self.stickdevice+"/part1")
if retval == 0:
self["job_progressbar"].value = 1000
self["job_progresslabel"].text = "100.00%"
- self["statusbar"].text = _(".NFI Flasher bootable USB stick successfully created.")
+ self["statusbar"].text = (".NFI Flasher bootable USB stick successfully created.")
self.session.openWithCallback(self.remove_img, MessageBox, _("The .NFI Image flasher USB stick is now ready to use. Please download an .NFI image file from the feed server and save it on the stick. Then reboot and hold the 'Down' key on the front panel to boot the .NFI flasher from the stick!"), MessageBox.TYPE_INFO)
self["destlist"].changeDir("/mnt/usb")
else:
Scanner(mimetypes = ["application/x-dream-image"],
paths_to_scan =
[
- ScanPath(path = "", with_subdirs = False),
+ ScanPath(path = "", with_subdirs = False),
],
name = "NFI",
- description = (_("Download .NFI-Files for USB-Flasher")+"..."),
+ description = (_("Download .NFI-Files for USB-Flasher")+"..."),
openfnc = filescan_open, )
class writeNAND(Task):
def __init__(self,job,param,box):
- Task.__init__(self,job, _("Writing image file to NAND Flash"))
+ Task.__init__(self,job, ("Writing image file to NAND Flash"))
self.setTool("/usr/lib/enigma2/python/Plugins/SystemPlugins/NFIFlash/mywritenand")
if box == "dm7025":
self.end = 256
if box == "dm8000":
self.setTool("/usr/lib/enigma2/python/Plugins/SystemPlugins/NFIFlash/dm8000_writenand")
self.args += param
- self.weighting = 1
+ self.weighting = 1
def processOutput(self, data):
print "[writeNand] " + data
print sign
if sign.find("NFI1" + self.box + "\0") == 0:
if self.md5sum != "":
- self["statusbar"].text = _("Please wait for md5 signature verification...")
- self.session.summary.setText(_("Please wait for md5 signature verification..."))
+ self["statusbar"].text = ("Please wait for md5 signature verification...")
+ self.session.summary.setText(("Please wait for md5 signature verification..."))
self.container = eConsoleAppContainer()
self.container.setCWD(self["filelist"].getCurrentDirectory())
self.container.appClosed.append(self.md5finished)
def reboot(self):
if self.job.status == self.job.FINISHED:
- self["statusbar"].text = _("rebooting...")
+ self["statusbar"].text = ("rebooting...")
TryQuitMainloop(self.session,2)
def createSummary(self):
self.session.openWithCallback(self.JobViewCB, JobView, job)
def JobViewCB(self, in_background):
- from Screens.TaskView import JobView
job_manager.in_background = in_background
# depends on InfoBarExtensions