From 3835568704560c919f260653e12664573d239dbf Mon Sep 17 00:00:00 2001 From: Sayamindu Dasgupta Date: Sun, 29 Nov 2009 21:23:37 +0000 Subject: Support footnotes and intra-document links --- diff --git a/epubview/epubview.py b/epubview/epubview.py index 7300bd0..d28ebc3 100644 --- a/epubview/epubview.py +++ b/epubview/epubview.py @@ -353,6 +353,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 @@ -375,6 +377,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): ''' -- cgit v0.9.1