| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <vector>
- #include <functional>
- #include <gtkmm/box.h>
- #include <gtkmm/button.h>
- #include <gtkmm/orientable.h>
- #include "lights_list.hpp"
- #include "light_on_list.hpp"
- #include "strings.hpp"
- #include "config.hpp"
- #include "light.hpp"
- namespace cx_light {
- lights_list::lights_list() {
- this->add_light_callback = [] () {};
- this->show_light_callback = [] (light *target) {};
- this->edit_light_callback = [] (light *target) {};
- this->lights = new std::vector<light_on_list *>;
- this->lights->clear();
- this->content = new Gtk::Box();
- this->content->set_size_request(light_on_list::width(), -1);
- this->content->set_orientation(Gtk::Orientation::VERTICAL);
- this->content->set_margin(DEFAULT_MARGIN);
-
- this->set_margin(DEFAULT_MARGIN);
- this->set_child(*this->content);
- this->add_lights_container();
- this->add_create_light_button();
- #ifdef UI_DEBUG
- this->add_light(light("Sample", "1.1.1.1"));
- this->add_light(light("Other", "1.1.1.1"));
- #endif
- }
- lights_list::~lights_list() {
- for (unsigned int count = 0; count < this->lights->size(); ++count) {
- delete this->lights->at(count);
- }
- delete this->create_light;
- delete this->lights;
- delete this->lights_container;
- delete this->content;
- }
- void lights_list::add_lights_container() {
- this->lights_container = new Gtk::Box();
- this->lights_container->set_orientation(Gtk::Orientation::VERTICAL);
- this->lights_container->set_size_request(-1, light_on_list::height());
- this->content->append(*this->lights_container);
- }
- void lights_list::add_create_light_button() {
- this->create_light = new Gtk::Button(__(ADD_LIGHT));
- this->content->append(*this->create_light);
-
- this->create_light->signal_clicked().connect([&] () {
- this->add_light_callback();
- });
- }
- void lights_list::add_light(light target) {
- light_on_list *current = new light_on_list(target);
-
- current->set_edit_callback([&] (light *target) {
- this->edit_light_callback(target);
- });
- current->set_show_callback([&] (light *target) {
- this->show_light_callback(target);
- });
-
- this->lights_container->append(*current);
- this->lights->push_back(current);
- }
- void lights_list::set_add_light_callback(std::function<void()> target) {
- this->add_light_callback = target;
- }
- void lights_list::set_edit_light_callback(
- std::function<void(light *)> target
- ) {
- this->edit_light_callback = target;
- }
- void lights_list::set_show_light_callback(
- std::function<void(light *)> target
- ) {
- this->show_light_callback = target;
- }
- }
|