diff options
Diffstat (limited to 'src/interface/Button.h')
| -rw-r--r-- | src/interface/Button.h | 60 |
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_ */ |
