UndoRedo
继承
简要描述
在编辑器或自定义工具中管理撤消/重做操作的助手。
描述
在编辑器或自定义工具中管理撤消/重做操作的助手。 它通过在“动作”中注册方法和属性更改来工作。
常见的行为是创建一个动作,然后将do /undo调用添加到函数或属性更改中,然后提交该动作。
这是一个有关如何从插件向IdeaXR编辑器自己的UndoRedo添加动作的示例:
var undo_redo = get_undo_redo() # Method of EditorPlugin.
func do_something():
pass # Put your code here.
func undo_something():
pass # Put here the code that reverts what's done by "do_something()".
func _on_MyButton_pressed():
var node = get_node("MyNode2D")
undo_redo.create_action("Move the node")
undo_redo.add_do_method(self, "do_something")
undo_redo.add_undo_method(self, "undo_something")
undo_redo.add_do_property(node, "position", Vector2(100,100))
undo_redo.add_undo_property(node, "position", node.position)
undo_redo.commit_action()
就像在示例中一样,应该依次调用create_action,add_do_method(#method-add_do_method),add_undo_method(#method-add_undo_method),add_do_property,add_undo_property和commit_action。
如果不需要注册方法,则可以不使用add_do_method(#method-add_do_method)和add_undo_method(#method-add_undo_method)。
方法
返回值类型 | 方法名称 |
---|---|
void | add_do_method(#method-add_do_method)(object: Object, method: String, ...) vararg |
void | add_do_property(object: Object, property: String, value: Variant) |
void | add_do_reference(object: Object) |
void | add_undo_method(#method-add_undo_method)(object: Object, method: String, ...) vararg |
void | add_undo_property(object: Object, property: String, value: Variant) |
void | add_undo_reference(object: Object) |
void | clear_history(increase_version: bool = true) |
void | commit_action() |
void | create_action(name: String, merge_mode: int = 0) |
String | get_current_action_name() const |
int | get_version() const |
bool | has_redo() |
bool | has_undo() |
bool | is_commiting_action() const |
bool | redo() |
bool | undo() |
信号
- **version_changed**
枚举
enum MergeMode:
- **MERGE_DISABLE = 0**
使“ do” /“ undo”操作停留在单独的动作中。
- **MERGE_ENDS = 1**
使操作的“执行”操作来自创建的第一个操作,而“撤消”操作来自最后一个具有相同名称的操作。
- **MERGE_ALL = 2**
使具有相同名称的后续操作合并为一个。
方法说明
- add_do_method add_do_method(object: Object, method: String, ...) vararg
注册一个在提交操作时将被调用的方法。
- add_do_property add_do_property(object: Object, property: String, value: Variant)
为“ do”注册属性值更改。
- add_do_reference add_do_reference(object: Object)
为“ do”注册一个引用,如果“ do”历史记录丢失,该引用将被删除。 这对于大多数为“ do”调用创建的新节点很有用。 请勿用于资源。
- add_undo_method add_undo_method(object: Object, method: String, ...) vararg
注册一个撤消操作时将调用的方法。
- add_undo_property add_undo_property(object: Object, property: String, value: Variant)
为“撤消”注册属性值更改。
- add_undo_reference add_undo_reference(object: Object)
为“撤消”注册一个引用,如果“撤消”历史记录丢失,该引用将被删除。
- clear_history clear_history(increase_version: bool = true)
清除撤消/重做历史记录和相关参考。
将false
传递给increase_version
将防止版本号从此增加。
- commit_action commit_action()
采取行动。
- create_action create_action(name: String, merge_mode: int = 0)
创建一个新动作。 调用此方法后,请对add_do_method(#method-add_do_method),add_undo_method(#method-add_undo_method),add_do_property和add_undo_property和add_undo_property进行所有调用,然后使用commit_action提交操作。
合并动作的方式由merge_mode
参数指定。 有关详细信息,请参见[枚举MergeMode]。
- get_current_action_name get_current_action_name() const
获取当前动作的名称。
- get_version get_version() const
获取版本。 每次执行新操作时,UndoRedo的版本号都会自动增加。
这对于检查是否已保存的版本有所更改很有用。
- has_redo has_redo()
如果“重做”操作可用,则返回true
。
- has_undo has_undo()
如果可以使用“撤消”操作,则返回true
。
- is_commiting_action is_commiting_action() const
如果UndoRedo当前正在执行操作(即运行其“ do”方法或属性更改),则返回true
(请参阅commit_action)。
- redo redo()
重做上一个动作。
- undo undo()
撤消上一个动作。