/* ui/inputbox.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_UI_INPUTBOX_H__ #define __INCLUDED_UI_INPUTBOX_H__ #include "ui/widget.h" namespace ui { /// text input widget class InputBox : public Widget { public: InputBox(Widget *parent); ~InputBox(); /// set the text displayed by the label void set_text(const std::string &text); /// set the text displayed by the label void set_text(const char *text); /// set the prompt void set_prompt(const std::string &prompt); /// set the prompt void set_prompt(const char *prompt); /// set the maximal input width void set_max(const size_t max); /// return the text displayed by the label inline std::string const &text() const { return input_text; } /// clear the text void clear(); protected: /// draw the widget virtual void draw(); /// called when the widget receives a key press virtual bool on_keypress(const int key, const unsigned int modifier); /// called when the widget receives a key release virtual bool on_keyrelease(const int key, const unsigned int modifier); private: std::string input_text; std::string input_prompt; size_t input_pos; size_t input_max; }; } #endif // __INCLUDED_UI_INPUTBOX_H__