* morituri/common/task.py:

* morituri/image/image.py:
	  Move MultiTask to the task module.
This commit is contained in:
Thomas Vander Stichele
2009-04-20 21:34:51 +00:00
parent 8973d53cce
commit 18fcc1b813
3 changed files with 60 additions and 54 deletions

View File

@@ -1,3 +1,9 @@
2009-04-20 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
* morituri/image/image.py:
Move MultiTask to the task module.
2009-04-20 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/checksum.py:

View File

@@ -111,6 +111,56 @@ class DummyTask(Task):
self.runner.schedule(1.0, self._wind)
class MultiTask(Task):
"""
I perform multiple tasks.
I track progress of each individual task, going back to 0 for each task.
"""
description = 'Doing various tasks'
tasks = None
def addTask(self, task):
if self.tasks is None:
self.tasks = []
self.tasks.append(task)
def start(self, runner):
Task.start(self, runner)
# initialize task tracking
self._task = 0
self.__tasks = self.tasks[:]
self._generic = self.description
self._next()
def _next(self):
# start next task
self.progress = 0.0 # reset progress for each task
task = self.__tasks[0]
del self.__tasks[0]
self._task += 1
self.description = "%s (%d of %d) ..." % (
self._generic, self._task, len(self.tasks))
task.addListener(self)
task.start(self.runner)
### listener methods
def started(self, task):
pass
def progressed(self, task, value):
self.setProgress(value)
def stopped(self, task):
if not self.__tasks:
self.stop()
return
# pick another
self._next()
class TaskRunner:
"""

View File

@@ -99,58 +99,8 @@ class Image:
self.toc = toc.TOC(tracks)
class MultiTask(task.Task):
"""
I perform multiple tasks.
I track progress of each individual task, going back to 0 for each task.
"""
description = 'Doing various tasks'
tasks = None
def addTask(self, task):
if self.tasks is None:
self.tasks = []
self.tasks.append(task)
def start(self, runner):
task.Task.start(self, runner)
# initialize task tracking
self._task = 0
self.__tasks = self.tasks[:]
self._generic = self.description
self._next()
def _next(self):
# start next task
self.progress = 0.0 # reset progress for each task
task = self.__tasks[0]
del self.__tasks[0]
self._task += 1
self.description = "%s (%d of %d) ..." % (
self._generic, self._task, len(self.tasks))
task.addListener(self)
task.start(self.runner)
### listener methods
def started(self, task):
pass
def progressed(self, task, value):
self.setProgress(value)
def stopped(self, task):
if not self.__tasks:
self.stop()
return
# pick another
self._next()
class AccurateRipChecksumTask(MultiTask):
class AccurateRipChecksumTask(task.MultiTask):
"""
I calculate the AccurateRip checksums of all tracks.
"""
@@ -177,7 +127,7 @@ class AccurateRipChecksumTask(MultiTask):
def stop(self):
self.checksums = [t.checksum for t in self.tasks]
MultiTask.stop(self)
task.MultiTask.stop(self)
class AudioLengthTask(task.Task):
"""
@@ -221,7 +171,7 @@ class AudioLengthTask(task.Task):
self.stop()
class ImageVerifyTask(MultiTask):
class ImageVerifyTask(task.MultiTask):
"""
I verify a disk image and get the necessary track lengths.
"""
@@ -256,7 +206,7 @@ class ImageVerifyTask(MultiTask):
end = taskk.length / checksum.SAMPLES_PER_FRAME
self.lengths[trackIndex] = end - offset
MultiTask.stop(self)
task.MultiTask.stop(self)
# FIXME: move this method to a different module ?
def getAccurateRipResponses(data):