diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index f194fa9..bc5f9e8 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -15,6 +15,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin -fstack-clash-protection -fcf-protection -g") set(SOURCE_FILES + util.h + util.cc ubl-util-standard.h ubl-util-standard.c main.cc diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index d726f50..604b71f 100644 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -70,22 +70,42 @@ void MainWindow::settings(){ 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->add_colums(treeViewKernel, columns_Kernel); + this->add_colums(treeViewIPT, columns_IPT); + this->add_colums(treeViewOTT, columns_OTT); + this->add_cell(treeViewKernel, columns_Kernel, true, "name", "text"); } else{ boxWidgetAll->set_sensitive(false); btnLoad->set_sensitive(false); boxSave->set_sensitive(false); - imgInfo->set("/usr/share/icons/hicolor/scalable/status/warning.svg"); + imgInfo->set("/usr/share/icons/hicolor/scalable/status/ru.ublinux.ubl-settings-bootloader.warning.svg"); info_status_app("boxInfoMessError"); lblWarning->set_text(_("The program must be run as root")); } +} +void MainWindow::add_colums(Gtk::TreeView *treeView, ModelColumns *m_columns) { + treeView->append_column(_("Active"), m_columns->check_button); + treeView->append_column(_("Option"), m_columns->name); + treeView->append_column(_("Description"), m_columns->description); +} + +void MainWindow::add_cell(Gtk::TreeView *tree_view, ModelColumns *m_colum, bool flag_chk_btn, string name, string desc) { + cout << flag_chk_btn << endl; + Glib::RefPtr list_store; + list_store = Gtk::ListStore::create(*m_colum); + tree_view->set_model(list_store); + Gtk::TreeModel::Row row = *(list_store->append()); + row[m_colum->check_button] = "flag_chk_btn"; + row[m_colum->name] = name; + row[m_colum->description] = desc; } void MainWindow::get_monitor_size(){ @@ -213,7 +233,8 @@ void MainWindow::download_local_cfg(){ void MainWindow::synopsis_show() { - wrapper_system("xdg-open https://wiki.ublinux.ru/ru/home", "&"); + string cmd = "xdg-open " + string(_("https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/")) + app_name; + wrapper_system(cmd, "&"); } void MainWindow::wrapper_system(string cmd, string thread_str = "") { @@ -235,7 +256,7 @@ void MainWindow::info_status_app(string stule) { void MainWindow::info_warning_error(int mess) { if (index_error > 0) { info_status_app("boxInfoMessError"); - imgInfo->set("/usr/share/icons/hicolor/scalable/status/warning.svg"); + imgInfo->set("/usr/share/icons/hicolor/scalable/status/ru.ublinux.ubl-settings-bootloader.warning.svg"); index_error = 0; string mess_error = ""; if (mess == 0) { @@ -262,7 +283,7 @@ void MainWindow::info_warning_error(int mess) { } else { info_status_app("boxInfoMessOK"); - imgInfo->set("/usr/share/icons/hicolor/scalable/status/checked.svg"); + imgInfo->set("/usr/share/icons/hicolor/scalable/status/ru.ublinux.ubl-settings-bootloader.checked.svg"); if (mess == 0) { lblWarning->set_text(_("Local configuration downloaded successfully")); } @@ -283,7 +304,7 @@ void MainWindow::info_warning_error(int mess) { struct MainWindow::Result MainWindow::wrapper_call(string cmd) { struct Result obj_result; - string response = this->call(cmd); + string response = call(cmd); if ((response.find("(null)") == std::string::npos) && (response.length() != 0 )) { if (response.find("=") != std::string::npos) { if (response.find("\n") != std::string::npos) { @@ -317,24 +338,6 @@ struct MainWindow::Result MainWindow::wrapper_call(string cmd) { return obj_result; } -string MainWindow::call(string cmd) { - FILE *fp; - int status; - char path[PATH_MAX] = {0}; - fp = popen(cmd.c_str(), "r"); - if (fp == NULL) { - exit(1); - } - while (fgets(path, PATH_MAX, fp) != NULL) { - break; - } - status = pclose(fp); - if (status == -1) { - exit(1); - } - return path; -} - void MainWindow::log_mess_error(string &cmd){ string key = ""; if (map_cmd_error.find(cmd) != map_cmd_error.end()){ diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index e34c5fc..a070ffc 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -11,6 +11,7 @@ #include #include #include "ubl-util-standard.c" +#include "util.h" using namespace std; extern string path_app; @@ -33,6 +34,17 @@ private: class MainWindow : public Gtk::ApplicationWindow { public: + class ModelColumns : public Gtk::TreeModel::ColumnRecord { + public: + ModelColumns() {add(check_button), add(name); add(description); } + //Gtk::TreeModelColumn check_button; + Gtk::TreeModelColumn check_button; + Gtk::TreeModelColumn name; + Gtk::TreeModelColumn description; + }; + ModelColumns *columns_Kernel; + ModelColumns *columns_IPT; + ModelColumns *columns_OTT; Glib::RefPtr builder; Gtk::SpinButton *spbSecond; Gtk::Label *lblInfoSeconds; @@ -76,7 +88,6 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::TreeView *treeViewIPT; Gtk::TreeView *treeViewOTT; - private: int width; int heigh; int screen_width; @@ -91,7 +102,6 @@ class MainWindow : public Gtk::ApplicationWindow { }; std::map map_cmd_error; - public: MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder); MainWindow(Glib::RefPtr const& builder); void get_builder(); @@ -103,27 +113,20 @@ class MainWindow : public Gtk::ApplicationWindow { void fn_event_intelMax4(); void get_monitor_size(); void synopsis_show(); - string call(string cmd); + void add_cell(Gtk::TreeView *tree_view, ModelColumns *m_colum, bool flag_chk_btn, string name, string desc); 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 add_colums(Gtk::TreeView *treeView, ModelColumns *m_columns); void save_global_cfg(); void download_local_cfg(); void download_globl_cfg(); void info_status_app(string stule); void info_warning_error(int mess); int check_root(); - class ModelColumns : public Gtk::TreeModel::ColumnRecord - { - public: - ModelColumns() {add(name); add(description); } - //ModelColumns() {add(checkbox); add(name); add(description); } - //Gtk::TreeModelColumn checkbox; - Gtk::TreeModelColumn name; - Gtk::TreeModelColumn description; - }; + }; class SettingsPlug : public Gtk::Plug{ diff --git a/source/util.cc b/source/util.cc new file mode 100644 index 0000000..a69dbaa --- /dev/null +++ b/source/util.cc @@ -0,0 +1,41 @@ +#include "util.h" + +std::array, 2> read_csv(const std::string& filename) { + std::array, 2> array_vectors; + std::vector vec_option; + std::vector vec_opcision; + std::ifstream file(filename); + std::string line; + char delimiter = ','; + getline(file, line); + while (std::getline(file, line)) { + std::stringstream stream(line); + std::string option; + std::string opcision; + getline(stream, option, delimiter); + getline(stream, opcision, delimiter); + vec_option.push_back(option); + vec_opcision.push_back(opcision); + } + array_vectors[0] = vec_option; + array_vectors[1] = vec_opcision; + return array_vectors; +} + +std::string call(std::string cmd) { + FILE *fp; + int status; + char path[PATH_MAX] = {0}; + fp = popen(cmd.c_str(), "r"); + if (fp == NULL) { + exit(1); + } + while (fgets(path, PATH_MAX, fp) != NULL) { + break; + } + status = pclose(fp); + if (status == -1) { + exit(1); + } + return path; +} \ No newline at end of file diff --git a/source/util.h b/source/util.h new file mode 100644 index 0000000..10ba8ce --- /dev/null +++ b/source/util.h @@ -0,0 +1,13 @@ +#include +#include +#include +#include +#include +#include +#include +#include + + + +std::array, 2> read_csv(const std::string& filename); +std::string call(std::string cmd); \ No newline at end of file diff --git a/ubl-settings-bootloader_ru.po b/ubl-settings-bootloader_ru.po index 73942b1..f60bd05 100644 --- a/ubl-settings-bootloader_ru.po +++ b/ubl-settings-bootloader_ru.po @@ -16,6 +16,18 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Active" +msgstr "Активно" + +msgid "Option" +msgstr "Опция" + +msgid "Description" +msgstr "Описание" + +msgid "https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/" +msgstr "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/" + msgid "Configuring the boot loader settings" msgstr "Настройка параметров загрузчика системы"