Loading...
Searching...
No Matches
juce::UndoManager Class Reference

`#include <juce_UndoManager.h>`

Inheritance diagram for juce::UndoManager:

## Public Member Functions

| UndoManager (int maxNumberOfUnitsToKeep=30000, int minimumTransactionsToKeep=30)
| ~UndoManager () override
void | clearUndoHistory ()
int | getNumberOfUnitsTakenUpByStoredCommands () const
void | setMaxNumberOfStoredUnits (int maxNumberOfUnitsToKeep, int minimumTransactionsToKeep)
bool | perform (UndoableAction *action)
bool | perform (UndoableAction *action, const String &actionName)
void | beginNewTransaction ()
void | beginNewTransaction (const String &actionName)
void | setCurrentTransactionName (const String &newName)
String | getCurrentTransactionName () const
bool | canUndo () const
bool | undo ()
bool | undoCurrentTransactionOnly ()
String | getUndoDescription () const
StringArray | getUndoDescriptions () const
Time | getTimeOfUndoTransaction () const
void | getActionsInCurrentTransaction (Array< const UndoableAction * > &actionsFound) const
int | getNumActionsInCurrentTransaction () const
bool | canRedo () const
bool | redo ()
String | getRedoDescription () const
StringArray | getRedoDescriptions () const
Time | getTimeOfRedoTransaction () const
bool | isPerformingUndoRedo () const
Public Member Functions inherited from juce::ChangeBroadcaster
| ChangeBroadcaster () noexcept
virtual | ~ChangeBroadcaster ()
void | addChangeListener (ChangeListener *listener)
void | removeChangeListener (ChangeListener *listener)
void | removeAllChangeListeners ()
void | sendChangeMessage ()
void | sendSynchronousChangeMessage ()
void | dispatchPendingMessages ()

## Detailed Description

Manages a list of undo/redo commands.

An UndoManager object keeps a list of past actions and can use these actions to move backwards and forwards through an undo history.

To use it, create subclasses of UndoableAction which perform all the actions you need, then when you need to actually perform an action, create one and pass it to the UndoManager's perform() method.

The manager also uses the concept of 'transactions' to group the actions together - all actions performed between calls to beginNewTransaction() are grouped together and are all undone/redone as a group.

The UndoManager is a ChangeBroadcaster, so listeners can register to be told when actions are performed or undone.

See also
  UndoableAction

Definition at line 51 of file juce_UndoManager.h.

## Constructor & Destructor Documentation

## UndoManager()

juce::UndoManager::UndoManager | ( | int | maxNumberOfUnitsToKeep = 30000,
|  | int | minimumTransactionsToKeep = 30 )

Creates an UndoManager.

Parameters

  maxNumberOfUnitsToKeep | each UndoableAction object returns a value to indicate how much storage it takes up (UndoableAction::getSizeInUnits()), so this lets you specify the maximum total number of units that the undomanager is allowed to keep in memory before letting the older actions drop off the end of the list.
  minimumTransactionsToKeep | this specifies the minimum number of transactions that will be kept, even if this involves exceeding the amount of space specified in maxNumberOfUnitsToKeep

Definition at line 68 of file juce_UndoManager.cpp.

## ~UndoManager()

juce::UndoManager::~UndoManager | ( |  | ) |

override

Destructor.

Definition at line 73 of file juce_UndoManager.cpp.

## Member Function Documentation

## beginNewTransaction() [1/2]

void juce::UndoManager::beginNewTransaction | ( |  | ) |

Starts a new group of actions that together will be treated as a single transaction.

All actions that are passed to the perform() method between calls to this method are grouped together and undone/redone together by a single call to undo() or redo().

Definition at line 209 of file juce_UndoManager.cpp.

Referenced by beginNewTransaction(), redo(), and undo().

## beginNewTransaction() [2/2]

void juce::UndoManager::beginNewTransaction | ( | const String & | actionName | ) |

Starts a new group of actions that together will be treated as a single transaction.

