2012-01-17 14:46:06 -06:00
|
|
|
/*
|
|
|
|
* Button.h
|
|
|
|
*
|
|
|
|
* Created on: Jan 8, 2012
|
|
|
|
* Author: Simon
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef BUTTON_H_
|
|
|
|
#define BUTTON_H_
|
|
|
|
|
|
|
|
#include <string>
|
2012-01-19 07:44:59 -06:00
|
|
|
#include "Misc.h"
|
2012-01-17 14:46:06 -06:00
|
|
|
#include "Component.h"
|
|
|
|
|
|
|
|
namespace ui
|
|
|
|
{
|
|
|
|
class Button;
|
|
|
|
class ButtonAction
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual void ActionCallback(ui::Button * sender) {}
|
2012-01-21 12:51:28 -06:00
|
|
|
virtual ~ButtonAction() {}
|
2012-01-17 14:46:06 -06:00
|
|
|
};
|
|
|
|
|
|
|
|
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);
|
2012-01-19 07:44:59 -06:00
|
|
|
void TextPosition();
|
|
|
|
void SetText(std::string buttonText);
|
|
|
|
HorizontalAlignment GetHAlignment() { return textHAlign; }
|
|
|
|
VerticalAlignment GetVAlignment() { return textVAlign; }
|
|
|
|
void SetAlignment(HorizontalAlignment hAlign, VerticalAlignment vAlign) { textHAlign = hAlign; textVAlign = vAlign; TextPosition(); }
|
2012-01-17 14:46:06 -06:00
|
|
|
protected:
|
|
|
|
bool isButtonDown, state, isMouseInside, isTogglable, toggle;
|
|
|
|
ButtonAction * actionCallback;
|
2012-01-19 07:44:59 -06:00
|
|
|
ui::Point textPosition;
|
|
|
|
HorizontalAlignment textHAlign;
|
|
|
|
VerticalAlignment textVAlign;
|
|
|
|
|
2012-01-17 14:46:06 -06:00
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif /* BUTTON_H_ */
|