From 1f0fdfee2d544a67bc24b1ecd0f8e38939254676 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 2 May 2023 11:09:20 +0600 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B2=D1=8B=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B6=D0=B8=D1=80=D0=BD=D1=8B=D0=BC=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=D1=81=D1=82=D0=BE=D0=BC=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=D0=B4=D0=BD=D0=B5=D1=8E=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D1=83=D1=8E=20=D0=9E=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/menu_os.cc | 46 ++++++++++++++++++++++++++----- source/menu_os.h | 8 +++--- source/ubl-settings-bootloader.cc | 9 ++++-- ubl-settings-bootloader.glade | 2 ++ 4 files changed, 51 insertions(+), 14 deletions(-) diff --git a/source/menu_os.cc b/source/menu_os.cc index 27bdcfa..f9b8d93 100644 --- a/source/menu_os.cc +++ b/source/menu_os.cc @@ -9,9 +9,8 @@ Menu_os::~Menu_os() { } -void Menu_os::set_bnt_save(Gtk::Button *btnSave, bool flag_save) { - this->btnSave = btnSave; - this->flag_save = flag_save; +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& builder, string path_glade) { @@ -44,9 +43,9 @@ void Menu_os::init() { 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; - map_menu_level_1[key]->lblRevL1->set_text(key); boxLevel1->pack_end(*(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 (sigc::mem_fun( *this, &Menu_os::event_template), map_menu_level_1[key]->lblRevL1, @@ -62,7 +61,7 @@ void Menu_os::init() { } size_t index_l3 = 0; - for (string& str_level_2: vec_value) { + 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", @@ -72,7 +71,7 @@ void Menu_os::init() { 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"); - map_menu_level_1[key]->vec_menu_level_3[index_l3]->lblToL3->set_text(str_level_2); + 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( @@ -108,7 +107,10 @@ void Menu_os::set_entry(Gtk::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, ""); + Utils::str_remove(name_level_1, ""); + Utils::str_remove(name_level_3, ""); + Utils::str_remove(name_level_3, ""); 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) { this->close_revealer(); @@ -134,4 +136,34 @@ void Menu_os::to_l1() { 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 = "" + name_os + ""; + label->set_markup(margin_name_os); + } + else if (name_os == level_3) { + margin_name_os = "" + name_os + ""; + label->set_markup(margin_name_os); + } + else { + label->set_text(name_os); + } + } + else { + if (this->str_last_launched_os == name_os) { + margin_name_os = "" + name_os + ""; + label->set_markup(margin_name_os); + } + else { + label->set_text(name_os); + } + } + +} diff --git a/source/menu_os.h b/source/menu_os.h index ccf84cb..c289d24 100644 --- a/source/menu_os.h +++ b/source/menu_os.h @@ -4,6 +4,7 @@ #include #include #include +#include "util.h" using namespace std; class Menu_os @@ -16,9 +17,7 @@ private: Gtk::Revealer *revealerL1; Gtk::Revealer *revealerL2; Gtk::Button *btnToLev1; - bool flag_save = false; - Gtk::Button *btnSave; - + string str_last_launched_os = ""; private: string name_level_1 = ""; string name_level_3 = ""; @@ -56,11 +55,12 @@ public: 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(); - void set_bnt_save(Gtk::Button *btnSave, bool flag_save); ~Menu_os(); }; #endif diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index e663800..486b2da 100755 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -99,14 +99,17 @@ void MainWindow::settings(){ this->str_last_launched_os = this->pars_last_launched_os(); vector os_control_list; this->pars_os(os_control_list); + this->download_local_cfg(); + this->download_globl_cfg(); std::map> map_list_os = format_os_list(os_control_list); obj_menu_os.set_builder(builder, path_glade); obj_menu_os.set_map(map_list_os); obj_menu_os.set_entry(entrListOS); + // obj_menu_os.set_last_launched_os(map_global_cmd_selection["GRUB_DEFAULT"]); + obj_menu_os.set_last_launched_os(this->str_last_launched_os); obj_menu_os.init(); obj_menu_os.event(); - this->download_local_cfg(); - this->download_globl_cfg(); + } else{ boxWidgetAll->set_sensitive(false); @@ -890,7 +893,7 @@ void MainWindow::set_data_cfg() { } string name_os = entrListOS->get_text(); if (name_os.length() != 0) { - map_cmd_selection["GRUB_DEFAULT"] = name_os; + map_cmd_selection["GRUB_DEFAULT"] = "\"" + name_os + "\""; } else { map_cmd_selection["GRUB_DEFAULT"] = ""; diff --git a/ubl-settings-bootloader.glade b/ubl-settings-bootloader.glade index 2817e1d..563022b 100644 --- a/ubl-settings-bootloader.glade +++ b/ubl-settings-bootloader.glade @@ -1332,6 +1332,8 @@ specified priority True False + start + 0 gtk-goto-first