All actions that are passed to the perform() method between calls to this method are grouped together and undone/redone together by a single call to undo() or redo().

Parameters

  actionName | a description of the transaction that is about to be performed

Definition at line 214 of file juce_UndoManager.cpp.

## canRedo()

bool juce::UndoManager::canRedo | ( |  | ) | const

Returns true if there's at least one action in the list to redo.

See also
  getRedoDescription, redo, canUndo

Definition at line 243 of file juce_UndoManager.cpp.

## canUndo()

bool juce::UndoManager::canUndo | ( |  | ) | const

Returns true if there's at least one action in the list to undo.

See also
  getUndoDescription, undo, canRedo

Definition at line 242 of file juce_UndoManager.cpp.

## clearUndoHistory()

void juce::UndoManager::clearUndoHistory | ( |  | ) |

Deletes all stored actions in the list.

Definition at line 78 of file juce_UndoManager.cpp.

Referenced by redo(), and undo().

## getActionsInCurrentTransaction()

void juce::UndoManager::getActionsInCurrentTransaction | ( | Array< const UndoableAction * > & | actionsFound | ) | const

Returns a list of the UndoableAction objects that have been performed during the transaction that is currently open.

Effectively, this is the list of actions that would be undone if undoCurrentTransactionOnly() were to be called now.

The first item in the list is the earliest action performed.

Definition at line 352 of file juce_UndoManager.cpp.

## getCurrentTransactionName()

String juce::UndoManager::getCurrentTransactionName | ( |  | ) | const

Returns the name of the current transaction.

See also
  setCurrentTransactionName

Definition at line 228 of file juce_UndoManager.cpp.

## getNumActionsInCurrentTransaction()

int juce::UndoManager::getNumActionsInCurrentTransaction | ( |  | ) | const

Returns the number of UndoableAction objects that have been performed during the transaction that is currently open.

See also
  getActionsInCurrentTransaction

Definition at line 360 of file juce_UndoManager.cpp.

## getNumberOfUnitsTakenUpByStoredCommands()

int juce::UndoManager::getNumberOfUnitsTakenUpByStoredCommands | ( |  | ) | const

Returns the current amount of space to use for storing UndoableAction objects.

See also
  setMaxNumberOfStoredUnits

Definition at line 86 of file juce_UndoManager.cpp.

## getRedoDescription()

String juce::UndoManager::getRedoDescription | ( |  | ) | const

Returns the name of the transaction that will be redone when redo() is called.

See also
  redo, canRedo, getRedoDescriptions

Definition at line 291 of file juce_UndoManager.cpp.

## getRedoDescriptions()

StringArray juce::UndoManager::getRedoDescriptions | ( |  | ) | const

Returns the names of the sequence of transactions that will be performed if redo() is repeatedly called. Note that for transactions where no name was provided, the corresponding string will be empty.

See also
  redo, canRedo, getRedoDescription

Definition at line 312 of file juce_UndoManager.cpp.

## getTimeOfRedoTransaction()

Time juce::UndoManager::getTimeOfRedoTransaction | ( |  | ) | const

Returns the time to which the state would be restored if redo() was to be called. If a redo isn't currently possible, it'll return Time::getCurrentTime().

See also
  redo, canRedo

Definition at line 333 of file juce_UndoManager.cpp.

## getTimeOfUndoTransaction()

Time juce::UndoManager::getTimeOfUndoTransaction | ( |  | ) | const

Returns the time to which the state would be restored if undo() was to be called. If an undo isn't currently possible, it'll return Time().

Definition at line 325 of file juce_UndoManager.cpp.

## getUndoDescription()

String juce::UndoManager::getUndoDescription | ( |  | ) | const

Returns the name of the transaction that will be rolled-back when undo() is called.

See also
  undo, canUndo, getUndoDescriptions

Definition at line 283 of file juce_UndoManager.cpp.

## getUndoDescriptions()

StringArray juce::UndoManager::getUndoDescriptions | ( |  | ) | const

