Сделал удаление и добавление строк в treeView

pull/3/head
Igor Belitskiy 2 years ago
parent 5719eaa35b
commit e12879ccd9

@ -59,6 +59,18 @@ struct data_all_quotas {
string file_grace;
bool is_validate;
};
struct tv_g_u_p {
string name;
string quotas;
string size;
string soft_limit_size;
string hard_limit_size;
string deferring_size;
string files;
string soft_limit_files;
string hard_limit_delay;
string deferring_files;
};
typedef struct users_grups USER_GRUPS;
typedef map <string, string> map_str_str;

@ -500,8 +500,12 @@ void MainWindow::get_builder() {
builder->get_widget("btnCancelHelp", btnCancelHelp);
builder->get_widget("wndShowWeb", wndShowWeb);
builder->get_widget("chbMangSystemFile", chbMangSystemFile);
builder->get_widget("btnDelGroups", btnDelGroups);
builder->get_widget("btnDelProject", btnDelProject);
builder->get_widget("btnDelUsers", btnDelUsers);
builder->get_widget("btnAddGroups", btnAddGroups);
builder->get_widget("btnAddUsers", btnAddUsers);
builder->get_widget("btnAddProject", btnAddProject);
}
@ -520,6 +524,7 @@ void MainWindow::event() {
btnSaveLocalGlob->signal_activate().connect([&]() {this->wrapper_save_all_cfg();});
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
@ -543,6 +548,67 @@ void MainWindow::event() {
});
quotegroupCancelButton->signal_clicked().connect([&]() {QuotasEditWindow->hide();});
// QuotasEditWindow->show();
btnDelGroups->signal_clicked().connect(
sigc::bind<Glib::RefPtr<Gtk::ListStore>*, const Gtk::TreeModel::iterator*, bool&> (sigc::mem_fun( *this,
&MainWindow::remove_template), &list_store_groups, &iter_groups, flag_validate_del_groups));
btnDelUsers->signal_clicked().connect(
sigc::bind<Glib::RefPtr<Gtk::ListStore>*, const Gtk::TreeModel::iterator*, bool&> (sigc::mem_fun( *this,
&MainWindow::remove_template), &list_store_users, &iter_users, flag_validate_del_users));
btnDelProject->signal_clicked().connect(
sigc::bind<Glib::RefPtr<Gtk::ListStore>*, const Gtk::TreeModel::iterator*, bool&> (sigc::mem_fun( *this,
&MainWindow::remove_template), &list_store_project, &iter_project, flag_validate_del_project));
btnAddProject->signal_clicked().connect(
sigc::bind<Gtk::TreeModel::Row&, Glib::RefPtr<Gtk::ListStore>, struct tv_g_u_p> (sigc::mem_fun( *this,
&MainWindow::set_add_tv_g_u_p), row, list_store_project, obj_tv_g_u_p));
btnAddUsers->signal_clicked().connect(
sigc::bind<Gtk::TreeModel::Row&, Glib::RefPtr<Gtk::ListStore>, struct tv_g_u_p> (sigc::mem_fun( *this,
&MainWindow::set_add_tv_g_u_p), row, list_store_users, obj_tv_g_u_p));
btnAddGroups->signal_clicked().connect(
sigc::bind<Gtk::TreeModel::Row&, Glib::RefPtr<Gtk::ListStore>, 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));
}
void MainWindow::remove_template(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate_del) {
if (flag_validate_del && (*list_store)->iter_is_valid(*(iter))) {
Gtk::TreeModel::Row row = *(*iter);
if(row) {
string name = row[m_columns.name] + "";
// TODO:
string key = "GRUB_PASSWORD[" + name + "]";
map_gui_cfg[key] = "";
}
(*list_store)->erase((*iter));
flag_validate_del = false;
info_status_app(info_box_ok_css);
imgInfo->set_from_icon_name(icon_checked, Gtk::ICON_SIZE_MENU);
lblWarning->set_text("");
}
flag_validate_del = false;
}
void MainWindow::set_add_tv_g_u_p(Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store, struct tv_g_u_p obj_tv_g_u_p) {
row = *(list_store->append());
row[m_columns.name] = obj_tv_g_u_p.name;
row[m_columns.quotas] = obj_tv_g_u_p.quotas;
row[m_columns.size] = obj_tv_g_u_p.size;
row[m_columns.soft_limit_size] = obj_tv_g_u_p.soft_limit_size;
row[m_columns.hard_limit_size] = obj_tv_g_u_p.hard_limit_size;
row[m_columns.deferring_size] = obj_tv_g_u_p.deferring_size;
row[m_columns.files] = obj_tv_g_u_p.files;
row[m_columns.soft_limit_files] = obj_tv_g_u_p.soft_limit_files;
row[m_columns.hard_limit_delay] = obj_tv_g_u_p.hard_limit_delay;
row[m_columns.deferring_files] = obj_tv_g_u_p.deferring_files;
}
void MainWindow::mode_switch_quota() {
if (chbMangSystemFile->get_active()) {
mode_quota = "filesystem";
}
else {
mode_quota = "ubconfig";
}
}
void MainWindow::wrapper_settings_quotas_temp(string save_user_or_group) {
@ -557,7 +623,6 @@ void MainWindow::wrapper_settings_quotas_temp(string save_user_or_group) {
_struct_quota.type_quotas = type_quotas;
_struct_quota.name = user;
obj_quotas_ubconfig.format_cmd_quotas(_struct_quota);
}
void MainWindow::save_quotegroupSaveButton() {
@ -749,6 +814,31 @@ void MainWindow::wrapper_save_system_cfg() {
}
void MainWindow::load_template(map_str_str* map_temp, string str_load) {
groupsQuotasTree->remove_all_columns();
list_store_groups = Gtk::ListStore::create(m_columns);
groupsQuotasTree->set_model(list_store_groups);
ProjectQuotasTree->remove_all_columns();
list_store_project = Gtk::ListStore::create(m_columns);
ProjectQuotasTree->set_model(list_store_project);
usersQuotasTree->remove_all_columns();
list_store_users = Gtk::ListStore::create(m_columns);
usersQuotasTree->set_model(list_store_users);
this->view_add_columns(*groupsQuotasTree);
this->view_add_columns(*ProjectQuotasTree);
this->view_add_columns(*usersQuotasTree);
Glib::RefPtr<Gtk::TreeModel> groupsQuotasTreeModel = groupsQuotasTree->get_model();
groupsQuotasTreeModel->signal_row_changed().connect(sigc::bind<Gtk::TreeModel::iterator&, bool&>
(sigc::mem_fun(*this, &MainWindow::remove_line_template), iter_groups, flag_validate_del_groups));
Glib::RefPtr<Gtk::TreeModel> ProjectQuotasTreeModel = ProjectQuotasTree->get_model();
ProjectQuotasTreeModel->signal_row_changed().connect(sigc::bind<Gtk::TreeModel::iterator&, bool&>
(sigc::mem_fun(*this, &MainWindow::remove_line_template), iter_project, flag_validate_del_project));
Glib::RefPtr<Gtk::TreeModel> usersQuotasTreeModel = usersQuotasTree->get_model();
usersQuotasTreeModel->signal_row_changed().connect(sigc::bind<Gtk::TreeModel::iterator&, bool&>
(sigc::mem_fun(*this, &MainWindow::remove_line_template),iter_users, flag_validate_del_users));
this->init_dict(str_load);
string sections;
sections = "security";
@ -756,6 +846,11 @@ void MainWindow::load_template(map_str_str* map_temp, string str_load) {
*map_temp = obj_load.get_load_data(*map_temp, str_load);
}
void MainWindow::remove_line_template(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter, Gtk::TreeModel::iterator& iter_del, bool& flag_del) {
iter_del = iter;
flag_del = true;
}
void MainWindow::info_warning_error(int mess) {
if (obj_load.get_count_error() > 0 || obj_save.get_count_error() > 0) {
info_status_app(info_box_error_css);

@ -159,7 +159,7 @@ class MainWindow : public Gtk::ApplicationWindow {
add(files); add(soft_limit_files),
add(hard_limit_delay), add(deferring_files); }
Gtk::TreeModelColumn<Glib::ustring> name;
Gtk::TreeModelColumn<bool> quotas;
Gtk::TreeModelColumn<Glib::ustring> quotas;
Gtk::TreeModelColumn<Glib::ustring> size;
Gtk::TreeModelColumn<Glib::ustring> soft_limit_size;
Gtk::TreeModelColumn<Glib::ustring> hard_limit_size;
@ -346,6 +346,12 @@ class MainWindow : public Gtk::ApplicationWindow {
Gtk::Button *btnCancelHelp;
Gtk::Window *wndShowWeb;
Gtk::CheckMenuItem *chbMangSystemFile;
Gtk::Button* btnDelGroups;
Gtk::Button* btnDelProject;
Gtk::Button* btnDelUsers;
Gtk::Button* btnAddGroups;
Gtk::Button* btnAddUsers;
Gtk::Button* btnAddProject;
#ifdef WEBKIT_FOUND
Gtk::Window *wndWeb;
Gtk::Widget *three;
@ -370,6 +376,18 @@ class MainWindow : public Gtk::ApplicationWindow {
string sys_or_ubconfig;
string hw_or_sw = "";
bool flag_open_browser = false;
string mode_quota = "ubconfig";
Glib::RefPtr<Gtk::ListStore> list_store_groups;
Glib::RefPtr<Gtk::ListStore> list_store_users;
Glib::RefPtr<Gtk::ListStore> list_store_project;
Gtk::TreeModel::iterator iter_groups;
Gtk::TreeModel::iterator iter_users;
Gtk::TreeModel::iterator iter_project;
bool flag_validate_del_groups = false;
bool flag_validate_del_users = false;
bool flag_validate_del_project = false;
Gtk::TreeModel::Row row;
const struct tv_g_u_p obj_tv_g_u_p {"", "", "", "", "", "", "", "", "",""};
public:
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder);
@ -380,6 +398,8 @@ class MainWindow : public Gtk::ApplicationWindow {
void add_CSS();
void get_builder();
void event();
void remove_line_template(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter, Gtk::TreeModel::iterator& iter_del, bool& flag_del);
void remove_template(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate_del);
void init_tree_view_general();
void entry_combo_box_temp(Gtk::ComboBoxText *combo_box, Gtk::Label *label);
void synopsis_show();
@ -388,6 +408,7 @@ class MainWindow : public Gtk::ApplicationWindow {
void init_tree_view();
void template_open_browser();
void open_browser();
void set_add_tv_g_u_p(Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store, struct tv_g_u_p obj_tv_g_u_p);
void load_template(map_str_str* map_temp, string str_load);
void info_warning_error(int mess);
void off_quota_system(Gtk::ComboBoxText* combo_box, string quota_type);
@ -396,6 +417,7 @@ class MainWindow : public Gtk::ApplicationWindow {
void wrapper_save_all_cfg();
void init_dict(string flag_load);
void set_data_cfg();
void mode_switch_quota();
void save_quotegroupSaveButton();
void wrapper_settings_quotas_temp(string save_user_or_group);
void off_quota_ubconfig(Gtk::ComboBoxText* combo_box, string quota_type);

@ -532,6 +532,8 @@
<object class="GtkCheckMenuItem" id="chbMangSystemFile">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">7</property>
<property name="margin-start">7</property>
<property name="label" translatable="yes">Direct control of the file system</property>
<property name="use-underline">True</property>
</object>

Loading…
Cancel
Save