From e380b3069299bd8c3d71b21a60c9dcd1061c4fc2 Mon Sep 17 00:00:00 2001 From: BimDav Date: Tue, 21 Nov 2023 15:54:05 +0100 Subject: [PATCH] words list --- assets/menus/minus_button.png | Bin 0 -> 4380 bytes assets/menus/minus_button.png.import | 34 ++++++ assets/menus/modify_button.png | Bin 0 -> 9459 bytes assets/menus/modify_button.png.import | 34 ++++++ assets/menus/plus_button.png | Bin 0 -> 13242 bytes assets/menus/plus_button.png.import | 34 ++++++ assets/menus/save_button.png | Bin 0 -> 7789 bytes assets/menus/save_button.png.import | 34 ++++++ sources/language_tool/gp_list.gd | 1 + sources/language_tool/gp_list.tscn | 11 +- sources/language_tool/gp_list_element.tscn | 8 +- sources/language_tool/plus_button.tscn | 1 + sources/language_tool/word_list.gd | 57 ++++++++++ sources/language_tool/word_list.tscn | 76 ++++++++++++++ sources/language_tool/word_list_element.gd | 62 +++++++++++ sources/language_tool/word_list_element.tscn | 104 +++++++++++++++++++ 16 files changed, 451 insertions(+), 5 deletions(-) create mode 100644 assets/menus/minus_button.png create mode 100644 assets/menus/minus_button.png.import create mode 100644 assets/menus/modify_button.png create mode 100644 assets/menus/modify_button.png.import create mode 100644 assets/menus/plus_button.png create mode 100644 assets/menus/plus_button.png.import create mode 100644 assets/menus/save_button.png create mode 100644 assets/menus/save_button.png.import create mode 100644 sources/language_tool/word_list.gd create mode 100644 sources/language_tool/word_list.tscn create mode 100644 sources/language_tool/word_list_element.gd create mode 100644 sources/language_tool/word_list_element.tscn diff --git a/assets/menus/minus_button.png b/assets/menus/minus_button.png new file mode 100644 index 0000000000000000000000000000000000000000..1077d8a39ab9cd86d5be72b85f780baf9993dd2a GIT binary patch literal 4380 zcmZ`-cQ_kd)Q`lj*dxT=R8f1hrA8z*iW;?PtlHElH4;@L#9mdUMtNJCS})Zg2t}zE zQ7cwaThXBO)9>%^yU#uMJm=i=$GN}fJm;Kyl1xnu!1O%y0001tfa{rGal&7srM^0A z9@Z9JG0G=82n*V)6-n!wcqP*Xz-^uY0N2?55(S{35CQ-&cOmrdT0AY>dHt;3ae@OE zQ`~8vF(<0ps`uQqF8^u2vVOW?;yV+~vdP@>7>(Bv#vZ0`l|3ujeajZubv+RtRr4Q>s!kJmQ6(FPV_oR~kXXp(2;od3_&fx(p7C1BdC5~JGFB&SI}3+6THulcilDO4 zm9&dRzs%n_)K-ttcWSqp%&iWdH8bZV5AWha;*LFw61Io9`H5^~ITsB-jsPKf75GS_ z{r3xp*!IPFqSx=GSkuFBp4zbE{S9s`)8IW9MgfneMAu6bE&GM#+W0gnH zw-rgjCIoB22Pz^A34pzoPXg-?9<^rEZ$_4`gPiCdGU*cepR)Y92$vHJ3AiQj2OF*> z7QNz%@`bMtug<0C5P$|Ni*6T8a4QKBSzYFJgW{-J>!Q~8X9L!$YS2qPFUUJv9)xwb=J-=F6}6%Gy}Lm!5085T<)e{S4y;yD zy67*PRuWWmJ^sLj9w(8J{wdz@(pWtFWb%){dHwv*_5EqJnC{T3!>ibH`90IU<}!Id z4RoN|EPXuaMFC0DvpaIR<^Zqnv{z)0L6=)QORVZU16gAy6O23cM$3kZUlhj^wJEsV z#lFkCHth7Om@rj$sM_x5758=qB@fJy8?d24JTLn5I=bgeI82;geHqiRp{!j7xHp{gYz28KW3XxKBo6fm*Kn=EfUozsn zUA1ir+<5)WE_SOS;EkL6{Ue&hd0aUzLKWYikY7Vsw(Ht0Gvd_AAF!g^)ST`U)Pg44f&{4 z_G`tC-G1u^3F+Nh|0@NHw~t+@Rmk}GgY)QTpM3<9=iOKONc3onAAN0zKzvEsP*FP{ zjfmo0%4mxf+o{fEb#!)6jzYPuN@fFB#5v|iPN0VteLEqmTUq6>-#%C+^x4y#7fUz^ zu%udgq(s{kY(b6VH8w=h5KS6}zwuc-UD_wvLc`1GqDD_dGVjZ$w0*tKcKoh1B);>-gwG!RmHCE6*F*dCz z3LiRzg@-%ZL<>vA_z)7+}b;_CP?;P6+)j>kv~~ z?Sk5VBko3@y5%uVp+G_W)?jqIV2GP~!{;A5;=)_h7GRt@#I97vA7TqFSUp5eQ!F19 z|9b9z=?Qt$DpZ*lNsxncAn=bNJh|6DS88aBt6g>#F)^#M^^Vmu9&8(9vcMg%NXQ=f zJfiXBI6qD=?iRaE+spHd?-ne&kt~C3r^RhQeEKy-TlKMErlASZUoQsl1!akgZkDC- zV%#z{2TitD2M~^FmG=Cr8hu`YzoTv!d?}TK3HwcG^>smNe=`Rjdtz&7HSB^KU9O%m zdhqMG+ARCH4=gFW4>h{`h>lDjQN)hDp*~aZt#9zxJz~b}YQsRM^ubilI2Eld z^;c_!Ghr#N3!kab&^|O$ZUMqB1Na0B>a@4z%RUQheS#keCWJK5ws114Yb)g(q9-Ua zZVLX)D6jde3*{5+{vItAz@{>C*ms;!T-PA>7f}kq*Td>?-7;Qng8yf~8GZMx$( zF$5KSA6d{4?(s6&p1r9lbn$d-ECva* zvtQwL8@H9}_G9M0*_6Dthi=`|bXL_5_m~CW)|MvtD)qv9 zN`?+!3JAXWlJ1?&^|21T2duq)H+W-E;$ z_R76k0~tZ7R@tgUgAE&xBt`E5c#tT-uz9ZPP{NdZth;qlqAc@a!b2bXvcPyDuGdN` zm5BL_M6r7>JmRc~gd0s`Gq$D2G#lT8)1-!gk=8Z~l1#RC;d9BHsYV8>?`Ip%h5AW8 z&nc^>h~JjFn_=Hy*!JCLtZmLvHPQ7z@+H>5mQtzNdEqkouWmxVlr%NW_EgP%KCm+# z(*MBaoU*LI{V{5Up*DoCH@!Ko0ys@I{f%%fM#sahilF_Wz;4WPS+SADVwAu+E0p(B zsU-v%P;*`azVO&Dy~(d)MUS5AyKpB{IM(8kle8WxVjPI-d9rl9^?Mlorhw=x( zcQ3&p67Ny>sQ+bDE;aUNodV-veRRwH|^*Svth>j!#JzP|WpT zpcdAg>Jmn=z$4}=$!a)~$7j!JbrJmdZ)dP#pRnVzmPCKa2&%%p!cE=vW=5&3Hf>a8 zM6+2%i3o9!!pK{{Oz`V<>A!(7U`r}lhN`X%RPw>>I#-;fmW(c{ohT>;;`q&!s-Eq9 z(JsPTNAT!%h_693#_c_}NR(VoD1zxWmEl zQ+?#NkUDG3uE?=M8n7s=?JIpJ_D}x~@I=BJ4eGTNb28Eu=m{2Vr-1NP ztMnlmE?Wb())Yx&&dq~T18=@uyGfj0#XC1kQFDm;<)n?>vdcV%FG9fq44cu2_qZ~` zw*g50AUWx&8ZmEW!<0js{(l=;Mm}QfaUvyjYiyb; zKoqoq$c!q=Z|sybra2IVb+lZA5M(G={`ebL_Dh)+5YbznZA~wkK^|=BzEmG zL3L;d#Q@20aOipI7j^%Xqhr(ot|UucdBSXh4^C8HKaK+1WmQ7E5M za9i?raY`#_4^ZVDyT`1KaLhg&62B&CT0K{)$UZ2QIVC2O<@ngZocW>NOI`&| zvWUvgJzb5AVH2B$?u>j<_M*<DaK1RB#+mj!JL(t(_*X%<0#KeYh3n zQ?8&~7X}nK-E|wli`H{gXW*8%@&3$@e?<-#r9HA2u)z2|7&P0E?E0xg@x-RFmZiLeENi?xe>Y%f_6%) x=2B@NXccjabqi^fI!66JgMzC8LLga-y7bwK^e*heWOT+*G literal 0 HcmV?d00001 diff --git a/assets/menus/minus_button.png.import b/assets/menus/minus_button.png.import new file mode 100644 index 00000000..72819294 --- /dev/null +++ b/assets/menus/minus_button.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8tctfnsj3prx" +path="res://.godot/imported/minus_button.png-dfc039f87b0bc10ec97b0dbf27a59b66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/menus/minus_button.png" +dest_files=["res://.godot/imported/minus_button.png-dfc039f87b0bc10ec97b0dbf27a59b66.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/menus/modify_button.png b/assets/menus/modify_button.png new file mode 100644 index 0000000000000000000000000000000000000000..4af8c8d0520740df9cf04803f2ebda22ae5e4375 GIT binary patch literal 9459 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 {QaPkmEK%q(UG770bI0$A6HV;3Aw0W{Zf^_ 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 literal 0 HcmV?d00001 diff --git a/assets/menus/save_button.png.import b/assets/menus/save_button.png.import new file mode 100644 index 00000000..1637d25f --- /dev/null +++ b/assets/menus/save_button.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5n02dxd66fw4" +path="res://.godot/imported/save_button.png-e0abff5de73db7c1ad84988080c20282.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/menus/save_button.png" +dest_files=["res://.godot/imported/save_button.png-e0abff5de73db7c1ad84988080c20282.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sources/language_tool/gp_list.gd b/sources/language_tool/gp_list.gd index cbf3762a..6db3debb 100644 --- a/sources/language_tool/gp_list.gd +++ b/sources/language_tool/gp_list.gd @@ -36,6 +36,7 @@ func _on_plus_button_pressed() -> void: element.phoneme = "" element.type = 0 element.undo_redo = undo_redo + element.delete_pressed.connect(_on_element_delete_pressed.bind(element)) undo_redo.add_do_method(elements_container.add_child.bind(element)) undo_redo.add_do_method(elements_container.move_child.bind(element, 0)) undo_redo.add_undo_method(elements_container.remove_child.bind(element)) diff --git a/sources/language_tool/gp_list.tscn b/sources/language_tool/gp_list.tscn index e6d1527f..063c9559 100644 --- a/sources/language_tool/gp_list.tscn +++ b/sources/language_tool/gp_list.tscn @@ -28,6 +28,15 @@ layout_mode = 2 size_flags_vertical = 1 script = null +[node name="Grapheme" parent="VBoxContainer/GpListElement/TabContainer/NormalContainer" index="0"] +text = "Grapheme" + +[node name="Phoneme" parent="VBoxContainer/GpListElement/TabContainer/NormalContainer" index="1"] +text = "Phoneme" + +[node name="Type" parent="VBoxContainer/GpListElement/TabContainer/NormalContainer" index="2"] +text = "Type" + [node name="TextureRect" parent="VBoxContainer/GpListElement/TabContainer/NormalContainer/EditButton" index="0"] modulate = Color(1, 1, 1, 0) @@ -68,6 +77,6 @@ theme_override_constants/separation = 0 [editable path="VBoxContainer/GpListElement"] [editable path="VBoxContainer/GpListElement/TabContainer/NormalContainer/EditButton"] -[editable path="VBoxContainer/GpListElement/TabContainer/EditContainer/MinusButton"] +[editable path="VBoxContainer/GpListElement/TabContainer/EditContainer/DeleteButton"] [editable path="VBoxContainer/GpListElement/TabContainer/EditContainer/ValidateButton"] [editable path="VBoxContainer/GpListElement/SaveButton"] diff --git a/sources/language_tool/gp_list_element.tscn b/sources/language_tool/gp_list_element.tscn index c6a42052..c999c623 100644 --- a/sources/language_tool/gp_list_element.tscn +++ b/sources/language_tool/gp_list_element.tscn @@ -79,10 +79,10 @@ visible = false layout_mode = 2 theme_override_constants/separation = 0 -[node name="MinusButton" parent="TabContainer/EditContainer" instance=ExtResource("3_1dwyr")] +[node name="DeleteButton" parent="TabContainer/EditContainer" instance=ExtResource("3_1dwyr")] layout_mode = 2 -[node name="TextureRect" parent="TabContainer/EditContainer/MinusButton" index="0"] +[node name="TextureRect" parent="TabContainer/EditContainer/DeleteButton" index="0"] texture = ExtResource("5_d5iin") [node name="GraphemeEdit" type="LineEdit" parent="TabContainer/EditContainer"] @@ -126,9 +126,9 @@ layout_mode = 2 texture = ExtResource("4_eakjn") [connection signal="pressed" from="TabContainer/NormalContainer/EditButton" to="." method="_on_edit_button_pressed"] -[connection signal="pressed" from="TabContainer/EditContainer/MinusButton" to="." method="_on_minus_button_pressed"] +[connection signal="pressed" from="TabContainer/EditContainer/DeleteButton" to="." method="_on_minus_button_pressed"] [connection signal="pressed" from="TabContainer/EditContainer/ValidateButton" to="." method="_on_validate_button_pressed"] [editable path="TabContainer/NormalContainer/EditButton"] -[editable path="TabContainer/EditContainer/MinusButton"] +[editable path="TabContainer/EditContainer/DeleteButton"] [editable path="TabContainer/EditContainer/ValidateButton"] diff --git a/sources/language_tool/plus_button.tscn b/sources/language_tool/plus_button.tscn index 128bf7c4..e02e9bfd 100644 --- a/sources/language_tool/plus_button.tscn +++ b/sources/language_tool/plus_button.tscn @@ -8,6 +8,7 @@ offset_left = 1.0 offset_top = 144.0 offset_right = 121.0 offset_bottom = 264.0 +size_flags_vertical = 4 theme_override_constants/margin_left = 50 theme_override_constants/margin_top = 50 theme_override_constants/margin_right = 50 diff --git a/sources/language_tool/word_list.gd b/sources/language_tool/word_list.gd new file mode 100644 index 00000000..b8321c7a --- /dev/null +++ b/sources/language_tool/word_list.gd @@ -0,0 +1,57 @@ +extends Control + +var word_scene: = preload("res://sources/language_tool/word_list_element.tscn") + +@onready var elements_container: = $%ElementsContainer +@onready var save_button: = $%SaveButton + +var undo_redo: = UndoRedo.new() + + +func _ready() -> void: + Database.db.query("SELECT Word, group_concat(Grapheme, ' ') as Graphemes + FROM Words + INNER JOIN ( SELECT * FROM GPsInWords ORDER BY GPsInWords.Position ) GPsInWords ON Words.ID = GPsInWords.WordID + INNER JOIN GPs WHERE GPS.ID = GPsInWords.GPID + GROUP BY Words.ID") + var results: = Database.db.query_result + for e in results: + var element: = word_scene.instantiate() + element.word = e.Word + element.graphemes = e.Graphemes + elements_container.add_child(element) + element.undo_redo = undo_redo + element.delete_pressed.connect(_on_element_delete_pressed.bind(element)) + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("ui_undo"): + undo_redo.undo() + elif event.is_action_pressed("ui_redo"): + undo_redo.redo() + + +func _on_element_delete_pressed(element: Control) -> void: + undo_redo.create_action("delete") + undo_redo.add_do_method(elements_container.remove_child.bind(element)) + undo_redo.add_undo_method(elements_container.add_child.bind(element)) + undo_redo.add_undo_method(elements_container.move_child.bind(element, element.get_index())) + undo_redo.commit_action() + + +func _on_plus_button_pressed() -> void: + undo_redo.create_action("add") + var element: = word_scene.instantiate() + element.word = "" + element.graphemes = "" + element.undo_redo = undo_redo + element.delete_pressed.connect(_on_element_delete_pressed.bind(element)) + undo_redo.add_do_method(elements_container.add_child.bind(element)) + undo_redo.add_do_method(elements_container.move_child.bind(element, 0)) + undo_redo.add_undo_method(elements_container.remove_child.bind(element)) + undo_redo.commit_action() + element.edit_mode() + + +func _process(_delta: float) -> void: + save_button.visible = undo_redo.has_undo() diff --git a/sources/language_tool/word_list.tscn b/sources/language_tool/word_list.tscn new file mode 100644 index 00000000..20c89f62 --- /dev/null +++ b/sources/language_tool/word_list.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=5 format=3 uid="uid://dfw7m0a7148fu"] + +[ext_resource type="Script" path="res://sources/language_tool/word_list.gd" id="1_m0usq"] +[ext_resource type="PackedScene" uid="uid://dx33ijlgd8m3w" path="res://sources/language_tool/word_list_element.tscn" id="2_roh06"] +[ext_resource type="PackedScene" uid="uid://dbl3r8426473v" path="res://sources/language_tool/plus_button.tscn" id="3_a6pn6"] +[ext_resource type="Texture2D" uid="uid://5n02dxd66fw4" path="res://assets/menus/save_button.png" id="4_ar78n"] + +[node name="WordList" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_m0usq") + +[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 +theme_override_constants/separation = 0 + +[node name="WordListElement" parent="VBoxContainer" instance=ExtResource("2_roh06")] +layout_mode = 2 +script = null + +[node name="Word" parent="VBoxContainer/WordListElement/TabContainer/NormalContainer" index="0"] +text = "Word" + +[node name="Graphemes" parent="VBoxContainer/WordListElement/TabContainer/NormalContainer" index="1"] +text = "Graphemes" + +[node name="EditButton" parent="VBoxContainer/WordListElement/TabContainer/NormalContainer" index="2"] +modulate = Color(1, 1, 1, 0) + +[node name="PlusButton" parent="VBoxContainer/WordListElement" instance=ExtResource("3_a6pn6")] +custom_minimum_size = Vector2(120, 2.08165e-12) +layout_mode = 2 +size_flags_horizontal = 0 +tooltip_text = "Add GP" + +[node name="SaveButton" parent="VBoxContainer/WordListElement" instance=ExtResource("3_a6pn6")] +unique_name_in_owner = true +custom_minimum_size = Vector2(120, 2.08165e-12) +layout_mode = 2 +size_flags_horizontal = 8 +tooltip_text = "Add GP" + +[node name="TextureRect" parent="VBoxContainer/WordListElement/SaveButton" index="0"] +texture = ExtResource("4_ar78n") + +[node name="ColorRect" type="ColorRect" parent="VBoxContainer"] +custom_minimum_size = Vector2(2.08165e-12, 18) +layout_mode = 2 +color = Color(0, 0, 0, 1) + +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ElementsContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[connection signal="pressed" from="VBoxContainer/WordListElement/PlusButton" to="." method="_on_plus_button_pressed"] + +[editable path="VBoxContainer/WordListElement"] +[editable path="VBoxContainer/WordListElement/TabContainer/NormalContainer/EditButton"] +[editable path="VBoxContainer/WordListElement/TabContainer/EditContainer/MinusButton"] +[editable path="VBoxContainer/WordListElement/TabContainer/EditContainer/ValidateButton"] +[editable path="VBoxContainer/WordListElement/SaveButton"] diff --git a/sources/language_tool/word_list_element.gd b/sources/language_tool/word_list_element.gd new file mode 100644 index 00000000..1349cde9 --- /dev/null +++ b/sources/language_tool/word_list_element.gd @@ -0,0 +1,62 @@ +extends MarginContainer + +signal delete_pressed() + +@onready var word_label: = $%Word +@onready var graphemes_label: = $%Graphemes +@onready var word_edit: = $%WordEdit +@onready var graphemes_edit: = $%GraphemesEdit +@onready var tab_container: = $TabContainer + +var word: = "": + set = set_word +var graphemes: = "": + set = set_graphemes +var undo_redo: UndoRedo + + +func set_word(p_word: String) -> void: + word = p_word + if word_label: + word_label.text = word + if word_edit: + word_edit.text = word + + +func set_graphemes(p_graphemes: String) -> void: + graphemes = p_graphemes + if graphemes_label: + graphemes_label.text = graphemes + if graphemes_edit: + graphemes_edit.text = graphemes + + +func _ready() -> void: + set_word(word) + set_graphemes(graphemes) + + +func _on_edit_button_pressed() -> void: + edit_mode() + + +func edit_mode() -> void: + tab_container.current_tab = 1 + + +func _on_minus_button_pressed() -> void: + delete_pressed.emit() + + +func _on_validate_button_pressed() -> void: + undo_redo.create_action("validated") + undo_redo.add_do_property(self, "graphemes", graphemes_edit.text) + undo_redo.add_do_property(self, "word", word_edit.text) + undo_redo.add_undo_property(self, "graphemes", graphemes) + undo_redo.add_undo_property(self, "word", word) + undo_redo.commit_action() + tab_container.current_tab = 0 + + +func _on_graphemes_edit_text_changed(new_text: String) -> void: + pass # Replace with function body. diff --git a/sources/language_tool/word_list_element.tscn b/sources/language_tool/word_list_element.tscn new file mode 100644 index 00000000..3856b2ec --- /dev/null +++ b/sources/language_tool/word_list_element.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=7 format=3 uid="uid://dx33ijlgd8m3w"] + +[ext_resource type="PackedScene" uid="uid://dbl3r8426473v" path="res://sources/language_tool/plus_button.tscn" id="1_g3tt5"] +[ext_resource type="Script" path="res://sources/language_tool/word_list_element.gd" id="1_q2ekb"] +[ext_resource type="Texture2D" uid="uid://c5jiyxrmmjmdb" path="res://assets/menus/modify_button.png" id="2_i6x6b"] +[ext_resource type="Texture2D" uid="uid://b8tctfnsj3prx" path="res://assets/menus/minus_button.png" id="3_mgblq"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_emsyu"] +bg_color = Color(0.254902, 0.329412, 0.572549, 1) +border_width_bottom = 2 +border_color = Color(0, 0, 0, 1) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_t1yui"] + +[node name="WordListElement" type="MarginContainer"] +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_top = -110.0 +offset_bottom = 110.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_q2ekb") + +[node name="Panel" type="Panel" parent="."] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_emsyu") + +[node name="TabContainer" type="TabContainer" parent="."] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxEmpty_t1yui") +tabs_visible = false +use_hidden_tabs_for_min_size = true + +[node name="NormalContainer" type="HBoxContainer" parent="TabContainer"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="Word" type="Label" parent="TabContainer/NormalContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 100 +text = "Bonjour" +horizontal_alignment = 1 + +[node name="Graphemes" type="Label" parent="TabContainer/NormalContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 100 +text = "b on j ou r" +horizontal_alignment = 1 + +[node name="EditButton" parent="TabContainer/NormalContainer" instance=ExtResource("1_g3tt5")] +custom_minimum_size = Vector2(120, 120) +layout_mode = 2 + +[node name="TextureRect" parent="TabContainer/NormalContainer/EditButton" index="0"] +texture = ExtResource("2_i6x6b") + +[node name="EditContainer" type="HBoxContainer" parent="TabContainer"] +visible = false +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="MinusButton" parent="TabContainer/EditContainer" instance=ExtResource("1_g3tt5")] +layout_mode = 2 + +[node name="TextureRect" parent="TabContainer/EditContainer/MinusButton" index="0"] +texture = ExtResource("3_mgblq") + +[node name="WordEdit" type="LineEdit" parent="TabContainer/EditContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 100 +text = "bonjour" +alignment = 1 + +[node name="GraphemesEdit" type="LineEdit" parent="TabContainer/EditContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 100 +text = "b on j ou r" +alignment = 1 + +[node name="ValidateButton" parent="TabContainer/EditContainer" instance=ExtResource("1_g3tt5")] +custom_minimum_size = Vector2(120, 120) +layout_mode = 2 + +[node name="TextureRect" parent="TabContainer/EditContainer/ValidateButton" index="0"] +texture = ExtResource("2_i6x6b") + +[connection signal="pressed" from="TabContainer/NormalContainer/EditButton" to="." method="_on_edit_button_pressed"] +[connection signal="pressed" from="TabContainer/EditContainer/MinusButton" to="." method="_on_minus_button_pressed"] +[connection signal="text_changed" from="TabContainer/EditContainer/GraphemesEdit" to="." method="_on_graphemes_edit_text_changed"] +[connection signal="pressed" from="TabContainer/EditContainer/ValidateButton" to="." method="_on_validate_button_pressed"] + +[editable path="TabContainer/NormalContainer/EditButton"] +[editable path="TabContainer/EditContainer/MinusButton"] +[editable path="TabContainer/EditContainer/ValidateButton"]