diff options
author | Lucian Branescu Mihaila <lucian.branescu@gmail.com> | 2010-07-20 12:52:56 (GMT) |
---|---|---|
committer | Lucian Branescu Mihaila <lucian.branescu@gmail.com> | 2010-07-20 12:52:56 (GMT) |
commit | 420579b50ac59ee37bdad022b4e11badeba97e70 (patch) | |
tree | 73a3205172bb5944d013946078f26dd9f704505c | |
parent | 7c186be9474877d5d930313521cc84580cbf8471 (diff) |
Re-enable search. Re-enable sniffing and setting screen DPI.
-rw-r--r-- | readactivity.py | 75 | ||||
-rw-r--r-- | readtoolbar.py | 2 |
2 files changed, 49 insertions, 28 deletions
diff --git a/readactivity.py b/readactivity.py index ac2aaf4..788ddeb 100644 --- a/readactivity.py +++ b/readactivity.py @@ -57,6 +57,7 @@ try: except: _EPUB_SUPPORT = False + _HARDWARE_MANAGER_INTERFACE = 'org.laptop.HardwareManager' _HARDWARE_MANAGER_SERVICE = 'org.laptop.HardwareManager' _HARDWARE_MANAGER_OBJECT_PATH = '/org/laptop/HardwareManager' @@ -407,7 +408,7 @@ class ReadActivity(activity.Activity): elif page < 0: page = 0 - self._model.props.page = page + self._document.get_page_cache().set_current_page(page) entry.props.text = str(page + 1) def __go_back_cb(self, button): @@ -423,41 +424,42 @@ class ReadActivity(activity.Activity): self._view.next_page() def __prev_bookmark_activate_cb(self, menuitem): - page = self._model.props.page + page = self._document.get_page_cache().get_current_page() bookmarkmanager = self._sidebar.get_bookmarkmanager() prev_bookmark = bookmarkmanager.get_prev_bookmark_for_page(page) if prev_bookmark is not None: - self._model.props.page = prev_bookmark.page_no + self._document.get_page_cache().set_current_page(prev_bookmark.page_no) def __next_bookmark_activate_cb(self, menuitem): - page = self._model.props.page + page = self._document.get_page_cache().get_current_page() bookmarkmanager = self._sidebar.get_bookmarkmanager() next_bookmark = bookmarkmanager.get_next_bookmark_for_page(page) if next_bookmark is not None: - self._model.props.page = next_bookmark.page_no + self._document.get_page_cache().set_current_page(next_bookmark.page_no) def __bookmarker_toggled_cb(self, button): + page = self._document.get_page_cache().get_current_page() if self._bookmarker.props.active: - self._sidebar.add_bookmark(self._model.props.page) + self._sidebar.add_bookmark(page) else: - self._sidebar.del_bookmark(self._model.props.page) + self._sidebar.del_bookmark(page) - def __page_changed_cb(self, previous, next, user_data): + def __page_changed_cb(self, page, proxy = None): self._update_nav_buttons() if hasattr(self._document, 'has_document_links'): if self._document.has_document_links(): self._toc_select_active_page() - self._sidebar.update_for_page(self._model.props.page) + self._sidebar.update_for_page(self._document.get_page_cache().get_current_page()) self._bookmarker.handler_block(self._bookmarker_toggle_handler_id) self._bookmarker.props.active = self._sidebar.is_showing_local_bookmark() self._bookmarker.handler_unblock(self._bookmarker_toggle_handler_id) def _update_nav_buttons(self): - current_page = self._model.props.page + current_page = self._document.get_page_cache().get_current_page() self._back_button.props.sensitive = current_page > 0 self._forward_button.props.sensitive = \ current_page < self._document.get_n_pages() - 1 @@ -508,7 +510,7 @@ class ReadActivity(activity.Activity): iter = self._navigator.get_active_iter() current_link = self._toc_model.get(iter, 1)[0] - current_page = self._model.props.page + current_page = self._document.get_page_cache().get_current_page() if not hasattr(current_link, 'get_page'): @@ -590,6 +592,10 @@ class ReadActivity(activity.Activity): self._tempfile = tempfile self._load_document('file://' + self._tempfile) + # FIXME: This should obviously be fixed properly + gobject.timeout_add_seconds(1, self.__view_toolbar_needs_update_size_cb, + None) + def write_file(self, file_path): """Write into datastore for Keep. @@ -606,7 +612,7 @@ class ReadActivity(activity.Activity): try: self.metadata['Read_current_page'] = \ - str(self._model.props.page) + str(self._document.get_page_cache().get_current_page()) self.metadata['Read_zoom'] = str(self._view.props.zoom) @@ -759,9 +765,8 @@ class ReadActivity(activity.Activity): def _setup_evince_viewer(self): self._view = evince.View() - #self._view.set_screen_dpi(_get_screen_dpi()) #disabled trac#1900 - #self._view.connect('notify::has-selection', - # self._view_notify_has_selection_cb) + self._view.connect('notify::has-selection', + self._view_notify_has_selection_cb) self._scrolled = gtk.ScrolledWindow() self._scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) @@ -790,17 +795,23 @@ class ReadActivity(activity.Activity): else: self._setup_evince_viewer() try: - self._document = evince.document_factory_get_document( - filepath) + self._document = evince.document_factory_get_document(filepath) except GError, e: _logger.error('Can not load document: %s', e) return self._want_document = False - + self._model = evince.DocumentModel() self._model.set_document(self._document) self._view.set_model(self._model) + + # set dpi + dpi = _get_screen_dpi() + min_scale = self._model.get_min_scale() + max_scale = self._model.get_max_scale() + self._model.set_min_scale(min_scale * dpi / 72.0) + self._model.set_max_scale(max_scale * dpi / 72.0) self._view_toolbar.set_view(self._view, self._model) self._edit_toolbar.set_view(self._view) @@ -814,7 +825,8 @@ class ReadActivity(activity.Activity): self._update_nav_buttons() self._update_toc() - self._model.connect('page-changed', self.__page_changed_cb) + page_cache = self._document.get_page_cache() + page_cache.connect('page-changed', self.__page_changed_cb) if not self.metadata['title_set_by_user'] == '1': info = self._document.get_info() @@ -825,20 +837,23 @@ class ReadActivity(activity.Activity): sizing_mode = self.metadata.get('Read_sizing_mode', 'fit-width') _logger.debug('Found sizing mode: %s', sizing_mode) if sizing_mode == "best-fit": - self._model.props.sizing_mode = evince.SIZING_BEST_FIT + self._view.props.sizing_mode = evince.SIZING_BEST_FIT + if hasattr(self._view, 'update_view_size'): + self._view.update_view_size(self._scrolled) elif sizing_mode == "free": - self._model.props.sizing_mode = evince.SIZING_FREE - self._scale.props.zoom = float(self.metadata.get('Read_zoom', - '1.0')) - _logger.debug('Set zoom to %f', self._model.props.scale) + self._view.props.sizing_mode = evince.SIZING_FREE + self._view.props.zoom = float(self.metadata.get('Read_zoom', '1.0')) + _logger.debug('Set zoom to %f', self._view.props.zoom) elif sizing_mode == "fit-width": - self._model.props.sizing_mode = evince.SIZING_FIT_WIDTH + self._view.props.sizing_mode = evince.SIZING_FIT_WIDTH + if hasattr(self._view, 'update_view_size'): + self._view.update_view_size(self._scrolled) else: # this may happen when we get a document from a buddy with a later # version of Read, for example. _logger.warning("Unknown sizing_mode state '%s'", sizing_mode) if self.metadata.get('Read_zoom', None) is not None: - self._model.props.scale = float(self.metadata['Read_zoom']) + self._view.props.zoom = float(self.metadata['Read_zoom']) self._view_toolbar._update_zoom_buttons() @@ -847,7 +862,7 @@ class ReadActivity(activity.Activity): current_page = int(self.metadata.get('Read_current_page', '0')) _logger.debug('Setting page to: %d', current_page) - self._model.props.page = current_page + self._document.get_page_cache().set_current_page(current_page) # We've got the document, so if we're a shared activity, offer it try: @@ -954,5 +969,11 @@ class ReadActivity(activity.Activity): else: self._topbar.hide() + def __view_toolbar_needs_update_size_cb(self, view_toolbar): + if hasattr(self._view, 'update_view_size'): + self._view.update_view_size(self._scrolled) + else: + return False # No need to run this again and again + def __view_toolbar_go_fullscreen_cb(self, view_toolbar): self.fullscreen() diff --git a/readtoolbar.py b/readtoolbar.py index a5d67ce..1c19b12 100644 --- a/readtoolbar.py +++ b/readtoolbar.py @@ -98,7 +98,7 @@ class EditToolbar(activity.EditToolbar): try: self._find_job = evince.JobFind(document=self._document, start_page=0, n_pages=self._document.get_n_pages(), text=text, case_sensitive=False) self._find_updated_handler = self._find_job.connect('updated', self._find_updated_cb) - evince.job_scheduler_push_job(self._find_job, evince.JOB_PRIORITY_NONE) + evince.Job.scheduler_push_job(self._find_job, evince.JOB_PRIORITY_NONE) except TypeError: self._find_job = epubadapter.JobFind(document=self._document, start_page=0, n_pages=self._document.get_n_pages(), text=text, case_sensitive=False) self._find_updated_handler = self._find_job.connect('updated', self._find_updated_cb) |