diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index 76868b9..8f0d635 100755 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -303,6 +303,22 @@ void MainWindow::localization(){ this->set_title(gettext("ubl-settings-bootloader")); } +void MainWindow::get_setting_entry_all(string cmd, Gtk::Entry &entry_text) { + struct Result res_response = this->wrapper_call(cmd); + if (res_response.error == 0) { + vector vec_cmd_kernel = split(res_response.response, ' '); + str_replace_all(res_response.response, " ", ", "); + str_replace_all(res_response.response, "\"", ""); + entry_text.set_text(res_response.response); + } + else if (res_response.error == 3) { + + } + else { + + } +} + void MainWindow::get_menu_boot(string cmd) { struct Result res_response = this->wrapper_call(cmd); @@ -333,6 +349,20 @@ void MainWindow::set_menu_boot(string cmd) { } } +void MainWindow::cmd_entry_all(string cmd_settings_kernel,string cmd_settings_IPT,string cmd_settings_OTT) { + string cmd_kernel = entryKernel->get_text(); + string cmd_IPT = entryIPT->get_text(); + string cmd_OTT = entryIPT->get_text(); + str_remove(cmd_kernel, ","); + str_remove(cmd_IPT, ","); + str_remove(cmd_OTT, ","); + cmd_settings_kernel += "\"" + cmd_kernel + "\""; + this->wrapper_call(cmd_settings_kernel); + cmd_settings_IPT += "\"" + cmd_IPT + "\""; + this->wrapper_call(cmd_settings_IPT); + cmd_settings_OTT += "\"" + cmd_OTT + "\""; + this->wrapper_call(cmd_settings_OTT); +} void MainWindow::event(){ btnSynopsis->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::synopsis_show)); btnAbout->signal_activate().connect([&]() {aboutWindows->show();}); @@ -351,16 +381,27 @@ void MainWindow::event(){ } } + + void MainWindow::save_global_local_cfg() { if (flag_save_global == false) { - flag_save_all = true; - std::string cmd_boot_time = "sudo ubconfig --default --source global get boot GRUB_TIMEOU"; + std::string cmd_boot_time = "sudo ubconfig --default --source global set boot GRUB_TIMEOUT"; this->set_menu_boot(cmd_boot_time); + string cmd_settings_kernel = "sudo ubconfig --default --source global set boot GRUB_BOOT_SILENT="; + string cmd_settings_IPT = "sudo ubconfig --default --source global set boot GRUB_TERMINAL_OUTPUT="; + string cmd_settings_OTT = "sudo ubconfig --default --source global set boot GRUB_TERMINAL_INPUT="; + this->cmd_entry_all(cmd_settings_kernel,cmd_settings_IPT,cmd_settings_OTT); + flag_save_all = true; } else if (flag_save_local == false) { - flag_save_all = true; - std::string cmd_boot_time = "sudo ubconfig --default --source system get boot GRUB_TIMEOU"; + + std::string cmd_boot_time = "sudo ubconfig --default --source system set boot GRUB_TIMEOUT"; this->set_menu_boot(cmd_boot_time); + string cmd_settings_kernel = "sudo ubconfig --default --source system set boot GRUB_BOOT_SILENT="; + string cmd_settings_IPT = "sudo ubconfig --default --source system set boot GRUB_TERMINAL_OUTPUT="; + string cmd_settings_OTT = "sudo ubconfig --default --source system set boot GRUB_TERMINAL_INPUT="; + this->cmd_entry_all(cmd_settings_kernel,cmd_settings_IPT,cmd_settings_OTT); + flag_save_all = true; } else{ info_status_app("boxInfoMessOK"); @@ -373,10 +414,14 @@ void MainWindow::save_global_local_cfg() { void MainWindow::save_global_cfg() { if (flag_save_global == false) { - flag_save_global = true; if (flag_save_all == false) { - std::string cmd_boot_time = "sudo ubconfig --default --source global get boot GRUB_TIMEOU"; + std::string cmd_boot_time = "sudo ubconfig --default --source global set boot GRUB_TIMEOUT"; this->set_menu_boot(cmd_boot_time); + string cmd_settings_kernel = "sudo ubconfig --default --source global set boot GRUB_BOOT_SILENT="; + string cmd_settings_IPT = "sudo ubconfig --default --source global set boot GRUB_TERMINAL_OUTPUT"; + string cmd_settings_OTT = "sudo ubconfig --default --source global set boot GRUB_TERMINAL_INPUT="; + this->cmd_entry_all(cmd_settings_kernel,cmd_settings_IPT,cmd_settings_OTT); + flag_save_global = true; } } else{ @@ -388,10 +433,14 @@ void MainWindow::save_global_cfg() { void MainWindow::save_local_cfg() { if (flag_save_local == false) { - flag_save_local = true; if (flag_save_all == false) { - std::string cmd_boot_time = "sudo ubconfig --default --source system get boot GRUB_TIMEOU"; + std::string cmd_boot_time = "sudo ubconfig --default --source system set boot GRUB_TIMEOUT"; this->set_menu_boot(cmd_boot_time); + string cmd_settings_kernel = "sudo ubconfig --default --source system set boot GRUB_BOOT_SILENT="; + string cmd_settings_IPT = "sudo ubconfig --default --source system set boot GRUB_TERMINAL_OUTPUT"; + string cmd_settings_OTT = "sudo ubconfig --default --source system set boot GRUB_TERMINAL_INPUT="; + this->cmd_entry_all(cmd_settings_kernel,cmd_settings_IPT,cmd_settings_OTT); + flag_save_local = true; } } else { @@ -405,13 +454,18 @@ void MainWindow::download_globl_cfg() { entryKernel->set_text(""); entryOTT->set_text(""); entryIPT->set_text(""); - flag_save_local = true; flag_save_global = true; flag_save_all = true; flag_load = true; - std::string cmd_boot_time = "sudo ubconfig --default --source system get boot GRUB_TIMEOU"; + std::string cmd_boot_time = "sudo ubconfig --default --source global get boot GRUB_TIMEOUT"; this->get_menu_boot(cmd_boot_time); + string cmd_kernel_entry = "sudo ubconfig --default --source global get boot GRUB_BOOT_SILENT"; + this->get_setting_entry_all(cmd_kernel_entry, *entryKernel); + string cmd_ipt_entry = "sudo ubconfig --default --source global get boot GRUB_TERMINAL_INPUT"; + this->get_setting_entry_all(cmd_ipt_entry, *entryIPT); + string cmd_opt_entry = "sudo ubconfig --default --source global get boot GRUB_TERMINAL_OUTPUT"; + this->get_setting_entry_all(cmd_opt_entry, *entryOTT); info_warning_error(1); } @@ -423,8 +477,14 @@ void MainWindow::download_local_cfg() { flag_save_local = true; flag_save_global = true; flag_save_all = true; - std::string cmd_boot_time = "sudo ubconfig --default --source global get boot GRUB_TIMEOU"; + std::string cmd_boot_time = "sudo ubconfig --default --source system get boot GRUB_TIMEOUT"; this->get_menu_boot(cmd_boot_time); + string cmd_kernel_entry = "sudo ubconfig --default --source system get boot GRUB_BOOT_SILENT"; + this->get_setting_entry_all(cmd_kernel_entry, *entryKernel); + string cmd_ipt_entry = "sudo ubconfig --default --source system get boot GRUB_TERMINAL_INPUT"; + this->get_setting_entry_all(cmd_ipt_entry, *entryIPT); + string cmd_opt_entry = "sudo ubconfig --default --source system get boot GRUB_TERMINAL_OUTPUT"; + this->get_setting_entry_all(cmd_opt_entry, *entryOTT); info_warning_error(0); } diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index 252af13..ff4377a 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -151,6 +151,8 @@ class MainWindow : public Gtk::ApplicationWindow { void info_warning_error(int mess); int check_root(); void fill_in_view(); + void get_setting_entry_all(string cmd, Gtk::Entry &entry_text); + void cmd_entry_all(string cmd_settings_kernel,string cmd_settings_IPT,string cmd_settings_OTT); string dynamic_update_entry(std::map &map_view, std::map &map_global_view, std::map &map_local_view) ; void item_selected_kernel(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator&); void item_selected_OTT(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator&); diff --git a/source/util.cc b/source/util.cc index 95a9936..22ffc0d 100644 --- a/source/util.cc +++ b/source/util.cc @@ -87,4 +87,31 @@ vector find_all(string &str_ntp, string substr) { sub_index.push_back(index); } return sub_index; +} + +void str_remove(std::string& source, std::string to_remove) { + string::size_type n = to_remove.length(); + for (string::size_type i = source.find(to_remove); + i != string::npos; + i = source.find(to_remove)) + source.erase(i, n); +} + +void str_replace_all(std::string& str_base, string str_find, string sReplacement) +{ + size_t pos = 0, fpos; + while ((fpos = str_base.find(str_find, pos)) != std::string::npos) + { + str_base.replace(fpos, str_find.size(), sReplacement); + pos = fpos + sReplacement.size(); + } +} +std::vector split(std::string text, char delim) { + std::string line; + std::vector vec; + std::stringstream ss(text); + while(std::getline(ss, line, delim)) { + vec.push_back(line); + } + return vec; } \ No newline at end of file diff --git a/source/util.h b/source/util.h index c304296..9bb331f 100644 --- a/source/util.h +++ b/source/util.h @@ -12,4 +12,7 @@ using namespace std; std::array, 5> read_csv(const std::string& filename); std::string call(std::string cmd); -vector find_all(string &str_ntp, string substr); \ No newline at end of file +vector find_all(string &str_ntp, string substr); +void str_remove(std::string& source, std::string to_remove); +void str_replace_all(string &str_base, string str_find, string str_replace); +std::vector split(std::string text, char delim); \ No newline at end of file diff --git a/ubl-settings-bootloader.desktop b/ubl-settings-bootloader.desktop index 05851e4..b279ca8 100644 --- a/ubl-settings-bootloader.desktop +++ b/ubl-settings-bootloader.desktop @@ -8,7 +8,7 @@ Comment=ubl-settings-bootloader Comment[ru]=Загрузчик Type=Application Exec=pkexec ubl-settings-bootloader -Icon=ubl-settings-bootloader +Icon=com.ublinux.ubl-settings-bootloader Terminal=false X-XfcePluggable=true X-UBLPluggable=true