This repository has been archived on 2025-03-20. You can view files and clone it, but cannot push or open issues or pull requests.
The-Powder-Toy/src/gui/interface/Checkbox.h
Tamás Bálint Misius 7629c98f22
Get rid of tiny callback classes, round No.1
I say round No.1 because I'm not sure if there are any left.
Hopefully there aren't.
2019-12-16 21:20:33 +01:00

43 lines
1.1 KiB
C++

#ifndef CHECKBOX_H_
#define CHECKBOX_H_
#include "common/String.h"
#include "Component.h"
#include <functional>
namespace ui
{
class Checkbox: public ui::Component {
String text;
String toolTip;
bool checked;
bool isMouseOver;
struct CheckboxAction
{
std::function<void ()> action;
};
CheckboxAction actionCallback;
public:
Checkbox(ui::Point position, ui::Point size, String text, String toolTip);
virtual ~Checkbox() = default;
void SetText(String text);
String GetText();
void SetIcon(Icon icon);
void Draw(const Point& screenPos) override;
void OnMouseEnter(int x, int y) override;
void OnMouseHover(int x, int y) override;
void OnMouseLeave(int x, int y) override;
void OnMouseClick(int x, int y, unsigned int button) override;
void OnMouseUp(int x, int y, unsigned int button) override;
inline void SetActionCallback(CheckboxAction const &action) { actionCallback = action; }
inline CheckboxAction const &GetActionCallback() const { return actionCallback; }
bool GetChecked() { return checked; }
void SetChecked(bool checked_) { checked = checked_; }
};
}
#endif /* CHECKBOX_H_ */