/* 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(); /// text alignment inline unsigned int alignment() const { return _alignment; } /// return the text displayed by the label inline const std::string &text() const { return _text; } /// 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 length void set_max(const size_t max); /// set the text alignment void set_alignment(const unsigned int alignment); /// clear the text void clear(); /// run command completion void complete(); protected: /** * @brief draw the windget * */ virtual void draw(); /** * @brief key press event handler * */ virtual bool on_keypress(const int key, const unsigned int modifier); /** * @brief key release event handler * */ virtual bool on_keyrelease(const int key, const unsigned int modifier); /** * @brief mouse button press event handler * */ virtual bool on_mousepress(const unsigned int button); private: std::string _text; std::string _prompt; size_t _pos; size_t _max; unsigned int _alignment; }; } #endif // __INCLUDED_UI_INPUTBOX_H__