Skip to content

Commit ad90e57

Browse files
authored
Merge pull request #81 from endlessm/undo-redo
Add undo/redo functionality
2 parents 50554ab + 979beff commit ad90e57

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

addons/block_code/ui/main_panel.gd

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ var eia: EditorInterfaceAccess
1111
@onready var _editor_inspector: EditorInspector = EditorInterface.get_inspector()
1212

1313
var block_code_tab: Button
14-
var _current_bsd: BlockScriptData
1514
var _current_block_code_node: BlockCode
1615
var _scene_root: Node
1716
var _block_code_nodes: Array
@@ -29,6 +28,17 @@ func _ready():
2928

3029
# Setup block scripting environment
3130
block_code_tab = eia.Utils.find_child_by_name(eia.context_switcher, "Block Code")
31+
undo_redo.version_changed.connect(_on_undo_redo_version_changed)
32+
33+
34+
func _on_undo_redo_version_changed():
35+
if _current_block_code_node == null:
36+
return
37+
38+
var block_script: BlockScriptData = _current_block_code_node.block_script
39+
_picker.bsd_selected(block_script)
40+
_title_bar.bsd_selected(block_script)
41+
_block_canvas.bsd_selected(block_script)
3242

3343

3444
func _on_button_pressed():
@@ -40,30 +50,33 @@ func switch_scene(scene_root: Node):
4050

4151

4252
func switch_script(block_code_node: BlockCode):
43-
var bsd = block_code_node.block_script if block_code_node else null
44-
_current_bsd = bsd
53+
var block_script: BlockScriptData = block_code_node.block_script if block_code_node else null
4554
_current_block_code_node = block_code_node
46-
_picker.bsd_selected(bsd)
47-
_title_bar.bsd_selected(bsd)
48-
_block_canvas.bsd_selected(bsd)
55+
_picker.bsd_selected(block_script)
56+
_title_bar.bsd_selected(block_script)
57+
_block_canvas.bsd_selected(block_script)
4958
if block_code_node:
5059
block_code_tab.pressed.emit()
5160

5261

5362
func save_script():
54-
if _current_bsd == null:
63+
if _current_block_code_node == null:
5564
print("No script loaded to save.")
5665
return
5766

67+
var block_script: BlockScriptData = _current_block_code_node.block_script
68+
5869
undo_redo.create_action("Modify %s's block code script" % _current_block_code_node.get_parent().name)
59-
undo_redo.add_undo_property(_current_block_code_node, "bsd", _current_bsd)
70+
undo_redo.add_undo_property(_current_block_code_node.block_script, "block_trees", _current_block_code_node.block_script.block_trees)
71+
undo_redo.add_undo_property(_current_block_code_node.block_script, "generated_script", _current_block_code_node.block_script.generated_script)
6072

6173
var block_trees := _block_canvas.get_canvas_block_trees()
62-
var generated_script = _block_canvas.generate_script_from_current_window(_current_bsd.script_inherits)
63-
_current_bsd.block_trees = block_trees
64-
_current_bsd.generated_script = generated_script
74+
var generated_script = _block_canvas.generate_script_from_current_window(block_script.script_inherits)
75+
block_script.block_trees = block_trees
76+
block_script.generated_script = generated_script
6577

66-
undo_redo.add_do_property(_current_block_code_node, "bsd", _current_bsd)
78+
undo_redo.add_do_property(_current_block_code_node.block_script, "block_trees", block_trees)
79+
undo_redo.add_do_property(_current_block_code_node.block_script, "generated_script", generated_script)
6780
undo_redo.commit_action()
6881

6982

@@ -81,8 +94,9 @@ func _input(event):
8194

8295

8396
func _print_generated_script():
84-
if _current_bsd == null:
97+
if _current_block_code_node == null:
8598
return
86-
var script: String = _block_canvas.generate_script_from_current_window(_current_bsd.script_inherits)
99+
var block_script: BlockScriptData = _current_block_code_node.block_script
100+
var script: String = _block_canvas.generate_script_from_current_window(block_script.script_inherits)
87101
print(script)
88102
print("Debug script! (not saved)")

0 commit comments

Comments
 (0)