parent
268ffcabf1
commit
6a9b72896c
@ -1,26 +1,87 @@
|
|||||||
#include "menu_os.h"
|
#include "menu_os.h"
|
||||||
|
|
||||||
|
|
||||||
menu_os::menu_os(/* args */)
|
Menu_os::Menu_os(/* args */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
menu_os::~menu_os()
|
Menu_os::~Menu_os()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_os::init() {
|
void Menu_os::set_builder(Glib::RefPtr<Gtk::Builder> const& builder) {
|
||||||
this->m_box(Gtk::ORIENTATION_VERTICAL);
|
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) {
|
for (auto& [key, value]: map_list_os) {
|
||||||
Gtk::Button *button = new Gtk::button();
|
size_t len_data = value.size();
|
||||||
Gtk::Revealer *revealer = new Gtk::Revealer();
|
struct map_reviler_L1 obj_map_reviler_L1;
|
||||||
std::map<std::string, Gtk::struct_menu_os_button_v_2> map_buttons_level_2;
|
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()));
|
||||||
|
|
||||||
map_buttons_level_1[key] = struct_menu_os_button{button, revealer}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_os::crete_menu_level_2(string key, std::map<std::string, Gtk::struct_menu_os_button_v_2> &map_buttons_level_2) {
|
|
||||||
map_buttons_level_2[key] =
|
|
||||||
}
|
|
||||||
@ -1,27 +1,51 @@
|
|||||||
|
#ifndef Menu_os_H
|
||||||
|
#define Menu_os_H
|
||||||
#include <gtkmm.h>
|
#include <gtkmm.h>
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
class menu_os
|
class Menu_os
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
struct struct_menu_os_button_v_2{
|
struct map_reviler_L1 {
|
||||||
Gtk::Button* button;
|
Gtk::Box *boxL1;
|
||||||
|
Gtk::Label *lblRevL1;
|
||||||
|
Gtk::Button *btnToL2AndLv3;
|
||||||
};
|
};
|
||||||
|
struct map_reviler_L3 {
|
||||||
struct struct_menu_os_button{
|
Gtk::Revealer *revealerL3;
|
||||||
Gtk::Button* button;
|
Gtk::Box *box_L3;
|
||||||
Gtk::Revealer* revealer;
|
vector<Gtk::Button*> vec_buttons;
|
||||||
std::map<std::string, Gtk::struct_menu_os_button_v_2> map_buttons_level_2;
|
vector<Gtk::Label*> vec_labels;
|
||||||
|
vector<string> vec_names;
|
||||||
|
size_t len_data;
|
||||||
};
|
};
|
||||||
std::map<std::string, Gtk::struct_menu_os_button> map_buttons_level_1;
|
struct stuct_all_reviler {
|
||||||
std::map <string, vector> map_list_os;
|
struct map_reviler_L1 obj_map_reviler_L1;
|
||||||
Gtk::Box m_box;
|
struct map_reviler_L3 obj_map_reviler_L3;
|
||||||
Gtk::Revealer* level_1;
|
};
|
||||||
|
struct stuct_all_reviler obj_stuct_all_reviler;
|
||||||
|
vector<map_reviler_L1> vec_map_reviler_L1;
|
||||||
|
Glib::RefPtr<Gtk::Builder> builder;
|
||||||
|
std::map <string, vector<string>> map_list_os;
|
||||||
|
Gtk::Box *boxALLL3;
|
||||||
|
Gtk::Popover *popoverMenuOS;
|
||||||
|
Gtk::Revealer *revealerL1;
|
||||||
|
Gtk::Revealer *revealerL2;
|
||||||
|
Gtk::Button *btnToLev1;
|
||||||
|
string name_level_1 = "";
|
||||||
|
string name_level_3 = "";
|
||||||
public:
|
public:
|
||||||
menu_os(/* args */);
|
Menu_os(/* args */);
|
||||||
void set_popover(Gtk::Popover *popover);
|
void set_builder(Glib::RefPtr<Gtk::Builder> const& builder);
|
||||||
void set_map(std::map <string, vector> map_list_os);
|
void set_map(std::map <string, vector<string>> &map_list_os);
|
||||||
void crete_menu_level_2(string key, std::map<std::string, Gtk::struct_menu_os_button_v_2> &map_buttons_level_2);
|
|
||||||
void init();
|
void init();
|
||||||
~menu_os();
|
void show();
|
||||||
|
void event_template(Gtk::Button* button, Gtk::Label* label, string& name_level);
|
||||||
|
void event();
|
||||||
|
void to_l1();
|
||||||
|
~Menu_os();
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in new issue