Helper class to manager transaction (i.e. undo/redo) More...
#include <AutoTransaction.h>
Public Member Functions | |
AutoTransaction (const char *name=nullptr, bool tmpName=false) | |
Constructor. More... | |
void | close (bool abort=false) |
Close or abort the transaction. More... | |
~AutoTransaction () | |
Destructor. More... | |
Static Public Member Functions | |
static void | setEnable (bool enable) |
Enable/Disable any AutoTransaction instance in the current stack. More... | |
Helper class to manager transaction (i.e. undo/redo)
AutoTransaction::AutoTransaction | ( | const char * | name = nullptr , |
bool | tmpName = false |
||
) |
Constructor.
name | optional new transaction name on construction |
tmpName | if true and a new transaction is setup, the name given is considered as temporary, and subsequent construction of this class (or calling Application::setActiveTransaction()) can override the transaction name. |
The constructor increments an internal counter (Application::_activeTransactionGuard). The counter prevents any new active transaction being setup. It also prevents close (i.e. commits) the current active transaction until it reaches zero. It does not have any effect on aborting transaction, though.
References App::GetApplication().
AutoTransaction::~AutoTransaction | ( | ) |
Destructor.
This destructor decrease an internal counter (Application::_activeTransactionGuard), and will commit any current active transaction when the counter reaches zero.
References App::GetApplication().
void AutoTransaction::close | ( | bool | abort = false | ) |
Close or abort the transaction.
This function can be used to explicitly close (i.e. commit) the transaction, if the current transaction ID matches the one created inside the constructor. For aborting, it will abort any current transaction
References App::Application::closeActiveTransaction(), and App::GetApplication().
Referenced by Gui::TreeWidget::dropEvent(), femexamples.examplesgui.FemExamples::reject(), and setEnable().
|
static |
Enable/Disable any AutoTransaction instance in the current stack.
Once disabled, any empty temporary named transaction is closed. If there are non-empty or non-temporary named active transaction, it will not be auto closed.
This function may be used in, for example, Gui::Document::setEdit() to allow a transaction live past any command scope.
References close(), and App::GetApplication().
Referenced by Gui::TreeWidget::mouseDoubleClickEvent(), App::Application::setActiveTransaction(), Gui::Document::setEdit(), and Gui::ControlSingleton::showDialog().