Added copy to tracing builder

This commit is contained in:
Laurent Tourte
2024-05-06 15:23:34 +02:00
parent 8cc53f8db6
commit 1e1d35625d
2 changed files with 59 additions and 24 deletions
+21 -18
View File
@@ -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
+38 -6
View File
@@ -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"]