git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix TimerSanityCheck for Service Groups (Alternatives)
[enigma2.git]
/
lib
/
python
/
Components
/
Task.py
diff --git
a/lib/python/Components/Task.py
b/lib/python/Components/Task.py
index d5fffbc66b4da2f07358e1eca212d55084f8536c..9a7684250008c295087f17516793d911fddd0cfb 100644
(file)
--- a/
lib/python/Components/Task.py
+++ b/
lib/python/Components/Task.py
@@
-37,11
+37,15
@@
class Job(object):
progress = property(getProgress)
progress = property(getProgress)
+ def getStatustext(self):
+ return { self.NOT_STARTED: _("Waiting"), self.IN_PROGRESS: _("In Progress"), self.FINISHED: _("Finished"), self.FAILED: _("Failed") }[self.status]
+
def task_progress_changed_CB(self):
self.state_changed()
def addTask(self, task):
task.job = self
def task_progress_changed_CB(self):
self.state_changed()
def addTask(self, task):
task.job = self
+ task.task_progress_changed = self.task_progress_changed_CB
self.tasks.append(task)
def start(self, callback):
self.tasks.append(task)
def start(self, callback):
@@
-53,7
+57,7
@@
class Job(object):
self.status = self.IN_PROGRESS
self.state_changed()
self.runNext()
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):
self.weightScale = self.end / float(sumTaskWeightings)
def runNext(self):
@@
-67,7
+71,7
@@
class Job(object):
else:
print "still waiting for %d resident task(s) %s to finish" % (len(self.resident_tasks), str(self.resident_tasks))
else:
else:
print "still waiting for %d resident task(s) %s to finish" % (len(self.resident_tasks), str(self.resident_tasks))
else:
- self.tasks[self.current_task].run(self.taskCallback
, self.task_progress_changed_CB
)
+ self.tasks[self.current_task].run(self.taskCallback)
self.state_changed()
def taskCallback(self, task, res, stay_resident = False):
self.state_changed()
def taskCallback(self, task, res, stay_resident = False):
@@
-148,7
+152,7
@@
class Task(object):
not_met.append(precondition)
return not_met
not_met.append(precondition)
return not_met
- def run(self, callback
, task_progress_changed
):
+ def run(self, callback):
failed_preconditions = self.checkPreconditions(True) + self.checkPreconditions(False)
if len(failed_preconditions):
callback(self, failed_preconditions)
failed_preconditions = self.checkPreconditions(True) + self.checkPreconditions(False)
if len(failed_preconditions):
callback(self, failed_preconditions)
@@
-156,12
+160,11
@@
class Task(object):
self.prepare()
self.callback = callback
self.prepare()
self.callback = callback
- self.task_progress_changed = task_progress_changed
from enigma import eConsoleAppContainer
self.container = eConsoleAppContainer()
from enigma import eConsoleAppContainer
self.container = eConsoleAppContainer()
- self.container.appClosed.
get().
append(self.processFinished)
- self.container.stdoutAvail.
get().
append(self.processStdout)
- self.container.stderrAvail.
get().
append(self.processStderr)
+ self.container.appClosed.append(self.processFinished)
+ self.container.stdoutAvail.append(self.processStdout)
+ self.container.stderrAvail.append(self.processStderr)
assert self.cmd is not None
assert len(self.args) >= 1
assert self.cmd is not None
assert len(self.args) >= 1
@@
-169,7
+172,7
@@
class Task(object):
if self.cwd is not None:
self.container.setCWD(self.cwd)
if self.cwd is not None:
self.container.setCWD(self.cwd)
- print "execute:", self.container.execute(self.cmd,
self.args), self.cmd, " ".join(self.args)
+ print "execute:", self.container.execute(self.cmd,
*self.args), self.cmd, self.args
if self.initial_input:
self.writeInput(self.initial_input)
if self.initial_input:
self.writeInput(self.initial_input)
@@
-232,7
+235,8
@@
class Task(object):
if progress < 0:
progress = 0
self.__progress = progress
if progress < 0:
progress = 0
self.__progress = progress
- self.task_progress_changed()
+ if self.task_progress_changed:
+ self.task_progress_changed()
progress = property(getProgress, setProgress)
progress = property(getProgress, setProgress)
@@
-244,6
+248,7
@@
class JobManager:
self.active_jobs = [ ]
self.failed_jobs = [ ]
self.job_classes = [ ]
self.active_jobs = [ ]
self.failed_jobs = [ ]
self.job_classes = [ ]
+ self.in_background = False
self.active_job = None
def AddJob(self, job):
self.active_job = None
def AddJob(self, job):
@@
-258,10
+263,18
@@
class JobManager:
def jobDone(self, job, task, problems):
print "job", job, "completed with", problems, "in", task
def jobDone(self, job, task, problems):
print "job", job, "completed with", problems, "in", task
+ from Tools import Notifications
+ if self.in_background:
+ from Screens.TaskView import JobView
+ self.in_background = False
+ Notifications.AddNotification(JobView, self.active_job)
if problems:
if problems:
- from Tools import Notifications
from Screens.MessageBox import MessageBox
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)
return
#self.failed_jobs.append(self.active_job)
@@
-278,6
+291,12
@@
class JobManager:
self.active_job = None
self.kick()
self.active_job = None
self.kick()
+ def getPendingJobs(self):
+ list = [ ]
+ if self.active_job:
+ list.append(self.active_job)
+ list += self.active_jobs
+ return list
# some examples:
#class PartitionExistsPostcondition:
# def __init__(self, device):
# some examples:
#class PartitionExistsPostcondition:
# def __init__(self, device):
@@
-317,7
+336,7
@@
class Condition:
RECOVERABLE = False
def getErrorMessage(self, task):
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):
class WorkspaceExistsPrecondition(Condition):
def check(self, task):
@@
-354,7
+373,8
@@
class ToolExistsPrecondition(Condition):
return _("A required tool (%s) was not found.") % (self.realpath)
class AbortedPostcondition(Condition):
return _("A required tool (%s) was not found.") % (self.realpath)
class AbortedPostcondition(Condition):
- pass
+ def getErrorMessage(self, task):
+ return "Cancelled upon user request"
class ReturncodePostcondition(Condition):
def check(self, task):
class ReturncodePostcondition(Condition):
def check(self, task):