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 @@
+
+
+
\ 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 @@
+
+
+
\ 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):