diff --git a/sources/language_tool/tracing_builder.gd b/sources/language_tool/tracing_builder.gd index fe841ca6..5a23d74b 100644 --- a/sources/language_tool/tracing_builder.gd +++ b/sources/language_tool/tracing_builder.gd @@ -6,6 +6,7 @@ extends Control @onready var upper_container: = %UpperContainer @onready var letter_picker: = %LetterPicker @onready var save_ok: = %SaveOk +@onready var copy_from: = %CopyFrom const extension: = ".csv" @@ -14,6 +15,8 @@ var current_letter: = -1 func _ready() -> void: + copy_from.get_popup().id_pressed.connect(_on_copy_from_id_pressed) + lower_container.gradient = gradient upper_container.gradient = gradient @@ -32,6 +35,7 @@ func _find_all_letters() -> void: if not letter in letters: letters.append(letter) letter_picker.add_item(letter) + copy_from.get_popup().add_item(letter) func _next_letter() -> void: @@ -43,14 +47,8 @@ func _next_letter() -> void: lower_container.grapheme_label.text = letters[current_letter].to_lower() upper_container.grapheme_label.text = letters[current_letter].to_upper() - Database.db.query("Select LowerTracingPath, UpperTracingPath FROM LettersTracingData WHERE Letter = '" + letters[current_letter] + "'") - - if not Database.db.query_result.is_empty(): - var lower_path: String = Database.db.query_result[0]["LowerTracingPath"] - var upper_path: String = Database.db.query_result[0]["UpperTracingPath"] - - _load_segments(lower_container, lower_path) - _load_segments(upper_container, upper_path) + _load_segments(lower_container, lower_path(letters[current_letter])) + _load_segments(upper_container, upper_path(letters[current_letter])) letter_picker.selected = current_letter save_ok.visible = true @@ -85,21 +83,21 @@ func _save_segments(segments: Array, path: String) -> void: file.close() +func lower_path(letter: String) -> String: + return letter + "_lower" + + +func upper_path(letter: String) -> String: + return letter + "_upper" + + func real_path(path: String) -> String: return Database.base_path.path_join(Database.language).path_join(Database.tracing_data_folder).path_join(path) + extension func _on_save_button_pressed() -> void: - var lower_path: = letters[current_letter] + "_lower" - var upper_path: = letters[current_letter] + "_upper" - - _save_segments(lower_container.segments_container.get_children(), lower_path) - _save_segments(upper_container.segments_container.get_children(), upper_path) - - Database.db.query("Select LowerTracingPath, UpperTracingPath FROM LettersTracingData WHERE Letter = '" + letters[current_letter] + "'") - - if Database.db.query_result.is_empty(): - Database.db.query("INSERT INTO LettersTracingData (Letter, LowerTracingPath, UpperTracingPath) VALUES ('" + letters[current_letter] + "','" + lower_path + "','" + upper_path + "')") + _save_segments(lower_container.segments_container.get_children(), lower_path(letters[current_letter])) + _save_segments(upper_container.segments_container.get_children(), upper_path(letters[current_letter])) save_ok.visible = true @@ -113,6 +111,11 @@ func _on_letter_picker_item_selected(index: int) -> void: _next_letter() +func _on_copy_from_id_pressed(index: int) -> void: + _load_segments(lower_container, lower_path(letters[index])) + _load_segments(upper_container, upper_path(letters[index])) + + func _on_lower_container_changed() -> void: save_ok.visible = false diff --git a/sources/language_tool/tracing_builder.tscn b/sources/language_tool/tracing_builder.tscn index 64f8d2fc..dcec0d21 100644 --- a/sources/language_tool/tracing_builder.tscn +++ b/sources/language_tool/tracing_builder.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://d2dsqx38l6yqc"] +[gd_scene load_steps=9 format=3 uid="uid://d2dsqx38l6yqc"] [ext_resource type="PackedScene" uid="uid://dbl3r8426473v" path="res://sources/language_tool/plus_button.tscn" id="1_kgjbj"] [ext_resource type="Script" path="res://sources/language_tool/tracing_builder.gd" id="1_rm5fr"] @@ -13,6 +13,13 @@ colors = PackedColorArray(1, 0, 0, 1, 1, 0.983333, 0, 1, 0, 1, 0.0833333, 1, 0, metadata/_snap_enabled = true metadata/_snap_count = 6 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_v3vyn"] +bg_color = Color(0.121569, 0.121569, 0.470588, 1) +corner_radius_top_left = 25 +corner_radius_top_right = 25 +corner_radius_bottom_right = 25 +corner_radius_bottom_left = 25 + [node name="TracingBuilder" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -66,7 +73,7 @@ layout_mode = 2 theme_override_colors/font_color = Color(0.560784, 0, 0, 1) theme_override_colors/font_outline_color = Color(1, 1, 1, 1) theme_override_font_sizes/font_size = 42 -text = "- Unsaved changes when switching letters will be lost" +text = "- Unsaved changes will be lost" [node name="SaveButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2" instance=ExtResource("1_kgjbj")] layout_mode = 2 @@ -83,14 +90,39 @@ expand_mode = 1 [node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2"] layout_mode = 2 -theme_override_constants/margin_top = 42 -theme_override_constants/margin_bottom = 42 +theme_override_constants/margin_left = 15 +theme_override_constants/margin_right = 15 -[node name="LetterPicker" type="OptionButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer"] +[node name="VBoxContainer3" type="VBoxContainer" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer"] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer/VBoxContainer3"] +layout_mode = 2 +text = "Select letter:" + +[node name="LetterPicker" type="OptionButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer/VBoxContainer3"] unique_name_in_owner = true layout_mode = 2 theme_override_font_sizes/font_size = 64 +[node name="MarginContainer2" type="MarginContainer" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2"] +layout_mode = 2 +theme_override_constants/margin_left = 15 +theme_override_constants/margin_right = 15 + +[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer2"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +theme_override_styles/panel = SubResource("StyleBoxFlat_v3vyn") + +[node name="CopyFrom" type="MenuButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer2/PanelContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 42 +text = "Copy from" + [node name="BackButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2" instance=ExtResource("1_kgjbj")] layout_mode = 2 @@ -109,7 +141,7 @@ layout_mode = 2 [connection signal="gui_input" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton/SaveOk" to="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton" method="_on_texture_rect_gui_input"] [connection signal="mouse_entered" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton/SaveOk" to="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton" method="_on_texture_rect_mouse_entered"] [connection signal="mouse_exited" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton/SaveOk" to="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton" method="_on_texture_rect_mouse_exited"] -[connection signal="item_selected" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer/LetterPicker" to="." method="_on_letter_picker_item_selected"] +[connection signal="item_selected" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer/VBoxContainer3/LetterPicker" to="." method="_on_letter_picker_item_selected"] [connection signal="pressed" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/BackButton" to="." method="_on_back_button_pressed"] [connection signal="changed" from="VBoxContainer/LowerContainer" to="." method="_on_lower_container_changed"] [connection signal="changed" from="VBoxContainer/UpperContainer" to="." method="_on_upper_container_changed"]