Returns the names of the sequence of transactions that will be performed if undo() is repeatedly called. Note that for transactions where no name was provided, the corresponding string will be empty.

See also
  undo, canUndo, getUndoDescription

Definition at line 299 of file juce_UndoManager.cpp.

## isPerformingUndoRedo()

bool juce::UndoManager::isPerformingUndoRedo | ( |  | ) | const

Returns true if the caller code is in the middle of an undo or redo action.

Definition at line 240 of file juce_UndoManager.cpp.

Referenced by perform().

## perform() [1/2]

bool juce::UndoManager::perform | ( | UndoableAction * | action | ) |

Performs an action and adds it to the undo history list.

Parameters

  action | the action to perform - this object will be deleted by the UndoManager when no longer needed

Returns
  true if the command succeeds - see UndoableAction::perform

See also
  beginNewTransaction

Definition at line 111 of file juce_UndoManager.cpp.

Referenced by perform().

## perform() [2/2]

bool juce::UndoManager::perform | ( | UndoableAction * | action,
|  | const String & | actionName )

Performs an action and also gives it a name.

Parameters

  action | the action to perform - this object will be deleted by the UndoManager when no longer needed
  actionName | if this string is non-empty, the current transaction will be given this name; if it's empty, the current transaction name will be left unchanged. See setCurrentTransactionName()

Returns
  true if the command succeeds - see UndoableAction::perform

See also
  beginNewTransaction

Definition at line 98 of file juce_UndoManager.cpp.

## redo()

bool juce::UndoManager::redo | ( |  | ) |

Tries to redo the last transaction that was undone.

Returns
  true if the transaction can be redone, and false if it fails, or if there aren't any transactions to redo

Definition at line 264 of file juce_UndoManager.cpp.

## setCurrentTransactionName()

void juce::UndoManager::setCurrentTransactionName | ( | const String & | newName | ) |

Changes the name stored for the current transaction.

Each transaction is given a name when the beginNewTransaction() method is called, but this can be used to change that name without starting a new transaction.

Definition at line 220 of file juce_UndoManager.cpp.

Referenced by perform().

## setMaxNumberOfStoredUnits()

void juce::UndoManager::setMaxNumberOfStoredUnits | ( | int | maxNumberOfUnitsToKeep,
|  | int | minimumTransactionsToKeep )

Sets the amount of space that can be used for storing UndoableAction objects.

Parameters

  maxNumberOfUnitsToKeep | each UndoableAction object returns a value to indicate how much storage it takes up (UndoableAction::getSizeInUnits()), so this lets you specify the maximum total number of units that the undomanager is allowed to keep in memory before letting the older actions drop off the end of the list.
  minimumTransactionsToKeep | this specifies the minimum number of transactions that will be kept, even if this involves exceeding the amount of space specified in maxNumberOfUnitsToKeep

See also
  getNumberOfUnitsTakenUpByStoredCommands

Definition at line 91 of file juce_UndoManager.cpp.

Referenced by UndoManager().

## undo()

bool juce::UndoManager::undo | ( |  | ) |

Tries to roll-back the last transaction.

Returns
  true if the transaction can be undone, and false if it fails, or if there aren't any transactions to undo

See also
  undoCurrentTransactionOnly

Definition at line 245 of file juce_UndoManager.cpp.

Referenced by undoCurrentTransactionOnly().

## undoCurrentTransactionOnly()

bool juce::UndoManager::undoCurrentTransactionOnly | ( |  | ) |

Tries to roll-back any actions that were added to the current transaction.

This will perform an undo() only if there are some actions in the undo list that were added after the last call to beginNewTransaction().

This is useful because it lets you call beginNewTransaction(), then perform an operation which may or may not actually perform some actions, and then call this method to get rid of any actions that might have been done without it rolling back the previous transaction if nothing was actually done.

Returns
  true if any actions were undone.

Definition at line 341 of file juce_UndoManager.cpp.

The documentation for this class was generated from the following files:

- juce_UndoManager.h
- juce_UndoManager.cpp