summaryrefslogtreecommitdiff
path: root/src/gui/interface/Button.h
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2013-03-22 14:14:17 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2013-03-22 14:14:17 (GMT)
commit9abe51526cac2634af0541c3de69834dd30e9f78 (patch)
tree6ae4deadfe00a83094b9d288d8c11d8ce823577a /src/gui/interface/Button.h
parent2c311b9a36a88fadd96f3d39acb1ab2590835d81 (diff)
downloadpowder-9abe51526cac2634af0541c3de69834dd30e9f78.zip
powder-9abe51526cac2634af0541c3de69834dd30e9f78.tar.gz
Move all GUI source files into gui/
Diffstat (limited to 'src/gui/interface/Button.h')
-rw-r--r--src/gui/interface/Button.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/gui/interface/Button.h b/src/gui/interface/Button.h
new file mode 100644
index 0000000..05f466d
--- /dev/null
+++ b/src/gui/interface/Button.h
@@ -0,0 +1,63 @@
+#ifndef BUTTON_H_
+#define BUTTON_H_
+
+#include <string>
+#include "Misc.h"
+#include "Component.h"
+#include "Colour.h"
+
+namespace ui
+{
+class Button;
+class ButtonAction
+{
+public:
+ virtual void ActionCallback(ui::Button * sender) {}
+ virtual void AltActionCallback(ui::Button * sender) {}
+ virtual void MouseEnterCallback(ui::Button * sender) {}
+ virtual ~ButtonAction() {}
+};
+
+class Button : public Component
+{
+public:
+ Button(Point position = Point(0, 0), Point size = Point(0, 0), std::string buttonText = "", std::string toolTip = "");
+ virtual ~Button();
+
+ bool Toggleable;
+ bool Enabled;
+
+ virtual void OnMouseClick(int x, int y, unsigned int button);
+ virtual void OnMouseUnclick(int x, int y, unsigned int button);
+ //virtual void OnMouseUp(int x, int y, unsigned int button);
+
+ virtual void OnMouseEnter(int x, int y);
+ virtual void OnMouseLeave(int x, int y);
+
+ virtual void Draw(const Point& screenPos);
+
+ virtual void TextPosition();
+ inline bool GetState() { return state; }
+ virtual void DoAction(); //action of button what ever it may be
+ virtual void DoAltAction(); //action of button what ever it may be
+ void SetTogglable(bool isTogglable);
+ bool GetTogglable();
+ TPT_NO_INLINE bool GetToggleState();
+ TPT_NO_INLINE void SetToggleState(bool state);
+ void SetActionCallback(ButtonAction * action);
+ ButtonAction * GetActionCallback() { return actionCallback; }
+ void SetText(std::string buttonText);
+ void SetIcon(Icon icon);
+ inline std::string GetText() { return ButtonText; };
+protected:
+
+ std::string toolTip;
+ std::string buttonDisplayText;
+ std::string ButtonText;
+
+ bool isButtonDown, isAltButtonDown, state, isMouseInside, isTogglable, toggle;
+ ButtonAction * actionCallback;
+
+};
+}
+#endif /* BUTTON_H_ */