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-06-27 21:51:50 (GMT)
committer Sayamindu Dasgupta <sayamindu@gmail.com>2009-06-27 21:51:50 (GMT)
commit13c070c9b04d80051642490e8a1fd7df9d11bd25 (patch)
tree7496a6462cc6937f82ba6b587cf28d61d9e687c5
parenta39b0e3068d04563fb1c8c1c2d071cdbd31a67df (diff)
Add a adapter class for handling Epub files
The adapter extends EpubView, Epub and JobFind to make them compatible with the Evince API as much as possible
-rw-r--r--epubadapter.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/epubadapter.py b/epubadapter.py
new file mode 100644
index 0000000..1366ebf
--- /dev/null
+++ b/epubadapter.py
@@ -0,0 +1,66 @@
+import gobject
+import logging
+
+from epubview import EpubView, Epub, JobFind
+
+_logger = logging.getLogger('read-activity')
+
+class View(EpubView):
+ def __init__(self):
+ EpubView.__init__(self)
+
+ def _try_load_page(self, n):
+ if self._ready:
+ self._load_page(n)
+ return False
+ else:
+ return True
+
+ def set_screen_dpi(self, dpi):
+ return
+
+ def find_set_highlight_search(self, set_highlight_search):
+ return
+
+ def set_current_page(self, n):
+ # When the book is being loaded, calling this does not help
+ # In such a situation, we go into a loop and try to load the
+ # supplied page when the book has loaded completely
+ if self._ready:
+ self._load_page(n + 1)
+ else:
+ gobject.timeout_add(200, self._try_load_page, n + 1)
+
+ def get_current_page(self):
+ return self._loaded_page - 1
+
+ def find_changed(self, job, page = None):
+ self._find_changed(job)
+
+ def update_view_size(self, widget):
+ return
+
+ def handle_link(self, link):
+ self._load_file(link)
+
+
+class EpubDocument(Epub):
+ def __init__(self, view, docpath):
+ Epub.__init__(self, docpath)
+ self._page_cache = view
+
+ def get_page_cache(self):
+ return self._page_cache
+
+ def get_n_pages(self):
+ return self._page_cache.get_pagecount()
+
+ def has_document_links(self):
+ return True
+
+ def get_links_model(self):
+ return self.get_toc_model()
+
+class JobFind(JobFind):
+ def __init__(self, document, start_page, n_pages, text, case_sensitive=False):
+ JobFind.__init__(self, document, start_page, n_pages, text, case_sensitive=False)