53 lines
861 B
C++
53 lines
861 B
C++
#include "libs.h"
|
|
#include "gui.h"
|
|
|
|
#define BUTTON_SIZE 16
|
|
|
|
namespace Gui {
|
|
|
|
ToggleButton::ToggleButton(void) {
|
|
m_pressed = false;
|
|
SetSize(BUTTON_SIZE, BUTTON_SIZE);
|
|
}
|
|
|
|
bool ToggleButton::OnMouseDown(MouseButtonEvent* e) {
|
|
if(e->button == 1) {
|
|
onPress.emit();
|
|
m_pressed = !m_pressed;
|
|
if(m_pressed) {
|
|
onChange.emit(this, true);
|
|
} else {
|
|
onChange.emit(this, false);
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void ToggleButton::OnActivate(void) {
|
|
m_pressed = !m_pressed;
|
|
if(m_pressed) {
|
|
onChange.emit(this, true);
|
|
} else {
|
|
onChange.emit(this, false);
|
|
}
|
|
}
|
|
|
|
void ToggleButton::GetSizeRequested(float size[2]) {
|
|
size[0] = BUTTON_SIZE;
|
|
size[1] = BUTTON_SIZE;
|
|
}
|
|
|
|
void ToggleButton::Draw(void) {
|
|
float size[2];
|
|
GetSize(size);
|
|
|
|
if(m_pressed) {
|
|
Theme::DrawIndent(size);
|
|
} else {
|
|
Theme::DrawOutdent(size);
|
|
}
|
|
}
|
|
|
|
}
|
|
|