diff options
| -rw-r--r-- | ui.cpp | 27 | ||||
| -rw-r--r-- | ui.hpp | 7 | 
2 files changed, 33 insertions, 1 deletions
| @@ -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, @@ -234,6 +234,13 @@ struct UI {  		void set_val(float v);  	}; +	struct Int_Input : Input { +		int val; +		Int_Input(UI* ui, Element* parent); +		void on_message(const Message& m) override; +		void set_val(int v); +	}; +  	struct Slider : Element {  		Float_Input* input;  		float minval, maxval; |