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.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/interface/Button.h b/src/interface/Button.h
new file mode 100644
index 0000000..5f2d71f
--- /dev/null
+++ b/src/interface/Button.h
@@ -0,0 +1,60 @@
+/*
+ * Button.h
+ *
+ * Created on: Jan 8, 2012
+ * Author: Simon
+ */
+
+#ifndef BUTTON_H_
+#define BUTTON_H_
+
+#include <string>
+
+#include "Component.h"
+
+namespace ui
+{
+class Button;
+class ButtonAction
+{
+public:
+ virtual void ActionCallback(ui::Button * sender) {}
+};
+
+class Button : public Component
+{
+public:
+ Button(Window* parent_state, std::string buttonText);
+
+ Button(Point position, Point size, std::string buttonText);
+
+ Button(std::string buttonText);
+ virtual ~Button();
+
+ bool Toggleable;
+
+ std::string ButtonText;
+
+ 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);
+
+ inline bool GetState() { return state; }
+ virtual void DoAction(); //action of button what ever it may be
+ void SetTogglable(bool isTogglable);
+ bool GetTogglable();
+ inline bool GetToggleState();
+ inline void SetToggleState(bool state);
+ void SetActionCallback(ButtonAction * action);
+
+protected:
+ bool isButtonDown, state, isMouseInside, isTogglable, toggle;
+ ButtonAction * actionCallback;
+};
+}
+#endif /* BUTTON_H_ */