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