#!/usr/bin/python
import sys, getopt
-import manga.lib, manga.reader, manga.local
+import manga.lib, manga.reader, manga.profile, manga.local
import glib, gobject, gtk
gobject.threads_init()
gtk.gdk.threads_init()
def usage(out):
- out.write("usage: automanga [-h] [DIR]\n")
- out.write(" automanga [-h] -l LIBRARY ID\n")
+ out.write("usage: automanga [-h] [-p PROFILE] [-l LIBRARY] [DIR-OR-ID]\n")
out.write(" automanga [-h] -s LIBRARY NAME\n")
libname = None
search = False
-opts, args = getopt.getopt(sys.argv[1:], "hl:s")
+profile = ""
+opts, args = getopt.getopt(sys.argv[1:], "hl:sp:")
for o, a in opts:
if o == "-h":
usage(sys.stdout)
libname = a
elif o == "-s":
search = True
+ elif o == "-p":
+ if a == "":
+ profile = None
+ else:
+ profile = a
+if profile == "":
+ try:
+ profile = manga.profile.profile.last()
+ except KeyError:
+ profile = manga.profile.profile.byname("default")
+elif profile is not None:
+ profile = manga.profile.profile.byname(profile)
if search:
if len(args) < 2:
sys.stderr.write("automanga: no such manga: %s\n" % args[0])
sys.exit(1)
else:
+ libname = "local"
if len(args) > 0:
mng = manga.local.manga(args[0])
else:
mng = manga.local.manga(".")
-reader = manga.reader.reader(mng)
+if profile is not None:
+ profile.setlast()
+
+reader = manga.reader.reader(mng, profile.getmanga(libname, mng.id, True))
reader.show()
gtk.main()
elif c.isspace():
ret.append(buf)
buf = ""
+ a = False
break
elif c == "\\" and p < len(line):
buf += bsq(line[p])
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
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__()
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())
self.pagefetch = procslot(self)
self.imgfetch = procslot(self)
self.preload = procslot(self)
+ self.profile = profile
self.manga = manga
self.page = None
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):
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: