diff --git a/source/load.cc b/source/load.cc index 200c4b3..77873dc 100644 --- a/source/load.cc +++ b/source/load.cc @@ -1,21 +1,16 @@ #include "load.h" namespace Lib_Load{ - void Load::set_sections(string sections){ - this->sections = sections; - } void Load::set_count_error(int count_error) { process.set_count_error(count_error); } string Load::get_cmd_error() { return process.get_cmd_error(); } - map& Load::get_load_data(std::map &map_temp, string str_flag_load) { - string cmd = ""; + map& Load::get_load_data(std::map &map_temp, string cmd) { string response = ""; string key = ""; string value = ""; - cmd = "ubconfig --default --source " + str_flag_load + " get " + this->sections; response = process.call_all_sections(cmd); vector vec_str_key_value = Utils::split(response, '\n'); for (const string ¶m: vec_str_key_value) { @@ -36,4 +31,4 @@ namespace Lib_Load{ return process.get_count_error(); } -} +} \ No newline at end of file diff --git a/source/load.h b/source/load.h index 26aaf96..b4d4a38 100644 --- a/source/load.h +++ b/source/load.h @@ -9,7 +9,6 @@ namespace Lib_Load{ string sections; My_Process::My_Process_call process = My_Process::My_Process_call(); public: - void set_sections(string sections); int get_count_error(); void set_count_error(int count_error); string get_cmd_error(); diff --git a/source/save.cc b/source/save.cc index 7134507..c824093 100644 --- a/source/save.cc +++ b/source/save.cc @@ -107,93 +107,45 @@ void Save::save(string sections, string str_flag_save) { } } -void Save::save_all(string sections, string str_flag_save) { +void Save::save_one_cmd(string cmd1, string cmd_remove, string str_flag_save) { string key = ""; string value = ""; - string cmd_all = "ubconfig --target " + str_flag_save + " set " + sections; - size_t len_start_cmd_all = cmd_all.length(); - string str_error = ""; - this->flag_no_save = true; string cmd = ""; - string cmd_remove = ""; + this->flag_no_save = true; + cmd = cmd1; + string remove = cmd_remove; for (const auto &key: *vec_param_names) { if (map_gui->find(key) != map_gui->end()) { value = (*map_gui)[key]; if (this->check_save(str_flag_save, key)) { if (value.length() != 0) { - cmd_all += " " + key + "=\"" + value + "\""; + cmd = cmd + key + "=\"" + value + "\" "; } else if (value.length() == 0) { - cmd = "ubconfig --target " + str_flag_save + " remove " + sections + " " + key; - } - else { - cmd = ""; - } - if (cmd.length() != 0) { - process.call(cmd, ""); - this->flag_no_save = false; - str_error = process.get_cmd_error(); - if (str_error.length() != 0) { - this->vec_errors.push_back(str_error); - str_error = ""; - } + remove = remove + key + " "; } + } } - } - if (len_start_cmd_all != cmd_all.length()) { - process.call(cmd, ""); - this->flag_no_save = false; - str_error = process.get_cmd_error(); - if (str_error.length() != 0) { - this->vec_errors.push_back(str_error); - str_error = ""; - } + if (cmd.length() != cmd1.length()) { + this->template_save(cmd); + } + if (cmd_remove.length() != remove.length()) { + this->template_save(remove); } } -void Save::save_all_1(string sections, string str_flag_save) { - string key = ""; - string value = ""; - string cmd_all = "ubconfig --target " + str_flag_save + " set " + sections; - size_t len_start_cmd_all = cmd_all.length(); + +void Save::template_save(string cmd) { string str_error = ""; - this->flag_no_save = true; - string cmd = ""; - string cmd_remove = ""; - for (const auto &iter: (*map_gui)) { - value = iter.second; - key = iter.first; - if (this->check_save(str_flag_save, key)) { - if (value.length() != 0) { - cmd_all += " " + key + "=\"" + value + "\""; - } - else if (value.length() == 0) { - cmd = "ubconfig --target " + str_flag_save + " remove " + sections + " " + key; - } - else { - cmd = ""; - } - if (cmd.length() != 0) { - process.call(cmd, ""); - this->flag_no_save = false; - str_error = process.get_cmd_error(); - if (str_error.length() != 0) { - this->vec_errors.push_back(str_error); - str_error = ""; - } - } - } - - } - if (len_start_cmd_all != cmd_all.length()) { - process.call(cmd, ""); - this->flag_no_save = false; - str_error = process.get_cmd_error(); - if (str_error.length() != 0) { - this->vec_errors.push_back(str_error); - str_error = ""; - } + process.call(cmd, ""); + this->flag_no_save = false; + str_error = process.get_cmd_error(); + if (str_error.length() != 0) { + this->vec_errors.push_back(str_error); + str_error = ""; } + } + } diff --git a/source/save.h b/source/save.h index b5ed023..d6c8c04 100644 --- a/source/save.h +++ b/source/save.h @@ -1,33 +1,33 @@ -#ifndef SAVE_H -#define SAVE_H +#ifndef MY_SAVE_H +#define MY_SAVE_H #include "my_process.h" -#include "project_lib.h" namespace Lib_save { class Save { - private: - std::map *map_global; - std::map *map_local; - std::map *map_gui; - vector vec_errors; - vector* vec_param_names; - My_Process::My_Process_system process = My_Process::My_Process_system(); - bool flag_no_save; - public: - void set_data_global(std::map &map_global); - void set_data_local(std::map &map_local); - void set_data_gui(std::map &map_gui); - bool check_save(string flag_save, string key_name); - bool get_state_save(); - int get_count_error(); - string get_cmd_error(); - void save_all(string sections, string str_flag_save); - void save_all_1(string sections, string str_flag_save); - void set_count_error(int count_error); - void set_vec_params(vector& vec_param_names); - void save(string sections, string str_flag_save) ; - vector get_error(); +private: + std::map *map_global; + std::map *map_local; + std::map *map_gui; + vector vec_errors; + vector* vec_param_names; + My_Process::My_Process_system process = My_Process::My_Process_system(); + bool flag_no_save; + void template_save(string cmd); +public: + void set_data_global(std::map &map_global); + void set_data_local(std::map &map_local); + void set_data_gui(std::map &map_gui); + bool check_save(string flag_save, string key_name); + bool get_state_save(); + + void save_one_cmd(string cmd1, string cmd_remove, string str_flag_save); + int get_count_error(); + string get_cmd_error(); + void set_count_error(int count_error); + void set_vec_params(vector& vec_param_names); + void save(string sections, string str_flag_save) ; + vector get_error(); }; } #endif \ No newline at end of file diff --git a/source/ubl-settings-diskquota.cc b/source/ubl-settings-diskquota.cc index c5f36d5..e335c66 100755 --- a/source/ubl-settings-diskquota.cc +++ b/source/ubl-settings-diskquota.cc @@ -30,7 +30,6 @@ void MainWindow::settings() { map_device = obj_device.get_parted(); this->filling_device_combo_box_template(groupsDeviceCombo, map_device); this->filling_device_combo_box_template(usersDeviceCombo, map_device); - this->filling_device_combo_box_template(quotegroupDeviceCombo, map_device); this->init_tree_view(); this->init_spin_all(); check_limit(quotegroupSizeSoftLimitCheck @@ -47,6 +46,17 @@ void MainWindow::settings() { ,quotegroupFilesHarLimitLabel); obj_quotas_sys.set_map_gui(map_gui_cfg); obj_quotas_ubconfig.set_map_gui(map_gui_cfg); + filtersNameFilterCheckbox->set_active(true); + filtersQuotasFilterCheckbox->set_active(true); + filtersSizeFilterCheckbox->set_active(true); + filtersSoftSizeFilterCheckbox->set_active(true); + filtersHardSizeFilterCheckbox->set_active(true); + filtersHardSizeDelayFilterCheckbox->set_active(true); + filtersFilesFilterCheckbox->set_active(true); + filtersSoftFilesFilterCheckbox->set_active(true); + filtersHardFilesFilterCheckbox->set_active(true); + filtersHardFilesDelayFilterCheckbox->set_active(true); + #ifdef WEBKIT_FOUND one = WEBKIT_WEB_VIEW( webkit_web_view_new() ); three = Glib::wrap(GTK_WIDGET(one)); @@ -187,7 +197,6 @@ void MainWindow::lacalization() { headerAboutTopic->set_label(_(app_name)); headerTopic->set_label(name_app); UsersTabLabel->set_text(str_users); - generalGroupsSizeLabel->set_text(str_excess_size_delay); generalGroupsFilesLabel->set_text(str_excess_files_delay); generalUsersSizeLabel->set_text(str_excess_size_delay); generalUsersFilesLabel->set_text(str_excess_files_delay); @@ -222,9 +231,6 @@ void MainWindow::lacalization() { filtersSoftFilesFilterCheckbox->set_label(str_soft_restriction_files); filtersHardFilesFilterCheckbox->set_label(str_severe_limitation_files); filtersHardFilesDelayFilterCheckbox->set_label(str_deferring_limit_files); - quotegroupDeviceLabel->set_text(str_device); - quotegroupDiskQuotasLabel->set_text(str_disk_quotas_device); - quotegroupGroupQuotasLabel->set_text(str_group_quotas_device); quotegroupSizeFrameLabel->set_text(str_size); quotegroupFilesFrameLabel->set_text(str_files); quotegroupSizeCurrentlyLabel->set_text(str_currently_using); @@ -233,7 +239,6 @@ void MainWindow::lacalization() { quoteFilesHardLimitLabel->set_text(str_hard_limit); quotegroupFilesSoftLimitLabel->set_text(str_soft_limit); quotegroupFilesCurrentlyLabel->set_text(str_currently_using); - quotegroupFileSystemLabel->set_text(str_file_system); btnLoadGlob->set_label(load_global); btnLoadLocal->set_label(load_local); btnAbout->set_label(str_about_1); @@ -346,7 +351,6 @@ void MainWindow::get_builder() { builder->get_widget("generalTabLabel", generalTabLabel); builder->get_widget("GroupsTabLabel", GroupsTabLabel); builder->get_widget("UsersTabLabel", UsersTabLabel); - builder->get_widget("generalGroupsSizeLabel", generalGroupsSizeLabel); builder->get_widget("generalGroupsFilesLabel", generalGroupsFilesLabel); builder->get_widget("generalUsersSizeLabel", generalUsersSizeLabel); builder->get_widget("generalUsersFilesLabel", generalUsersFilesLabel); @@ -394,10 +398,6 @@ void MainWindow::get_builder() { builder->get_widget("GroupsTabLabel", GroupsTabLabel); builder->get_widget("groupsQuotasTree", groupsQuotasTree); builder->get_widget("usersQuotasTree", usersQuotasTree); - builder->get_widget("quotegroupDeviceLabel", quotegroupDeviceLabel); - builder->get_widget("quotegroupFileSystemLabel", quotegroupFileSystemLabel); - builder->get_widget("quotegroupDiskQuotasLabel", quotegroupDiskQuotasLabel); - builder->get_widget("quotegroupGroupQuotasLabel", quotegroupGroupQuotasLabel); builder->get_widget("quotegroupSizeFrameLabel", quotegroupSizeFrameLabel); builder->get_widget("quotegroupFilesFrameLabel", quotegroupFilesFrameLabel); builder->get_widget("quotegroupSizeCurrentlyLabel", quotegroupSizeCurrentlyLabel); @@ -431,7 +431,6 @@ void MainWindow::get_builder() { builder->get_widget("generalUsersFilesHoursSpin", generalUsersFilesHoursSpin); builder->get_widget("generalUsersSizeMinuteSpin", generalUsersSizeMinuteSpin); builder->get_widget("generalUsersFilesMinutesSpin", generalUsersFilesMinutesSpin); - builder->get_widget("lblEditWndFsys", lblEditWndFsys); builder->get_widget("quotegroupSizeSoftLimitCheck", quotegroupSizeSoftLimitCheck); builder->get_widget("quotegroupSizeHardLimitCheck", quotegroupSizeHardLimitCheck); builder->get_widget("quotegroupFilesSoftLimitCheck", quotegroupFilesSoftLimitCheck); @@ -445,7 +444,6 @@ void MainWindow::get_builder() { builder->get_widget("quotegroupFilesHardLimitSpin", quotegroupFilesHardLimitSpin); builder->get_widget("quotegroupSaveButton", quotegroupSaveButton); builder->get_widget("quotegroupCancelButton", quotegroupCancelButton); - builder->get_widget("quotegroupDeviceCombo", quotegroupDeviceCombo); builder->get_widget("GeneralQuotasTree", GeneralQuotasTree); builder->get_widget("ProjectQuotasTree", ProjectQuotasTree); builder->get_widget("ProjectTabLabel", ProjectTabLabel); @@ -471,6 +469,9 @@ void MainWindow::get_builder() { builder->get_widget("btnAddGroups", btnAddGroups); builder->get_widget("btnAddUsers", btnAddUsers); builder->get_widget("btnAddProject", btnAddProject); + builder->get_widget("btnEditProject", btnEditProject); + builder->get_widget("btnEditUsers", btnEditUsers); + builder->get_widget("btnEditGroups", btnEditGroups); } @@ -490,7 +491,6 @@ void MainWindow::event() { btnSaveGlob->signal_activate().connect([&]() {this->wrapper_save_global_cfg();}); btnSaveLocal->signal_activate().connect([&]() {this->wrapper_save_system_cfg();}); chbMangSystemFile->signal_toggled().connect([&]() {this->mode_switch_quota();}); - quotegroupDeviceCombo->signal_changed().connect([&]() {entry_combo_box_temp(quotegroupDeviceCombo, lblEditWndFsys);}); quotegroupSizeSoftLimitCheck->signal_toggled().connect([&]() { check_limit(quotegroupSizeSoftLimitCheck ,quotegroupSizeSoftLimitSpin @@ -531,8 +531,26 @@ void MainWindow::event() { btnAddGroups->signal_clicked().connect( sigc::bind, struct tv_g_u_p> (sigc::mem_fun( *this, &MainWindow::set_add_tv_g_u_p), row, list_store_groups, obj_tv_g_u_p)); - - + + filtersNameFilterCheckbox->signal_toggled().connect(sigc::mem_fun( *this, + &MainWindow::del_columns)); + // btnEditProject->signal_clicked().connect(); + // btnEditUsers->signal_clicked().connect(); + // btnEditGroups->signal_clicked().connect(); +} + +/* +void MainWindow::set_tree_view(Gtk::TreeView *tree_view, Glib::RefPtr* list_store, bool& flag_validate_del) { + if (flag_validate_del && (*list_store)->iter_is_valid(*(iter))) { + Gtk::TreeModel::Row row = *(*iter); + if (row) { + row[m_columns.name] = + } + } +} +*/ +void MainWindow::del_columns() { + //std::vector vec_columns = tree_view_select->get_columns(); } void MainWindow::remove_template(Glib::RefPtr* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate_del) { @@ -576,76 +594,6 @@ void MainWindow::mode_switch_quota() { } } -void MainWindow::wrapper_settings_quotas_temp(string save_user_or_group) { - struct partition_cmd _struct_partition_cmd = this->wrapper_settings_quotas(); - string device = _struct_partition_cmd.device; - string cmd = _struct_partition_cmd.cmd; - string type_quotas = save_user_or_group; - string user = ""; - struct struct_quotas _struct_quota; - _struct_quota.device = device; - _struct_quota.cmd = cmd; - _struct_quota.type_quotas = type_quotas; - _struct_quota.name = user; - obj_quotas_ubconfig.format_cmd_quotas(_struct_quota); -} - -void MainWindow::save_quotegroupSaveButton() { - if (sys_or_ubconfig == "ubconfig") { - if (save_user_or_group == "usrquota") { - this->wrapper_settings_quotas_temp(save_user_or_group); - } - else { - this->wrapper_settings_quotas_temp(save_user_or_group); - } - } - else { - if (save_user_or_group == "usrquota") { - - } - else { - - } - } -} - -struct partition_cmd MainWindow::wrapper_settings_quotas() { - string str_parted = quotegroupDeviceCombo->get_active_text(); - string value = ""; - if (quotegroupSizeSoftLimitCheck->get_active()) { - value = Utils::format_str_size(quotegroupSizeSoftLimitSpin->get_value(), quotegroupSizeSoftLimitCombo->get_active_row_number()); - value += ":"; - } - else { - value += "0:"; - } - if (quotegroupSizeHardLimitCheck->get_active()) { - value += Utils::format_str_size(quotegroupSizeHardLimitSpin->get_value(), quotegroupSizeHardLimitCombo->get_active_row_number()); - value += ":"; - } - else { - value += "0:"; - } - if (quotegroupFilesSoftLimitCheck->get_active()) { - value += to_string(quotegroupFilesSoftLimitSpin->get_value()); - value += ":"; - } - else { - value += "0:"; - } - if (quotegroupFilesHardLimitCheck->get_active()) { - value += to_string(quotegroupFilesHardLimitSpin->get_value()); - value += ":"; - } - else { - value += "0:"; - } - struct partition_cmd _struct_partition_cmd; - _struct_partition_cmd.device = str_parted; - _struct_partition_cmd.cmd = value; - return _struct_partition_cmd; -} - void MainWindow::filters_show() { FiltersWindow->show_all(); } @@ -707,13 +655,13 @@ void MainWindow::wrapper_save_all_cfg() { } void MainWindow::load_global_cfg() { - this->load_template(&map_global_cfg, "global"); + this->load_template(&map_global_cfg, global_load); info_warning_error(1); map_gui_cfg = map_global_cfg; } void MainWindow::load_system_cfg() { - this->load_template(&map_system_cfg, "system"); + this->load_template(&map_system_cfg, system_load); info_warning_error(0); map_gui_cfg = map_system_cfg; } @@ -802,13 +750,15 @@ void MainWindow::init_work_tv_g_u_p() { this->view_add_columns(*usersQuotasTree); } -void MainWindow::load_template(map_str_str* map_temp, string str_load) { +void MainWindow::load_template(map_str_str* map_temp, string cmd) { this->init_work_tv_g_u_p(); - this->init_dict(str_load); - string sections; - sections = "security"; - obj_load.set_sections(sections); - *map_temp = obj_load.get_load_data(*map_temp, str_load); + if (cmd.find("system") != string::npos) { + this->init_dict("system"); + } + else { + this->init_dict("global"); + } + *map_temp = obj_load.get_load_data(*map_temp, cmd); } void MainWindow::remove_line_template(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter, Gtk::TreeModel::iterator& iter_del, bool& flag_del) { diff --git a/source/ubl-settings-diskquota.h b/source/ubl-settings-diskquota.h index 82a4d95..876f75b 100644 --- a/source/ubl-settings-diskquota.h +++ b/source/ubl-settings-diskquota.h @@ -139,6 +139,12 @@ #define path_resources "/usr/share/ubl-settings-diskquota" #define path_img_head_background "/usr/share/ubl-settings-diskquota/images/logo-background.png" #define no_recognized _("Argument not recognized\n") +#define global_load "ubconfig --default --source global get boot" +#define system_load "ubconfig --default --source system get boot" +#define global_save "ubconfig --target global set boot " +#define system_save "ubconfig --target system set boot " +#define global_remove "ubconfig --target global --noexecute set/remove boot " +#define system_remove "ubconfig --target system --noexecute set/remove boot " using namespace std; @@ -214,7 +220,6 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::Label *generalTabLabel; Gtk::Label *UsersTabLabel; Gtk::Label *GroupsTabLabel; - Gtk::Label *generalGroupsSizeLabel; Gtk::Label *generalGroupsFilesLabel; Gtk::Label *generalUsersSizeLabel; Gtk::Label *generalUsersFilesLabel; @@ -264,9 +269,6 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::TreeView *usersQuotasTree; Gtk::TreeView *ProjectQuotasTree; Gtk::TreeView *GeneralQuotasTree; - Gtk::Label *quotegroupDeviceLabel; - Gtk::Label *quotegroupFileSystemLabel; - Gtk::Label *quotegroupDiskQuotasLabel; Gtk::Label *quotegroupGroupQuotasLabel; Gtk::Label *quotegroupSizeFrameLabel; Gtk::Label *quotegroupSizeCurrentlyLabel; @@ -301,7 +303,6 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::SpinButton *generalUsersFilesHoursSpin; Gtk::SpinButton *generalUsersSizeMinuteSpin; Gtk::SpinButton *generalUsersFilesMinutesSpin; - Gtk::Label *lblEditWndFsys; Gtk::CheckButton *quotegroupSizeSoftLimitCheck; Gtk::CheckButton *quotegroupSizeHardLimitCheck; Gtk::CheckButton *quotegroupFilesSoftLimitCheck; @@ -318,7 +319,6 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::Button *btnFilterGroups; Gtk::Button *btnFilterUsers; Gtk::Button *btnFilterProject; - Gtk::ComboBoxText *quotegroupDeviceCombo; Gtk::Label *lblHeadeWndWeb; Gtk::Label *lblwebHeaderName; @@ -335,6 +335,9 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::Button* btnAddGroups; Gtk::Button* btnAddUsers; Gtk::Button* btnAddProject; + Gtk::Button* btnEditProject; + Gtk::Button* btnEditUsers; + Gtk::Button* btnEditGroups; #ifdef WEBKIT_FOUND Gtk::Window *wndWeb; Gtk::Widget *three; @@ -392,8 +395,9 @@ class MainWindow : public Gtk::ApplicationWindow { void init_tree_view(); void template_open_browser(); void open_browser(); + void del_columns(); void set_add_tv_g_u_p(Gtk::TreeModel::Row &row, Glib::RefPtr list_store, struct tv_g_u_p obj_tv_g_u_p); - void load_template(map_str_str* map_temp, string str_load); + void load_template(map_str_str* map_temp, string cmd); void info_warning_error(int mess); void off_quota_system(Gtk::ComboBoxText* combo_box, string quota_type); void wrapper_save_system_cfg(); @@ -401,6 +405,7 @@ class MainWindow : public Gtk::ApplicationWindow { void wrapper_save_all_cfg(); void init_dict(string flag_load); void set_data_cfg(); + void set_tree_view(Gtk::TreeView *tree_view, Glib::RefPtr* list_store, bool& flag_validate_del); void mode_switch_quota(); void save_quotegroupSaveButton(); void wrapper_settings_quotas_temp(string save_user_or_group); diff --git a/ubl-settings-diskquota.glade b/ubl-settings-diskquota.glade index 32bb829..bceb8ad 100644 --- a/ubl-settings-diskquota.glade +++ b/ubl-settings-diskquota.glade @@ -2991,40 +2991,28 @@ True False vertical - 5 True False - 5 - + True False - 5 - 5 - 5 - 5 - 5 - 5 Device: + 0 - False + True True 0 - + True False - 5 - 5 - 5 - 5 - 5 - 5 + label True @@ -3032,81 +3020,78 @@ 1 + + + True + True + 0 + + + + + True + False - + True False - start - 5 - 5 - 5 - 5 - 5 - 5 - File system: + Quota use status: 0 - False + True True - 2 + 0 - + True False - 5 - 5 - 5 - 5 - 5 - 5 + label - False + True True - 3 + 1 - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Disk quotas for this device: - 0 - - - False + True True 1 - + True False - 5 - 5 - 5 - 5 - 5 - 5 - Group quotas for this device: - 0 + + + True + False + UserGropProject: + 0 + + + True + True + 0 + + + + + True + False + label + + + True + True + 1 + + False