From f35a4887ca9f914f6e21ae7aa83755cb3eb3540d Mon Sep 17 00:00:00 2001 From: Sayamindu Dasgupta Date: Wed, 22 Jul 2009 19:50:25 +0000 Subject: Sync to latest epubview --- diff --git a/epubview/epub.py b/epubview/epub.py index 81de9d7..f49b0d7 100644 --- a/epubview/epub.py +++ b/epubview/epub.py @@ -29,6 +29,7 @@ class _Epub(object): self._filepath = filepath self._zobject = None self._obffile = None + self._titlepage = None self._obfpath = None self._ncxpath = None self._ncxfile = None @@ -40,9 +41,10 @@ class _Epub(object): self._get_obf() self._get_ncx() + self._get_titlepage() self._ncxfile = self._zobject.open(self._ncxpath) - self._navmap = navmap.NavMap(self._ncxfile, self._basepath) + self._navmap = navmap.NavMap(self._ncxfile, self._basepath, self._titlepage) self._obffile = self._zobject.open(self._obfpath) self._info = epubinfo.EpubInfo(self._obffile) @@ -94,7 +96,18 @@ class _Epub(object): obffile.close() + def _get_titlepage(self): + obffile = self._zobject.open(self._obfpath) + tree = etree.parse(obffile) + root = tree.getroot() + + for element in root.iterfind('.//{http://www.idpf.org/2007/opf}item'): + if element.get('id') == 'titlepage': + self._titlepage = self._basepath + element.get('href') + + obffile.close() + def _verify(self): ''' Method to crudely check to verify that what we diff --git a/epubview/epubview.py b/epubview/epubview.py index f59fb9c..5c2c7a2 100644 --- a/epubview/epubview.py +++ b/epubview/epubview.py @@ -406,6 +406,8 @@ class _View(gtk.HBox): self._scroll_page() def _load_next_file(self): + if self._loaded_page == self._pagecount: + return cur_file = self._paginator.get_file_for_pageno(self._loaded_page) pageno = self._loaded_page while pageno < self._paginator.get_total_pagecount(): @@ -424,6 +426,8 @@ class _View(gtk.HBox): break def _load_prev_file(self): + if self._loaded_page == 1: + return cur_file = self._paginator.get_file_for_pageno(self._loaded_page) pageno = self._loaded_page while pageno > 1: diff --git a/epubview/navmap.py b/epubview/navmap.py index 0ba0b8f..cdeb265 100644 --- a/epubview/navmap.py +++ b/epubview/navmap.py @@ -18,14 +18,18 @@ class NavPoint(object): class NavMap(object): - def __init__(self, file, basepath): + def __init__(self, opffile, basepath, titlepage): self._basepath = basepath - self._tree = etree.parse(file) + self._tree = etree.parse(opffile) self._root = self._tree.getroot() self._gtktreestore = gtk.TreeStore(str, str) self._flattoc = [] self._populate_toc() + + if titlepage and self._flattoc[0][1] != titlepage: + self._flattoc.insert(0, ('Title Page', titlepage)) + self._gtktreestore.insert(None, 0, ['Title Page', titlepage]) def _populate_toc(self): navmap = self._root.find('{http://www.daisy.org/z3986/2005/ncx/}navMap') diff --git a/epubview/widgets.py b/epubview/widgets.py index 19d2dc9..c52d590 100644 --- a/epubview/widgets.py +++ b/epubview/widgets.py @@ -1,3 +1,5 @@ +import gtk + try: import webkit except ImportError: @@ -5,8 +7,6 @@ except ImportError: sys.path.append(os.path.join(os.environ['SUGAR_BUNDLE_PATH'], 'epubview', 'modules')) import webkit -import gtk - class _WebView(webkit.WebView): def __init__(self): -- cgit v0.9.1