return buf
class manga(object):
- def __init__(self, profile, libnm, id, path):
+ def __init__(self, profile, libnm, id):
self.profile = profile
self.libnm = libnm
self.id = id
- self.path = path
self.props = self.loadprops()
+ def open(self):
+ import lib
+ return lib.findlib(self.libnm).byid(self.id)
+
+class memmanga(manga):
+ def __init__(self, profile, libnm, id):
+ super(memmanga, self).__init__(profile, libnm, id)
+
+ def loadprops(self):
+ return {}
+
+class filemanga(manga):
+ def __init__(self, profile, libnm, id, path):
+ self.path = path
+ super(filemanga, self).__init__(profile, libnm, id)
+
def loadprops(self):
ret = {}
with openwdir(self.path) as f:
ret[words[1]] = words[2:]
return ret
- def prop(self, key, default=KeyError):
- if key not in self.props:
- if default is KeyError:
- raise KeyError(key)
- return default
- return self.props[key]
-
- def __getitem__(self, key):
- return self.props[key]
-
- def __contains__(self, key):
- return key in self.props
-
- def setprop(self, key, val):
- self.props[key] = val
-
- def saveprops(self):
+ def save(self):
with openwdir(self.path, "w") as f:
for key, val in self.props.iteritems():
if isinstance(val, str):
else:
f.write(consline("lset", key, *val) + "\n")
- def open(self):
- import lib
- return lib.findlib(self.libnm).byid(self.id)
-
class profile(object):
def __init__(self, dir):
self.dir = dir
def getmanga(self, libnm, id, creat=False):
seq, m = self.getmapping()
if (libnm, id) in m:
- return manga(self, libnm, id, pj(self.dir, "%i.manga" % m[(libnm, id)]))
+ return filemanga(self, libnm, id, pj(self.dir, "%i.manga" % m[(libnm, id)]))
if not creat:
raise KeyError("no such manga: (%s, %s)" % (libnm, id))
while True:
fp.close()
m[(libnm, id)] = seq
self.savemapping(seq, m)
- return manga(self, libnm, id, pj(self.dir, "%i.manga" % seq))
+ return filemanga(self, libnm, id, pj(self.dir, "%i.manga" % seq))
def setlast(self):
if self.name is None:
import threading, gtk, gio, gobject
-import lib
+import lib, profile
class notdone(Exception): pass
self.rd.fetchpage(pageget(self.pnode[self.get_active()]))
class reader(gtk.Window):
- def __init__(self, manga, profile=None):
+ def __init__(self, manga, prof=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())
self.pagefetch = procslot(self)
self.imgfetch = procslot(self)
self.preload = procslot(self)
- self.profile = profile
+ self.profile = prof if prof else profile.memmanga(None, None, manga.id)
self.manga = manga
self.page = None
self.add(vlay)
vlay.show()
- if self.profile and "curpage" in self.profile:
- self.fetchpage(idpageget(self.manga, self.profile["curpage"]))
+ if "curpage" in self.profile.props:
+ self.fetchpage(idpageget(self.manga, self.profile.props["curpage"]))
else:
self.fetchpage(pageget(self.manga))
self.updtitle()
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.profile.props["curpage"] = page.idlist()
+ self.profile.save()
self.point = ccursor(page, self.cache)
self.imgfetch.set(imgfetch(self.cache[page]))
else: