diff --git a/epubadapter.py b/epubadapter.py index 1946e51..e412675 100644 --- a/epubadapter.py +++ b/epubadapter.py @@ -68,6 +68,9 @@ return False def can_do_text_to_speech(self): + return False + + def can_rotate(self): return False def get_marked_words(self): diff --git a/evinceadapter.py b/evinceadapter.py index 3a1f263..31859d9 100644 --- a/evinceadapter.py +++ b/evinceadapter.py @@ -122,6 +122,17 @@ 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 @@ 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 @@ 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() @@ -259,6 +276,12 @@ 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() @@ -283,6 +306,8 @@ 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 @@ def zoom_to_actual_size(self): return False + def can_rotate(self): + return False class _JobFind(GObject.GObject):