|
|
@ -500,8 +500,12 @@ void MainWindow::get_builder() {
|
|
|
|
builder->get_widget("btnCancelHelp", btnCancelHelp);
|
|
|
|
builder->get_widget("btnCancelHelp", btnCancelHelp);
|
|
|
|
builder->get_widget("wndShowWeb", wndShowWeb);
|
|
|
|
builder->get_widget("wndShowWeb", wndShowWeb);
|
|
|
|
builder->get_widget("chbMangSystemFile", chbMangSystemFile);
|
|
|
|
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();});
|
|
|
|
btnSaveLocalGlob->signal_activate().connect([&]() {this->wrapper_save_all_cfg();});
|
|
|
|
btnSaveGlob->signal_activate().connect([&]() {this->wrapper_save_global_cfg();});
|
|
|
|
btnSaveGlob->signal_activate().connect([&]() {this->wrapper_save_global_cfg();});
|
|
|
|
btnSaveLocal->signal_activate().connect([&]() {this->wrapper_save_system_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);});
|
|
|
|
quotegroupDeviceCombo->signal_changed().connect([&]() {entry_combo_box_temp(quotegroupDeviceCombo, lblEditWndFsys);});
|
|
|
|
quotegroupSizeSoftLimitCheck->signal_toggled().connect([&]() {
|
|
|
|
quotegroupSizeSoftLimitCheck->signal_toggled().connect([&]() {
|
|
|
|
check_limit(quotegroupSizeSoftLimitCheck
|
|
|
|
check_limit(quotegroupSizeSoftLimitCheck
|
|
|
@ -543,6 +548,67 @@ void MainWindow::event() {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
quotegroupCancelButton->signal_clicked().connect([&]() {QuotasEditWindow->hide();});
|
|
|
|
quotegroupCancelButton->signal_clicked().connect([&]() {QuotasEditWindow->hide();});
|
|
|
|
// QuotasEditWindow->show();
|
|
|
|
// 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) {
|
|
|
|
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.type_quotas = type_quotas;
|
|
|
|
_struct_quota.name = user;
|
|
|
|
_struct_quota.name = user;
|
|
|
|
obj_quotas_ubconfig.format_cmd_quotas(_struct_quota);
|
|
|
|
obj_quotas_ubconfig.format_cmd_quotas(_struct_quota);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void MainWindow::save_quotegroupSaveButton() {
|
|
|
|
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) {
|
|
|
|
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);
|
|
|
|
this->init_dict(str_load);
|
|
|
|
string sections;
|
|
|
|
string sections;
|
|
|
|
sections = "security";
|
|
|
|
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);
|
|
|
|
*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) {
|
|
|
|
void MainWindow::info_warning_error(int mess) {
|
|
|
|
if (obj_load.get_count_error() > 0 || obj_save.get_count_error() > 0) {
|
|
|
|
if (obj_load.get_count_error() > 0 || obj_save.get_count_error() > 0) {
|
|
|
|
info_status_app(info_box_error_css);
|
|
|
|
info_status_app(info_box_error_css);
|
|
|
|