diff options
author | Sayamindu Dasgupta <sayamindu@gmail.com> | 2009-06-27 21:51:50 (GMT) |
---|---|---|
committer | Sayamindu Dasgupta <sayamindu@gmail.com> | 2009-06-27 21:51:50 (GMT) |
commit | 13c070c9b04d80051642490e8a1fd7df9d11bd25 (patch) | |
tree | 7496a6462cc6937f82ba6b587cf28d61d9e687c5 | |
parent | a39b0e3068d04563fb1c8c1c2d071cdbd31a67df (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.py | 66 |
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) |