Add a signal to track undo/redo state

This commit is contained in:
Kovid Goyal 2013-12-05 09:25:44 +05:30
parent 830198d7b0
commit 6d1b644cfc

View File

@ -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: