summaryrefslogtreecommitdiff
path: root/ui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui.cpp')
-rw-r--r--ui.cpp27
1 files changed, 26 insertions, 1 deletions
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,