r306 - in branches/rewrite: . src

Otavio Salvador partial-mirror-devel@lists.alioth.debian.org
Fri, 12 Nov 2004 11:51:05 -0700


Author: otavio
Date: Fri Nov 12 11:51:05 2004
New Revision: 306

Modified:
   branches/rewrite/   (props changed)
   branches/rewrite/src/DisplayStatus.py
Log:
 r252@nurf:  otavio | 2004-11-12T18:41:29.261476Z
 Refactory.


Modified: branches/rewrite/src/DisplayStatus.py
==============================================================================
--- branches/rewrite/src/DisplayStatus.py	(original)
+++ branches/rewrite/src/DisplayStatus.py	Fri Nov 12 11:51:05 2004
@@ -78,22 +78,8 @@
 
 
 class TextDisplayStatus(BaseDisplayStatus):
-    def screenwidth(self):
-        return struct.unpack("hhhh", fcntl.ioctl(1, termios.TIOCGWINSZ, "        "))[1]
-
-    def start(self, url, size):
-        BaseDisplayStatus.start(self, url, size)
-        sw = self.screenwidth()
-        sys.stdout.write("\r" + " " * sw + "\rGetting %d: %s\n" % (self._items[url]['id'], url))
-        sys.stdout.flush()
-        
-    def update(self, url, current):
-        BaseDisplayStatus.update(self, url, current)
-        sw = self.screenwidth()
-        if current == self._items[url]['size']:
-            sys.stdout.write("\r" + " " * sw + "\rDone: %s\n" % url)
-            self._items[url]['finished'] = True
-        sys.stdout.write("\r" + " " * sw + "\r")
+    def __print_status(self):
+        self.__clear_line()
         for url in self._items.keys():
             if self._items[url]['finished'] or self._items[url]['errored']:
                 continue
@@ -104,11 +90,31 @@
                                     self._items[url]['current']*100/(self._items[url]['size'])))
             except ZeroDivisionError:
                 pass
+        sys.stdout.flush()
 
+    def __clear_line(self):
+        sw = struct.unpack("hhhh", fcntl.ioctl(1, termios.TIOCGWINSZ, "        "))[1]
+        sys.stdout.write("\r" + " " * sw + "\r")
+
+    def start(self, url, size):
+        BaseDisplayStatus.start(self, url, size)
+        self.__clear_line()
+        sys.stdout.write("\rGetting %d: %s\n" % (self._items[url]['id'], url))
         sys.stdout.flush()
+        
+    def update(self, url, current):
+        BaseDisplayStatus.update(self, url, current)
+        self.__clear_line()
+        if current == self._items[url]['size'] and \
+               not self._items[url]['finished']:
+            sys.stdout.write("\rDone: %s\n" % url)
+            self._items[url]['finished'] = True
+        self.__print_status()
 
     def errored(self, url, message):
-        BaseDisplayStatus.errored(self, url, message)
-        sw = self.screenwidth()
-        sys.stdout.write("\r" + " " * sw + "\rFailed: %s %s\n" % (url, message))
-        sys.stdout.flush()
+        if not self._items.has_key(url) or not self._items[url]['errored']:
+            BaseDisplayStatus.errored(self, url, message)
+            self.__clear_line()
+            sys.stdout.write("\rFailed: %s %s\n" % (url, message))
+            sys.stdout.flush()
+