From 43ef8c02eacdebd1d7e9442346bcf37e323d35d7 Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Tue, 07 Feb 2012 19:50:58 +0000 Subject: 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 --- 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 -- cgit v0.9.1