summaryrefslogtreecommitdiff
path: root/Scripts/InputContainer.cs
diff options
context:
space:
mode:
authorSophia Pearson <codergal89@gmail.com>2022-05-20 00:45:25 +0200
committerSophia Pearson <codergal89@gmail.com>2022-05-20 18:56:04 +0200
commit05d29ccce1898ed89c0b650c77242c2fa2805128 (patch)
treee8ee3bcb570fa6f3d9d96273c2bf4d4c8618d08b /Scripts/InputContainer.cs
downloadtexty-05d29ccce1898ed89c0b650c77242c2fa2805128.tar.xz
texty-05d29ccce1898ed89c0b650c77242c2fa2805128.zip
texty: initial commit
Diffstat (limited to 'Scripts/InputContainer.cs')
-rw-r--r--Scripts/InputContainer.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/Scripts/InputContainer.cs b/Scripts/InputContainer.cs
new file mode 100644
index 0000000..485086e
--- /dev/null
+++ b/Scripts/InputContainer.cs
@@ -0,0 +1,44 @@
+using Godot;
+
+namespace Texty.Scripts
+{
+ public abstract class InputContainer : HBoxContainer
+ {
+ [Signal]
+ public delegate void InputSubmitted(string text);
+
+ public LineEdit InputField;
+ public Button SubmitButton;
+
+ public override void _Ready()
+ {
+ InputField = GetNode<LineEdit>(nameof(InputField));
+ SubmitButton = GetNode<Button>(nameof(SubmitButton));
+
+ InputField.GrabFocus();
+ SubmitButton.Disabled = InputField.Text.Empty();
+ }
+
+ public void OnInputChanged(string newText)
+ {
+ SubmitButton.Disabled = newText.Empty();
+ }
+
+ public void OnInputSubmitted(string newText)
+ {
+ SubmitText(newText);
+ }
+
+ public void OnInputSubmitted()
+ {
+ SubmitText(InputField.Text);
+ }
+
+ private void SubmitText(string newText)
+ {
+ if (newText.Empty()) return;
+ EmitSignal(nameof(InputSubmitted), newText);
+ InputField.Clear();
+ }
+ }
+} \ No newline at end of file