From 6d1b644cfc557684ad34d00d62a684d840130565 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 5 Dec 2013 09:25:44 +0530 Subject: [PATCH] Add a signal to track undo/redo state --- src/calibre/gui2/tweak_book/editor/canvas.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/tweak_book/editor/canvas.py b/src/calibre/gui2/tweak_book/editor/canvas.py index 6a4cc1f77c..de1d974e76 100644 --- a/src/calibre/gui2/tweak_book/editor/canvas.py +++ b/src/calibre/gui2/tweak_book/editor/canvas.py @@ -126,6 +126,7 @@ class Canvas(QWidget): SELECT_PEN = QPen(QColor(Qt.white)) selection_state_changed = pyqtSignal(object) + undo_redo_state_changed = pyqtSignal(object, object) image_changed = pyqtSignal(object) @property @@ -141,8 +142,10 @@ class Canvas(QWidget): self.setMouseTracking(True) self.setFocusPolicy(Qt.ClickFocus) self.selection_state = SelectionState() - self.undo_stack = QUndoStack() - self.undo_stack.setUndoLimit(10) + self.undo_stack = u = QUndoStack() + u.setUndoLimit(10) + u.canUndoChanged.connect(self.emit_undo_redo_state) + u.canRedoChanged.connect(self.emit_undo_redo_state) self.original_image_data = None self.is_valid = False @@ -211,6 +214,9 @@ class Canvas(QWidget): self.undo_stack.clear() self.original_image_data = self.current_image = self.current_scaled_pixmap = None + def emit_undo_redo_state(self): + self.undo_redo_state_changed.emit(self.undo_action.isEnabled(), self.redo_action.isEnabled()) + @imageop def trim_image(self): if self.selection_state.rect is None: