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:23:37 (GMT)
commit7c75c418cbe8c12b08643db6ccfd48648aaa7d41 (patch)
tree59489a8b8bf4f1dc93cfd9543fde579dad13c7a1
parent45afffbce646629f8b02c5b54143ad0ea0d910bc (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 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):
'''