/* ui/button.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_BUTTON_H__ #define __INCLUDED_UI_BUTTON_H__ #include #include "ui/label.h" namespace ui { class Button : public Label { public: Button(Widget *parent, const char *text = 0, const char *command = 0); ~Button(); /// set the command this button will execute void set_command(const std::string &command); /// set the command this button will execute void set_command(const char *command); /// the command this button executes inline const std::string & command() const { return button_command; } /// print button description virtual void print(const size_t indent) const; /// called when the mouse enters the widget virtual void on_mouseover(const math::Vector2f &cursor); /// 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); protected: /// draw the button background virtual void draw_background(); /// draw the button border virtual void draw_border(); /// draw the button virtual void draw(); private: std::string button_command; }; } #endif // __INCLUDED_UI_BUTTON_H__