From 2dfa9cfaec5e6e96c8193af5504ffd0b6a8e9a69 Mon Sep 17 00:00:00 2001 From: quou Date: Fri, 7 Feb 2025 00:27:35 +1100 Subject: ui int input --- ui.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'ui.cpp') diff --git a/ui.cpp b/ui.cpp index 8ef6c10..2e21d54 100644 --- a/ui.cpp +++ b/ui.cpp @@ -1054,8 +1054,12 @@ void UI::Input::add_text(const char* s) { } } +static int int_filter(char ch) { + return (ch >= '0' && ch <= '9'); +} + static int float_filter(char ch) { - return (ch >= '0' && ch <= '9') || ch == '.' || ch == '-'; + return int_filter(ch) || ch == '.' || ch == '-'; } UI::Float_Input::Float_Input(UI* ui, Element* parent): @@ -1079,6 +1083,27 @@ void UI::Float_Input::set_val(float v) { set_text(b); } +UI::Int_Input::Int_Input(UI* ui, Element* parent): + Input(ui, parent, int_filter), + val(0.0f) { + set_text("0.0"); +} + +void UI::Int_Input::on_message(const Message& m) { + Input::on_message(m); + if (m.type == UI::Message::Type::input_finalised) { + int v = (int)strtol(buf, 0, 10); + set_val(v); + } +} + +void UI::Int_Input::set_val(int v) { + char b[64]; + val = v; + sprintf(b, "%d", v); + set_text(b); +} + UI::Slider::Slider( UI* ui, Element* parent, -- cgit v1.2.3-54-g00ecf