-
Notifications
You must be signed in to change notification settings - Fork 119
/
checkbox.cpp
37 lines (30 loc) · 1.01 KB
/
checkbox.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <boost/bind.hpp>
#include "checkbox.hpp"
#include "graphical_font_label.hpp"
#include "grid_widget.hpp"
#include "image_widget.hpp"
#include "raster.hpp"
namespace gui {
namespace {
widget_ptr create_checkbox_widget(const std::string& text, bool checked) {
grid_ptr g(new grid(2));
g->set_hpad(12);
g->add_col(widget_ptr(new gui_section_widget(checked ? "checkbox_ticked" : "checkbox_unticked", -1, -1, 2)));
g->add_col(widget_ptr(new graphical_font_label(text, "door_label", 2)));
return g;
}
}
checkbox::checkbox(const std::string& label, bool checked, boost::function<void(bool)> onclick, BUTTON_RESOLUTION button_resolution)
: button(create_checkbox_widget(label, checked), boost::bind(&checkbox::on_click, this), BUTTON_STYLE_NORMAL,button_resolution), label_(label), onclick_(onclick), checked_(checked)
{
}
void checkbox::on_click()
{
checked_ = !checked_;
const int w = width();
const int h = height();
set_label(create_checkbox_widget(label_, checked_));
set_dim(w, h);
onclick_(checked_);
}
}