#include #include #include #include #include #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; 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 target) { this->add_light_callback = target; } void lights_list::set_edit_light_callback( std::function target ) { this->edit_light_callback = target; } void lights_list::set_show_light_callback( std::function target ) { this->show_light_callback = target; } }