Merge pull request 'master' (#18) from Igor1/ubl-settings-bootloader:master into develop
Reviewed-on: #18pull/19/head
commit
a1054e27e2
|
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 135 KiB |
@ -0,0 +1,173 @@
|
||||
#include "menu_os.h"
|
||||
|
||||
|
||||
Menu_os::Menu_os(/* args */)
|
||||
{
|
||||
}
|
||||
|
||||
Menu_os::~Menu_os()
|
||||
{
|
||||
}
|
||||
|
||||
void Menu_os::set_last_launched_os(string str_last_launched_os) {
|
||||
this->str_last_launched_os = str_last_launched_os;
|
||||
}
|
||||
|
||||
void Menu_os::set_builder(Glib::RefPtr<Gtk::Builder>& builder, string path_glade) {
|
||||
this->builder = builder;
|
||||
this->path_glade = path_glade;
|
||||
builder->get_widget("popoverMenuOS", popoverMenuOS);
|
||||
builder->get_widget("revealerL1", revealerL1);
|
||||
builder->get_widget("revealerL2", revealerL2);
|
||||
builder->get_widget("boxALLL3", boxALLL3);
|
||||
builder->get_widget("boxLevel1", boxLevel1);
|
||||
builder->get_widget("btnToLev1", btnToLev1);
|
||||
|
||||
revealerL1->set_reveal_child(true);
|
||||
}
|
||||
|
||||
void Menu_os::set_map(vector<tuple<string, vector<string>>> &vec_list_os) {
|
||||
this->vec_list_os = vec_list_os;
|
||||
}
|
||||
|
||||
void Menu_os::init() {
|
||||
revealerL1->set_reveal_child(true);
|
||||
revealerL2->set_reveal_child(true);
|
||||
size_t index_l1 = 0;
|
||||
string key = "";
|
||||
|
||||
for (tuple<string, vector<string>> tuple_os: vec_list_os) {
|
||||
key = get<0>(tuple_os);
|
||||
vector<string> vec_value = get<1>(tuple_os);
|
||||
map_menu_level_1[key] = new struct_menu_level1;
|
||||
Glib::RefPtr<Gtk::Builder> builder_level_1 = Gtk::Builder::create_from_file(path_glade);
|
||||
builder_level_1->get_widget("lblRevL1", map_menu_level_1[key]->lblRevL1);
|
||||
builder_level_1->get_widget("btnToL2AndLv3", map_menu_level_1[key]->btnToL2AndLv3);
|
||||
builder_level_1->get_widget("boxMenuLevel1", map_menu_level_1[key]->boxMenuLevel1);
|
||||
map_menu_level_1[key]->btnToL2AndLv3_css = map_menu_level_1[key]->btnToL2AndLv3->get_style_context();
|
||||
map_menu_level_1[key]->btnToL2AndLv3_css->add_class("noborder");
|
||||
map_menu_level_1[key]->builder = builder_level_1;
|
||||
boxLevel1->pack_start(*(map_menu_level_1[key]->boxMenuLevel1));
|
||||
map_menu_level_1[key]->name = key;
|
||||
this->html_last_launched_os(key, map_menu_level_1[key]->lblRevL1);
|
||||
map_menu_level_1[key]->btnToL2AndLv3->signal_clicked().connect(
|
||||
sigc::bind<Gtk::Label*, string&, string&> (sigc::mem_fun( *this,
|
||||
&Menu_os::event_template), map_menu_level_1[key]->lblRevL1,
|
||||
name_level_1, map_menu_level_1[key]->name));
|
||||
if (vec_value.size()!= 0) {
|
||||
builder_level_1->get_widget("revealerL3", map_menu_level_1[key]->revealer);
|
||||
builder_level_1->get_widget("boxLevel3", map_menu_level_1[key]->boxLevel3);
|
||||
boxALLL3->pack_start(*(map_menu_level_1[key]->revealer));
|
||||
}
|
||||
else {
|
||||
map_menu_level_1[key]->revealer = NULL;
|
||||
map_menu_level_1[key]->boxLevel3 = NULL;
|
||||
}
|
||||
size_t index_l3 = 0;
|
||||
for (string& str_level_3: vec_value) {
|
||||
auto builder_level_3 = Gtk::Builder::create_from_file(path_glade);
|
||||
map_menu_level_1[key]->vec_menu_level_3.push_back(new struct_menu_level_3);
|
||||
builder_level_3->get_widget("btnToL3",
|
||||
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3);
|
||||
builder_level_3->get_widget("lblToL3",
|
||||
map_menu_level_1[key]->vec_menu_level_3[index_l3]->lblToL3);
|
||||
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3_css =
|
||||
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3->get_style_context();
|
||||
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3_css->add_class("noborder");
|
||||
this->html_last_launched_os(str_level_3, map_menu_level_1[key]->vec_menu_level_3[index_l3]->lblToL3);
|
||||
map_menu_level_1[key]->boxLevel3->pack_start(
|
||||
*(map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3));
|
||||
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3->signal_clicked().connect(
|
||||
sigc::bind<Gtk::Label*, string&, string&> (sigc::mem_fun(*this,
|
||||
&Menu_os::event_template), map_menu_level_1[key]->vec_menu_level_3[index_l3]->lblToL3,
|
||||
name_level_3, map_menu_level_1[key]->name));
|
||||
map_menu_level_1[key]->vec_menu_level_3[index_l3]->builder_level_3 = builder_level_3;
|
||||
index_l3 += 1;
|
||||
|
||||
}
|
||||
index_l1 += 1;
|
||||
}
|
||||
}
|
||||
void Menu_os::close_revealer() {
|
||||
for (auto& [key, values]: map_menu_level_1) {
|
||||
if (values->revealer != NULL) {
|
||||
values->revealer->set_reveal_child(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Menu_os::show() {
|
||||
revealerL1->set_reveal_child(true);
|
||||
revealerL2->set_reveal_child(false);
|
||||
this->close_revealer();
|
||||
popoverMenuOS->show_all();
|
||||
}
|
||||
void Menu_os::event() {
|
||||
btnToLev1->signal_clicked().connect(sigc::mem_fun(*this, &Menu_os::to_l1));
|
||||
}
|
||||
void Menu_os::set_entry(Gtk::Entry *entry) {
|
||||
this->entry = entry;
|
||||
}
|
||||
void Menu_os::event_template(Gtk::Label* label, string& name_level, string& key) {
|
||||
name_level = label->get_label();
|
||||
key_global = key;
|
||||
Utils::str_remove(name_level_1, "<b>");
|
||||
Utils::str_remove(name_level_1, "</b>");
|
||||
Utils::str_remove(name_level_3, "<b>");
|
||||
Utils::str_remove(name_level_3, "</b>");
|
||||
Gtk::Revealer *revealer = map_menu_level_1[key]->revealer;
|
||||
if (&name_level == &name_level_1 && map_menu_level_1[key]->vec_menu_level_3.size() != 0) {
|
||||
revealerL1->set_reveal_child(false);
|
||||
revealerL2->set_reveal_child(true);
|
||||
this->close_revealer();
|
||||
revealer->set_reveal_child(true);
|
||||
name_level_3 = "";
|
||||
//entry->set_text(name_level_1);
|
||||
}
|
||||
else if (map_menu_level_1[key]->vec_menu_level_3.size() == 0) {
|
||||
entry->set_text(name_level_1);
|
||||
name_level_3 = "";
|
||||
popoverMenuOS->hide();
|
||||
}
|
||||
else {
|
||||
popoverMenuOS->hide();
|
||||
entry->set_text(name_level_1 + name_level_3);
|
||||
}
|
||||
}
|
||||
void Menu_os::to_l1() {
|
||||
revealerL1->set_reveal_child(true);
|
||||
revealerL2->set_reveal_child(false);
|
||||
map_menu_level_1[key_global]->revealer->set_reveal_child(false);
|
||||
key_global = "";
|
||||
}
|
||||
|
||||
void Menu_os::html_last_launched_os(string name_os, Gtk::Label *label) {
|
||||
string margin_name_os = "";
|
||||
size_t index_find = this->str_last_launched_os.find(">");
|
||||
size_t len_last_launched_os = this->str_last_launched_os.length();
|
||||
if (index_find != string::npos) {
|
||||
string level_1 = this->str_last_launched_os.substr(0, index_find + 1);
|
||||
string level_3 = this->str_last_launched_os.substr(index_find + 1, len_last_launched_os - 1);
|
||||
if (name_os == level_1) {
|
||||
margin_name_os = "<b>" + name_os + "</b>";
|
||||
label->set_markup(margin_name_os);
|
||||
}
|
||||
else if (name_os == level_3) {
|
||||
margin_name_os = "<b>" + name_os + "</b>";
|
||||
label->set_markup(margin_name_os);
|
||||
}
|
||||
else {
|
||||
label->set_text(name_os);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this->str_last_launched_os == name_os) {
|
||||
margin_name_os = "<b>" + name_os + "</b>";
|
||||
label->set_markup(margin_name_os);
|
||||
}
|
||||
else {
|
||||
label->set_text(name_os);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
#ifndef Menu_os_H
|
||||
#define Menu_os_H
|
||||
#include <gtkmm.h>
|
||||
#include <map>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include "util.h"
|
||||
using namespace std;
|
||||
|
||||
class Menu_os
|
||||
{
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
vector<tuple<string, vector<string>>> vec_list_os;
|
||||
|
||||
Gtk::Popover *popoverMenuOS;
|
||||
Gtk::Revealer *revealerL1;
|
||||
Gtk::Revealer *revealerL2;
|
||||
Gtk::Button *btnToLev1;
|
||||
string str_last_launched_os = "";
|
||||
private:
|
||||
string name_level_1 = "";
|
||||
string name_level_3 = "";
|
||||
string key_global = "";
|
||||
Gtk::Entry *entry;
|
||||
string path_glade = "";
|
||||
Gtk::Box *boxALLL3;
|
||||
Gtk::Box *boxLevel1;
|
||||
struct struct_menu_level_3 {
|
||||
Gtk::Button *btnToL3;
|
||||
Gtk::Label *lblToL3;
|
||||
Glib::RefPtr<Gtk::Builder> builder_level_3;
|
||||
Glib::RefPtr<Gtk::StyleContext> btnToL3_css;
|
||||
};
|
||||
struct struct_menu_level1 {
|
||||
Gtk::Label *lblRevL1;
|
||||
Gtk::Button *btnToL2AndLv3;
|
||||
Gtk::Revealer *revealer;
|
||||
Gtk::Box *boxLevel3;
|
||||
Gtk::Box *boxMenuLevel1;
|
||||
string name;
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
vector<struct struct_menu_level_3*> vec_menu_level_3;
|
||||
Glib::RefPtr<Gtk::StyleContext> btnToL2AndLv3_css;
|
||||
};
|
||||
|
||||
std::map<string, struct struct_menu_level1*> map_menu_level_1;
|
||||
|
||||
|
||||
public:
|
||||
Menu_os(/* args */);
|
||||
void set_builder(Glib::RefPtr<Gtk::Builder>& builder, string path_glade);
|
||||
void set_map(vector<tuple<string, vector<string>>> &vec_list_os);
|
||||
void init();
|
||||
void show();
|
||||
void close_revealer();
|
||||
void settings();
|
||||
void html_last_launched_os(string name_os, Gtk::Label *label);
|
||||
void set_last_launched_os(string str_last_launched_os);
|
||||
void set_entry(Gtk::Entry *entry);
|
||||
void event_template(Gtk::Label* label, string& name_level, string& key);
|
||||
void event();
|
||||
void to_l1();
|
||||
~Menu_os();
|
||||
};
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue