parent
268ffcabf1
commit
6a9b72896c
@ -1,26 +1,87 @@
|
||||
#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() {
|
||||
this->m_box(Gtk::ORIENTATION_VERTICAL);
|
||||
for (auto& [key, value]: map_list_os) {
|
||||
Gtk::Button *button = new Gtk::button();
|
||||
Gtk::Revealer *revealer = new Gtk::Revealer();
|
||||
std::map<std::string, Gtk::struct_menu_os_button_v_2> map_buttons_level_2;
|
||||
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;
|
||||
}
|
||||
|
||||
map_buttons_level_1[key] = struct_menu_os_button{button, revealer}
|
||||
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::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] =
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@ -1,27 +1,51 @@
|
||||
#ifndef Menu_os_H
|
||||
#define Menu_os_H
|
||||
#include <gtkmm.h>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
class menu_os
|
||||
class Menu_os
|
||||
{
|
||||
private:
|
||||
struct struct_menu_os_button_v_2{
|
||||
Gtk::Button* button;
|
||||
struct map_reviler_L1 {
|
||||
Gtk::Box *boxL1;
|
||||
Gtk::Label *lblRevL1;
|
||||
Gtk::Button *btnToL2AndLv3;
|
||||
};
|
||||
|
||||
struct struct_menu_os_button{
|
||||
Gtk::Button* button;
|
||||
Gtk::Revealer* revealer;
|
||||
std::map<std::string, Gtk::struct_menu_os_button_v_2> map_buttons_level_2;
|
||||
struct map_reviler_L3 {
|
||||
Gtk::Revealer *revealerL3;
|
||||
Gtk::Box *box_L3;
|
||||
vector<Gtk::Button*> vec_buttons;
|
||||
vector<Gtk::Label*> vec_labels;
|
||||
vector<string> vec_names;
|
||||
size_t len_data;
|
||||
};
|
||||
struct stuct_all_reviler {
|
||||
struct map_reviler_L1 obj_map_reviler_L1;
|
||||
struct map_reviler_L3 obj_map_reviler_L3;
|
||||
};
|
||||
std::map<std::string, Gtk::struct_menu_os_button> map_buttons_level_1;
|
||||
std::map <string, vector> map_list_os;
|
||||
Gtk::Box m_box;
|
||||
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:
|
||||
menu_os(/* args */);
|
||||
void set_popover(Gtk::Popover *popover);
|
||||
void set_map(std::map <string, vector> 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);
|
||||
Menu_os(/* args */);
|
||||
void set_builder(Glib::RefPtr<Gtk::Builder> const& builder);
|
||||
void set_map(std::map <string, vector<string>> &map_list_os);
|
||||
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