/* ui/iconbutton.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_ICONBUTTON_H__ #define __INCLUDED_UI_ICONBUTTON_H__ #include "ui/widget.h" namespace ui { class IconButton : public Widget { public: IconButton(Widget *parent, const char *icon=0, const char *command=0); ~IconButton(); /// the command this button executes inline const std::string & command() const { return iconbutton_command; } /// the icon texture inline const std::string & icon() const { return iconbutton_icon; } /// enabled or disabled inline const bool enabled() const { return iconbutton_enabled; } /// enabled or disabled inline const bool disabled() const { return !iconbutton_enabled; } /// enable or disable the button void enable(bool enabled=true); /// enable or disable the button void disable(bool disabled=true); /// 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); /// set the icon texture void set_icon(const std::string & icon); /// set the icon texture void set_icon(const char *icon); /// 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 border virtual void draw_border(); /// draw the button virtual void draw(); private: std::string iconbutton_command; std::string iconbutton_icon; bool iconbutton_enabled; }; } #endif // __INCLUDED_UI_ICONBUTTON_H__