Modified tracing builder
Color are always in the same order for the segment Can choose the letter to modify save dont change the letter
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
extends HBoxContainer
|
||||
class_name SegmentContainer
|
||||
|
||||
signal changed()
|
||||
|
||||
@export var points_per_lines: = 25
|
||||
@export var points_per_gradient: = 7
|
||||
|
||||
@onready var grapheme_label: = %GraphemeLabel
|
||||
@onready var buttons_parent: = %ButtonsParent
|
||||
@@ -26,6 +29,8 @@ func reset() -> void:
|
||||
|
||||
current_segment = null
|
||||
current_button = null
|
||||
|
||||
await get_tree().process_frame
|
||||
|
||||
|
||||
func load_segment(points: Array) -> void:
|
||||
@@ -88,10 +93,14 @@ func match_segment_with_buttons() -> void:
|
||||
|
||||
func _on_button_point_down(button: SegmentPointButton) -> void:
|
||||
current_button = button
|
||||
|
||||
changed.emit()
|
||||
|
||||
|
||||
func _on_button_point_up(_button: SegmentPointButton) -> void:
|
||||
current_button = null
|
||||
|
||||
changed.emit()
|
||||
|
||||
|
||||
func _on_button_minus_pressed(button: SegmentPointButton) -> void:
|
||||
@@ -100,11 +109,15 @@ func _on_button_minus_pressed(button: SegmentPointButton) -> void:
|
||||
|
||||
buttons.erase(button)
|
||||
button.queue_free()
|
||||
|
||||
changed.emit()
|
||||
|
||||
|
||||
func _on_place_point_button_pressed() -> void:
|
||||
if is_instance_valid(current_segment):
|
||||
current_segment.add_point(get_global_mouse_position() - lines.global_position)
|
||||
|
||||
changed.emit()
|
||||
|
||||
|
||||
func _on_add_segment_button_pressed() -> void:
|
||||
@@ -123,20 +136,23 @@ func _on_add_segment_button_pressed() -> void:
|
||||
line.joint_mode = Line2D.LINE_JOINT_ROUND
|
||||
lines.add_child(line)
|
||||
|
||||
var segments: = segments_container.get_children()
|
||||
var all_lines: = lines.get_children()
|
||||
for i in range(segments.size()):
|
||||
var color: = gradient.sample(float(i) / float(segments.size() - 1))
|
||||
segments[i].set_color(color)
|
||||
all_lines[i].default_color = color
|
||||
var i: = segments_container.get_child_count()
|
||||
var r: = float(i % points_per_gradient) / float(points_per_gradient)
|
||||
var color: = gradient.sample(r)
|
||||
segment_build.set_color(color)
|
||||
line.default_color = color
|
||||
|
||||
match_segment_with_buttons()
|
||||
|
||||
changed.emit()
|
||||
|
||||
|
||||
func _on_segment_modify(segment: SegmentBuild) -> void:
|
||||
current_segment = segment
|
||||
|
||||
match_segment_with_buttons()
|
||||
|
||||
changed.emit()
|
||||
|
||||
|
||||
func _on_segment_delete(segment: SegmentBuild) -> void:
|
||||
@@ -151,3 +167,5 @@ func _on_segment_delete(segment: SegmentBuild) -> void:
|
||||
|
||||
var ind_seg: = segments_container.get_children().find(segment)
|
||||
lines.get_child(ind_seg).queue_free()
|
||||
|
||||
changed.emit()
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
[gd_scene load_steps=7 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"]
|
||||
[ext_resource type="Texture2D" uid="uid://5n02dxd66fw4" path="res://assets/menus/save_button.png" id="3_2sbjh"]
|
||||
[ext_resource type="Texture2D" uid="uid://cw15lg6j37pvj" path="res://assets/menus/back_button.png" id="4_83j0b"]
|
||||
[ext_resource type="PackedScene" uid="uid://bvb8iewnsnsoj" path="res://sources/language_tool/segment_container.tscn" id="4_frjng"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_1lmt0"]
|
||||
offsets = PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333, 1)
|
||||
colors = PackedColorArray(1, 0, 0, 1, 1, 0.983333, 0, 1, 0, 1, 0.0833333, 1, 0, 0.983334, 1, 1, 0.028, 0, 0.84, 1, 0.566667, 0, 1, 1, 1, 0, 0.716667, 1)
|
||||
metadata/_snap_enabled = true
|
||||
metadata/_snap_count = 6
|
||||
|
||||
[node name="TracingBuilder" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = ExtResource("1_rm5fr")
|
||||
grapheme = null
|
||||
gradient = SubResource("Gradient_1lmt0")
|
||||
|
||||
[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
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/PanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 20
|
||||
theme_override_constants/margin_top = 20
|
||||
theme_override_constants/margin_right = 20
|
||||
theme_override_constants/margin_bottom = 20
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/PanelContainer/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Title" type="Label" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||
theme_override_font_sizes/font_size = 128
|
||||
text = "Tracing Builder"
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Help" type="Label" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "- Left click to add and move points.
|
||||
- Right click on a point to delete it.
|
||||
"
|
||||
|
||||
[node name="Help2" type="Label" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/VBoxContainer"]
|
||||
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"
|
||||
|
||||
[node name="SaveButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2" instance=ExtResource("1_kgjbj")]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TextureRect" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton" index="0"]
|
||||
texture = ExtResource("3_2sbjh")
|
||||
|
||||
[node name="OptionButton" type="OptionButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="BackButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2" instance=ExtResource("1_kgjbj")]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TextureRect" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/BackButton" index="0"]
|
||||
texture = ExtResource("4_83j0b")
|
||||
|
||||
[node name="LowerContainer" parent="VBoxContainer" instance=ExtResource("4_frjng")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[node name="UpperContainer" parent="VBoxContainer" instance=ExtResource("4_frjng")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[connection signal="pressed" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton" to="." method="_on_save_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/BackButton" to="." method="_on_back_button_pressed"]
|
||||
|
||||
[editable path="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton"]
|
||||
[editable path="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/BackButton"]
|
||||
@@ -1,14 +1,15 @@
|
||||
extends Control
|
||||
|
||||
@export var grapheme: = "azertyuiopmlkjhgfdsqwxcvbnéàùèç"
|
||||
|
||||
@export var gradient: Gradient
|
||||
|
||||
@onready var lower_container: = %LowerContainer
|
||||
@onready var upper_container: = %UpperContainer
|
||||
@onready var letter_picker: = %LetterPicker
|
||||
@onready var save_ok: = %SaveOk
|
||||
|
||||
const extension: = ".csv"
|
||||
|
||||
var letters: Array[String] = []
|
||||
var current_letter: = -1
|
||||
|
||||
|
||||
@@ -16,21 +17,33 @@ func _ready() -> void:
|
||||
lower_container.gradient = gradient
|
||||
upper_container.gradient = gradient
|
||||
|
||||
_find_all_letters()
|
||||
_next_letter()
|
||||
|
||||
|
||||
func _find_all_letters() -> void:
|
||||
letters = []
|
||||
|
||||
var query: = "Select * FROM GPs"
|
||||
Database.db.query(query)
|
||||
var result: = Database.db.query_result
|
||||
for element in result:
|
||||
for letter in element.Grapheme:
|
||||
if not letter in letters:
|
||||
letters.append(letter)
|
||||
letter_picker.add_item(letter)
|
||||
|
||||
|
||||
func _next_letter() -> void:
|
||||
current_letter += 1
|
||||
if current_letter >= grapheme.length():
|
||||
current_letter = 0
|
||||
current_letter = (current_letter + 1) % letters.size()
|
||||
|
||||
lower_container.reset()
|
||||
upper_container.reset()
|
||||
await lower_container.reset()
|
||||
await upper_container.reset()
|
||||
|
||||
lower_container.grapheme_label.text = grapheme[current_letter].to_lower()
|
||||
upper_container.grapheme_label.text = grapheme[current_letter].to_upper()
|
||||
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 = '" + grapheme[current_letter] + "'")
|
||||
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"]
|
||||
@@ -38,6 +51,9 @@ func _next_letter() -> void:
|
||||
|
||||
_load_segments(lower_container, lower_path)
|
||||
_load_segments(upper_container, upper_path)
|
||||
|
||||
letter_picker.selected = current_letter
|
||||
save_ok.visible = true
|
||||
|
||||
|
||||
func _load_segments(segment_container: SegmentContainer, path: String) -> void:
|
||||
@@ -74,19 +90,32 @@ func real_path(path: String) -> String:
|
||||
|
||||
|
||||
func _on_save_button_pressed() -> void:
|
||||
var lower_path: = grapheme[current_letter] + "_lower"
|
||||
var upper_path: = grapheme[current_letter] + "_upper"
|
||||
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 = '" + grapheme[current_letter] + "'")
|
||||
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 ('" + grapheme[current_letter] + "','" + lower_path + "','" + upper_path + "')")
|
||||
Database.db.query("INSERT INTO LettersTracingData (Letter, LowerTracingPath, UpperTracingPath) VALUES ('" + letters[current_letter] + "','" + lower_path + "','" + upper_path + "')")
|
||||
|
||||
_next_letter()
|
||||
save_ok.visible = true
|
||||
|
||||
|
||||
func _on_back_button_pressed() -> void:
|
||||
get_tree().change_scene_to_file("res://sources/language_tool/prof_tool_menu.tscn")
|
||||
|
||||
|
||||
func _on_letter_picker_item_selected(index: int) -> void:
|
||||
current_letter = index - 1
|
||||
_next_letter()
|
||||
|
||||
|
||||
func _on_lower_container_changed() -> void:
|
||||
save_ok.visible = false
|
||||
|
||||
|
||||
func _on_upper_container_changed() -> void:
|
||||
save_ok.visible = false
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://d2dsqx38l6yqc"]
|
||||
[gd_scene load_steps=8 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"]
|
||||
[ext_resource type="Texture2D" uid="uid://5n02dxd66fw4" path="res://assets/menus/save_button.png" id="3_2sbjh"]
|
||||
[ext_resource type="Texture2D" uid="uid://cw15lg6j37pvj" path="res://assets/menus/back_button.png" id="4_83j0b"]
|
||||
[ext_resource type="PackedScene" uid="uid://bvb8iewnsnsoj" path="res://sources/language_tool/segment_container.tscn" id="4_frjng"]
|
||||
[ext_resource type="Texture2D" uid="uid://cs7v0nap5hadi" path="res://assets/menus/save_ok.png" id="4_m23be"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_1lmt0"]
|
||||
offsets = PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333, 1)
|
||||
@@ -51,11 +52,21 @@ theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||
theme_override_font_sizes/font_size = 128
|
||||
text = "Tracing Builder"
|
||||
|
||||
[node name="Help" type="Label" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
text = "- Right click to add and move points
|
||||
- Left click on a point to delete it
|
||||
- Save to move to the next letter"
|
||||
|
||||
[node name="Help" type="Label" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "- Left click to add and move points.
|
||||
- Right click on a point to delete it.
|
||||
"
|
||||
|
||||
[node name="Help2" type="Label" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/VBoxContainer"]
|
||||
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"
|
||||
|
||||
[node name="SaveButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2" instance=ExtResource("1_kgjbj")]
|
||||
layout_mode = 2
|
||||
@@ -63,6 +74,23 @@ layout_mode = 2
|
||||
[node name="TextureRect" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton" index="0"]
|
||||
texture = ExtResource("3_2sbjh")
|
||||
|
||||
[node name="SaveOk" type="TextureRect" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(120, 120)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("4_m23be")
|
||||
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
|
||||
|
||||
[node name="LetterPicker" type="OptionButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/MarginContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_font_sizes/font_size = 64
|
||||
|
||||
[node name="BackButton" parent="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2" instance=ExtResource("1_kgjbj")]
|
||||
layout_mode = 2
|
||||
|
||||
@@ -78,7 +106,13 @@ unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[connection signal="pressed" from="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton" to="." method="_on_save_button_pressed"]
|
||||
[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="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"]
|
||||
|
||||
[editable path="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/SaveButton"]
|
||||
[editable path="VBoxContainer/PanelContainer/MarginContainer/HBoxContainer2/BackButton"]
|
||||
|
||||
Reference in New Issue
Block a user