diff options
| author | Sophia Pearson <codergal89@gmail.com> | 2022-05-20 00:45:25 +0200 |
|---|---|---|
| committer | Sophia Pearson <codergal89@gmail.com> | 2022-05-20 18:56:04 +0200 |
| commit | 05d29ccce1898ed89c0b650c77242c2fa2805128 (patch) | |
| tree | e8ee3bcb570fa6f3d9d96273c2bf4d4c8618d08b /Scripts/InputContainer.cs | |
| download | texty-05d29ccce1898ed89c0b650c77242c2fa2805128.tar.xz texty-05d29ccce1898ed89c0b650c77242c2fa2805128.zip | |
texty: initial commit
Diffstat (limited to 'Scripts/InputContainer.cs')
| -rw-r--r-- | Scripts/InputContainer.cs | 44 |
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 |
