/* 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; } /// highlight state inline const bool highlight() const { return iconbutton_highlight; } /// 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); /// set the highlight state void set_highlight(const bool highlight); /// 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_highlight; }; } #endif // __INCLUDED_UI_ICONBUTTON_H__