diff options
author | Sayamindu Dasgupta <sayamindu@gmail.com> | 2009-11-29 21:23:37 (GMT) |
---|---|---|
committer | Sayamindu Dasgupta <sayamindu@gmail.com> | 2009-11-29 21:23:37 (GMT) |
commit | 7c75c418cbe8c12b08643db6ccfd48648aaa7d41 (patch) | |
tree | 59489a8b8bf4f1dc93cfd9543fde579dad13c7a1 | |
parent | 45afffbce646629f8b02c5b54143ad0ea0d910bc (diff) |
Support footnotes and intra-document links
-rw-r--r-- | epubview/epubview.py | 16 | ||||
-rw-r--r-- | epubview/jobs.py | 18 |
2 files changed, 30 insertions, 4 deletions
diff --git a/epubview/epubview.py b/epubview/epubview.py index 5af9ac0..595eb20 100644 --- a/epubview/epubview.py +++ b/epubview/epubview.py @@ -358,6 +358,8 @@ class _View(gtk.HBox): if os.path.exists(filename.replace('xhtml', 'xml')): filename = filename.replace('xhtml', 'xml') # Hack for making javascript work + filename = filename.split('#')[0] # Get rid of anchors + if self._loaded_page < 1 or filename == None: return False @@ -380,6 +382,20 @@ class _View(gtk.HBox): self._scroll_page_end() else: self._scroll_page() + + base_pageno = self._paginator.get_base_pageno_for_file(filename) + scrollval = self._v_vscrollbar.get_value() + scroll_upper = self._v_vscrollbar.props.adjustment.props.upper + + if scroll_upper == 0: # This is a one page file + pageno = base_pageno + else: + offset = (scrollval/scroll_upper) * self._paginator.get_pagecount_for_file(filename) + pageno = math.floor(base_pageno + offset) + + if pageno != self._loaded_page: + self._on_page_changed(int(pageno)) + def _scroll_page_end(self): v_upper = self._v_vscrollbar.props.adjustment.props.upper diff --git a/epubview/jobs.py b/epubview/jobs.py index 468e4cc..3f9a1cb 100644 --- a/epubview/jobs.py +++ b/epubview/jobs.py @@ -184,17 +184,27 @@ class _JobPaginator(gobject.GObject): ''' return self._pagemap[pageno][2] - def get_pagecount_for_file(self, file): + def get_pagecount_for_file(self, filename): ''' Returns the number of pages in file ''' - return self._filedict[file][0] + return self._filedict[filename][0] - def get_remfactor_for_file(self, file): + def get_base_pageno_for_file(self, filename): + ''' + Returns the pageno which begins in filename + ''' + for key in self._pagemap.keys(): + if self._pagemap[key][0].replace('file://', '') == filename: + return key + + return None + + def get_remfactor_for_file(self, filename): ''' Returns the remainder factor (1 - fraction length of last page in file) ''' - return self._filedict[file][1] + return self._filedict[filename][1] def get_total_pagecount(self): ''' |