Lephisto/src/gui_toggle_button.cpp

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);
}
}
}