Merge branch 'master' of git.opendreambox.org:/git/enigma2
authorghost <andreas.monzner@multimedia-labs.de>
Mon, 17 Nov 2008 22:34:50 +0000 (23:34 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Mon, 17 Nov 2008 22:34:50 +0000 (23:34 +0100)
lib/python/Plugins/Extensions/DVDBurn/DVDToolbox.py
lib/python/Plugins/Extensions/DVDBurn/Process.py
lib/python/Plugins/Extensions/DVDBurn/TitleList.py
lib/python/Plugins/Extensions/MediaPlayer/plugin.py
lib/python/Plugins/SystemPlugins/Hotplug/plugin.py
lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py
lib/python/Plugins/SystemPlugins/NFIFlash/flasher.py
lib/python/Screens/InfoBarGenerics.py

index b88dbb3f67674f0c9fa6b2c423c87f7bcbb516e2..ce16259ea568c5583a48446ff085714d19f2bc93 100644 (file)
@@ -63,7 +63,7 @@ class DVDToolbox(Screen):
        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("")
index 89ca90fd3c1b0e249ccb3fe51f86b0ebda169343..750e9d9b3ea63643bb5e8aa7409777fb5a8fc49b 100644 (file)
@@ -165,7 +165,7 @@ class DemuxTask(Task):
        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):
@@ -220,7 +220,7 @@ class RemoveESFiles(Task):
 
        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):
@@ -368,6 +368,9 @@ class CheckDiskspaceTask(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):
@@ -791,7 +794,7 @@ class DVDJob(Job):
                                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()
index 345af87736c8e296355ff8aed0ec46f1ddb5bf4d..537da0dd8335641c52b87aaba867f0290c25c4f1 100644 (file)
@@ -74,9 +74,22 @@ class TitleList(Screen, HelpableScreen):
 
                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":
@@ -97,6 +110,11 @@ class TitleList(Screen, HelpableScreen):
                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())
@@ -217,7 +235,7 @@ class TitleList(Screen, HelpableScreen):
                        totalsize += title.estimatedDiskspace
                self["titles"].list = res
                self.updateSize(totalsize)
-               
+
        def updateSize(self, totalsize):
                size = int((totalsize/1024)/1024)
                max_SL = 4370
index 0d5305d712452c3c97c46d6ade768d15a105c821..babef3e755f9deb5f1fe7a7886a15f71a51d1fc4 100644 (file)
@@ -863,17 +863,22 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                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 = """
index 97ddf4a1c44999a08e206b41212417043f827154..e593e942b9338b708a574910ab00b4cf5d1714b9 100644 (file)
@@ -53,7 +53,7 @@ class Hotplug(Protocol):
                
                for callback in hotplugNotifier:
                        try:
-                               callback(dev, media_state)
+                               callback(dev, action or media_state)
                        except AttributeError:
                                hotplugNotifier.remove(callback)
 
index c2046af7cb3f02a741bda0afebe3ae2f8833caf6..7e34d2bba866bc7d8691bdd073db710bd676504f 100644 (file)
@@ -18,6 +18,7 @@ import urllib
 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
@@ -335,7 +336,7 @@ class NFIDownload(Screen):
                        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)
@@ -400,7 +401,7 @@ class NFIDownload(Screen):
 
                        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
@@ -489,33 +490,22 @@ class NFIDownload(Screen):
 
        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"
@@ -539,8 +529,8 @@ class NFIDownload(Screen):
                        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%"
@@ -562,7 +552,7 @@ class NFIDownload(Screen):
                                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")
@@ -588,7 +578,7 @@ class NFIDownload(Screen):
                        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")
@@ -607,7 +597,7 @@ class NFIDownload(Screen):
                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")
@@ -622,7 +612,7 @@ class NFIDownload(Screen):
                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:
@@ -659,8 +649,8 @@ def filescan(**kwargs):
                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, )
index 6a982c5869e7331b23d811b45d2cf2096cfbc59e..860efc027e966de0707c1b3c09455492d2ca56be 100644 (file)
@@ -17,7 +17,7 @@ import re
 
 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
@@ -26,7 +26,7 @@ class writeNAND(Task):
                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
@@ -174,8 +174,8 @@ class NFIFlash(Screen):
                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)
@@ -252,7 +252,7 @@ class NFIFlash(Screen):
 
        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):
index cdaa2c1e6c035615fd1a49c2c111c948b6155fb4..eb79c74e03cd40313f4550687d37b9c56ae42f9d 100644 (file)
@@ -1312,7 +1312,6 @@ class InfoBarJobman:
                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