From 13c070c9b04d80051642490e8a1fd7df9d11bd25 Mon Sep 17 00:00:00 2001 From: Sayamindu Dasgupta Date: Sat, 27 Jun 2009 21:51:50 +0000 Subject: 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 --- 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) -- cgit v0.9.1