diff --git a/ChangeLog b/ChangeLog index fcd0f82..70601f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-04-20 Thomas Vander Stichele + + * morituri/common/task.py: + * morituri/image/image.py: + Move MultiTask to the task module. + 2009-04-20 Thomas Vander Stichele * morituri/common/checksum.py: diff --git a/morituri/common/task.py b/morituri/common/task.py index deb4b86..14855cb 100644 --- a/morituri/common/task.py +++ b/morituri/common/task.py @@ -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: """ diff --git a/morituri/image/image.py b/morituri/image/image.py index 6ac0b36..812bae8 100644 --- a/morituri/image/image.py +++ b/morituri/image/image.py @@ -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):