summaryrefslogtreecommitdiff
path: root/src/interface/Button.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/Button.h')
-rw-r--r--src/interface/Button.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/interface/Button.h b/src/interface/Button.h
new file mode 100644
index 0000000..5bc7fc3
--- /dev/null
+++ b/src/interface/Button.h
@@ -0,0 +1,68 @@
+/*
+ * Button.h
+ *
+ * Created on: Jan 8, 2012
+ * Author: Simon
+ */
+
+#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 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
+ 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, state, isMouseInside, isTogglable, toggle;
+ ButtonAction * actionCallback;
+
+};
+}
+#endif /* BUTTON_H_ */