NAME
Prima::Widget::UndoActions - undo and redo the content of editable widgets
DESCRIPTION
Generic helpers that implement stored actions for undo/redo.
SYNOPSIS
package MyUndoableWidget;
use base qw(Prima::Widget Prima::Widget::UndoActions);
sub on_mousedown
{
if ( $button == mb::Left ) {
$self->begin_undo_group;
$self->push_undo_action(text => $self->text);
$self->text($self->text . '.');
$self->end_undo_group;
} else {
$self->undo; # will call $self->text( old text )
}
}
Properties
Methods
- begin_undo_group
-
Opens a bracket for a group of actions that can be undone as a single operation. The bracket is closed by calling
end_undo_group
. - can_undo, can_redo
-
Return a boolean flag that reflects if the undo or redo actions could be done. Useful for graying a menu, f ex.
- end_undo_group
-
Closes the bracket for a group of actions, that was previously opened by
begin_undo_group
. - init_undo
-
Should be called once, inside init()
- has_undo_action ACTION
-
Checks whether there are any undo-able ACTIONs in the undo list.
- push_grouped_undo_action ACTION, @PARAMS
-
Stores a single undo action where ACTION is a method to be called inside undo/redo, if any. Each action is added to the last undo group and will be removed/replayed together with the other actions in the group.
- push_undo_action ACTION, @PARAMS
-
Stores a single undo action where ACTION is the method to be called inside undo/redo, if any. Each action is a single undo/redo operation.
- redo
-
Re-applies changes, previously rolled back by
undo
. - undo
-
Rolls back changes into an internal array. The array size cannot extend the
undoLimit
value. In caseundoLimit
is 0 no undo actions can be made.
AUTHOR
Dmitry Karasik, <dmitry@karasik.eu.org>.