From defd57dffbf8c24a1dd6ab33d69a4a92c1102151 Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Thu, 05 Sep 2013 20:31:16 +0000 Subject: Add rotate buttons - SL #4583 Right now, is implemented only for pdf files. Signed-off-by: Gonzalo Odiard --- diff --git a/epubadapter.py b/epubadapter.py index 1946e51..e412675 100644 --- a/epubadapter.py +++ b/epubadapter.py @@ -70,6 +70,9 @@ class EpubViewer(epubview.EpubView): def can_do_text_to_speech(self): return False + def can_rotate(self): + return False + def get_marked_words(self): "Adds a mark between each word of text." i = self.current_word diff --git a/evinceadapter.py b/evinceadapter.py index 3a1f263..31859d9 100644 --- a/evinceadapter.py +++ b/evinceadapter.py @@ -122,6 +122,17 @@ class EvinceViewer(): def previous_page(self): self._view.previous_page() + def rotate_left(self): + rotation = self._model.get_rotation() + self._model.set_rotation(rotation - 90) + + def rotate_right(self): + rotation = self._model.get_rotation() + self._model.set_rotation(rotation + 90) + + def can_rotate(self): + return True + def get_pagecount(self): ''' Returns the pagecount of the loaded file diff --git a/icons/rotate_anticlockwise.svg b/icons/rotate_anticlockwise.svg new file mode 100644 index 0000000..55a9c61 --- /dev/null +++ b/icons/rotate_anticlockwise.svg @@ -0,0 +1,71 @@ + + +image/svg+xml + + + + + + + + \ No newline at end of file diff --git a/icons/rotate_clockwise.svg b/icons/rotate_clockwise.svg new file mode 100644 index 0000000..474f6f0 --- /dev/null +++ b/icons/rotate_clockwise.svg @@ -0,0 +1,71 @@ + + +image/svg+xml + + + + + + + + \ No newline at end of file diff --git a/readtoolbar.py b/readtoolbar.py index 435da1c..02170af 100644 --- a/readtoolbar.py +++ b/readtoolbar.py @@ -225,7 +225,7 @@ class ViewToolbar(Gtk.Toolbar): self._zoom_to_original.show() spacer = Gtk.SeparatorToolItem() - spacer.props.draw = False + spacer.props.draw = True self.insert(spacer, -1) spacer.show() @@ -245,6 +245,23 @@ class ViewToolbar(Gtk.Toolbar): self._view_notify_zoom_handler = None + spacer = Gtk.SeparatorToolItem() + spacer.props.draw = True + self.insert(spacer, -1) + spacer.show() + + self._rotate_left = ToolButton('rotate_anticlockwise') + self._rotate_left.set_tooltip(_('Rotate left')) + self._rotate_left.connect('clicked', self._rotate_left_cb) + self.insert(self._rotate_left, -1) + self._rotate_left.show() + + self._rotate_right = ToolButton('rotate_clockwise') + self._rotate_right.set_tooltip(_('Rotate right')) + self._rotate_right.connect('clicked', self._rotate_right_cb) + self.insert(self._rotate_right, -1) + self._rotate_right.show() + def set_view(self, view): self._view = view self._update_zoom_buttons() @@ -260,6 +277,12 @@ class ViewToolbar(Gtk.Toolbar): def _zoom_in_cb(self, button): self.zoom_in() + def _rotate_left_cb(self, button): + self._view.rotate_left() + + def _rotate_right_cb(self, button): + self._view.rotate_right() + def zoom_out(self): self._view.zoom_out() self._update_zoom_buttons() @@ -283,6 +306,8 @@ class ViewToolbar(Gtk.Toolbar): self._zoom_to_width.props.sensitive = self._view.can_zoom_to_width() self._zoom_to_fit.props.sensitive = self._view.can_zoom_to_width() self._zoom_to_original.props.sensitive = self._view.can_zoom_to_width() + self._rotate_left.props.sensitive = self._view.can_rotate() + self._rotate_right.props.sensitive = self._view.can_rotate() def _zoom_to_fit_cb(self, menu_item): self._view.zoom_to_best_fit() diff --git a/textadapter.py b/textadapter.py index 1a81bf5..c6ded43 100644 --- a/textadapter.py +++ b/textadapter.py @@ -480,6 +480,8 @@ class TextViewer(GObject.GObject): def zoom_to_actual_size(self): return False + def can_rotate(self): + return False class _JobFind(GObject.GObject): -- cgit v0.9.1