+class preload(object):
+ def __init__(self, fpage):
+ self.pg = fpage
+
+ def attach(self, reader):
+ self.rd = reader
+ self.msg = gtk.Alignment(0, 0.5, 0, 0)
+ self.hlay = gtk.HBox()
+ self.lbl = gtk.Label("Fetching next page...")
+ self.hlay.pack_start(self.lbl)
+ self.lbl.show()
+ self.msg.add(self.hlay)
+ self.hlay.show()
+ self.rd.sbar.pack_start(self.msg)
+ self.msg.show()
+
+ self.pg.notify(self.haspage)
+
+ def haspage(self):
+ if self.rd.preload.cur != self: return False
+ if not self.pg.done: return True
+ if self.pg.val is not None:
+ self.img = self.rd.cache[self.pg.val]
+ self.prog = gtk.ProgressBar()
+ self.prog.set_fraction(0.0)
+ self.hlay.pack_start(self.prog, padding=5)
+ self.prog.show()
+ self.lbl.set_text("Loading next page...")
+ self.img.notify(self.imgprog)
+ else:
+ self.rd.preload.set(None)
+
+ def imgprog(self):
+ if self.rd.preload.cur != self: return False
+ if self.img.done:
+ self.rd.preload.set(None)
+ else:
+ p = self.img.prog
+ if p: self.prog.set_fraction(p)
+ return True
+
+ def abort(self):
+ self.rd.sbar.remove(self.msg)
+