diff options
Diffstat (limited to 'src/ui/input.h')
-rw-r--r-- | src/ui/input.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/ui/input.h b/src/ui/input.h new file mode 100644 index 0000000..214f63e --- /dev/null +++ b/src/ui/input.h @@ -0,0 +1,55 @@ +/* + ui/input.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_INPUT_H__ +#define __INCLUDED_UI_INPUT_H__ + +#include "ui/widget.h" + +namespace ui +{ + +/// text input widget +class Input : public Widget +{ +public: + Input(Widget *parent); + ~Input(); + + /// set the text displayed by the label + void set_text(std::string const &text); + + /// set the text displayed by the label + void set_text(const char *text); + + /// 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; + size_t input_pos; +}; + +} + +#endif // __INCLUDED_UI_INPUT_H__ + |