summaryrefslogtreecommitdiff
path: root/Scripts/InputContainer.cs
diff options
context:
space:
mode:
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