#ifndef UBL_SETTINGS_QUOTAS_H #define UBL_SETTINGS_QUOTAS_H #include "util.h" #include "load.h" #include "save.h" #include "my_process.h" #include "my_type.h" #include "my_device.h" #include "system_quotas.h" #include "ubconfig_quotas.h" using namespace std; extern const string path_app; extern const string path_glade; extern const string app_name; extern const string path_locale; extern const string path_css; extern const string path_img_head_background; extern string version_application; extern int socket_ext_id_I; extern int socket_trd_id_I; class MainWindow : public Gtk::ApplicationWindow { public: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() {add(name), add(quotas); add(size), add(soft_limit_size), add(hard_limit_size); add(hard_limit_size_delay), add(hard_limit_activ_time), add(files); add(soft_limit_files), add(hard_limit_files), add(hard_limit_delay); add(hard_limit_files_activ_time); } Gtk::TreeModelColumn name; Gtk::TreeModelColumn quotas; Gtk::TreeModelColumn size; Gtk::TreeModelColumn soft_limit_size; Gtk::TreeModelColumn hard_limit_size; Gtk::TreeModelColumn hard_limit_size_delay; Gtk::TreeModelColumn hard_limit_activ_time; Gtk::TreeModelColumn files; Gtk::TreeModelColumn soft_limit_files; Gtk::TreeModelColumn hard_limit_files; Gtk::TreeModelColumn hard_limit_delay; Gtk::TreeModelColumn hard_limit_files_activ_time; }; ModelColumns m_columns; Glib::RefPtr builder; template struct Result{ Type response; int error; }; Gtk::Label *headerTopic; Gtk::AboutDialog *aboutWindows; Gtk::Overlay *HeadOverlay; Gtk::HeaderBar *headerBar; Gtk::Box *boxSave; Gtk::Box *boxButton; Gtk::Box *boxFuncs; Gtk::MenuButton *btnSave; Gtk::MenuButton *btnLoad; Gtk::MenuButton *btnSettings; Gtk::ButtonBox *btnBoxAboutDialog; Gtk::Image *HeadBackgroundImage; Gtk::Image *imgInfo; Gtk::Box *boxInfoError; Gtk::Label *lblWarning; Gtk::Label *generalTabLabel; Gtk::Label *UsersTabLabel; Gtk::Label *GroupsTabLabel; Gtk::Label *generalDeviceLabel; Gtk::Label *generalGroupsFrameLabel; Gtk::Label *generalGroupsSizeLabel; Gtk::Label *generalGroupsFilesLabel; Gtk::Label *generalUsersFrameLabel; Gtk::Label *generalUsersSizeLabel; Gtk::Label *generalUsersFilesLabel; Gtk::Label *generalGroupsSizeWeeksLabel; Gtk::Label *generalGroupsFilesWeeksLabel; Gtk::Label *generalUsersSizeWeeksLabel; Gtk::Label *generalUsersFilesWeeksLabel; Gtk::Label *generalGroupsSizeDaysLabel; Gtk::Label *generalGroupsFilesDaysLabel; Gtk::Label *generalUsersSizeDaysLabel; Gtk::Label *generalUsersFilesDaysLabel; Gtk::Label *generalGroupsSizeHoursLabel; Gtk::Label *generalGroupsFilesHoursLabel; Gtk::Label *generalUsersSizeHoursLabel; Gtk::Label *generalUsersFilesHoursLabel; Gtk::Label *generalGroupsSizeMinutesLabel; Gtk::Label *generalGroupsFilesMinutesLabel; Gtk::Label *generalUsersSizeMinutesLabel; Gtk::Label *generalUsersFilesMinutesLabel; Gtk::Label *generalFileSystemLabel; Gtk::Label *lblLoad; Gtk::Label *lblSave; Gtk::CheckButton *generalUsersEnableCheck; Gtk::MenuItem *btnLoadGlob; Gtk::MenuItem *btnLoadLocal; Gtk::MenuItem *btnSynopsis; Gtk::MenuItem *btnAbout; Gtk::MenuItem *btnSaveLocalGlob; Gtk::MenuItem *btnSaveGlob; Gtk::MenuItem *btnSaveLocal; Gtk::Label *groupsFileSystemLabel; Gtk::Label *usersFileSystemLabel; Gtk::Button *groupsFiltersButton; Gtk::Button *usersFiltersButton; Gtk::Label *groupsDeviceLabel; Gtk::Label *usersDeviceLabel; Gtk::Label *headLabel; Gtk::Window *FiltersWindow; Gtk::CheckButton *filtersNameFilterCheckbox; Gtk::CheckButton *filtersQuotasFilterCheckbox; Gtk::CheckButton *filtersSizeFilterCheckbox; Gtk::CheckButton *filtersSoftSizeFilterCheckbox; Gtk::CheckButton *filtersHardSizeFilterCheckbox; Gtk::CheckButton *filtersHardSizeDelayFilterCheckbox; Gtk::CheckButton *filtersHardSizeActivationFilterCheckbox; Gtk::CheckButton *filtersFilesFilterCheckbox; Gtk::CheckButton *filtersSoftFilesFilterCheckbox; Gtk::CheckButton *filtersHardFilesFilterCheckbox; Gtk::CheckButton *filtersHardFilesDelayFilterCheckbox; Gtk::CheckButton *filtersHardFilesActivationFilterCheckbox; Gtk::TreeView *groupsQuotasTree; Gtk::TreeView *usersQuotasTree; Gtk::Label *quotegroupDeviceLabel; Gtk::Label *quotegroupFileSystemLabel; Gtk::Label *quotegroupDiskQuotasLabel; Gtk::Label *quotegroupGroupQuotasLabel; Gtk::Label *quotegroupSizeFrameLabel; Gtk::Label *quotegroupSizeCurrentlyLabel; Gtk::Label *quoteSizeHardLimitLabel; Gtk::Label *quotegroupFilesFrameLabel; Gtk::Label *quotegroupFilesCurrentlyLabel; Gtk::Label *quotegroupFilesSoftLimitLabel; Gtk::Label *quoteFilesHardLimitLabel; Gtk::Label *quotegroupFilesHarLimitLabel; Gtk::Label *quoteuserDeviceLabel; Gtk::Label *quoteuserDiskQuotasLabel; Gtk::Label *quoteuserFileSystemLabel; Gtk::Label *quoteuserGroupQuotasLabel; Gtk::Label *quoteuserSizeFrameLabel; Gtk::Label *quoteuserSizeCurrentlyLabel; Gtk::Label *quoteuserSizeSoftLimitLabel; Gtk::Label *quoteuserSizeHardLimitLabel1; Gtk::Label *quoteuserFilesCurrentlyLabel; Gtk::Label *quoteuserFilesSoftLimitLabel; Gtk::Label *quoteFilesHardLimitLabel1; Gtk::Label *quoteuserFilesHarLimitLabel; Gtk::Label *quoteuserFilesFrameLabel; Gtk::Label *quotegroupSizeSoftLimitLabel; Gtk::Label *quoteuserFilesSoftLimitlabel; Gtk::Window *QuotasUserEditWindow; Gtk::Window *QuotasEditWindow; Gtk::Label *headerAboutTopic; Gtk::Label *lblHeadQuotasUserEditWindow; Gtk::Label *lblHeadQuotasEditWindow; Gtk::Label *lblHeadFiltersWindow; Gtk::Box *boxGeneralGroupsEnableCheck; Gtk::CheckButton *generalGroupsEnableCheck; Gtk::Box *boxGeneralUsersEnableCheck; Gtk::ComboBoxText *usersDeviceCombo; Gtk::ComboBoxText *groupsDeviceCombo; Gtk::ComboBoxText *generalDeviceCombo; Gtk::Label *lblFstypeUsers; Gtk::Label *lblFstypeGroups; Gtk::Label *lblFstypeGeneralSettings; Gtk::SpinButton *generalGroupsSizeWeeksSpi; Gtk::SpinButton *generalGroupsFileWeeksSpin; Gtk::SpinButton *generalGroupsSizeDaySpin; Gtk::SpinButton *generalGroupsFilesDaySpin; Gtk::SpinButton *generalGroupsSizeHourSpin; Gtk::SpinButton *generalGroupsFilesHourSpin; Gtk::SpinButton *generalGroupsSizeMinuteSpin; Gtk::SpinButton *generalGroupsFilesMinuteSpin; Gtk::SpinButton *generalUsersSizWeeksSpin; Gtk::SpinButton *generalUsersFileWeeksSpin; Gtk::SpinButton *generalUsersSizeDaySpin; Gtk::SpinButton *generalUsersFilesDaySpin; Gtk::SpinButton *generalUsersSizeHourSpin; Gtk::SpinButton *generalUsersFilesHoursSpin; Gtk::SpinButton *generalUsersSizeMinuteSpin; Gtk::SpinButton *generalUsersFilesMinutesSpin; Gtk::Label *lblEditWndFsys; Gtk::CheckButton *quotegroupSizeSoftLimitCheck; Gtk::CheckButton *quotegroupSizeHardLimitCheck; Gtk::CheckButton *quotegroupFilesSoftLimitCheck; Gtk::CheckButton *quotegroupFilesHardLimitCheck; Gtk::SpinButton *quotegroupSizeSoftLimitSpin; Gtk::SpinButton *quotegroupSizeHardLimitSpin; Gtk::SpinButton *quotegroupFilesSoftLimitSpin; Gtk::SpinButton *quotegroupFilesHardLimitSpin; Gtk::Label *quotegroupFilesSoftLimitlabel; Gtk::ComboBoxText *quotegroupSizeSoftLimitCombo; Gtk::ComboBoxText *quotegroupSizeHardLimitCombo; Gtk::Button *quotegroupCancelButton; Gtk::Button *quotegroupSaveButton; Gtk::ComboBoxText *quotegroupDeviceCombo; Gtk::Button *btnDeleteUserQuota; Gtk::Button *btnDeleteGroupQuota; public: Lib_save::Save obj_save = Lib_save::Save(); Lib_Load::Load obj_load = Lib_Load::Load(); Devices::Parted obj_device = Devices::Parted(); Quotas_sys::Quotas_sys obj_quotas_sys = Quotas_sys::Quotas_sys(); Quotas_ubconfig::Quotas_ubconfig obj_quotas_ubconfig = Quotas_ubconfig::Quotas_ubconfig(); My_Process::My_Process_system obj_process_system = My_Process::My_Process_system(); My_Process::My_Process_call obj_process_call = My_Process::My_Process_call(); map_str_str map_gui_cfg; map_str_str map_global_cfg; map_str_str map_system_cfg; vector vec_param_names; map_str_str map_device; string str_cmd_error; string save_user_or_group; string sys_or_ubconfig; string hw_or_sw = ""; public: MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder); MainWindow(Glib::RefPtr const& builder); void settings(); void lacalization(); void add_CSS(); void get_builder(); void event(); void entry_combo_box_temp(Gtk::ComboBoxText *combo_box, Gtk::Label *label); void entry_generalGroupsEnableCheck(); void synopsis_show(); void info_status_app(string stule); void entry_generalUsersEnableCheck(); void groupsFilters_show(); void init_tree_view(); 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); void wrapper_save_system_cfg(); void wrapper_save_global_cfg(); void wrapper_save_all_cfg(); void init_dict(string flag_load); void set_data_cfg(); void save_quotegroupSaveButton(); void wrapper_settings_quotas_temp(string save_user_or_group); void off_quota_ubconfig(Gtk::ComboBoxText* combo_box, string quota_type); void init_spin_all(); void format_cmd_quotas_system(struct struct_quotas& _struct_quota); void format_cmd_quotas_ubconfig(struct struct_quotas& _struct_quota); void load_global_cfg(); void load_system_cfg(); struct partition_cmd wrapper_settings_quotas(); void filling_device_combo_box_template(Gtk::ComboBoxText *combo_box, map_str_str &map_device); bool save_template(string section, string flag_save); void view_add_columns(Gtk::TreeView &treeView); void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box); void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box); }; void help(); #endif