diff options
Diffstat (limited to 'evinceadapter.py')
-rw-r--r-- | evinceadapter.py | 86 |
1 files changed, 47 insertions, 39 deletions
diff --git a/evinceadapter.py b/evinceadapter.py index 632ff96..3e2d647 100644 --- a/evinceadapter.py +++ b/evinceadapter.py @@ -1,8 +1,9 @@ -import gobject +from gi.repository import GObject +from gi.repository import Gtk import logging -import gtk -import evince +from gi.repository import EvinceDocument +from gi.repository import EvinceView _logger = logging.getLogger('read-activity') @@ -11,42 +12,50 @@ class EvinceViewer(): def __init__(self): self._view_notify_zoom_handler = None - self._view = evince.View() + EvinceDocument.init() + self._view = EvinceView.View() def setup(self, activity): self._activity = activity self._view.connect('selection-changed', activity._view_selection_changed_cb) - activity._scrolled = gtk.ScrolledWindow() - activity._scrolled.set_policy(gtk.POLICY_AUTOMATIC, - gtk.POLICY_AUTOMATIC) - activity._scrolled.props.shadow_type = gtk.SHADOW_NONE + activity._scrolled = Gtk.ScrolledWindow() + activity._scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, + Gtk.PolicyType.AUTOMATIC) + activity._scrolled.props.shadow_type = Gtk.ShadowType.NONE activity._scrolled.add(self._view) self._view.show() - activity._hbox.pack_start(activity._scrolled, expand=True, fill=True) + activity._hbox.pack_start(activity._scrolled, True, True, 0) activity._scrolled.show() self.dpi = activity.dpi def load_document(self, file_path): try: - self._document = evince.document_factory_get_document(file_path) - except gobject.GError, e: + self._document = \ + EvinceDocument.Document.factory_get_document(file_path) + except GObject.GError, e: _logger.error('Can not load document: %s', e) return else: - self._model = evince.DocumentModel() + self._model = EvinceView.DocumentModel() self._model.set_document(self._document) self._view.set_model(self._model) # set dpi + # TODO why we need set this? + """ min_scale = self._model.get_min_scale() max_scale = self._model.get_max_scale() + logging.error("min scale %s max_scale %s", min_scale, max_scale) + logging.error("setting min scale %s", min_scale * self.dpi / 72.0) + logging.error("setting max scale %s", max_scale * self.dpi / 72.0) self._model.set_min_scale(min_scale * self.dpi / 72.0) self._model.set_max_scale(max_scale * self.dpi / 72.0) + """ def get_current_page(self): return self._model.props.page @@ -76,16 +85,15 @@ class EvinceViewer(): 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._model.set_sizing_mode(EvinceView.SizingMode.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._model.props.scale = \ - float(self.metadata.get('Read_zoom', '1.0')) + self._model.set_sizing_mode(EvinceView.SizingMode.FREE) + self._model.set_scale(float(self.metadata.get('Read_zoom', '1.0'))) _logger.debug('Set zoom to %f', self._model.props.scale) elif sizing_mode == "fit-width": - self._model.props.sizing_mode = evince.SIZING_FIT_WIDTH + self._model.set_sizing_mode(EvinceView.SizingMode.FIT_WIDTH) if hasattr(self._view, 'update_view_size'): self._view.update_view_size(self._scrolled) else: @@ -93,21 +101,21 @@ class EvinceViewer(): # 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._model.set_scale(float(self.metadata['Read_zoom'])) def update_metadata(self, activity): self.metadata = activity.metadata self.metadata['Read_zoom'] = str(self._model.props.scale) - if self._model.props.sizing_mode == evince.SIZING_BEST_FIT: + if self._model.get_sizing_mode() == EvinceView.SizingMode.BEST_FIT: self.metadata['Read_sizing_mode'] = "best-fit" - elif self._model.props.sizing_mode == evince.SIZING_FREE: + elif self._model.get_sizing_mode() == EvinceView.SizingMode.FREE: self.metadata['Read_sizing_mode'] = "free" - elif self._model.props.sizing_mode == evince.SIZING_FIT_WIDTH: + elif self._model.get_sizing_mode() == EvinceView.SizingMode.FIT_WIDTH: self.metadata['Read_sizing_mode'] = "fit-width" else: _logger.error("Don't know how to save sizing_mode state '%s'" % - self._model.props.sizing_mode) + self._model.get_sizing_mode()) self.metadata['Read_sizing_mode'] = "fit-width" def can_highlight(self): @@ -126,7 +134,7 @@ class EvinceViewer(): ''' Sets the current zoom level ''' - self._model.props.sizing_mode = evince.SIZING_FREE + self._model.props.sizing_mode = EvinceView.SizingMode.FREE if not self._view_notify_zoom_handler: return @@ -142,18 +150,18 @@ class EvinceViewer(): ''' Zooms in (increases zoom level by 0.1) ''' - self._model.props.sizing_mode = evince.SIZING_FREE + self._model.props.sizing_mode = EvinceView.SizingMode.FREE self._view.zoom_in() def zoom_out(self): ''' Zooms out (decreases zoom level by 0.1) ''' - self._model.props.sizing_mode = evince.SIZING_FREE + self._model.props.sizing_mode = EvinceView.SizingMode.FREE self._view.zoom_out() def zoom_to_width(self): - self._model.props.sizing_mode = evince.SIZING_FIT_WIDTH + self._model.props.sizing_mode = EvinceView.SizingMode.FIT_WIDTH def can_zoom_in(self): ''' @@ -171,10 +179,10 @@ class EvinceViewer(): return True def zoom_to_best_fit(self): - self._model.props.sizing_mode = evince.SIZING_BEST_FIT + self._model.props.sizing_mode = EvinceView.SizingMode.BEST_FIT def zoom_to_actual_size(self): - self._model.props.sizing_mode = evince.SIZING_FREE + self._model.props.sizing_mode = EvinceView.SizingMode.FREE self._model.props.scale = 1.0 def connect_zoom_handler(self, handler): @@ -222,23 +230,23 @@ class EvinceViewer(): Scrolls through the pages. Scrolling is horizontal if horizontal is set to True Valid scrolltypes are: - gtk.SCROLL_PAGE_BACKWARD, gtk.SCROLL_PAGE_FORWARD, - gtk.SCROLL_STEP_BACKWARD, gtk.SCROLL_STEP_FORWARD, - gtk.SCROLL_START and gtk.SCROLL_END + Gtk.ScrollType.PAGE_BACKWARD, Gtk.ScrollType.PAGE_FORWARD, + Gtk.ScrollType.STEP_BACKWARD, Gtk.ScrollType.STEP_FORWARD, + Gtk.ScrollType.START and Gtk.ScrollType.END ''' _logger.error('scroll: %s', scrolltype) - if scrolltype == gtk.SCROLL_PAGE_BACKWARD: - self._view.scroll(gtk.SCROLL_PAGE_BACKWARD, horizontal) - elif scrolltype == gtk.SCROLL_PAGE_FORWARD: - self._view.scroll(gtk.SCROLL_PAGE_FORWARD, horizontal) - elif scrolltype == gtk.SCROLL_STEP_BACKWARD: + if scrolltype == Gtk.ScrollType.PAGE_BACKWARD: + self._view.scroll(Gtk.ScrollType.PAGE_BACKWARD, horizontal) + elif scrolltype == Gtk.ScrollType.PAGE_FORWARD: + self._view.scroll(Gtk.ScrollType.PAGE_FORWARD, horizontal) + elif scrolltype == Gtk.ScrollType.STEP_BACKWARD: self._scroll_step(False, horizontal) - elif scrolltype == gtk.SCROLL_STEP_FORWARD: + elif scrolltype == Gtk.ScrollType.STEP_FORWARD: self._scroll_step(True, horizontal) - elif scrolltype == gtk.SCROLL_START: + elif scrolltype == Gtk.ScrollType.START: self.set_current_page(0) - elif scrolltype == gtk.SCROLL_END: + elif scrolltype == Gtk.ScrollType.END: self.set_current_page(self._document.get_n_pages()) else: print ('Got unsupported scrolltype %s' % str(scrolltype)) |