Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2012-02-07 19:50:58 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2012-02-07 19:50:58 (GMT)
commit43ef8c02eacdebd1d7e9442346bcf37e323d35d7 (patch)
tree94ebd112f915de448961bd2bd8e869afc9dae0e6
parentc1b8c7cf88427aaf44756e4f725c3018fa2dc48c (diff)
Wait until one file is loaded before trying to load another file
Added a semaphore and removed code where the change of pages from one file to another was miscalculated. Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
-rw-r--r--epubview/epubview.py35
1 files changed, 9 insertions, 26 deletions
diff --git a/epubview/epubview.py b/epubview/epubview.py
index a626fe1..1813cbe 100644
--- a/epubview/epubview.py
+++ b/epubview/epubview.py
@@ -57,6 +57,7 @@ class _View(gtk.HBox):
self._ready = False
self._paginator = None
self._loaded_page = -1
+ self._file_loaded = True
#self._old_scrollval = -1
self._loaded_filename = None
self._pagecount = -1
@@ -385,12 +386,12 @@ class _View(gtk.HBox):
if self._v_vscrollbar.get_value() >= \
self._v_vscrollbar.props.adjustment.props.upper - \
self._v_vscrollbar.props.adjustment.props.page_size:
- self._load_next_file()
+ self._load_page(self._loaded_page + 1)
return True
elif self.__going_back:
if self._v_vscrollbar.get_value() == \
self._v_vscrollbar.props.adjustment.props.lower:
- self._load_prev_file()
+ self._load_page(self._loaded_page - 1)
return True
return False
@@ -400,6 +401,7 @@ class _View(gtk.HBox):
# possible Webkit bug. See : https://bugs.launchpad.net/bugs/483231
self._sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
+ self._file_loaded = True
filename = self._view.props.uri.replace('file://', '')
if os.path.exists(filename.replace('xhtml', 'xml')):
# Hack for making javascript work
@@ -566,10 +568,15 @@ class _View(gtk.HBox):
return
self._on_page_changed(self._loaded_page, pageno)
+
filename = self._paginator.get_file_for_pageno(pageno)
filename = filename.replace('file://', '')
if filename != self._loaded_filename:
self._loaded_filename = filename
+ if not self._file_loaded:
+ # wait until the file is loaded
+ return
+ self._file_loaded = False
"""
TODO: disabled because javascript can't be executed
@@ -600,18 +607,6 @@ class _View(gtk.HBox):
o.close()
shutil.copy(file_name + '.tmp', file_name)
- 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():
- pageno += 1
- if self._paginator.get_file_for_pageno(pageno) != cur_file:
- break
-
- self._load_page(pageno)
-
def _load_file(self, path):
#TODO: This is a bit suboptimal - fix it
for pageno in range(1, self.get_pagecount()):
@@ -620,18 +615,6 @@ class _View(gtk.HBox):
self._load_page(pageno)
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:
- pageno -= 1
- if self._paginator.get_file_for_pageno(pageno) != cur_file:
- break
-
- self._load_page(pageno)
-
def _scrollbar_change_value_cb(self, range, scrolltype, value):
if scrolltype == gtk.SCROLL_STEP_FORWARD:
self.__going_fwd = True