[SCM] morituri/master: * morituri/common/task.py: Make SyncRunner clear previous description/progress task by tracking longest output given up to now.

js at users.alioth.debian.org js at users.alioth.debian.org
Sun Oct 19 20:08:54 UTC 2014


The following commit has been merged in the master branch:
commit 836a3beea16e3011bfa00ac394205ed81a48393a
Author: Thomas Vander Stichele <thomas (at) apestaart (dot) org>
Date:   Sun May 3 18:07:22 2009 +0000

    	* morituri/common/task.py:
    	  Make SyncRunner clear previous description/progress task by
    	  tracking longest output given up to now.

diff --git a/ChangeLog b/ChangeLog
index 2629101..f43b63d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
 
+	* morituri/common/task.py:
+	  Make SyncRunner clear previous description/progress task by
+	  tracking longest output given up to now.
+
+2009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
 	* morituri/program/cdparanoia.py:
 	  Add a task to read and verify a track.
 	* examples/readtrack.py:
diff --git a/morituri/common/task.py b/morituri/common/task.py
index 3e46b78..6eeb22a 100644
--- a/morituri/common/task.py
+++ b/morituri/common/task.py
@@ -267,6 +267,7 @@ class SyncRunner(TaskRunner):
     """
     def __init__(self, verbose=True):
         self._verbose = verbose
+        self._longest = 0 # longest string shown; for clearing
 
     def run(self, task, verbose=None, skip=False):
         self._task = task
@@ -296,25 +297,35 @@ class SyncRunner(TaskRunner):
 
         if value >= 1.0:
             if self._skip:
-                sys.stdout.write('%s %3d %%\n' % (
+                self._output('%s %3d %%' % (
                     self._task.description, 100.0))
             else:
                 # clear with whitespace
-                text = '%s %3d %%' % (
-                    self._task.description, 100.0)
-                sys.stdout.write("%s\r" % (' ' * len(text), ))
+                sys.stdout.write("%s\r" % (' ' * self._longest, ))
+
+    def _output(self, what, newline=False, ret=True):
+        sys.stdout.write(what)
+        sys.stdout.write(' ' * (self._longest - len(what)))
+        if ret:
+            sys.stdout.write('\r')
+        if newline:
+            sys.stdout.write('\n')
+        sys.stdout.flush()
+        if len(what) > self._longest:
+            #print; print 'setting longest', self._longest; print
+            self._longest = len(what)
 
     def described(self, task, description):
         if self._verboseRun:
             self._report()
 
     def stopped(self, task):
+        self.progressed(task, 1.0)
         self._loop.quit()
 
     def _report(self):
-        sys.stdout.write('%s %3d %%\r' % (
+        self._output('%s %3d %%' % (
             self._task.description, self._task.progress * 100.0))
-        sys.stdout.flush()
 
 if __name__ == '__main__':
     task = DummyTask()

-- 
morituri packaging



More information about the pkg-multimedia-commits mailing list