X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=manga%2Freader.py;h=12089e7b1b40dfe1109da271bd68514d5fe3ef90;hb=a133683da68efa3e4b9b01dc8474bdccac0a2b01;hp=37972b4f5c75071e4f28267445141d6e1214aa0d;hpb=c84f095d9f394707c973a8faeaf1c83f577e8c0f;p=automanga.git diff --git a/manga/reader.py b/manga/reader.py index 37972b4..12089e7 100644 --- a/manga/reader.py +++ b/manga/reader.py @@ -115,6 +115,14 @@ class pagecache(object): self.bk = self.bk[-self.sz:] return f + def __delitem__(self, page): + idl = page.idlist() + for i, (ol, f) in enumerate(self.bk): + if ol == idl: + del self.bk[i] + return + raise KeyError(idl) + class relpageget(future): def __init__(self, cur, prev, cache=None): super(relpageget, self).__init__() @@ -136,6 +144,15 @@ class relpageget(future): self.cache[page] return page +class idpageget(future): + def __init__(self, base, idlist): + super(idpageget, self).__init__() + self.bnode = base + self.idlist = idlist + + def value(self): + return lib.cursor(self.bnode.byidlist(self.idlist)).cur + class pageget(future): def __init__(self, fnode): super(pageget, self).__init__() @@ -446,7 +463,7 @@ class sbox(gtk.ComboBox): self.rd.fetchpage(pageget(self.pnode[self.get_active()])) class reader(gtk.Window): - def __init__(self, manga): + def __init__(self, manga, profile=None): super(reader, self).__init__(gtk.WINDOW_TOPLEVEL) self.connect("delete_event", lambda wdg, ev, data=None: False) self.connect("destroy", lambda wdg, data=None: self.quit()) @@ -455,6 +472,7 @@ class reader(gtk.Window): self.pagefetch = procslot(self) self.imgfetch = procslot(self) self.preload = procslot(self) + self.profile = profile self.manga = manga self.page = None @@ -487,7 +505,10 @@ class reader(gtk.Window): self.add(vlay) vlay.show() - self.fetchpage(pageget(self.manga)) + if self.profile and "curpage" in self.profile: + self.fetchpage(idpageget(self.manga, self.profile["curpage"])) + else: + self.fetchpage(pageget(self.manga)) self.updtitle() def updpagelbl(self): @@ -527,6 +548,9 @@ class reader(gtk.Window): if self.point is not None: self.point = None if page is not None: + if self.profile: + self.profile.setprop("curpage", page.idlist()) + self.profile.saveprops() self.point = ccursor(page, self.cache) self.imgfetch.set(imgfetch(self.cache[page])) else: @@ -592,6 +616,10 @@ class reader(gtk.Window): self.fetchpage(self.point.next, lambda page: self.preload.set(preload(relpageget(page, False, self.cache)))) elif ev.keyval in [65288]: self.fetchpage(self.point.prev, lambda page: self.preload.set(preload(relpageget(page, True, self.cache)))) + elif ev.keyval in [ord('R'), ord('r')]: + page = self.point.cur.cur + del self.cache[page] + self.imgfetch.set(imgfetch(self.cache[page])) def quit(self): self.hide()