From 3f24feac67910f163a6214b6c45654d68255c089 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 24 Mar 2023 17:53:51 +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=D1=8B=20=D0=B4=D0=B5=D0=B9=D1=81=D1=82=D0=B2=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20treeview=20=D0=BD=D0=B0=20CheckButton?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- boot-options.csv | 28 ++++----- input-options.csv | 12 ++-- output-options.csv | 12 ++-- source/ubl-settings-bootloader.cc | 95 +++++++++++++++++++------------ source/ubl-settings-bootloader.h | 26 +++++---- source/util.cc | 23 ++++++-- source/util.h | 2 +- 7 files changed, 120 insertions(+), 78 deletions(-) diff --git a/boot-options.csv b/boot-options.csv index 1aba2df..775d901 100644 --- a/boot-options.csv +++ b/boot-options.csv @@ -1,14 +1,14 @@ -Option,Description -quiet,Downloading without text messages -splash,Show welcome window -noplymouth,Disable Plymouth -acpi=off,Disable ACPI -noapic,Disable APIC -nolapic,Disable local APIC -single,Single User Mode -nomodeset,Disable kernel selection and loading of video drivers -915.enable_dc=0,Disable GPU power management -ahci.mobile_lpm_policy=1,"Maximum performance, power management" -snd-intel-dspcfg.dsp_driver=1,Forced selection of an Intel sound device driver -intel_idle.max_cstate=1,Prevents the processor from going into a deep sleep state -intel_idle.max_cstate=4,Eliminates flickering laptop display on Ultra Voltage processors +Get,Set=1,Set=0,Option,Description +cmd_get,cmd_true,cmd_false,quiet,Downloading without text messages +cmd_get,cmd_true,cmd_false,splash,Show welcome window +cmd_get,cmd_true,cmd_false,noplymouth,Disable Plymouth +cmd_get,cmd_true,cmd_false,acpi=off,Disable ACPI +cmd_get,cmd_true,cmd_false,noapic,Disable APIC +cmd_get,cmd_true,cmd_false,nolapic,Disable local APIC +cmd_get,cmd_true,cmd_false,single,Single User Mode +cmd_get,cmd_true,cmd_false,nomodeset,Disable kernel selection and loading of video drivers +cmd_get,cmd_true,cmd_false,915.enable_dc=0,Disable GPU power management +cmd_get,cmd_true,cmd_false,ahci.mobile_lpm_policy=1,"Maximum performance, power management" +cmd_get,cmd_true,cmd_false,snd-intel-dspcfg.dsp_driver=1,Forced selection of an Intel sound device driver +cmd_get,cmd_true,cmd_false,intel_idle.max_cstate=1,Prevents the processor from going into a deep sleep state +cmd_get,cmd_true,cmd_false,intel_idle.max_cstate=4,Eliminates flickering laptop display on Ultra Voltage processors diff --git a/input-options.csv b/input-options.csv index 4bd7f47..ecd672e 100644 --- a/input-options.csv +++ b/input-options.csv @@ -1,6 +1,6 @@ -Option,Description -console,PC BIOS & EFI console -serial,Serial terminal -ofconsole,Open Firmware Console -at_keyboard,PC AT Keyboard (Coreboot) -usb_keyboard,USB Keyboard (HID Boot protocol) +Get,Set=1,Set=0,Option,Description +cmd_get,cmd_true,cmd_false,console,PC BIOS & EFI console +cmd_get,cmd_true,cmd_false,serial,Serial terminal +cmd_get,cmd_true,cmd_false,ofconsole,Open Firmware Console +cmd_get,cmd_true,cmd_false,at_keyboard,PC AT Keyboard (Coreboot) +cmd_get,cmd_true,cmd_false,usb_keyboard,USB Keyboard (HID Boot protocol) diff --git a/output-options.csv b/output-options.csv index 30453d6..ce2342f 100644 --- a/output-options.csv +++ b/output-options.csv @@ -1,6 +1,6 @@ -Option,Description -console,PC BIOS & EFI console -serial,Serial terminal -ofconsole,Open Firmware Console -gfxterm,Output in graphical mode -vga_text,VGA text output (Coreboot) +Get,Set=1,Set=0,Option,Description +cmd_get,cmd_true,cmd_false,console,PC BIOS & EFI console +cmd_get,cmd_true,cmd_false,serial,Serial terminal +cmd_get,cmd_true,cmd_false,ofconsole,Open Firmware Console +cmd_get,cmd_true,cmd_false,gfxterm,Output in graphical mode +cmd_get,cmd_true,cmd_false,vga_text,VGA text output (Coreboot) diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index ca98efc..c741732 100644 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -70,13 +70,12 @@ void MainWindow::settings(){ this->get_builder(); this->localization(); this->add_CSS(); - this->event(); - btnBoxAboutDialog->set_visible(false); ubl_make_plugs(boxSave,boxButton, socket_ext_id_I, socket_trd_id_I); if (this->check_root() == 0) { this->fill_in_view(); + this->event(); } else{ @@ -90,57 +89,76 @@ void MainWindow::settings(){ } void MainWindow::fill_in_view() { - list_store_kernel = Gtk::ListStore::create(columns_kernel); - list_store_IPT = Gtk::ListStore::create(columns_IPT); - list_store_OTT = Gtk::ListStore::create(columns_OTT); + list_store_kernel = Gtk::ListStore::create(m_columns); + list_store_IPT = Gtk::ListStore::create(m_columns); + list_store_OTT = Gtk::ListStore::create(m_columns); treeViewKernel->set_model(list_store_kernel); treeViewIPT->set_model(list_store_IPT); treeViewOTT->set_model(list_store_OTT); - Gtk::TreeModel::Row row_kernel = *(list_store_kernel->append()); - Gtk::TreeModel::Row row_IPT = *(list_store_IPT->append()); - Gtk::TreeModel::Row row_OTT = *(list_store_OTT->append()); - - this->read_file_and_view("boot-options.csv",row_kernel, list_store_kernel , columns_kernel); - this->read_file_and_view("input-options.csv",row_IPT, list_store_IPT , columns_IPT); - this->read_file_and_view("output-options.csv", row_OTT, list_store_OTT , columns_OTT); - - this->view_add_colums(*treeViewKernel, columns_kernel); - this->view_add_colums(*treeViewIPT, columns_IPT); - this->view_add_colums(*treeViewOTT, columns_OTT); + this->read_file_and_view("boot-options.csv", row_kernel, list_store_kernel); + this->read_file_and_view("input-options.csv", row_IPT, list_store_IPT); + this->read_file_and_view("output-options.csv", row_OTT, list_store_OTT); + this->view_add_colums(*treeViewKernel); + this->view_add_colums(*treeViewIPT); + this->view_add_colums(*treeViewOTT); } -void MainWindow::read_file_and_view(string file_name ,Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m , ModelColumns &m_colum) { - count_append_cell = 0; - std::array, 2> arr_view = read_csv(path_resources + "/" + file_name); - std::vector vec_Option = arr_view[0]; - std::vector vec_Description = arr_view[1]; + +void MainWindow::item_selected(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator&) +{ + const auto iter = list_store_kernel->get_iter(path); + if(iter) { + const auto row = *iter; + Glib::ustring cmd; + bool check_btn = row[m_columns.check_button]; + if (check_btn) { + cmd = row[m_columns.cmd_set_true]; + + } + else { + cmd = row[m_columns.cmd_set_false]; + + } + Glib::ustring name = row[m_columns.name]; + cout << cmd << " " << name << endl; + cmd_selection_global[name] = cmd; + } +} + +void MainWindow::item_selected_row_changed(const Gtk::TreeModel::Path &, const Gtk::TreeModel::iterator &) { + cout << "item selected" << endl; +} + +void MainWindow::read_file_and_view(string file_name ,Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m) { + std::array, 5> arr_view = read_csv(path_resources + "/" + file_name); + std::vector vec_Option = arr_view[3]; + std::vector vec_Description = arr_view[4]; for (size_t index = 0; index < vec_Option.size(); index++) { - string str_option = _(vec_Option[index].c_str()); - string str_description = _(vec_Description[index].c_str()); - this->view_add_cell(row, list_store_m , m_colum, true, str_option, str_description); + + this->view_add_cell(row, list_store_m , arr_view, index); } } -void MainWindow::view_add_colums(Gtk::TreeView &treeView, ModelColumns &m_columns) { - treeView.append_column(_("Active"), m_columns.check_button); +void MainWindow::view_add_colums(Gtk::TreeView &treeView) { + treeView.append_column_editable(_("Active"), m_columns.check_button); treeView.append_column(_("Option"), m_columns.name); treeView.append_column(_("Description"), m_columns.description); - } -void MainWindow::view_add_cell(Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m , ModelColumns &m_colum, bool flag_chk_btn, string name, string desc) { - ; - if (count_append_cell != 0) { - row = *(list_store_m->append()); - } - row[m_colum.check_button] = flag_chk_btn; - row[m_colum.name] = name; - row[m_colum.description] = desc; +void MainWindow::view_add_cell(Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m , std::array, 5> &arr_view , size_t index) { + row = *(list_store_m->append()); + bool flag_chb = true; + row[m_columns.cmd_get] = arr_view[0][index]; + row[m_columns.cmd_set_true] = arr_view[1][index]; + row[m_columns.cmd_set_false] = arr_view[2][index]; + row[m_columns.check_button] = flag_chb; + row[m_columns.name] = _(arr_view[3][index].c_str()); + row[m_columns.description] = _(arr_view[4][index].c_str()); - count_append_cell += 1; + } @@ -245,6 +263,11 @@ void MainWindow::event(){ btnSaveLocalGlob->signal_activate().connect([&]() {save_global_local_cfg();}); btnSaveLocal->signal_activate().connect([&]() {save_local_cfg();}); btnSaveGlob->signal_activate().connect([&]() {save_global_cfg();}); + //TreeView_TreeSelection = treeViewKernel->get_selection(); + //TreeView_TreeSelection->signal_changed().connect(sigc::mem_fun(treeViewKernel, &MainWindow::item_selected) ); + Glib::RefPtr treeViewKernelModel = treeViewKernel->get_model(); + treeViewKernelModel->signal_row_changed().connect(sigc::mem_fun(*this, &MainWindow::item_selected)); + } void MainWindow::save_global_local_cfg(){ diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index 68721fa..5dc222b 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -10,6 +10,7 @@ #include #include #include +#include #include "ubl-util-standard.c" #include "util.h" using namespace std; @@ -36,15 +37,16 @@ class MainWindow : public Gtk::ApplicationWindow { public: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: - ModelColumns() {add(check_button), add(name); add(description); } + ModelColumns() {add(cmd_get),add(cmd_set_true),add(cmd_set_false),add(check_button), add(name); add(description); } //Gtk::TreeModelColumn check_button; + Gtk::TreeModelColumn cmd_get; + Gtk::TreeModelColumn cmd_set_true; + Gtk::TreeModelColumn cmd_set_false; Gtk::TreeModelColumn check_button; Gtk::TreeModelColumn name; Gtk::TreeModelColumn description; }; - ModelColumns columns_kernel; - ModelColumns columns_IPT; - ModelColumns columns_OTT; + ModelColumns m_columns; Glib::RefPtr builder; Gtk::SpinButton *spbSecond; Gtk::Label *lblInfoSeconds; @@ -88,17 +90,17 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::TreeView *treeViewIPT; Gtk::TreeView *treeViewOTT; - Gtk::TreeModel::Row row_kernel; - Gtk::TreeModel::Row row_IPT; - Gtk::TreeModel::Row row_OT; Glib::RefPtr list_store_kernel; Glib::RefPtr list_store_IPT; Glib::RefPtr list_store_OTT; + Gtk::TreeModel::Row row_kernel; + Gtk::TreeModel::Row row_IPT; + Gtk::TreeModel::Row row_OTT; + std::map cmd_selection_global; int width; int heigh; int screen_width; int screen_hight; - int count_append_cell = 0; string version_application = "1.0"; int index_error = 0; string str_cmd_error = ""; @@ -120,21 +122,23 @@ class MainWindow : public Gtk::ApplicationWindow { void fn_event_intelMax4(); void get_monitor_size(); void synopsis_show(); - void view_add_cell(Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m , ModelColumns &m_colum, bool flag_chk_btn, string name, string desc); + void view_add_cell(Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m , std::array, 5> &arr_view, size_t index); void wrapper_system(string cmd, string thread_str); struct Result wrapper_call(string cmd); void log_mess_error(string &cmd); void save_global_local_cfg(); void save_local_cfg(); - void view_add_colums(Gtk::TreeView &treeView, ModelColumns &m_columns); + void view_add_colums(Gtk::TreeView &treeView); void save_global_cfg(); - void read_file_and_view(string file_name ,Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m , ModelColumns &m_colum); + void read_file_and_view(string file_name ,Gtk::TreeModel::Row &row, Glib::RefPtr list_store_m); void download_local_cfg(); void download_globl_cfg(); void info_status_app(string stule); void info_warning_error(int mess); int check_root(); void fill_in_view(); + void item_selected(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator&); + void item_selected_row_changed(const Gtk::TreeModel::Path &, const Gtk::TreeModel::iterator &); }; diff --git a/source/util.cc b/source/util.cc index a69dbaa..501cb80 100644 --- a/source/util.cc +++ b/source/util.cc @@ -1,7 +1,10 @@ #include "util.h" -std::array, 2> read_csv(const std::string& filename) { - std::array, 2> array_vectors; +std::array, 5> read_csv(const std::string& filename) { + std::array, 5> array_vectors; + std::vector vec_cmd_get; + std::vector vec_cmd_set_true; + std::vector vec_cmd_set_false; std::vector vec_option; std::vector vec_opcision; std::ifstream file(filename); @@ -10,15 +13,27 @@ std::array, 2> read_csv(const std::string& filename) { getline(file, line); while (std::getline(file, line)) { std::stringstream stream(line); + std::string cmd_get; + std::string cmd_set_true; + std::string cmd_set_false; std::string option; std::string opcision; + getline(stream, cmd_get, delimiter); + getline(stream, cmd_set_true, delimiter); + getline(stream, cmd_set_false, delimiter); getline(stream, option, delimiter); getline(stream, opcision, delimiter); + vec_cmd_get.push_back(cmd_get); + vec_cmd_set_true.push_back(cmd_set_true); + vec_cmd_set_false.push_back(cmd_set_false); vec_option.push_back(option); vec_opcision.push_back(opcision); } - array_vectors[0] = vec_option; - array_vectors[1] = vec_opcision; + array_vectors[0] = vec_cmd_get; + array_vectors[1] = vec_cmd_set_true; + array_vectors[2] = vec_cmd_set_false; + array_vectors[3] = vec_option; + array_vectors[4] = vec_opcision; return array_vectors; } diff --git a/source/util.h b/source/util.h index 10ba8ce..e7c6db1 100644 --- a/source/util.h +++ b/source/util.h @@ -9,5 +9,5 @@ -std::array, 2> read_csv(const std::string& filename); +std::array, 5> read_csv(const std::string& filename); std::string call(std::string cmd); \ No newline at end of file