You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.1 KiB
88 lines
3.1 KiB
#include "menu_os.h"
|
|
|
|
|
|
Menu_os::Menu_os(/* args */)
|
|
{
|
|
}
|
|
|
|
Menu_os::~Menu_os()
|
|
{
|
|
}
|
|
|
|
void Menu_os::set_builder(Glib::RefPtr<Gtk::Builder> const& builder) {
|
|
this->builder = builder;
|
|
builder->get_widget("popoverMenuOS", popoverMenuOS);
|
|
builder->get_widget("revealerL1", revealerL1);
|
|
builder->get_widget("revealerL2", revealerL2);
|
|
builder->get_widget("boxALLL3", boxALLL3);
|
|
}
|
|
|
|
void Menu_os::set_map(std::map <string, vector<string>> &map_list_os) {
|
|
this->map_list_os = map_list_os;
|
|
}
|
|
|
|
void Menu_os::init() {
|
|
Gtk::Box *box_L1 = new Gtk::Box();
|
|
vector<stuct_all_reviler> vec_stuct_all_reviler;
|
|
for (auto& [key, value]: map_list_os) {
|
|
size_t len_data = value.size();
|
|
struct map_reviler_L1 obj_map_reviler_L1;
|
|
struct map_reviler_L3 obj_map_reviler_L3;
|
|
vector<Gtk::Button*> vec_buttons;
|
|
vector<Gtk::Label*> vec_labels;
|
|
vector<string> vec_names;
|
|
Gtk::Revealer* revealerL3;
|
|
Gtk::Box *box_L3 = new Gtk::Box();
|
|
builder->get_widget("boxL1", obj_map_reviler_L1.boxL1);
|
|
builder->get_widget("lblRevL1", obj_map_reviler_L1.lblRevL1);
|
|
builder->get_widget("btnToL2AndLv3", obj_map_reviler_L1.btnToL2AndLv3);
|
|
builder->get_widget("revealerL3", revealerL3);
|
|
box_L1->pack_start(*obj_map_reviler_L1.btnToL2AndLv3, Gtk::PACK_SHRINK);
|
|
obj_map_reviler_L1.lblRevL1->set_text(key);
|
|
this->event_template(obj_map_reviler_L1.btnToL2AndLv3, obj_map_reviler_L1.lblRevL1, name_level_1);
|
|
// Todo : open level 3
|
|
for (string& str_level_2: value) {
|
|
Gtk::Button* btn1;
|
|
Gtk::Label* lbl1;
|
|
builder->get_widget("btnToL3", btn1);
|
|
builder->get_widget("lblToL3", lbl1);
|
|
this->event_template(btn1, lbl1, name_level_3);
|
|
box_L3->pack_start(*btn1, Gtk::PACK_SHRINK);
|
|
lbl1->set_text(str_level_2);
|
|
vec_buttons.push_back(btn1);
|
|
vec_labels.push_back(lbl1);
|
|
vec_names.push_back(str_level_2);
|
|
}
|
|
boxALLL3->pack_start(*box_L3, Gtk::PACK_SHRINK);
|
|
revealerL3->set_reveal_child(true);
|
|
obj_map_reviler_L3.revealerL3 = revealerL3;
|
|
obj_map_reviler_L3.vec_buttons = vec_buttons;
|
|
obj_map_reviler_L3.vec_labels = vec_labels;
|
|
obj_map_reviler_L3.len_data = len_data;
|
|
obj_map_reviler_L3.box_L3 = box_L3;
|
|
obj_stuct_all_reviler.obj_map_reviler_L1 = obj_map_reviler_L1;
|
|
obj_stuct_all_reviler.obj_map_reviler_L3 = obj_map_reviler_L3;
|
|
vec_stuct_all_reviler.push_back(obj_stuct_all_reviler);
|
|
GtkWidget* rev_widget = GTK_WIDGET(revealerL1->gobj());
|
|
gtk_container_add(GTK_CONTAINER(rev_widget), GTK_WIDGET(box_L1->gobj()));
|
|
|
|
}
|
|
|
|
|
|
}
|
|
void Menu_os::show() {
|
|
popoverMenuOS->show_all();
|
|
}
|
|
void Menu_os::event() {
|
|
btnToLev1->signal_clicked().connect(sigc::mem_fun(*this, &Menu_os::to_l1));
|
|
}
|
|
|
|
void Menu_os::event_template(Gtk::Button* button, Gtk::Label* label, string& name_level) {
|
|
button->signal_clicked().connect([&]() {name_level = label->get_label();});
|
|
}
|
|
void Menu_os::to_l1() {
|
|
revealerL1->set_reveal_child(true);
|
|
revealerL2->set_reveal_child(false);
|
|
}
|
|
|