123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- :github_url: hide
- .. DO NOT EDIT THIS FILE!!!
- .. Generated automatically from Godot engine sources.
- .. Generator: https://github.com/godotengine/godot/tree/4.0/doc/tools/make_rst.py.
- .. XML source: https://github.com/godotengine/godot/tree/4.0/doc/classes/EditorUndoRedoManager.xml.
- .. _class_EditorUndoRedoManager:
- EditorUndoRedoManager
- =====================
- **Inherits:** :ref:`Object<class_Object>`
- Manages undo history of scenes opened in the editor.
- .. rst-class:: classref-introduction-group
- Description
- -----------
- **EditorUndoRedoManager** is a manager for :ref:`UndoRedo<class_UndoRedo>` objects associated with edited scenes. Each scene has its own undo history and **EditorUndoRedoManager** ensures that each action performed in the editor gets associated with a proper scene. For actions not related to scenes (:ref:`ProjectSettings<class_ProjectSettings>` edits, external resources, etc.), a separate global history is used.
- The usage is mostly the same as :ref:`UndoRedo<class_UndoRedo>`. You create and commit actions and the manager automatically decides under-the-hood what scenes it belongs to. The scene is deduced based on the first operation in an action, using the object from the operation. The rules are as follows:
- - If the object is a :ref:`Node<class_Node>`, use the currently edited scene;
- - If the object is a built-in resource, use the scene from its path;
- - If the object is external resource or anything else, use global history.
- This guessing can sometimes yield false results, so you can provide a custom context object when creating an action.
- \ **EditorUndoRedoManager** is intended to be used by Godot editor plugins. You can obtain it using :ref:`EditorPlugin.get_undo_redo<class_EditorPlugin_method_get_undo_redo>`. For non-editor uses or plugins that don't need to integrate with the editor's undo history, use :ref:`UndoRedo<class_UndoRedo>` instead.
- The manager's API is mostly the same as in :ref:`UndoRedo<class_UndoRedo>`, so you can refer to its documentation for more examples. The main difference is that **EditorUndoRedoManager** uses object + method name for actions, instead of :ref:`Callable<class_Callable>`.
- .. rst-class:: classref-reftable-group
- Methods
- -------
- .. table::
- :widths: auto
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`add_do_method<class_EditorUndoRedoManager_method_add_do_method>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` method, ... **)** |vararg| |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`add_do_property<class_EditorUndoRedoManager_method_add_do_property>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)** |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`add_do_reference<class_EditorUndoRedoManager_method_add_do_reference>` **(** :ref:`Object<class_Object>` object **)** |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`add_undo_method<class_EditorUndoRedoManager_method_add_undo_method>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` method, ... **)** |vararg| |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`add_undo_property<class_EditorUndoRedoManager_method_add_undo_property>` **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)** |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`add_undo_reference<class_EditorUndoRedoManager_method_add_undo_reference>` **(** :ref:`Object<class_Object>` object **)** |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`commit_action<class_EditorUndoRedoManager_method_commit_action>` **(** :ref:`bool<class_bool>` execute=true **)** |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`create_action<class_EditorUndoRedoManager_method_create_action>` **(** :ref:`String<class_String>` name, :ref:`MergeMode<enum_UndoRedo_MergeMode>` merge_mode=0, :ref:`Object<class_Object>` custom_context=null **)** |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`UndoRedo<class_UndoRedo>` | :ref:`get_history_undo_redo<class_EditorUndoRedoManager_method_get_history_undo_redo>` **(** :ref:`int<class_int>` id **)** |const| |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`get_object_history_id<class_EditorUndoRedoManager_method_get_object_history_id>` **(** :ref:`Object<class_Object>` object **)** |const| |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_committing_action<class_EditorUndoRedoManager_method_is_committing_action>` **(** **)** |const| |
- +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Signals
- -------
- .. _class_EditorUndoRedoManager_signal_history_changed:
- .. rst-class:: classref-signal
- **history_changed** **(** **)**
- Emitted when the list of actions in any history has changed, either when an action is committed or a history is cleared.
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_signal_version_changed:
- .. rst-class:: classref-signal
- **version_changed** **(** **)**
- Emitted when the version of any history has changed as a result of undo or redo call.
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Enumerations
- ------------
- .. _enum_EditorUndoRedoManager_SpecialHistory:
- .. rst-class:: classref-enumeration
- enum **SpecialHistory**:
- .. _class_EditorUndoRedoManager_constant_GLOBAL_HISTORY:
- .. rst-class:: classref-enumeration-constant
- :ref:`SpecialHistory<enum_EditorUndoRedoManager_SpecialHistory>` **GLOBAL_HISTORY** = ``0``
- Global history not associated with any scene, but with external resources etc.
- .. _class_EditorUndoRedoManager_constant_REMOTE_HISTORY:
- .. rst-class:: classref-enumeration-constant
- :ref:`SpecialHistory<enum_EditorUndoRedoManager_SpecialHistory>` **REMOTE_HISTORY** = ``-9``
- History associated with remote inspector. Used when live editing a running project.
- .. _class_EditorUndoRedoManager_constant_INVALID_HISTORY:
- .. rst-class:: classref-enumeration-constant
- :ref:`SpecialHistory<enum_EditorUndoRedoManager_SpecialHistory>` **INVALID_HISTORY** = ``-99``
- Invalid "null" history. It's a special value, not associated with any object.
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Method Descriptions
- -------------------
- .. _class_EditorUndoRedoManager_method_add_do_method:
- .. rst-class:: classref-method
- void **add_do_method** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` method, ... **)** |vararg|
- Register a method that will be called when the action is committed (i.e. the "do" action).
- If this is the first operation, the ``object`` will be used to deduce target undo history.
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_add_do_property:
- .. rst-class:: classref-method
- void **add_do_property** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)**
- Register a property value change for "do".
- If this is the first operation, the ``object`` will be used to deduce target undo history.
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_add_do_reference:
- .. rst-class:: classref-method
- void **add_do_reference** **(** :ref:`Object<class_Object>` object **)**
- Register a reference for "do" that will be erased if the "do" history is lost. This is useful mostly for new nodes created for the "do" call. Do not use for resources.
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_add_undo_method:
- .. rst-class:: classref-method
- void **add_undo_method** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` method, ... **)** |vararg|
- Register a method that will be called when the action is undone (i.e. the "undo" action).
- If this is the first operation, the ``object`` will be used to deduce target undo history.
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_add_undo_property:
- .. rst-class:: classref-method
- void **add_undo_property** **(** :ref:`Object<class_Object>` object, :ref:`StringName<class_StringName>` property, :ref:`Variant<class_Variant>` value **)**
- Register a property value change for "undo".
- If this is the first operation, the ``object`` will be used to deduce target undo history.
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_add_undo_reference:
- .. rst-class:: classref-method
- void **add_undo_reference** **(** :ref:`Object<class_Object>` object **)**
- Register a reference for "undo" that will be erased if the "undo" history is lost. This is useful mostly for nodes removed with the "do" call (not the "undo" call!).
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_commit_action:
- .. rst-class:: classref-method
- void **commit_action** **(** :ref:`bool<class_bool>` execute=true **)**
- Commit the action. If ``execute`` is true (default), all "do" methods/properties are called/set when this function is called.
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_create_action:
- .. rst-class:: classref-method
- void **create_action** **(** :ref:`String<class_String>` name, :ref:`MergeMode<enum_UndoRedo_MergeMode>` merge_mode=0, :ref:`Object<class_Object>` custom_context=null **)**
- Create a new action. After this is called, do all your calls to :ref:`add_do_method<class_EditorUndoRedoManager_method_add_do_method>`, :ref:`add_undo_method<class_EditorUndoRedoManager_method_add_undo_method>`, :ref:`add_do_property<class_EditorUndoRedoManager_method_add_do_property>`, and :ref:`add_undo_property<class_EditorUndoRedoManager_method_add_undo_property>`, then commit the action with :ref:`commit_action<class_EditorUndoRedoManager_method_commit_action>`.
- The way actions are merged is dictated by the ``merge_mode`` argument. See :ref:`MergeMode<enum_UndoRedo_MergeMode>` for details.
- If ``custom_context`` object is provided, it will be used for deducing target history (instead of using the first operation).
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_get_history_undo_redo:
- .. rst-class:: classref-method
- :ref:`UndoRedo<class_UndoRedo>` **get_history_undo_redo** **(** :ref:`int<class_int>` id **)** |const|
- Returns the :ref:`UndoRedo<class_UndoRedo>` object associated with the given history ``id``.
- \ ``id`` above ``0`` are mapped to the opened scene tabs (but it doesn't match their order). ``id`` of ``0`` or lower have special meaning (see :ref:`SpecialHistory<enum_EditorUndoRedoManager_SpecialHistory>`).
- Best used with :ref:`get_object_history_id<class_EditorUndoRedoManager_method_get_object_history_id>`. This method is only provided in case you need some more advanced methods of :ref:`UndoRedo<class_UndoRedo>` (but keep in mind that directly operating on the :ref:`UndoRedo<class_UndoRedo>` object might affect editor's stability).
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_get_object_history_id:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **get_object_history_id** **(** :ref:`Object<class_Object>` object **)** |const|
- Returns the history ID deduced from the given ``object``. It can be used with :ref:`get_history_undo_redo<class_EditorUndoRedoManager_method_get_history_undo_redo>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_EditorUndoRedoManager_method_is_committing_action:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_committing_action** **(** **)** |const|
- Returns ``true`` if the **EditorUndoRedoManager** is currently committing the action, i.e. running its "do" method or property change (see :ref:`commit_action<class_EditorUndoRedoManager_method_commit_action>`).
- .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
- .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
- .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
- .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
- .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
- .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
|