parent
							
								
									4b681718f3
								
							
						
					
					
						commit
						b4ea717c2a
					
				@ -0,0 +1 @@
 | 
				
			||||
VERSION 1.6
 | 
				
			||||
@ -0,0 +1,502 @@
 | 
				
			||||
#include "ubl-settings-diskquota.h"
 | 
				
			||||
using namespace std;
 | 
				
			||||
 | 
				
			||||
int socket_ext_id_I = 0;
 | 
				
			||||
int socket_trd_id_I = 0;
 | 
				
			||||
bool flag_save = false;
 | 
				
			||||
bool flag_save_local = false;
 | 
				
			||||
bool flag_save_global = false;
 | 
				
			||||
bool flag_load_global = false;
 | 
				
			||||
bool flag_lock_help = false;
 | 
				
			||||
string version_application = "1.0";
 | 
				
			||||
 | 
				
			||||
MainWindow::MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder)
 | 
				
			||||
    : Gtk::ApplicationWindow(obj), builder{builder} {
 | 
				
			||||
        this->builder = builder;
 | 
				
			||||
        this->settings();  
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
MainWindow::MainWindow(Glib::RefPtr<Gtk::Builder> const& builder) {
 | 
				
			||||
    this->builder =  builder;
 | 
				
			||||
    this->settings();
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::settings() {
 | 
				
			||||
    this->get_builder();
 | 
				
			||||
    this->lacalization();
 | 
				
			||||
    this->add_CSS();
 | 
				
			||||
    this->flag_block_gui();
 | 
				
			||||
    //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(usersProjectCombo, map_device);
 | 
				
			||||
    this->init_tree_view();
 | 
				
			||||
    this->init_spin_all();
 | 
				
			||||
    if (geteuid() == 0) {
 | 
				
			||||
        this->event();
 | 
				
			||||
    }
 | 
				
			||||
    else {
 | 
				
			||||
        boxFuncs->set_sensitive(false);
 | 
				
			||||
        btnSave->set_sensitive(false);
 | 
				
			||||
        btnLoad->set_sensitive(false);
 | 
				
			||||
        imgInfo->set_from_icon_name(icon_warning, Gtk::ICON_SIZE_MENU);
 | 
				
			||||
        info_status_app(info_box_error_css);
 | 
				
			||||
        lblWarning->set_text(program_as_root);
 | 
				
			||||
    }
 | 
				
			||||
    Gtk::Widget *boxWidget;
 | 
				
			||||
    builder->get_widget("boxColor", boxWidget);
 | 
				
			||||
    HeadOverlay->add_overlay(*boxWidget);
 | 
				
			||||
    ubl_make_plugs(boxSave, boxButton, socket_ext_id_I, socket_trd_id_I);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::init_spin_all() {
 | 
				
			||||
    generalGroupsSizeWeeksSpi->set_range(0, 52);
 | 
				
			||||
    generalGroupsSizeWeeksSpi->set_increments(1.0, 1.0);
 | 
				
			||||
    generalGroupsSizeWeeksSpi->set_value(0);
 | 
				
			||||
    generalGroupsFileWeeksSpin->set_range(0, 52);
 | 
				
			||||
    generalGroupsFileWeeksSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalGroupsFileWeeksSpin->set_value(0);
 | 
				
			||||
    generalUsersSizWeeksSpin->set_range(0, 52);
 | 
				
			||||
    generalUsersSizWeeksSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalUsersSizWeeksSpin->set_value(0);
 | 
				
			||||
    generalUsersFileWeeksSpin->set_range(0, 52);
 | 
				
			||||
    generalUsersFileWeeksSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalUsersFileWeeksSpin->set_value(0);
 | 
				
			||||
    generalGroupsSizeDaySpin->set_range(0, 31);
 | 
				
			||||
    generalGroupsSizeDaySpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalGroupsSizeDaySpin->set_value(0);
 | 
				
			||||
    generalGroupsFilesDaySpin->set_range(0, 31);
 | 
				
			||||
    generalGroupsFilesDaySpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalGroupsFilesDaySpin->set_value(0);
 | 
				
			||||
    generalUsersSizeDaySpin->set_range(0, 31);
 | 
				
			||||
    generalUsersSizeDaySpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalUsersSizeDaySpin->set_value(0);
 | 
				
			||||
    generalUsersFilesDaySpin->set_range(0, 31);
 | 
				
			||||
    generalUsersFilesDaySpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalUsersFilesDaySpin->set_value(0);
 | 
				
			||||
    generalGroupsSizeHourSpin->set_range(0, 23);
 | 
				
			||||
    generalGroupsSizeHourSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalGroupsSizeHourSpin->set_value(0);
 | 
				
			||||
    generalGroupsFilesHourSpin->set_range(0, 23);
 | 
				
			||||
    generalGroupsFilesHourSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalGroupsFilesHourSpin->set_value(0);
 | 
				
			||||
    generalUsersSizeHourSpin->set_range(0, 23);
 | 
				
			||||
    generalUsersSizeHourSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalUsersSizeHourSpin->set_value(0);
 | 
				
			||||
    generalUsersFilesHoursSpin->set_range(0, 23);
 | 
				
			||||
    generalUsersFilesHoursSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalUsersFilesHoursSpin->set_value(0); 
 | 
				
			||||
    generalGroupsSizeMinuteSpin->set_range(0, 59);
 | 
				
			||||
    generalGroupsSizeMinuteSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalGroupsSizeMinuteSpin->set_value(0);  
 | 
				
			||||
    generalGroupsFilesMinuteSpin->set_range(0, 59);
 | 
				
			||||
    generalGroupsFilesMinuteSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalGroupsFilesMinuteSpin->set_value(0); 
 | 
				
			||||
    generalUsersSizeMinuteSpin->set_range(0, 59);
 | 
				
			||||
    generalUsersSizeMinuteSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalUsersSizeMinuteSpin->set_value(0);  
 | 
				
			||||
    generalUsersFilesMinutesSpin->set_range(0, 59);
 | 
				
			||||
    generalUsersFilesMinutesSpin->set_increments(1.0, 1.0);
 | 
				
			||||
    generalUsersFilesMinutesSpin->set_value(0);    
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::init_tree_view() {
 | 
				
			||||
    this->view_add_columns(*usersQuotasTree);
 | 
				
			||||
    this->view_add_columns(*groupsQuotasTree);
 | 
				
			||||
    this->view_add_columns(*ProjectQuotasTree);
 | 
				
			||||
    this->init_tree_view_general();
 | 
				
			||||
}
 | 
				
			||||
void MainWindow::init_tree_view_general() {
 | 
				
			||||
    GeneralQuotasTree->append_column_editable(str_status, m_columnsGeneral.status);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_quota, m_columnsGeneral.type_quotas);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_device_project, m_columnsGeneral.device);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_user, m_columnsGeneral.user);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_group, m_columnsGeneral.group);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_projects, m_columnsGeneral.projects);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_tw_soft_limit, m_columnsGeneral.soft_limit_size);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_tw_severe_limitation, m_columnsGeneral.hard_limit_size);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_tw_soft_limit_files, m_columnsGeneral.soft_limit_files);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_tw_severe_limitation_files, m_columnsGeneral.hard_limit_files);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_tw_general_deferring_size, m_columnsGeneral.deferring_size);
 | 
				
			||||
    GeneralQuotasTree->append_column(str_tw_general_deferring_files, m_columnsGeneral.deferring_files);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::view_add_columns(Gtk::TreeView &treeView) {
 | 
				
			||||
    treeView.append_column_editable(str_name, m_columns.name);
 | 
				
			||||
    treeView.append_column_editable(str_quotas, m_columns.quotas);
 | 
				
			||||
    treeView.append_column(str_size, m_columns.size);
 | 
				
			||||
    treeView.append_column(str_tw_soft_limit, m_columns.soft_limit_size);
 | 
				
			||||
    treeView.append_column(str_tw_severe_limitation, m_columns.hard_limit_size);
 | 
				
			||||
    treeView.append_column(str_tw_deferring_size, m_columns.deferring_size);
 | 
				
			||||
    treeView.append_column(str_files, m_columns.files);
 | 
				
			||||
    treeView.append_column(str_tw_soft_limit_files, m_columns.soft_limit_files);
 | 
				
			||||
    treeView.append_column(str_tw_severe_limitation_files, m_columns.hard_limit_delay);
 | 
				
			||||
    treeView.append_column(str_tw_deferring_files, m_columns.deferring_files);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::lacalization() {
 | 
				
			||||
    generalTabLabel->set_text(str_general_settings);
 | 
				
			||||
    GroupsTabLabel->set_text(str_groups);
 | 
				
			||||
    headerTopic->set_label(name_app);
 | 
				
			||||
    UsersTabLabel->set_text(str_users);
 | 
				
			||||
    generalGroupsFilesLabel->set_text(str_excess_files_delay);
 | 
				
			||||
    generalUsersSizeLabel->set_text(str_excess_size_delay);
 | 
				
			||||
    generalUsersFilesLabel->set_text(str_excess_files_delay);
 | 
				
			||||
    generalGroupsSizeWeeksLabel->set_text(str_weeks);
 | 
				
			||||
    generalGroupsFilesWeeksLabel->set_text(str_weeks);
 | 
				
			||||
    generalUsersSizeWeeksLabel->set_text(str_weeks);
 | 
				
			||||
    generalUsersFilesWeeksLabel->set_text(str_weeks);
 | 
				
			||||
    generalGroupsSizeDaysLabel->set_text(str_days);
 | 
				
			||||
    generalGroupsFilesDaysLabel->set_text(str_days);
 | 
				
			||||
    generalUsersSizeDaysLabel->set_text(str_days);
 | 
				
			||||
    generalUsersFilesDaysLabel->set_text(str_days);
 | 
				
			||||
    generalGroupsSizeHoursLabel->set_text(str_hours);
 | 
				
			||||
    generalGroupsFilesHoursLabel->set_text(str_hours);
 | 
				
			||||
    generalUsersSizeHoursLabel->set_text(str_hours);
 | 
				
			||||
    generalUsersFilesHoursLabel->set_text(str_hours);
 | 
				
			||||
    generalGroupsSizeMinutesLabel->set_text(str_minutes);
 | 
				
			||||
    generalGroupsFilesMinutesLabel->set_text(str_minutes);
 | 
				
			||||
    generalUsersSizeMinutesLabel->set_text(str_minutes);
 | 
				
			||||
    generalUsersFilesMinutesLabel->set_text(str_minutes);
 | 
				
			||||
    lblLoad->set_text(str_load_local);
 | 
				
			||||
    lblSave->set_text(str_save_local);
 | 
				
			||||
    groupsDeviceLabel->set_label(str_device); 
 | 
				
			||||
    usersDeviceLabel->set_label(str_device); 
 | 
				
			||||
    headLabel->set_label(str_lb_head);   
 | 
				
			||||
    btnLoadGlob->set_label(load_global);
 | 
				
			||||
    btnLoadLocal->set_label(load_local);
 | 
				
			||||
    btnAbout->set_label(str_about_1);
 | 
				
			||||
    btnSynopsis->set_label(str_help);
 | 
				
			||||
    btnSaveLocalGlob->set_label(save_all);
 | 
				
			||||
    btnSaveGlob->set_label(save_global);
 | 
				
			||||
    btnSaveLocal->set_label(save_local);
 | 
				
			||||
    ProjectTabLabel->set_label(str_projects);
 | 
				
			||||
    usersProjectLabel->set_text(str_device);
 | 
				
			||||
    chbMangSystemFile->set_label(str_quotas_mode);
 | 
				
			||||
    
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::info_warning_error(int mess, int error_save, int error_load) {
 | 
				
			||||
    if (error_save > 0 || error_load > 0) {
 | 
				
			||||
        info_status_app(info_box_error_css);
 | 
				
			||||
        imgInfo->set_from_icon_name(icon_warning, Gtk::ICON_SIZE_MENU);
 | 
				
			||||
        string mess_error = "";
 | 
				
			||||
        if (mess == 0) {
 | 
				
			||||
            mess_error = string(local_read_error) + str_cmd_error;
 | 
				
			||||
            lblWarning->set_text(mess_error);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 1) {
 | 
				
			||||
            mess_error = string(global_read_error) + str_cmd_error;
 | 
				
			||||
            lblWarning->set_text(mess_error);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 2) {
 | 
				
			||||
            mess_error = string(local_write_error) + str_cmd_error;
 | 
				
			||||
            lblWarning->set_text(mess_error);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 3) {
 | 
				
			||||
            mess_error = string(global_write_error) + str_cmd_error;
 | 
				
			||||
            lblWarning->set_text(mess_error);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 4) {
 | 
				
			||||
            mess_error = string(error_save_all) + str_cmd_error;
 | 
				
			||||
            lblWarning->set_text(mess_error);
 | 
				
			||||
        }
 | 
				
			||||
        str_cmd_error = "";
 | 
				
			||||
    }
 | 
				
			||||
    else {
 | 
				
			||||
        info_status_app(info_box_ok_css);
 | 
				
			||||
        imgInfo->set_from_icon_name(icon_checked, Gtk::ICON_SIZE_MENU);
 | 
				
			||||
        if (mess == 0) {
 | 
				
			||||
            lblWarning->set_text(local_load_ok);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 1) {
 | 
				
			||||
            lblWarning->set_text(global_load_ok);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 2) {
 | 
				
			||||
            lblWarning->set_text(local_ok_written);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 3) {
 | 
				
			||||
            lblWarning->set_text(global_ok_written);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 4) {
 | 
				
			||||
            lblWarning->set_text(successfully_save_all);
 | 
				
			||||
        }
 | 
				
			||||
        else if (mess == 5) {
 | 
				
			||||
            lblWarning->set_text(nothing_save);
 | 
				
			||||
        }
 | 
				
			||||
    }
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::filling_device_combo_box_template(Gtk::ComboBoxText *combo_box, map_str_str &map_device) {
 | 
				
			||||
    if (map_device.size() != 0) {
 | 
				
			||||
        for (const auto &device : map_device) {
 | 
				
			||||
            combo_box->append(device.first.c_str());
 | 
				
			||||
        }
 | 
				
			||||
        combo_box->set_active(0);
 | 
				
			||||
    }
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::flag_block_gui() {
 | 
				
			||||
    if (flag_load_global == true) {
 | 
				
			||||
        btnLoadGlob->set_sensitive(false);
 | 
				
			||||
    }
 | 
				
			||||
    if (flag_save_local == true && flag_save_global == true) {
 | 
				
			||||
        btnSave->set_sensitive(false);
 | 
				
			||||
    }
 | 
				
			||||
    if (flag_save == true) {
 | 
				
			||||
        btnSave->set_sensitive(false);
 | 
				
			||||
    }
 | 
				
			||||
    if (flag_save_local == true) {
 | 
				
			||||
        btnSaveLocal->set_sensitive(false);
 | 
				
			||||
        btnSaveLocalGlob->set_sensitive(false);
 | 
				
			||||
    }
 | 
				
			||||
    if (flag_save_global == true) {
 | 
				
			||||
        btnSaveGlob->set_sensitive(false);
 | 
				
			||||
        btnSaveLocalGlob->set_sensitive(false);
 | 
				
			||||
    }
 | 
				
			||||
    if (flag_lock_help == true) {
 | 
				
			||||
        btnSynopsis->set_sensitive(false);
 | 
				
			||||
    }
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
/*
 | 
				
			||||
void MainWindow::entry_combo_box_temp(Gtk::ComboBoxText *combo_box, Gtk::Label *label) {
 | 
				
			||||
    string text = combo_box->get_active_text();
 | 
				
			||||
    if (map_device.find(text) != map_device.end()){
 | 
				
			||||
        label->set_text(map_device[text]);
 | 
				
			||||
    }
 | 
				
			||||
}
 | 
				
			||||
*/
 | 
				
			||||
 | 
				
			||||
void MainWindow::add_CSS() {
 | 
				
			||||
    Glib::RefPtr<Gtk::CssProvider> cssProvider = Gtk::CssProvider::create();
 | 
				
			||||
    cssProvider->load_from_path(path_css);   
 | 
				
			||||
    Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
 | 
				
			||||
    Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();//get default screen
 | 
				
			||||
    styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application
 | 
				
			||||
    HeadBackgroundImage->set(path_img_head_background);
 | 
				
			||||
    Glib::RefPtr<Gtk::StyleContext> headLabel_css = headLabel->get_style_context();
 | 
				
			||||
    Glib::RefPtr<Gtk::StyleContext> boxButton_css = boxButton->get_style_context();
 | 
				
			||||
    Glib::RefPtr<Gtk::StyleContext> boxSave_css = boxSave->get_style_context();
 | 
				
			||||
    Glib::RefPtr<Gtk::StyleContext> headerBar_css = headerBar->get_style_context();
 | 
				
			||||
    if (socket_trd_id_I == 0 && socket_ext_id_I == 0){
 | 
				
			||||
        boxButton_css->add_class("bkim_no_plug");
 | 
				
			||||
        boxSave_css->add_class("bkim_no_plug");
 | 
				
			||||
    }
 | 
				
			||||
    headLabel_css->add_class("textHead");
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::get_builder() {
 | 
				
			||||
    builder->set_translation_domain(path_app);
 | 
				
			||||
    builder->get_widget("headerTopic", headerTopic);
 | 
				
			||||
    builder->get_widget("boxButton", boxButton);
 | 
				
			||||
    builder->get_widget("boxSave", boxSave);
 | 
				
			||||
    builder->get_widget("HeadOverlay", HeadOverlay);
 | 
				
			||||
    builder->get_widget("headerBar", headerBar);
 | 
				
			||||
    builder->get_widget("boxFuncs", boxFuncs);
 | 
				
			||||
    builder->get_widget("btnLoad", btnLoad);
 | 
				
			||||
    builder->get_widget("btnSave", btnSave);
 | 
				
			||||
    builder->get_widget("HeadBackgroundImage", HeadBackgroundImage);
 | 
				
			||||
    builder->get_widget("imgInfo", imgInfo);
 | 
				
			||||
    builder->get_widget("lblWarning", lblWarning);
 | 
				
			||||
    builder->get_widget("boxInfoError", boxInfoError);
 | 
				
			||||
    builder->get_widget("imgInfo", imgInfo);
 | 
				
			||||
    builder->get_widget("generalTabLabel", generalTabLabel);
 | 
				
			||||
    builder->get_widget("GroupsTabLabel", GroupsTabLabel);
 | 
				
			||||
    builder->get_widget("UsersTabLabel", UsersTabLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsFilesLabel", generalGroupsFilesLabel);
 | 
				
			||||
    builder->get_widget("generalUsersSizeLabel", generalUsersSizeLabel);
 | 
				
			||||
    builder->get_widget("generalUsersFilesLabel", generalUsersFilesLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsSizeWeeksLabel", generalGroupsSizeWeeksLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsFilesWeeksLabel", generalGroupsFilesWeeksLabel);
 | 
				
			||||
    builder->get_widget("generalUsersSizeWeeksLabel", generalUsersSizeWeeksLabel);
 | 
				
			||||
    builder->get_widget("generalUsersFilesWeeksLabel", generalUsersFilesWeeksLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsSizeDaysLabel", generalGroupsSizeDaysLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsFilesDaysLabel", generalGroupsFilesDaysLabel);
 | 
				
			||||
    builder->get_widget("generalUsersSizeDaysLabel", generalUsersSizeDaysLabel);
 | 
				
			||||
    builder->get_widget("generalUsersFilesDaysLabel", generalUsersFilesDaysLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsSizeHoursLabel", generalGroupsSizeHoursLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsFilesHoursLabel", generalGroupsFilesHoursLabel);
 | 
				
			||||
    builder->get_widget("generalUsersSizeHoursLabel", generalUsersSizeHoursLabel);
 | 
				
			||||
    builder->get_widget("generalUsersFilesHoursLabel", generalUsersFilesHoursLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsSizeMinutesLabel", generalGroupsSizeMinutesLabel);
 | 
				
			||||
    builder->get_widget("generalGroupsFilesMinutesLabel", generalGroupsFilesMinutesLabel);
 | 
				
			||||
    builder->get_widget("generalUsersSizeMinutesLabel", generalUsersSizeMinutesLabel);
 | 
				
			||||
    builder->get_widget("generalUsersFilesMinutesLabel", generalUsersFilesMinutesLabel);
 | 
				
			||||
    builder->get_widget("lblLoad", lblLoad);
 | 
				
			||||
    builder->get_widget("lblSave", lblSave);
 | 
				
			||||
    builder->get_widget("btnSettings", btnSettings);
 | 
				
			||||
    builder->get_widget("groupsDeviceLabel", groupsDeviceLabel);
 | 
				
			||||
    builder->get_widget("usersDeviceLabel", usersDeviceLabel);
 | 
				
			||||
    builder->get_widget("headLabel", headLabel);
 | 
				
			||||
    builder->get_widget("btnLoadGlob", btnLoadGlob);
 | 
				
			||||
    builder->get_widget("btnLoadLocal", btnLoadLocal);
 | 
				
			||||
    builder->get_widget("btnSynopsis", btnSynopsis);
 | 
				
			||||
    builder->get_widget("btnAbout", btnAbout);
 | 
				
			||||
    builder->get_widget("btnSaveLocalGlob", btnSaveLocalGlob);
 | 
				
			||||
    builder->get_widget("btnSaveGlob", btnSaveGlob);
 | 
				
			||||
    builder->get_widget("btnSaveLocal", btnSaveLocal);
 | 
				
			||||
    builder->get_widget("GroupsTabLabel", GroupsTabLabel);
 | 
				
			||||
    builder->get_widget("groupsQuotasTree", groupsQuotasTree);
 | 
				
			||||
    builder->get_widget("usersQuotasTree", usersQuotasTree);
 | 
				
			||||
    builder->get_widget("usersDeviceCombo", usersDeviceCombo);
 | 
				
			||||
    builder->get_widget("GroupsTabLabel", GroupsTabLabel);
 | 
				
			||||
    builder->get_widget("generalTabLabel", generalTabLabel);
 | 
				
			||||
    builder->get_widget("groupsDeviceCombo", groupsDeviceCombo);
 | 
				
			||||
    builder->get_widget("generalGroupsSizeWeeksSpi", generalGroupsSizeWeeksSpi);
 | 
				
			||||
    builder->get_widget("generalGroupsFileWeeksSpin", generalGroupsFileWeeksSpin);
 | 
				
			||||
    builder->get_widget("generalGroupsSizeDaySpin", generalGroupsSizeDaySpin);
 | 
				
			||||
    builder->get_widget("generalGroupsFilesDaySpin", generalGroupsFilesDaySpin);
 | 
				
			||||
    builder->get_widget("generalGroupsSizeHourSpin", generalGroupsSizeHourSpin);
 | 
				
			||||
    builder->get_widget("generalGroupsFilesHourSpin", generalGroupsFilesHourSpin);
 | 
				
			||||
    builder->get_widget("generalGroupsSizeMinuteSpin", generalGroupsSizeMinuteSpin);
 | 
				
			||||
    builder->get_widget("generalGroupsFilesMinuteSpin", generalGroupsFilesMinuteSpin);
 | 
				
			||||
    builder->get_widget("generalUsersSizWeeksSpin", generalUsersSizWeeksSpin);
 | 
				
			||||
    builder->get_widget("generalUsersFileWeeksSpin", generalUsersFileWeeksSpin);
 | 
				
			||||
    builder->get_widget("generalUsersSizeDaySpin", generalUsersSizeDaySpin);
 | 
				
			||||
    builder->get_widget("generalUsersFilesDaySpin", generalUsersFilesDaySpin);
 | 
				
			||||
    builder->get_widget("generalUsersSizeHourSpin", generalUsersSizeHourSpin);
 | 
				
			||||
    builder->get_widget("generalUsersFilesHoursSpin", generalUsersFilesHoursSpin);
 | 
				
			||||
    builder->get_widget("generalUsersSizeMinuteSpin", generalUsersSizeMinuteSpin);
 | 
				
			||||
    builder->get_widget("generalUsersFilesMinutesSpin", generalUsersFilesMinutesSpin);
 | 
				
			||||
    builder->get_widget("GeneralQuotasTree", GeneralQuotasTree);
 | 
				
			||||
    builder->get_widget("ProjectQuotasTree", ProjectQuotasTree);
 | 
				
			||||
    builder->get_widget("ProjectTabLabel", ProjectTabLabel);
 | 
				
			||||
    builder->get_widget("usersProjectLabel", usersProjectLabel);
 | 
				
			||||
    builder->get_widget("btnFilterProject", btnFilterProject);
 | 
				
			||||
    builder->get_widget("btnFilterUsers", btnFilterUsers);
 | 
				
			||||
    builder->get_widget("btnFilterGroups", btnFilterGroups);
 | 
				
			||||
    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);
 | 
				
			||||
    builder->get_widget("btnEditProject", btnEditProject);
 | 
				
			||||
    builder->get_widget("btnEditUsers", btnEditUsers);
 | 
				
			||||
    builder->get_widget("btnEditGroups", btnEditGroups);
 | 
				
			||||
    builder->get_widget("usersProjectCombo", usersProjectCombo);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::event() {
 | 
				
			||||
    btnFilterGroups->signal_clicked().connect([&]() {this->filters_show();});
 | 
				
			||||
    btnFilterUsers->signal_clicked().connect([&]() {this->filters_show();});
 | 
				
			||||
    btnFilterProject->signal_clicked().connect([&]() {this->filters_show();});
 | 
				
			||||
    //btnLoadGlob->signal_activate().connect([&]() {this->load_global_cfg();});
 | 
				
			||||
    //btnLoadLocal->signal_activate().connect([&]() {this->load_system_cfg();});
 | 
				
			||||
    //btnSynopsis->signal_activate().connect([&]() {this->synopsis_show();});
 | 
				
			||||
    //btnAbout->signal_activate().connect([&]() {aboutWindows->show();});
 | 
				
			||||
    //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();});
 | 
				
			||||
    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::filters_show() {
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
void MainWindow::info_status_app(string stule) {
 | 
				
			||||
    Glib::RefPtr<Gtk::StyleContext> boxInfo = boxInfoError->get_style_context();
 | 
				
			||||
    boxInfo->remove_class(info_box_ok_css);
 | 
				
			||||
    boxInfo->remove_class(info_box_error_css);
 | 
				
			||||
    boxInfo->add_class(stule);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void MainWindow::init_work_tv_g_u_p() {
 | 
				
			||||
    groupsQuotasTree->remove_all_columns();
 | 
				
			||||
    ProjectQuotasTree->remove_all_columns();
 | 
				
			||||
    usersQuotasTree->remove_all_columns();
 | 
				
			||||
    list_store_groups = Gtk::ListStore::create(m_columns);
 | 
				
			||||
    list_store_project = Gtk::ListStore::create(m_columns);
 | 
				
			||||
    list_store_users = Gtk::ListStore::create(m_columns);
 | 
				
			||||
    groupsQuotasTree->set_model(list_store_groups);
 | 
				
			||||
    ProjectQuotasTree->set_model(list_store_project);
 | 
				
			||||
    usersQuotasTree->set_model(list_store_users);
 | 
				
			||||
    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->view_add_columns(*groupsQuotasTree);
 | 
				
			||||
    this->view_add_columns(*ProjectQuotasTree);
 | 
				
			||||
    this->view_add_columns(*usersQuotasTree);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
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;
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
MainWindow::~MainWindow() {}
 | 
				
			||||
 | 
				
			||||
void help() {
 | 
				
			||||
    string version = string(str_version) + version_application + "\n";
 | 
				
			||||
    cout << version.c_str();
 | 
				
			||||
    cout << str_help_h;
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue