QgsLayoutUndoStack class

An undo stack for QgsLayouts.

Constructors, destructors, conversion operators

QgsLayoutUndoStack(QgsLayout* layout)
Constructor for QgsLayoutUndoStack, for the specified parent layout.

Public functions

void beginCommand(QgsLayoutUndoObjectInterface* object, const QString& commandText, int id = 0)
Begins a new undo command for the specified object.
void beginMacro(const QString& commandText)
Starts a macro command, with the given descriptive commandText.
void blockCommands(bool blocked)
Sets whether undo commands for the layout should be temporarily blocked.
void cancelCommand()
Cancels the active command, discarding it without pushing to the undo history.
void endCommand()
Saves final state of an object and pushes the active command to the undo history.
void endMacro()
Ends a macro command.
auto isBlocked() const -> bool
Returns true if undo commands are currently blocked.
void notifyUndoRedoOccurred(QgsLayoutItem* item)
Notifies the stack that an undo or redo action occurred for a specified item.
void push(QUndoCommand* command)
Manually pushes a command to the stack, and takes ownership of the command.
auto stack() -> QUndoStack*
Returns a pointer to the internal QUndoStack.

Signals

void undoRedoOccurredForItems(QSet<QString> itemUuids)
Emitted when an undo or redo action has occurred, which affected a set of layout itemUuids.

Function documentation

void QgsLayoutUndoStack::beginCommand(QgsLayoutUndoObjectInterface* object, const QString& commandText, int id = 0)

Begins a new undo command for the specified object.

This must be followed by a call to endCommand() or cancelCommand() after the desired changes have been made to object.

The id argument can be used to specify an id number for the source event - this is used to determine whether QUndoCommand command compression can apply to the command.

void QgsLayoutUndoStack::beginMacro(const QString& commandText)

Starts a macro command, with the given descriptive commandText.

Any commands added to the stack (either via direct manipulation of stack() or via beginCommand()/endCommand() calls) between a beginMacro() and endMacro() block are collapsed into a single undo command, which will be applied or rolled back in a single step.

void QgsLayoutUndoStack::blockCommands(bool blocked)

Sets whether undo commands for the layout should be temporarily blocked.

If blocked is true, subsequent undo commands will be blocked until a follow-up call to blockCommands( false ) is made.

Note that calls to blockCommands are stacked, so two calls blocking the commands will take two calls unblocking commands in order to release the block.

void QgsLayoutUndoStack::cancelCommand()

Cancels the active command, discarding it without pushing to the undo history.

void QgsLayoutUndoStack::endCommand()

Saves final state of an object and pushes the active command to the undo history.

void QgsLayoutUndoStack::endMacro()

Ends a macro command.

This must be called after beginMacro(), when all child undo commands which form part of the macro have been completed.

Any commands added to the stack (either via direct manipulation of stack() or via beginCommand()/endCommand() calls) between a beginMacro() and endMacro() block are collapsed into a single undo command, which will be applied or rolled back in a single step.

bool QgsLayoutUndoStack::isBlocked() const

Returns true if undo commands are currently blocked.