Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSayamindu Dasgupta <sayamindu@gmail.com>2009-11-29 21:23:37 (GMT)
committer Sayamindu Dasgupta <sayamindu@gmail.com>2009-11-29 21:36:02 (GMT)
commit3835568704560c919f260653e12664573d239dbf (patch)
treef93618d63808ef2755811ca5848c48eb6341e3e7
parent5cb263e76d1dfbda845af32a4aaf71f27d8ea7ec (diff)
Support footnotes and intra-document links
-rw-r--r--epubview/epubview.py16
-rw-r--r--epubview/jobs.py18
2 files changed, 30 insertions, 4 deletions
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):
'''