fix bracket bug (thanks to Nix_niX)
[enigma2.git] / lib / python / Components / Task.py
index e7fdd8f79fc180d93e87e1444d8ae809eabb5b03..a87f58d9e0be534702cc084668531a4c68e0a10e 100644 (file)
@@ -53,7 +53,7 @@ class Job(object):
                self.status = self.IN_PROGRESS
                self.state_changed()
                self.runNext()
-               sumTaskWeightings = sum([t.weighting for t in self.tasks])
+               sumTaskWeightings = sum([t.weighting for t in self.tasks]) or 1
                self.weightScale = self.end / float(sumTaskWeightings)
 
        def runNext(self):
@@ -160,7 +160,8 @@ class Task(object):
                from enigma import eConsoleAppContainer
                self.container = eConsoleAppContainer()
                self.container.appClosed.get().append(self.processFinished)
-               self.container.dataAvail.get().append(self.processOutput)
+               self.container.stdoutAvail.get().append(self.processStdout)
+               self.container.stderrAvail.get().append(self.processStderr)
 
                assert self.cmd is not None
                assert len(self.args) >= 1
@@ -177,6 +178,12 @@ class Task(object):
 
        def cleanup(self, failed):
                pass
+       
+       def processStdout(self, data):
+               self.processOutput(data)
+               
+       def processStderr(self, data):
+               self.processOutput(data)
 
        def processOutput(self, data):
                self.output_line += data
@@ -254,7 +261,11 @@ class JobManager:
                if problems:
                        from Tools import Notifications
                        from Screens.MessageBox import MessageBox
-                       Notifications.AddNotificationWithCallback(self.errorCB, MessageBox, _("Error: %s\nRetry?") % (problems[0].getErrorMessage(task)))
+                       if problems[0].RECOVERABLE:
+                               Notifications.AddNotificationWithCallback(self.errorCB, MessageBox, _("Error: %s\nRetry?") % (problems[0].getErrorMessage(task)))
+                       else:
+                               Notifications.AddNotification(MessageBox, _("Error") + (': %s') % (problems[0].getErrorMessage(task)), type = MessageBox.TYPE_ERROR )
+                               self.errorCB(False)
                        return
                        #self.failed_jobs.append(self.active_job)
 
@@ -310,7 +321,7 @@ class Condition:
        RECOVERABLE = False
 
        def getErrorMessage(self, task):
-               return _("An error has occured. (%s)") % (self.__class__.__name__)
+               return _("An unknown error occured!") + " (%s @ task %s)" % (self.__class__.__name__, task.__class__.__name__)
 
 class WorkspaceExistsPrecondition(Condition):
        def check(self, task):