Moved the mangaview functionality directly into the reader.
[automanga.git] / manga / lib.py
index 52f75ea..a3fa9a6 100644 (file)
@@ -115,7 +115,9 @@ class imgstream(object):
     when exiting the with-scope.
 
     All imgstreams should contain an attribute `ctype', being the
-    Content-Type of the image being read by the stream."""
+    Content-Type of the image being read by the stream, and `clen`,
+    being either an int describing the total number of bytes in the
+    stream, or None if the value is not known in advance."""
 
     def __enter__(self):
         return self
@@ -123,6 +125,12 @@ class imgstream(object):
     def __exit__(self, *exc_info):
         self.close()
 
+    def fileno(self):
+        """If reading the imgstream may block, fileno() should return
+        a file descriptor that can be polled. If fileno() returns
+        None, that should mean that reading will not block."""
+        return None
+
     def close(self):
         """Close this stream."""
         raise NotImplementedError()
@@ -134,7 +142,10 @@ class imgstream(object):
 
 class cursor(object):
     def __init__(self, ob):
-        self.cur = self.descend(ob)
+        if isinstance(ob, cursor):
+            self.cur = ob.cur
+        else:
+            self.cur = self.descend(ob)
 
     def descend(self, ob):
         while isinstance(ob, pagelist):
@@ -151,7 +162,7 @@ class cursor(object):
         raise StopIteration()
 
     def prev(self):
-        for n, i in reversed(self.cur,stack):
+        for n, i in reversed(self.cur.stack):
             if i > 0:
                 self.cur = self.descend(n[i - 1])
                 return self.cur