From 244cea794bb3300af30ea41dc7633c0f5bb5b705 Mon Sep 17 00:00:00 2001 From: Max Oberaigner Date: Tue, 23 Apr 2024 13:57:48 +0200 Subject: [PATCH 1/3] intermediate commit --- godot/.godot/global_script_class_cache.cfg | 6 +++ .../src/script_editor/add_move_fragment.tscn | 21 --------- godot/src/script_editor/move_fragment.gd | 17 ------- godot/src/script_editor/move_fragment.tscn | 21 --------- .../script_editor/move_fragment_label.tscn | 11 ----- godot/src/script_editor/script_fragment.gd | 34 -------------- godot/src/script_editor/script_fragment.tscn | 44 ------------------- godot/src/sprite_selector/add_sprite.gd | 11 ----- godot/src/sprite_selector/add_sprite.tscn | 4 +- godot/src/sprite_selector/sprite.gd | 4 -- 10 files changed, 9 insertions(+), 164 deletions(-) delete mode 100644 godot/src/script_editor/add_move_fragment.tscn delete mode 100644 godot/src/script_editor/move_fragment.gd delete mode 100644 godot/src/script_editor/move_fragment.tscn delete mode 100644 godot/src/script_editor/move_fragment_label.tscn delete mode 100644 godot/src/script_editor/script_fragment.gd delete mode 100644 godot/src/script_editor/script_fragment.tscn diff --git a/godot/.godot/global_script_class_cache.cfg b/godot/.godot/global_script_class_cache.cfg index 60ab278..854dba8 100644 --- a/godot/.godot/global_script_class_cache.cfg +++ b/godot/.godot/global_script_class_cache.cfg @@ -1,4 +1,10 @@ list=Array[Dictionary]([{ +"base": &"VBoxContainer", +"class": &"AutoRefresh", +"icon": "", +"language": &"GDScript", +"path": "res://src/widgets/AutoRefresh/auto_refresh.gd" +}, { "base": &"EditorPlugin", "class": &"FormatOnSave", "icon": "", diff --git a/godot/src/script_editor/add_move_fragment.tscn b/godot/src/script_editor/add_move_fragment.tscn deleted file mode 100644 index 87819ca..0000000 --- a/godot/src/script_editor/add_move_fragment.tscn +++ /dev/null @@ -1,21 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://btvekcxpfheas"] - -[ext_resource type="Script" path="res://src/script_editor/move_fragment.gd" id="1_8vnpa"] - -[node name="VBox" type="VBoxContainer"] -custom_minimum_size = Vector2(480, 0) -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_vertical = 2 - -[node name="Button" type="Button" parent="."] -custom_minimum_size = Vector2(20, 0) -layout_mode = 2 -size_flags_vertical = 2 -text = "Move[X, Y]" -script = ExtResource("1_8vnpa") - -[connection signal="pressed" from="Button" to="Button" method="_on_pressed"] diff --git a/godot/src/script_editor/move_fragment.gd b/godot/src/script_editor/move_fragment.gd deleted file mode 100644 index 6ff1a1f..0000000 --- a/godot/src/script_editor/move_fragment.gd +++ /dev/null @@ -1,17 +0,0 @@ -extends VBoxContainer - -const Constants = preload("res://src/util/api_interop.gd") - - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(_delta): - pass - - -func _on_move_fragment_button_pressed(): - API.insert(200) diff --git a/godot/src/script_editor/move_fragment.tscn b/godot/src/script_editor/move_fragment.tscn deleted file mode 100644 index 1224abb..0000000 --- a/godot/src/script_editor/move_fragment.tscn +++ /dev/null @@ -1,21 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://btvekcxpfheas"] - -[ext_resource type="Script" path="res://src/script_editor/move_fragment.gd" id="1_rnqye"] - -[node name="VBox" type="VBoxContainer"] -custom_minimum_size = Vector2(480, 0) -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_vertical = 2 -script = ExtResource("1_rnqye") - -[node name="MoveFragmentButton" type="Button" parent="."] -custom_minimum_size = Vector2(20, 0) -layout_mode = 2 -size_flags_vertical = 2 -text = "Move[X, Y]" - -[connection signal="pressed" from="MoveFragmentButton" to="." method="_on_move_fragment_button_pressed"] diff --git a/godot/src/script_editor/move_fragment_label.tscn b/godot/src/script_editor/move_fragment_label.tscn deleted file mode 100644 index b4673c2..0000000 --- a/godot/src/script_editor/move_fragment_label.tscn +++ /dev/null @@ -1,11 +0,0 @@ -[gd_scene format=3 uid="uid://qfu2qre10e3g"] - -[node name="RichTextLabel" type="RichTextLabel"] -offset_right = 1.0 -offset_bottom = 23.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -text = "MOVE [randomly]" -fit_content = true -scroll_active = false -autowrap_mode = 0 diff --git a/godot/src/script_editor/script_fragment.gd b/godot/src/script_editor/script_fragment.gd deleted file mode 100644 index e031569..0000000 --- a/godot/src/script_editor/script_fragment.gd +++ /dev/null @@ -1,34 +0,0 @@ -extends Node - -const MoveFragmentLabel: Resource = preload("res://src/script_editor/move_fragment_label.tscn") - - -func _ready(): - GlobalSignals.script_updated.connect(_on_script_updated) - - var ast = Api.get_ast() - render_ast(ast) - - -func _process(_delta): - pass - - -func _on_script_updated(): - var ast = Api.get_ast() - render_ast(ast) - - -func render_ast(ast): - print_tree_pretty() - - var code_container := $VBoxContainer/VScrollContainer/Code - for old in code_container.get_children(): - code_container.remove_child(old) - - for fragment in ast: - code_container.add_child(MoveFragmentLabel.instantiate()) - - -func _on_run_button_pressed(): - get_tree().change_scene_to_file("res://src/runtime/runtime.tscn") diff --git a/godot/src/script_editor/script_fragment.tscn b/godot/src/script_editor/script_fragment.tscn deleted file mode 100644 index 591ae35..0000000 --- a/godot/src/script_editor/script_fragment.tscn +++ /dev/null @@ -1,44 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://rsvepepjglmt"] - -[ext_resource type="Script" path="res://src/script_editor/script_fragment.gd" id="1_koyt3"] -[ext_resource type="PackedScene" uid="uid://btvekcxpfheas" path="res://src/script_editor/move_fragment.tscn" id="2_llv2k"] - -[node name="ScriptEditor" type="Control"] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -script = ExtResource("1_koyt3") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="RunButton" type="Button" parent="VBoxContainer"] -layout_mode = 2 -text = "Run" - -[node name="AddButton" parent="VBoxContainer" instance=ExtResource("2_llv2k")] -layout_mode = 2 -size_flags_vertical = 0 - -[node name="VScrollContainer" type="ScrollContainer" parent="VBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="Code" type="VBoxContainer" parent="VBoxContainer/VScrollContainer"] -layout_mode = 2 -size_flags_horizontal = 3 - -[connection signal="pressed" from="VBoxContainer/RunButton" to="." method="_on_run_button_pressed"] diff --git a/godot/src/sprite_selector/add_sprite.gd b/godot/src/sprite_selector/add_sprite.gd index 857e4b0..2fb9d36 100644 --- a/godot/src/sprite_selector/add_sprite.gd +++ b/godot/src/sprite_selector/add_sprite.gd @@ -3,16 +3,6 @@ extends Control var Sprites: Resource = preload("res://src/sprite_selector/sprite.tscn") -# Called when the node enters the scene tree for the first time. -func _ready(): - pass - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(_delta): - pass - - func _on_add_sprite_button_pressed(): $FileDialog.popup_centered() @@ -27,4 +17,3 @@ func _on_file_dialog_file_selected(path): margin_container.add_theme_constant_override("margin_bottom", margin_value / 2) margin_container.add_theme_constant_override("margin_right", margin_value) get_node("VBoxContainer2/VBox/ScrollContainer/VBoxIntems").add_child(sprite) - print_tree_pretty() diff --git a/godot/src/sprite_selector/add_sprite.tscn b/godot/src/sprite_selector/add_sprite.tscn index e860fac..91c1bd7 100644 --- a/godot/src/sprite_selector/add_sprite.tscn +++ b/godot/src/sprite_selector/add_sprite.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=4 format=3 uid="uid://bs2465qtho3bu"] +[gd_scene load_steps=5 format=3 uid="uid://bs2465qtho3bu"] [ext_resource type="Script" path="res://src/sprite_selector/add_sprite.gd" id="1_w6ncu"] +[ext_resource type="Script" path="res://src/sprite_selector/sprite_list.gd" id="2_y3h1p"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kefq6"] @@ -75,6 +76,7 @@ size_flags_vertical = 3 layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +script = ExtResource("2_y3h1p") [connection signal="file_selected" from="FileDialog" to="." method="_on_file_dialog_file_selected"] [connection signal="pressed" from="VBoxContainer2/HBoxContainer/MarginContainer/AddSpriteButton" to="." method="_on_add_sprite_button_pressed"] diff --git a/godot/src/sprite_selector/sprite.gd b/godot/src/sprite_selector/sprite.gd index 74100b3..ba51090 100644 --- a/godot/src/sprite_selector/sprite.gd +++ b/godot/src/sprite_selector/sprite.gd @@ -38,7 +38,3 @@ func get_preview_controll(): func _drop_data(_at_position, data): var node = get_parent().get_node(data.get_path()) get_parent().move_child(node, target) - - -func _on_pressed(): - get_tree().change_scene_to_file("res://src/script_editor/script_fragment.tscn") From aebb9704be677fb1bf7f0202985c57403ea6f3be Mon Sep 17 00:00:00 2001 From: Max Oberaigner Date: Tue, 23 Apr 2024 14:09:12 +0200 Subject: [PATCH 2/3] Initial update, some refactoring --- .../src/project_selector/project_selector.gd | 2 +- godot/src/sprite_selector/add_sprite.gd | 19 ----- godot/src/sprite_selector/add_sprite.tscn | 82 ------------------- godot/src/sprite_selector/sprite.gd | 4 + 4 files changed, 5 insertions(+), 102 deletions(-) delete mode 100644 godot/src/sprite_selector/add_sprite.gd delete mode 100644 godot/src/sprite_selector/add_sprite.tscn diff --git a/godot/src/project_selector/project_selector.gd b/godot/src/project_selector/project_selector.gd index 813e98e..b3271ee 100644 --- a/godot/src/project_selector/project_selector.gd +++ b/godot/src/project_selector/project_selector.gd @@ -50,7 +50,7 @@ func _on_project_name_line_edit_text_changed(new_text): func _on_new_project_button_pressed(_id: int): - get_tree().change_scene_to_file("res://src/sprite_selector/add_sprite.tscn") + get_tree().change_scene_to_file("res://src/sprite_selector/main.tscn") func _on_your_projects_menu_button_pressed(): diff --git a/godot/src/sprite_selector/add_sprite.gd b/godot/src/sprite_selector/add_sprite.gd deleted file mode 100644 index 2fb9d36..0000000 --- a/godot/src/sprite_selector/add_sprite.gd +++ /dev/null @@ -1,19 +0,0 @@ -extends Control - -var Sprites: Resource = preload("res://src/sprite_selector/sprite.tscn") - - -func _on_add_sprite_button_pressed(): - $FileDialog.popup_centered() - - -func _on_file_dialog_file_selected(path): - var sprite: Button = Sprites.instantiate() - sprite.setup(path) - var margin_container = MarginContainer.new() - var margin_value = 10 - margin_container.add_theme_constant_override("margin_top", margin_value / 2) - margin_container.add_theme_constant_override("margin_left", margin_value) - margin_container.add_theme_constant_override("margin_bottom", margin_value / 2) - margin_container.add_theme_constant_override("margin_right", margin_value) - get_node("VBoxContainer2/VBox/ScrollContainer/VBoxIntems").add_child(sprite) diff --git a/godot/src/sprite_selector/add_sprite.tscn b/godot/src/sprite_selector/add_sprite.tscn deleted file mode 100644 index 91c1bd7..0000000 --- a/godot/src/sprite_selector/add_sprite.tscn +++ /dev/null @@ -1,82 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://bs2465qtho3bu"] - -[ext_resource type="Script" path="res://src/sprite_selector/add_sprite.gd" id="1_w6ncu"] -[ext_resource type="Script" path="res://src/sprite_selector/sprite_list.gd" id="2_y3h1p"] - -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kefq6"] - -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s6hla"] - -[node name="Control" type="Control"] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -script = ExtResource("1_w6ncu") - -[node name="FileDialog" type="FileDialog" parent="."] -title = "Open a File" -size = Vector2i(479, 400) -exclusive = false -ok_button_text = "Open" -dialog_hide_on_ok = true -dialog_autowrap = true -file_mode = 0 -access = 2 -filters = PackedStringArray("*.png", "*.jpg", "*.jpeg", "*.svg") -use_native_dialog = true - -[node name="VBoxContainer2" type="VBoxContainer" parent="."] -layout_direction = 2 -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer2"] -layout_mode = 2 - -[node name="BoxContainer" type="BoxContainer" parent="VBoxContainer2/HBoxContainer"] -layout_direction = 2 -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer2/HBoxContainer"] -layout_direction = 3 -layout_mode = 2 -size_flags_horizontal = 8 -size_flags_vertical = 0 -theme_override_constants/margin_top = 10 -theme_override_constants/margin_right = 10 - -[node name="AddSpriteButton" type="Button" parent="VBoxContainer2/HBoxContainer/MarginContainer"] -custom_minimum_size = Vector2(50, 20) -layout_direction = 2 -layout_mode = 2 -size_flags_horizontal = 0 -theme_override_styles/pressed = SubResource("StyleBoxEmpty_kefq6") -theme_override_styles/focus = SubResource("StyleBoxEmpty_s6hla") -text = "Add Sprite" - -[node name="VBox" type="VBoxContainer" parent="VBoxContainer2"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer2/VBox"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="VBoxIntems" type="VBoxContainer" parent="VBoxContainer2/VBox/ScrollContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -script = ExtResource("2_y3h1p") - -[connection signal="file_selected" from="FileDialog" to="." method="_on_file_dialog_file_selected"] -[connection signal="pressed" from="VBoxContainer2/HBoxContainer/MarginContainer/AddSpriteButton" to="." method="_on_add_sprite_button_pressed"] diff --git a/godot/src/sprite_selector/sprite.gd b/godot/src/sprite_selector/sprite.gd index ba51090..58fdf0c 100644 --- a/godot/src/sprite_selector/sprite.gd +++ b/godot/src/sprite_selector/sprite.gd @@ -38,3 +38,7 @@ func get_preview_controll(): func _drop_data(_at_position, data): var node = get_parent().get_node(data.get_path()) get_parent().move_child(node, target) + + +func _on_pressed(): + get_tree().change_scene_to_file("res://src/script_editor/main.tscn") From 1a03db02a91c3d99b1a6bbf8cadca0fde33692ab Mon Sep 17 00:00:00 2001 From: Max Oberaigner Date: Tue, 23 Apr 2024 14:12:00 +0200 Subject: [PATCH 3/3] Missing Files --- .../script_editor/auto_refresh_fragments.gd | 17 ++++ godot/src/script_editor/button_add.gd | 5 ++ godot/src/script_editor/button_run.gd | 5 ++ .../src/script_editor/code_fragment_move.tscn | 11 +++ godot/src/script_editor/main.tscn | 54 ++++++++++++ godot/src/sprite_selector/main.gd | 19 +++++ godot/src/sprite_selector/main.tscn | 82 +++++++++++++++++++ godot/src/sprite_selector/sprite_list.gd | 12 +++ godot/src/widgets/AutoRefresh/auto_refresh.gd | 15 ++++ 9 files changed, 220 insertions(+) create mode 100644 godot/src/script_editor/auto_refresh_fragments.gd create mode 100644 godot/src/script_editor/button_add.gd create mode 100644 godot/src/script_editor/button_run.gd create mode 100644 godot/src/script_editor/code_fragment_move.tscn create mode 100644 godot/src/script_editor/main.tscn create mode 100644 godot/src/sprite_selector/main.gd create mode 100644 godot/src/sprite_selector/main.tscn create mode 100644 godot/src/sprite_selector/sprite_list.gd create mode 100644 godot/src/widgets/AutoRefresh/auto_refresh.gd diff --git a/godot/src/script_editor/auto_refresh_fragments.gd b/godot/src/script_editor/auto_refresh_fragments.gd new file mode 100644 index 0000000..9fea364 --- /dev/null +++ b/godot/src/script_editor/auto_refresh_fragments.gd @@ -0,0 +1,17 @@ +extends AutoRefresh + +const MoveFragmentLabel: Resource = preload("res://src/script_editor/code_fragment_move.tscn") + + +func _refresh_contents(): + var ast = Api.get_ast() + render_ast(ast) + + +func render_ast(ast): + var code_container := $Code + for old in code_container.get_children(): + code_container.remove_child(old) + + for fragment in ast: + code_container.add_child(MoveFragmentLabel.instantiate()) diff --git a/godot/src/script_editor/button_add.gd b/godot/src/script_editor/button_add.gd new file mode 100644 index 0000000..b187982 --- /dev/null +++ b/godot/src/script_editor/button_add.gd @@ -0,0 +1,5 @@ +extends Button + + +func _on_pressed(): + API.insert(200) diff --git a/godot/src/script_editor/button_run.gd b/godot/src/script_editor/button_run.gd new file mode 100644 index 0000000..79f9843 --- /dev/null +++ b/godot/src/script_editor/button_run.gd @@ -0,0 +1,5 @@ +extends Button + + +func _on_pressed(): + get_tree().change_scene_to_file("res://src/runtime/runtime.tscn") diff --git a/godot/src/script_editor/code_fragment_move.tscn b/godot/src/script_editor/code_fragment_move.tscn new file mode 100644 index 0000000..b4673c2 --- /dev/null +++ b/godot/src/script_editor/code_fragment_move.tscn @@ -0,0 +1,11 @@ +[gd_scene format=3 uid="uid://qfu2qre10e3g"] + +[node name="RichTextLabel" type="RichTextLabel"] +offset_right = 1.0 +offset_bottom = 23.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "MOVE [randomly]" +fit_content = true +scroll_active = false +autowrap_mode = 0 diff --git a/godot/src/script_editor/main.tscn b/godot/src/script_editor/main.tscn new file mode 100644 index 0000000..e2cc548 --- /dev/null +++ b/godot/src/script_editor/main.tscn @@ -0,0 +1,54 @@ +[gd_scene load_steps=4 format=3 uid="uid://rsvepepjglmt"] + +[ext_resource type="Script" path="res://src/script_editor/button_run.gd" id="1_2l7lb"] +[ext_resource type="Script" path="res://src/script_editor/button_add.gd" id="2_vfewj"] +[ext_resource type="Script" path="res://src/script_editor/auto_refresh_fragments.gd" id="3_6u76r"] + +[node name="ScriptEditor" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="RunButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Run" +script = ExtResource("1_2l7lb") + +[node name="AddButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Add Move" +script = ExtResource("2_vfewj") + +[node name="VScrollContainer" type="ScrollContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="AutoRefresh" type="VBoxContainer" parent="VBoxContainer/VScrollContainer"] +layout_mode = 2 +script = ExtResource("3_6u76r") + +[node name="Code" type="VBoxContainer" parent="VBoxContainer/VScrollContainer/AutoRefresh"] +layout_mode = 2 +size_flags_horizontal = 3 + +[connection signal="pressed" from="VBoxContainer/HBoxContainer/RunButton" to="VBoxContainer/HBoxContainer/RunButton" method="_on_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/AddButton" to="VBoxContainer/HBoxContainer/AddButton" method="_on_pressed"] diff --git a/godot/src/sprite_selector/main.gd b/godot/src/sprite_selector/main.gd new file mode 100644 index 0000000..2fb9d36 --- /dev/null +++ b/godot/src/sprite_selector/main.gd @@ -0,0 +1,19 @@ +extends Control + +var Sprites: Resource = preload("res://src/sprite_selector/sprite.tscn") + + +func _on_add_sprite_button_pressed(): + $FileDialog.popup_centered() + + +func _on_file_dialog_file_selected(path): + var sprite: Button = Sprites.instantiate() + sprite.setup(path) + var margin_container = MarginContainer.new() + var margin_value = 10 + margin_container.add_theme_constant_override("margin_top", margin_value / 2) + margin_container.add_theme_constant_override("margin_left", margin_value) + margin_container.add_theme_constant_override("margin_bottom", margin_value / 2) + margin_container.add_theme_constant_override("margin_right", margin_value) + get_node("VBoxContainer2/VBox/ScrollContainer/VBoxIntems").add_child(sprite) diff --git a/godot/src/sprite_selector/main.tscn b/godot/src/sprite_selector/main.tscn new file mode 100644 index 0000000..48421ba --- /dev/null +++ b/godot/src/sprite_selector/main.tscn @@ -0,0 +1,82 @@ +[gd_scene load_steps=5 format=3 uid="uid://bs2465qtho3bu"] + +[ext_resource type="Script" path="res://src/sprite_selector/main.gd" id="1_w6ncu"] +[ext_resource type="Script" path="res://src/sprite_selector/sprite_list.gd" id="2_y3h1p"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kefq6"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s6hla"] + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_w6ncu") + +[node name="FileDialog" type="FileDialog" parent="."] +title = "Open a File" +size = Vector2i(479, 400) +exclusive = false +ok_button_text = "Open" +dialog_hide_on_ok = true +dialog_autowrap = true +file_mode = 0 +access = 2 +filters = PackedStringArray("*.png", "*.jpg", "*.jpeg", "*.svg") +use_native_dialog = true + +[node name="VBoxContainer2" type="VBoxContainer" parent="."] +layout_direction = 2 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer2"] +layout_mode = 2 + +[node name="BoxContainer" type="BoxContainer" parent="VBoxContainer2/HBoxContainer"] +layout_direction = 2 +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer2/HBoxContainer"] +layout_direction = 3 +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 0 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 + +[node name="AddSpriteButton" type="Button" parent="VBoxContainer2/HBoxContainer/MarginContainer"] +custom_minimum_size = Vector2(50, 20) +layout_direction = 2 +layout_mode = 2 +size_flags_horizontal = 0 +theme_override_styles/pressed = SubResource("StyleBoxEmpty_kefq6") +theme_override_styles/focus = SubResource("StyleBoxEmpty_s6hla") +text = "Add Sprite" + +[node name="VBox" type="VBoxContainer" parent="VBoxContainer2"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer2/VBox"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="VBoxIntems" type="VBoxContainer" parent="VBoxContainer2/VBox/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("2_y3h1p") + +[connection signal="file_selected" from="FileDialog" to="." method="_on_file_dialog_file_selected"] +[connection signal="pressed" from="VBoxContainer2/HBoxContainer/MarginContainer/AddSpriteButton" to="." method="_on_add_sprite_button_pressed"] diff --git a/godot/src/sprite_selector/sprite_list.gd b/godot/src/sprite_selector/sprite_list.gd new file mode 100644 index 0000000..1cf6323 --- /dev/null +++ b/godot/src/sprite_selector/sprite_list.gd @@ -0,0 +1,12 @@ +extends VBoxContainer + +const Sprite: Resource = preload("res://src/sprite_selector/sprite.tscn") + + +func render_ast(ast): + var code_container := get_tree() + for old in code_container.get_children(): + code_container.remove_child(old) + + for fragment in ast: + code_container.add_child(Sprite.instantiate()) diff --git a/godot/src/widgets/AutoRefresh/auto_refresh.gd b/godot/src/widgets/AutoRefresh/auto_refresh.gd new file mode 100644 index 0000000..d790506 --- /dev/null +++ b/godot/src/widgets/AutoRefresh/auto_refresh.gd @@ -0,0 +1,15 @@ +class_name AutoRefresh +extends VBoxContainer + + +func _ready(): + # get a signal when underlying data changed + GlobalSignals.script_updated.connect(_refresh_contents) + + # initial rendering + _refresh_contents() + + +func _refresh_contents(): + # update children of this node here! + assert(false, "_refresh_contents not implemented")