Fixed progressbar bug.
[automanga.git] / manga / reader.py
index ca8f433..51d2779 100644 (file)
@@ -76,18 +76,20 @@ class imgload(future):
 
     def value(self):
         buf = gtk.gdk.PixbufLoader()
-        with self.page.open() as st:
-            self.p = 0
-            self.st = st
-            while True:
-                read = st.read(1024)
-                if read == "":
-                    break
-                self.p += len(read)
-                buf.write(read)
-                self.progcb()
-        self.st = None
-        buf.close()
+        try:
+            with self.page.open() as st:
+                self.p = 0
+                self.st = st
+                while True:
+                    read = st.read(1024)
+                    if read == "":
+                        break
+                    self.p += len(read)
+                    buf.write(read)
+                    self.progcb()
+            self.st = None
+        finally:
+            buf.close()
         return buf.get_pixbuf()
 
     @property
@@ -293,11 +295,12 @@ class msgproc(object):
         self._prog = None
 
     def prog(self, p):
-        if p is not None and self._prog is None:
-            self._prog = gtk.ProgressBar()
+        if p is not None:
+            if self._prog is None:
+                self._prog = gtk.ProgressBar()
+                self.hlay.pack_start(self._prog, padding=5)
+                self._prog.show()
             self._prog.set_fraction(p)
-            self.hlay.pack_start(self._prog, padding=5)
-            self._prog.show()
         elif p is None and self._prog is not None:
             self.hlay.remove(self._prog)
             self._prog = None