1 #ifndef BUTTON_H_ 2 #define BUTTON_H_ 3 4 #include "common/String.h" 5 #include "Component.h" 6 7 #include <functional> 8 9 namespace ui 10 { 11 12 class Button : public Component 13 { 14 struct ButtonAction 15 { 16 std::function<void ()> action, altAction, mouseEnter; 17 }; 18 19 public: 20 Button(Point position = Point(0, 0), Point size = Point(0, 0), String buttonText = String(), String toolTip = String()); 21 virtual ~Button() = default; 22 23 void OnMouseClick(int x, int y, unsigned int button) override; 24 void OnMouseUnclick(int x, int y, unsigned int button) override; 25 void OnMouseUp(int x, int y, unsigned int button) override; 26 27 void OnMouseEnter(int x, int y) override; 28 void OnMouseHover(int x, int y) override; 29 void OnMouseLeave(int x, int y) override; 30 31 void Draw(const Point& screenPos) override; 32 33 void TextPosition(String) override; GetState()34 inline bool GetState() { return state; } 35 void DoAction(); //action of button what ever it may be 36 void DoAltAction(); //action of button what ever it may be 37 void SetTogglable(bool isTogglable); 38 bool GetTogglable(); 39 bool GetToggleState(); 40 void SetToggleState(bool state); SetActionCallback(ButtonAction const & action)41 inline void SetActionCallback(ButtonAction const &action) { actionCallback = action; } 42 // inline ButtonAction const &GetActionCallback() const { return actionCallback; } 43 void SetText(String buttonText); 44 void SetIcon(Icon icon); GetText()45 inline String GetText() { return ButtonText; } SetToolTip(String newToolTip)46 void SetToolTip(String newToolTip) { toolTip = newToolTip; } 47 48 protected: 49 String ButtonText; 50 String toolTip; 51 String buttonDisplayText; 52 53 bool isButtonDown, isAltButtonDown, state, isMouseInside, isTogglable, toggle; 54 ButtonAction actionCallback; 55 }; 56 } 57 #endif /* BUTTON_H_ */ 58