diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 73820da..2f1ce76 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -30,7 +30,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin -fstack-clash-protection -fcf-protection -g") set(SOURCE_FILES - ubl-settings-diskquota-cm.h view/ubl-settings-diskquota.h view/ubl-settings-diskquota.cc view/model/ubconfig_quotas.cc @@ -39,8 +38,6 @@ set(SOURCE_FILES view/model/system_quotas.cc view/model/my_device.h view/model/my_device.cc - project_lib.h - my_type.h view/model/save.h view/model/save.cc view/model/load.h @@ -49,11 +46,21 @@ set(SOURCE_FILES view/model/my_process.cc view/model/util.h view/model/util.cc - view/my_plug.h - view/my_plug.cc view/ubl-util-standard.h view/ubl-util-standard.c - main.cc) + view/model/wrapper_load_save.cc + view/model/wrapper_load_save.h + ubl-settings-diskquota-cm.h + view/view_open_browser.cc + view/view_open_browser.h + view/view_about.h + view/view_about.cc + controller.cc + controller.h + main.cc + var.h + project_lib.h + my_type.h) set(LIBRARIES ${GTK_LIBRARIES} diff --git a/source/controler.cc b/source/controler.cc deleted file mode 100644 index 38f889a..0000000 --- a/source/controler.cc +++ /dev/null @@ -1,46 +0,0 @@ -#include "controler.h" -Back_Back::Back_Back() {} -void Back_Back::set_mode(string flag_mode) { - this->flag_mode = flag_mode; -} - -void Back_Back::set_partition(string partition) { - this->partition = partition; -} - -void Back_Back::set_sys_flag(string sys_flag) { - this->sys_flag = sys_flag; -} - -bool Back_Back::wrapper_off_quotas(string quotas_type) { - bool flag_status = false; - quotas_type = this->handler_quotas_type(quotas_type); - if (flag_mode == "system") { - string cmd_hw = ""; - string cmd_sw = ""; - flag_status = obj_quotas_sys.off_quota(partition, cmd_hw, cmd_sw); - } - else if (flag_mode == "ubconfig") { - flag_status = obj_quotas_ubconfig.off_quota(partition, quotas_type, "disable"); - } - return flag_status; -} -bool Back_Back::wrapper_on_quotas(string quotas_type) { - bool flag_status = false; - quotas_type = this->handler_quotas_type(quotas_type); - if (flag_mode == "system") { - string cmd_hw = ""; - string cmd_sw = ""; - flag_status = obj_quotas_sys.on_quota_hw(partition, cmd_hw, cmd_sw); - flag_status = obj_quotas_sys.wrapper_on_quotas(partition, quotas_type); - } - else if (flag_mode == "ubconfig") { - flag_status = obj_quotas_sys.wrapper_on_quotas(partition, quotas_type, "enable"); - flag_status = obj_quotas_ubconfig.format_cmd_quotas(); - } - return flag_status; -} - -string Back_Back::handler_quotas_type(string quotas_type) { - return quotas_type; -} \ No newline at end of file diff --git a/source/controler.h b/source/controler.h deleted file mode 100644 index 263493c..0000000 --- a/source/controler.h +++ /dev/null @@ -1,19 +0,0 @@ -#include "system_quotas.h" -#include "ubconfig_quotas.h" - -class Back_Back{ - public: - string flag_mode; - string partition; - string sys_flag; - Quotas_sys::Quotas_sys obj_quotas_sys = Quotas_sys::Quotas_sys(); - Quotas_ubconfig::Quotas_ubconfig obj_quotas_ubconfig = Quotas_ubconfig::Quotas_ubconfig(); - public: - Back_Back(); - void set_mode(string flag_mode); - void set_partition(string partition); - void set_sys_flag(string sys_flag); - bool wrapper_off_quotas(string quotas_type); - string handler_quotas_type(string quotas_type); - bool wrapper_on_quotas(string quotas_type); -}; \ No newline at end of file diff --git a/source/view/my_plug.cc b/source/controller.cc similarity index 63% rename from source/view/my_plug.cc rename to source/controller.cc index 6294ab4..7d3ca02 100644 --- a/source/view/my_plug.cc +++ b/source/controller.cc @@ -1,8 +1,29 @@ -#ifndef MY_PLUG_H -#define MY_PLUG_H +#include "controller.h" -#include "my_plug.h" +int socket_ext_id_I = 0; +int socket_trd_id_I = 0; +Controller::Controller(BaseObjectType* obj, Glib::RefPtr const& builder) + :Gtk::ApplicationWindow(obj), builder{builder} { + this->builder = builder; + this->settings(); +} + +Controller::Controller(Glib::RefPtr const& builder) { + this->builder = builder; + this->settings(); +} + +Controller::~Controller() +{ +} + +void Controller::settings() { + obj_open_browser->set_obj_about(obj_view_about); + obj_main_window = new MainWindow(builder, obj_open_browser, &socket_ext_id_I, &socket_trd_id_I); + obj_main_window->set_obj_wrapper_load(obj_wrapper_load_save); + obj_open_browser->settings(); +} CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help) : Glib::OptionGroup{p_name, p_description, p_help} { @@ -22,17 +43,17 @@ CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_descr add_entry(socketExtId, socket_ext_id_I); add_entry(socketTrdId, socket_trd_id_I); } + ::Window CmdArgParser::GetSocketID() const{ return m_socketID; } SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr builder) :Gtk::Plug{p_socketID} { - MainWindow* wnd = nullptr; + Controller* wnd = nullptr; builder->get_widget_derived("window", wnd); builder->get_widget("plugBox", plugBox); plugBox->get_parent()->remove(*plugBox); add(*plugBox); show_all_children(); -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/source/controller.h b/source/controller.h new file mode 100644 index 0000000..4f02c82 --- /dev/null +++ b/source/controller.h @@ -0,0 +1,46 @@ +#ifndef CONTROLLER_H +#define CONTROLLER_H +#include "view/view_open_browser.h" +#include "view/view_about.h" +#include "view/ubl-settings-diskquota.h" +#include "view/model/wrapper_load_save.h" + +extern int socket_ext_id_I; +extern int socket_trd_id_I; + +class Controller : public Gtk::ApplicationWindow +{ +private: + Glib::RefPtr builder; +public: + Controller(/* args */); + ~Controller(); + void settings(); + View_open_browser* obj_open_browser = new View_open_browser(); + View_about* obj_view_about = new View_about(); + MainWindow* obj_main_window; + Wrapper_load_save *obj_wrapper_load_save = new Wrapper_load_save(); + Controller(BaseObjectType* obj, Glib::RefPtr const& builder); + Controller(Glib::RefPtr const& builder); + + +}; + +class CmdArgParser : public Glib::OptionGroup { +public: + CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help); + ::Window GetSocketID() const; +private: + int m_socketID = 0; + +}; +class SettingsPlug : public Gtk::Plug{ +public: + Gtk::Window *window; + SettingsPlug(::Window p_socketID, Glib::RefPtr builder); + +private: + Gtk::Widget *plugBox; + Gtk::Widget *parent; +}; +#endif \ No newline at end of file diff --git a/source/main.cc b/source/main.cc index 0511543..17f2eee 100644 --- a/source/main.cc +++ b/source/main.cc @@ -1,4 +1,5 @@ -#include "view/my_plug.h" +#include "controller.h" +#include "var.h" void pars_flag(int index_start, int argc, char* argv[]); @@ -44,14 +45,14 @@ int main(int argc, char** argv) { auto app = Gtk::Application::create(len_argv, argv, "org.gtkmm.example.plug"); auto builder = Gtk::Builder::create_from_file(path_glade); pars_flag(1, argc, argv); - MainWindow* wnd = nullptr; + Controller* wnd = nullptr; builder->get_widget_derived("MainWindow", wnd); auto r = app->run(*wnd); delete wnd; return r; } - } + void pars_flag(int index_start, int argc, char* argv[]) { string str_argv = ""; for (int i = index_start; i #include #include - #include "ubl-settings-diskquota-cm.h" + #endif \ No newline at end of file diff --git a/source/var.h b/source/var.h new file mode 100644 index 0000000..d917069 --- /dev/null +++ b/source/var.h @@ -0,0 +1,161 @@ +#ifndef VAE_H +#define VAE_H +#include "project_lib.h" + +#define name_app _("ubl-settings-diskquota") +#define configuring_system_boot _("Configuring system boot parameters") +#define system_boot _("System boot") +#define str_about _("About ubl-settings-diskquota") +#define command_line_parameters _("Command line parameters:") +#define load_default _("Load default:") +#define seconds _("seconds") +#define download_menu _("Download menu") +#define terminal_for_input _("Terminal for input") +#define terminal_for_output _("Terminal for output") +#define boot_selection_menu_timer _("Boot selection menu timer") +#define str_help _("Help") +#define str_about_1 _("About") +#define str_save_local _("Save") +#define str_load_local _("Load") +#define save_all _("Save in global and local configuration") +#define save_local _("Save in local configuration") +#define save_global _("Save in global configuration") +#define load_global _("Load global configuration") +#define load_local _("Load local configuration") +#define read_online _("Read online") +#define cancel _("Cancel") +#define always_redirect _("Always redirect") +#define boot_screen_display_mode _("Boot screen display mode:") +#define no_loading_animation _("No loading animation, full log") +#define boot_menu_user_name _("Boot menu user name:") +#define boot_menu_user_password _("Boot menu user password:") +#define last_successful_upload _("Last successful upload") +#define read_documentation_web _("Would you like to read documentation in the Web?") +#define redirected_documentation _("You will be redirected to documentation site, where user help pages are ""translated and supported by community.") +#define local_read_error _("Local configuration reading error") +#define global_read_error _("Global configuration read error") +#define local_write_error _("Local configuration write error") +#define global_write_error _("Global configuration write error") +#define error_save_all _("Error saved local and global configuration") +#define local_load_ok _("Local configuration downloaded successfully") +#define global_load_ok _("Global configuration downloaded successfully") +#define local_ok_written _("Local configuration successfully written") +#define global_ok_written _("Global configuration successfully written") +#define successfully_save_all _("Successfully saved local and global configuration") +#define nothing_save _("Nothing to save!") +#define program_as_root _("The program must be run as root") + +#define str_weeks _("weeks") +#define str_days _("days") +#define str_hours _("hours") +#define str_minutes _("minutes") +#define str_device _("Device:") +#define str_users _("Users") +#define str_groups _("Groups") +#define str_files _("files") +#define str_hard_limit _("Hard limit") +#define str_file_system _("File system:") +#define str_name _("Name") +#define str_size _("Size") +#define str_quotas_mode _("Direct control of the file system") +#define str_lb_head _("Configuration of disk quotas parameters for system groups and users") +#define str_soft_limit _("Soft limit") +#define str_currently_using _("Currently using:") +#define str_currently_using_space _("Currently using: ") +#define str_filters _("Filters") +#define str_quotas _("Quotas") +#define str_help_h _("GTK settings disk quota for UBLinux\n" \ + "\n" \ + "Usage: ubl-settings-diskquota [OPTIONS...]\n" \ + "Options:\n" \ + " -h, --help\t Show this help\n" \ + " -V, --version\t Show package version\n" \ + " --lock-help Lock utility help\n" \ + " --lock-save Lock saving local and global configuration\n" \ + " --lock-save-local Lock save global configuration\n" \ + " --lock-save-global Lock load global configuration\n" \ + " --lock-load-global Lock load global configuration\n") + +#define str_user _("User") +#define str_group _("Group") +#define str_projects _("Projects") +#define str_user_1 _("User:") +#define str_group_1 _("Group:") +#define str_project_1 _("Projects:") +#define str_device_project _("Device\nProject") +#define str_quota _("Quota type") +#define str_status _("Status") +#define str_excess_size_delay _("Excess size delay period") +#define str_excess_files_delay _("Excess files delay period") +#define str_disk_quotas_device _("Disk quotas for this device:") +#define str_user_quotas_device _("User quotas for this device: ") + +#define str_soft_limit_size _("Soft limit (size)") +#define str_tw_soft_limit _("Soft limit\n(size)") +#define str_hard_limit_size _("Hard limit (size)") +#define str_deferring_hard_limit_size _("Deferring a hard limit (size)") +#define str_hard_activation_size _("Hard limit activation time (size)") +#define str_hard_limit_time _("Hard limit (file) activation time") +#define str_group_quotas_device _("Group quotas for this device:") +#define str_general_settings _("General settings") + +#define str_tw_severe_limitation _("Severe\nlimitation\n(size)") +#define str_tw_general_deferring_size _("Deferring\n(size)") +#define str_tw_general_deferring_files _("Deferring\n(files)") +#define str_tw_deferring_size _("Deferring\na hard\nlimit\n(files)") +#define str_tw_deferring_files _("Deferring\na hard\nlimit\n(files)") +#define str_tw_soft_limit_files _("Soft limit\n(files)") +#define str_tw_severe_limitation_files _("Severe\nlimitation\n(files)") +#define str_soft_restriction_files _("Soft Restriction (files)") +#define str_severe_limitation_files _("Severe limitation (files)") +#define str_deferring_limit_files _("Deferring a hard limit (files)") +#define info_box_ok_css "boxInfoMessOK" +#define info_box_error_css "boxInfoMessError" +#define icon_checked "com.ublinux.ubl-settings-diskquota.checked" +#define icon_warning "com.ublinux.ubl-settings-diskquota.warning" + +#define str_version _("ubl-settings-diskquota version: ") +#define path_app "/usr/bin/" +#define path_glade "/usr/share/ubl-settings-diskquota/ui/ubl-settings-diskquota.glade" +#define path_css "/usr/share/ubl-settings-diskquota/css/ubl-settings-diskquota.css" +#define app_name "ubl-settings-diskquota" +#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 str_device _("Device:") +#define str_quota_status _("Quota use status:") +#define str_size _("Size") +#define str_files _("files") +#define str_currently_using _("Currently using:") +#define str_soft_limit _("Soft limit") +#define str_hard_limit _("Hard limit") +#define str_hard_limit _("Hard limit") +#define str_prefix_KB _("Kb") +#define str_prefix_MB _("Mb") +#define str_prefix_GB _("Gb") +#define str_prefix_TB _("Tb") + +#define const_link_doc "https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-diskquota" +#define cmd_xdg "xdg-open " +#define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \"" + + +#define str_name _("Name") +#define str_size _("Size") +#define str_filters _("Filters") +#define str_quotas _("Quotas") +#define str_soft_limit_size _("Soft limit (size)") +#define str_hard_limit_size _("Hard limit (size)") +#define str_hard_limit_size_delay _("Hard limit (size) delay") +#define str_soft_limit_files _("Soft limit (files)") + +#define copyright _("Copyright © UBSoft LLC, 2022 - ") +#define str_setting_user _("Setting user quotas") +#define website _("https://wiki.ublinux.com") +#define project_Home_page _("Project Home Page") + + + + +#endif \ No newline at end of file diff --git a/source/view/model/wrapper_load_save.cc b/source/view/model/wrapper_load_save.cc index c8dc36d..3b03caa 100644 --- a/source/view/model/wrapper_load_save.cc +++ b/source/view/model/wrapper_load_save.cc @@ -2,36 +2,46 @@ -wrapper_load::wrapper_load(/* args */) { - obj_quotas_sys.set_map_gui(map_gui_cfg); - obj_quotas_ubconfig.set_map_gui(map_gui_cfg); +Wrapper_load_save::Wrapper_load_save(/* args */) { + //obj_quotas_sys.set_map_gui(map_gui_cfg); + //obj_quotas_ubconfig.set_map_gui(map_gui_cfg); } -wrapper_load::~wrapper_load() +Wrapper_load_save::~Wrapper_load_save() { } -void wrapper_load::load_global_cfg() { +void Wrapper_load_save::set_map_gui(map_str_str &map_gui_cfg) { + this->map_gui_cfg = map_gui_cfg; +} + +void Wrapper_load_save::set_map_global(map_str_str &map_global_cfg) { + this->map_global_cfg = map_global_cfg; +} + +void Wrapper_load_save::set_map_local(map_str_str &map_system_cfg) { + this->map_system_cfg = map_system_cfg; +} + +void Wrapper_load_save::set_vec_key(vector vec_param_names) { + this->vec_param_names = vec_param_names; +} + +bool Wrapper_load_save::load_global_cfg() { this->load_template(&map_global_cfg, global_load); - info_warning_error(1); map_gui_cfg = map_global_cfg; + return 1; + } -void wrapper_load::load_system_cfg() { +bool Wrapper_load_save::load_system_cfg() { this->load_template(&map_system_cfg, system_load); - info_warning_error(0); map_gui_cfg = map_system_cfg; + return 0; + } -void wrapper_load::set_void_work_tv_g_u_p(void (*init_work_tv_g_u_p)()) { - this->init_work_tv_g_u_p = init_work_tv_g_u_p; -} -void wrapper_load::set_void_info_warning_error(void (*info_warning_error)(int, int, int)) { - this->info_warning_error = info_warning_error; -} - -void wrapper_load::load_template(map_str_str* map_temp, string cmd) { - this->init_work_tv_g_u_p(); +void Wrapper_load_save::load_template(map_str_str* map_temp, string cmd) { if (cmd.find("system") != string::npos) { this->init_dict("system"); } @@ -41,54 +51,58 @@ void wrapper_load::load_template(map_str_str* map_temp, string cmd) { *map_temp = obj_load.get_load_data(*map_temp, cmd); } -void wrapper_load::wrapper_save_global_cfg() { +bool Wrapper_load_save::wrapper_save_global_cfg() { this->set_data_cfg(); if (this->save_template("boot", "global")) { - this->info_warning_error(5); + map_global_cfg = map_gui_cfg; + return 5; } else { - info_warning_error(3); + map_global_cfg = map_gui_cfg; + return 3; } - map_global_cfg = map_gui_cfg; - } -void wrapper_load::wrapper_save_system_cfg() { +bool Wrapper_load_save::wrapper_save_system_cfg() { this->set_data_cfg(); if (this->save_template("boot", "system")) { - this->info_warning_error(5); + map_system_cfg = map_gui_cfg; + return 5; } else { - info_warning_error(2); + map_system_cfg = map_gui_cfg; + return 2; } - map_system_cfg = map_gui_cfg; + } -void wrapper_load::wrapper_save_all_cfg() { +bool Wrapper_load_save::wrapper_save_all_cfg() { this->set_data_cfg(); bool _flag_save_global = this->save_template("boot", "global");; bool _flag_save_local = this->save_template("boot", "system"); if (_flag_save_global && _flag_save_local) { - this->info_warning_error(5, ); + map_global_cfg = map_gui_cfg; + map_system_cfg = map_gui_cfg; + return 5; } else { - info_warning_error(4); + map_global_cfg = map_gui_cfg; + map_system_cfg = map_gui_cfg; + return 4; } - map_global_cfg = map_gui_cfg; - map_system_cfg = map_gui_cfg; + } -void wrapper_load::wrapper_info_warning_error(int mess) { - this->info_warning_error(mess, obj_load.get_count_error(), obj_save.get_count_error()); - obj_load.set_count_error(0); - obj_save.set_count_error(0); - +int Wrapper_load_save::get_error_load() { + return obj_load.get_count_error(); +} +int Wrapper_load_save::get_error_save() { + return obj_save.get_count_error(); } - -bool wrapper_load::save_template(string section, string flag_save) { +bool Wrapper_load_save::save_template(string section, string flag_save) { bool flag_no_save = true; obj_save.set_data_local(map_system_cfg); obj_save.set_data_global(map_global_cfg); @@ -100,7 +114,7 @@ bool wrapper_load::save_template(string section, string flag_save) { return flag_no_save; } -void wrapper_load::init_dict(string flag_load) { +void Wrapper_load_save::init_dict(string flag_load) { std::map map_gui_cfg_n; map_gui_cfg_n[""] = ""; @@ -113,7 +127,7 @@ void wrapper_load::init_dict(string flag_load) { } } -void wrapper_load::set_data_cfg() { +void Wrapper_load_save::set_data_cfg() { // TODO: // Написать функцию } \ No newline at end of file diff --git a/source/view/model/wrapper_load_save.h b/source/view/model/wrapper_load_save.h index a2db82c..210dc10 100644 --- a/source/view/model/wrapper_load_save.h +++ b/source/view/model/wrapper_load_save.h @@ -1,5 +1,5 @@ -#ifndef WRAPPER_LOAD_H -#define WRAPPER_LOAD_H +#ifndef WRAPPER_LOAD_SAVE_H +#define WRAPPER_LOAD_SAVE_H #include "../../my_type.h" #include "../../project_lib.h" #include "load.h" @@ -17,33 +17,34 @@ -class wrapper_load { +class Wrapper_load_save { private: string str_cmd_error; - void (*init_work_tv_g_u_p)(); - void (*info_warning_error)(int, int, int) private: map_str_str map_gui_cfg; map_str_str map_global_cfg; map_str_str map_system_cfg; + vector vec_param_names; 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(); Lib_save::Save obj_save = Lib_save::Save(); Lib_Load::Load obj_load = Lib_Load::Load(); public: - wrapper_load(/* args */); - ~wrapper_load(); - void load_global_cfg(); - void load_system_cfg(); - void wrapper_save_system_cfg(); - void wrapper_save_global_cfg(); - void wrapper_save_all_cfg(); - void wrapper_info_warning_error(int mess); - void set_void_work_tv_g_u_p(void (*init_work_tv_g_u_p)()); - void set_void_info_warning_error(void (*info_warning_error)(int, int, int)); + Wrapper_load_save(/* args */); + ~Wrapper_load_save(); + bool load_global_cfg(); + bool load_system_cfg(); + bool wrapper_save_system_cfg(); + bool wrapper_save_global_cfg(); + bool wrapper_save_all_cfg(); + int get_error_load(); + int get_error_save(); + void set_map_gui(map_str_str &map_gui_cfg); + void set_map_global(map_str_str &map_global_cfg); + void set_map_local(map_str_str &map_system_cfg); + void set_vec_key(vector vec_param_names); private: void load_template(map_str_str* map_temp, string cmd); - void info_warning_error(int mess); void init_dict(string flag_load); void set_data_cfg(); bool save_template(string section, string flag_save); diff --git a/source/view/my_plug.h b/source/view/my_plug.h deleted file mode 100644 index 46cb259..0000000 --- a/source/view/my_plug.h +++ /dev/null @@ -1,21 +0,0 @@ -#include "../project_lib.h" -#include "ubl-settings-diskquota.h" - - -class CmdArgParser : public Glib::OptionGroup { -public: - CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help); - ::Window GetSocketID() const; -private: - int m_socketID = 0; - -}; -class SettingsPlug : public Gtk::Plug{ -public: - Gtk::Window *window; - SettingsPlug(::Window p_socketID, Glib::RefPtr builder); - -private: - Gtk::Widget *plugBox; - Gtk::Widget *parent; -}; \ No newline at end of file diff --git a/source/view/ubl-settings-diskquota.cc b/source/view/ubl-settings-diskquota.cc index 4dc87a6..e085a29 100755 --- a/source/view/ubl-settings-diskquota.cc +++ b/source/view/ubl-settings-diskquota.cc @@ -1,8 +1,7 @@ +#ifndef UBL_SETTINGS_DISKQUOTA_H +#define UBL_SETTINGS_DISKQUOTA_H #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; @@ -10,14 +9,11 @@ bool flag_load_global = false; bool flag_lock_help = false; string version_application = "1.0"; -MainWindow::MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder) - : Gtk::ApplicationWindow(obj), builder{builder} { - this->builder = builder; - this->settings(); -} - -MainWindow::MainWindow(Glib::RefPtr const& builder) { - this->builder = builder; +MainWindow::MainWindow(Glib::RefPtr builder, View_open_browser* obj_open_browser, int* socket_ext_id_I, int* socket_trd_id_I) { + this->builder = builder; + this->socket_ext_id_I = socket_ext_id_I; + this->socket_trd_id_I = socket_trd_id_I; + this->set_obj_browser(obj_open_browser); this->settings(); } @@ -26,10 +22,6 @@ void MainWindow::settings() { 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) { @@ -46,7 +38,16 @@ void MainWindow::settings() { 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); + ubl_make_plugs(boxSave, boxButton, (*socket_ext_id_I), (*socket_trd_id_I)); +} + +void MainWindow::set_obj_wrapper_load(Wrapper_load_save* obj_wrapper_load) { + this->obj_wrapper_load = obj_wrapper_load; +} + +void MainWindow::set_obj_browser(View_open_browser* obj_open_browser) { + this->obj_open_browser = obj_open_browser; + obj_open_browser->get_about()->set_version(version_application); } void MainWindow::init_spin_all() { @@ -279,7 +280,7 @@ void MainWindow::add_CSS() { Glib::RefPtr boxButton_css = boxButton->get_style_context(); Glib::RefPtr boxSave_css = boxSave->get_style_context(); Glib::RefPtr headerBar_css = headerBar->get_style_context(); - if (socket_trd_id_I == 0 && socket_ext_id_I == 0){ + 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"); } @@ -379,14 +380,18 @@ void MainWindow::get_builder() { builder->get_widget("usersProjectCombo", usersProjectCombo); } +void MainWindow::open_browser() { + obj_open_browser->open_help(); +} + 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();}); + btnSynopsis->signal_activate().connect([&]() {this->open_browser();}); + btnAbout->signal_activate().connect([&]() {obj_open_browser->get_about()->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();}); @@ -416,7 +421,7 @@ void MainWindow::remove_template(Glib::RefPtr* list_store, const Gtk::TreeModel::Row row = *(*iter); if(row) { string name = row[m_columns.name] + ""; - // TODO: + // TODO: : check string key = "GRUB_PASSWORD[" + name + "]"; map_gui_cfg[key] = ""; } @@ -444,6 +449,7 @@ void MainWindow::set_add_tv_g_u_p(Gtk::TreeModel::Row &row, Glib::RefPtrget_active()) { mode_quota = "filesystem"; } @@ -464,6 +470,7 @@ void MainWindow::info_status_app(string stule) { } void MainWindow::init_work_tv_g_u_p() { + // Todo: remove groupsQuotasTree->remove_all_columns(); ProjectQuotasTree->remove_all_columns(); usersQuotasTree->remove_all_columns(); @@ -492,11 +499,13 @@ void MainWindow::remove_line_template(const Gtk::TreeModel::Path&, const Gtk::Tr flag_del = true; } -MainWindow::~MainWindow() {} - void help() { string version = string(str_version) + version_application + "\n"; cout << version.c_str(); cout << str_help_h; } +MainWindow::~MainWindow() {} + +#endif + diff --git a/source/view/ubl-settings-diskquota.h b/source/view/ubl-settings-diskquota.h index dd56ce9..29ca407 100644 --- a/source/view/ubl-settings-diskquota.h +++ b/source/view/ubl-settings-diskquota.h @@ -1,146 +1,27 @@ #ifndef UBL_SETTINGS_QUOTAS_H #define UBL_SETTINGS_QUOTAS_H - #include +#include "view_open_browser.h" #include "../project_lib.h" #include "../my_type.h" #include "ubl-util-standard.c" -#ifdef WEBKIT_FOUND -#include -#endif - -#define name_app _("ubl-settings-diskquota") -#define configuring_system_boot _("Configuring system boot parameters") -#define system_boot _("System boot") -#define str_about _("About ubl-settings-diskquota") -#define command_line_parameters _("Command line parameters:") -#define load_default _("Load default:") -#define seconds _("seconds") -#define download_menu _("Download menu") -#define terminal_for_input _("Terminal for input") -#define terminal_for_output _("Terminal for output") -#define boot_selection_menu_timer _("Boot selection menu timer") -#define str_help _("Help") -#define str_about_1 _("About") -#define str_save_local _("Save") -#define str_load_local _("Load") -#define save_all _("Save in global and local configuration") -#define save_local _("Save in local configuration") -#define save_global _("Save in global configuration") -#define load_global _("Load global configuration") -#define load_local _("Load local configuration") -#define read_online _("Read online") -#define cancel _("Cancel") -#define always_redirect _("Always redirect") -#define boot_screen_display_mode _("Boot screen display mode:") -#define no_loading_animation _("No loading animation, full log") -#define boot_menu_user_name _("Boot menu user name:") -#define boot_menu_user_password _("Boot menu user password:") -#define last_successful_upload _("Last successful upload") -#define read_documentation_web _("Would you like to read documentation in the Web?") -#define redirected_documentation _("You will be redirected to documentation site, where user help pages are ""translated and supported by community.") -#define local_read_error _("Local configuration reading error") -#define global_read_error _("Global configuration read error") -#define local_write_error _("Local configuration write error") -#define global_write_error _("Global configuration write error") -#define error_save_all _("Error saved local and global configuration") -#define local_load_ok _("Local configuration downloaded successfully") -#define global_load_ok _("Global configuration downloaded successfully") -#define local_ok_written _("Local configuration successfully written") -#define global_ok_written _("Global configuration successfully written") -#define successfully_save_all _("Successfully saved local and global configuration") -#define nothing_save _("Nothing to save!") -#define program_as_root _("The program must be run as root") - -#define str_weeks _("weeks") -#define str_days _("days") -#define str_hours _("hours") -#define str_minutes _("minutes") -#define str_device _("Device:") -#define str_users _("Users") -#define str_groups _("Groups") -#define str_files _("files") -#define str_hard_limit _("Hard limit") -#define str_file_system _("File system:") -#define str_name _("Name") -#define str_size _("Size") -#define str_quotas_mode _("Direct control of the file system") -#define str_lb_head _("Configuration of disk quotas parameters for system groups and users") -#define str_soft_limit _("Soft limit") -#define str_currently_using _("Currently using:") -#define str_currently_using_space _("Currently using: ") -#define str_filters _("Filters") -#define str_quotas _("Quotas") -#define str_help_h _("GTK settings disk quota for UBLinux\n" \ - "\n" \ - "Usage: ubl-settings-diskquota [OPTIONS...]\n" \ - "Options:\n" \ - " -h, --help\t Show this help\n" \ - " -V, --version\t Show package version\n" \ - " --lock-help Lock utility help\n" \ - " --lock-save Lock saving local and global configuration\n" \ - " --lock-save-local Lock save global configuration\n" \ - " --lock-save-global Lock load global configuration\n" \ - " --lock-load-global Lock load global configuration\n") -#define str_version _("ubl-settings-diskquota version: ") -#define str_user _("User") -#define str_group _("Group") -#define str_projects _("Projects") -#define str_user_1 _("User:") -#define str_group_1 _("Group:") -#define str_project_1 _("Projects:") -#define str_device_project _("Device\nProject") -#define str_quota _("Quota type") -#define str_status _("Status") -#define str_excess_size_delay _("Excess size delay period") -#define str_excess_files_delay _("Excess files delay period") -#define str_disk_quotas_device _("Disk quotas for this device:") -#define str_user_quotas_device _("User quotas for this device: ") - -#define str_soft_limit_size _("Soft limit (size)") -#define str_tw_soft_limit _("Soft limit\n(size)") -#define str_hard_limit_size _("Hard limit (size)") -#define str_deferring_hard_limit_size _("Deferring a hard limit (size)") -#define str_hard_activation_size _("Hard limit activation time (size)") -#define str_hard_limit_time _("Hard limit (file) activation time") -#define str_group_quotas_device _("Group quotas for this device:") -#define str_general_settings _("General settings") - -#define str_tw_severe_limitation _("Severe\nlimitation\n(size)") -#define str_tw_general_deferring_size _("Deferring\n(size)") -#define str_tw_general_deferring_files _("Deferring\n(files)") -#define str_tw_deferring_size _("Deferring\na hard\nlimit\n(files)") -#define str_tw_deferring_files _("Deferring\na hard\nlimit\n(files)") -#define str_tw_soft_limit_files _("Soft limit\n(files)") -#define str_tw_severe_limitation_files _("Severe\nlimitation\n(files)") -#define str_soft_restriction_files _("Soft Restriction (files)") -#define str_severe_limitation_files _("Severe limitation (files)") -#define str_deferring_limit_files _("Deferring a hard limit (files)") -#define info_box_ok_css "boxInfoMessOK" -#define info_box_error_css "boxInfoMessError" -#define icon_checked "com.ublinux.ubl-settings-diskquota.checked" -#define icon_warning "com.ublinux.ubl-settings-diskquota.warning" - -#define path_app "/usr/bin/" -#define path_glade "/usr/share/ubl-settings-diskquota/ui/ubl-settings-diskquota.glade" -#define path_css "/usr/share/ubl-settings-diskquota/css/ubl-settings-diskquota.css" -#define app_name "ubl-settings-diskquota" -#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") +#include "../var.h" +#include "model/wrapper_load_save.h" using namespace std; + extern string version_application; extern bool flag_save; extern bool flag_save_local; extern bool flag_save_global; extern bool flag_load_global; extern bool flag_lock_help; -extern int socket_ext_id_I; -extern int socket_trd_id_I; -class MainWindow : public Gtk::ApplicationWindow { + + + +class MainWindow { public: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: @@ -284,6 +165,7 @@ class MainWindow : public Gtk::ApplicationWindow { map_str_str map_gui_cfg; map_str_str map_global_cfg; map_str_str map_system_cfg; + Wrapper_load_save* obj_wrapper_load = NULL; //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(); @@ -304,10 +186,13 @@ class MainWindow : public Gtk::ApplicationWindow { bool flag_validate_del_users = false; bool flag_validate_del_project = false; Gtk::TreeModel::Row row; + int* socket_ext_id_I = NULL; + int* socket_trd_id_I = NULL; + View_open_browser* obj_open_browser; const struct tv_g_u_p obj_tv_g_u_p {"", "", "", "", "", "", "", "", "",""}; public: - MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder); - MainWindow(Glib::RefPtr const& builder); + // MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder); + MainWindow(Glib::RefPtr builder, View_open_browser* obj_open_browser, int* socket_ext_id_I, int* socket_trd_id_I); ~MainWindow(); void settings(); void flag_block_gui(); @@ -315,6 +200,7 @@ class MainWindow : public Gtk::ApplicationWindow { void add_CSS(); void get_builder(); void event(); + void open_browser(); void info_warning_error(int mess, int error_save, int error_load); void init_work_tv_g_u_p(); void remove_line_template(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter, Gtk::TreeModel::iterator& iter_del, bool& flag_del); @@ -323,8 +209,10 @@ class MainWindow : public Gtk::ApplicationWindow { void entry_combo_box_temp(Gtk::ComboBoxText *combo_box, Gtk::Label *label); void info_status_app(string stule); void filters_show(); + void set_obj_wrapper_load(Wrapper_load_save* obj_wrapper_load); void init_tree_view(); void del_columns(); + void set_obj_browser(View_open_browser* obj_open_browser); 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 off_quota_system(Gtk::ComboBoxText* combo_box, string quota_type); void mode_switch_quota(); @@ -338,6 +226,6 @@ class MainWindow : public Gtk::ApplicationWindow { void format_cmd_quotas_ubconfig(struct struct_quotas& _struct_quota); struct partition_cmd wrapper_settings_quotas(); }; - +void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data); void help(); #endif diff --git a/source/view/view_about.cc b/source/view/view_about.cc index 97d23c9..23e00bb 100644 --- a/source/view/view_about.cc +++ b/source/view/view_about.cc @@ -2,15 +2,15 @@ -view_about::view_about(/* args */) { +View_about::View_about() { builder = Gtk::Builder::create_from_file(path_glade); this->settings(); } -view_about::~view_about() { +View_about::~View_about() { } -void view_about::lacalization() { +void View_about::lacalization() { time_t now = time(0); tm *ltm = localtime(&now); unsigned int year = 1900 + ltm->tm_year; @@ -23,29 +23,25 @@ void view_about::lacalization() { headerAboutTopic->set_label(_(app_name)); } -void view_about::set_name(string app_name) { - app_name = app_name; -} - -void view_about::set_version(string version_application) { +void View_about::set_version(string version_application) { version_application = version_application; } -void view_about::show() { +void View_about::show() { aboutWindows->show(); } -void view_about::get_builder() { +void View_about::get_builder() { builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog); builder->get_widget("aboutWindows", aboutWindows); builder->get_widget("headerAboutTopic", headerAboutTopic); } -void view_about::settings() { +void View_about::settings() { this->get_builder(); this->lacalization(); btnBoxAboutDialog->set_visible(false); } -void view_filters::set_path_glade(string path_glade) { - this->path_glade = path_glade; +View_about* View_about::get_self() { + return this; } \ No newline at end of file diff --git a/source/view/view_about.h b/source/view/view_about.h index 87ef742..c3b44ff 100644 --- a/source/view/view_about.h +++ b/source/view/view_about.h @@ -1,32 +1,29 @@ #ifndef VIEW_ABOUT_H #define VIEW_ABOUT_H #include "../project_lib.h" -#define copyright _("Copyright © UBSoft LLC, 2022 - ") -#define str_setting_user _("Setting user quotas") -#define website _("https://wiki.ublinux.com") -#define project_Home_page _("Project Home Page") -class view_about +#include "model/util.h" +#include "../var.h" + +class View_about { private: - string path_glade; string version_application; - string app_name; - private: - Glib::RefPtr const& builder; - Gtk::AboutDialog *aboutWindows; + Glib::RefPtr builder; Gtk::Label *headerAboutTopic; Gtk::ButtonBox *btnBoxAboutDialog; public: - view_about(/* args */); - ~view_about(); + Gtk::AboutDialog *aboutWindows; +public: + View_about(); + ~View_about(); void lacalization(); void event(); + View_about* get_self(); void get_builder(); void settings(); void show(); - void set_path_glade(string path_glade); - void set_name(string app_name); + void set_path_glade(string str_path_glade); void set_version(string version_application); }; #endif \ No newline at end of file diff --git a/source/view/view_filters.cc b/source/view/view_filters.cc index 8d87019..bd29f58 100644 --- a/source/view/view_filters.cc +++ b/source/view/view_filters.cc @@ -1,15 +1,15 @@ -#include "view_filters.h" +#include "View_filters.h" -view_filters::view_filters(/* args */){ +View_filters::View_filters(/* args */){ builder = Gtk::Builder::create_from_file(path_glade); this->settings(); } -view_filters::~view_filters() +View_filters::~View_filters() { } -void view_filters::settings() { +void View_filters::settings() { this->get_builder(); this->lacalization(); this->set_map_flag(chbFilterName); @@ -25,11 +25,11 @@ void view_filters::settings() { this->event(); } -void view_filters::set_path_glade(string path_glade) { +void View_filters::set_path_glade(string path_glade) { this->path_glade = path_glade; } -void view_filters::get_builder() { +void View_filters::get_builder() { builder->get_widget("wndFilters", wndFilters); builder->get_widget("chbFilterName", chbFilterName); builder->get_widget("chbFilterQuotas", chbFilterQuotas); @@ -47,12 +47,12 @@ void view_filters::get_builder() { lblFiltersHead->set_label(str_filters); } -void view_filters::show() { +void View_filters::show() { this->set_map_flag_false(); wndFilters->show(); } -void view_filters::lacalization() { +void View_filters::lacalization() { chbFilterName->set_label(str_name); chbFilterQuotas->set_label(str_quotas); chbFilterSize->set_label(str_size); @@ -65,7 +65,7 @@ void view_filters::lacalization() { chbFilterHardLimitFileDelay->set_label(str_deferring_limit_files); } -void view_filters::event() { +void View_filters::event() { chbFilterName->signal_toggled().connect( sigc::bind (sigc::mem_fun(*this, &MainWindow::set_map_flag), chbFilterName)); @@ -102,23 +102,23 @@ void view_filters::event() { &MainWindow::cancel)); } -void view_filters::set_map_flag(Gtk::CheckButton* check_button) { +void View_filters::set_map_flag(Gtk::CheckButton* check_button) { map_filters_flag[check_button->get_label()] = check_button->get_active(); } -void view_filters::save() { +void View_filters::save() { wndFilters->hide(); } -void view_filters::cancel() { +void View_filters::cancel() { wndFilters->hide(); } -map view_filters::get_filters() { +map View_filters::get_filters() { return map_filters_flag; } -void view_filters::set_map_flag_false() { +void View_filters::set_map_flag_false() { for (auto& [key: value]: map_filters_flag) { map_filters_flag[key] = false; } diff --git a/source/view/view_filters.h b/source/view/view_filters.h index e161c20..79085c3 100644 --- a/source/view/view_filters.h +++ b/source/view/view_filters.h @@ -1,20 +1,11 @@ #ifndef VIEW_FILTERS_H #define VIEW_FILTERS_H #include "../project_lib.h" +#include "../var.h" -#define str_name _("Name") -#define str_size _("Size") -#define str_filters _("Filters") -#define str_quotas _("Quotas") -#define str_soft_limit_size _("Soft limit (size)") -#define str_hard_limit_size _("Hard limit (size)") -#define str_hard_limit_size_delay _("Hard limit (size) delay") -#define str_soft_limit_files _("Soft limit (files)") -#define str_hard_limit_size_delay _("Hard limit (files) delay") -class view_filters +class View_filters { private: - string path_glade; std::map map_filters_flag; private: Glib::RefPtr const& builder; @@ -34,14 +25,14 @@ private: Gtk::Button *btnFiltersSave; Gtk::Button *btnFiltersCancel; public: - view_filters(/* args */); - ~view_filters(); + View_filters(/* args */); + ~View_filters(); void lacalization(); void event(); void get_builder(); void settings(); void show(); - void set_path_glade(string path_glade) + void set_path_glade(string str_path_glade) private: void set_map_flag(Gtk::CheckButton* check_button); void save(); diff --git a/source/view/view_open_browser.cc b/source/view/view_open_browser.cc index d39caa4..53b840c 100644 --- a/source/view/view_open_browser.cc +++ b/source/view/view_open_browser.cc @@ -1,14 +1,25 @@ #include "view_open_browser.h" -view_open_browser::view_open_browser(/* args */) { + +View_open_browser* obj_open_browser; +View_about* obj_about; + +void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data) { + if (self && user_data) {} + obj_open_browser->global_lick_doc = link; + obj_about->aboutWindows->hide(); + obj_open_browser->temp_help_show(); +} + +View_open_browser::View_open_browser(/* args */) { builder = Gtk::Builder::create_from_file(path_glade); - this->settings(); } -view_open_browser::~view_open_browser() { +View_open_browser::~View_open_browser() { } -void settings() { +void View_open_browser::settings() { + obj_open_browser = this; this->get_builder(); #ifdef WEBKIT_FOUND one = WEBKIT_WEB_VIEW( webkit_web_view_new() ); @@ -19,10 +30,15 @@ void settings() { this->event(); } -void view_open_browser::show() { - wndShowWeb->show(); +void View_open_browser::set_obj_about(View_about* obj_view_about) { + this->obj_view_about = obj_view_about; + obj_about = obj_view_about; } -void view_open_browser::get_builder() { + +void View_open_browser::show() { + this->wndShowWeb->show(); +} +void View_open_browser::get_builder() { #ifdef WEBKIT_FOUND builder->get_widget("wndWeb", wndWeb); #endif @@ -36,7 +52,7 @@ void view_open_browser::get_builder() { builder->get_widget("wndShowWeb", wndShowWeb); } -void view_open_browser::lacalization() { +void View_open_browser::lacalization() { lblwebHeaderName->set_label(name_app); lblhelpText->set_text(redirected_documentation); btnReadHelp->set_label(read_online); @@ -45,13 +61,14 @@ void view_open_browser::lacalization() { lblhelpHeader->set_text(read_documentation_web); } -void view_open_browser::event() { +void View_open_browser::event() { + g_signal_connect(G_OBJECT(obj_view_about->aboutWindows->gobj()), "activate-link", G_CALLBACK(wrapper_help_show), NULL); btnCancelHelp->signal_clicked().connect([&]() {wndShowWeb->hide();}); chkAlwaysOpenHelp->signal_toggled().connect([&]() {flag_open_browser = true;}); - btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &view_open_browser::open_browser)); + btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &View_open_browser::open_browser)); } -void view_open_browser::show() { +void View_open_browser::temp_help_show() { if (flag_open_browser == true) { this->open_browser(); } @@ -60,31 +77,35 @@ void view_open_browser::show() { } } -void view_open_browser::open_browser() { +void View_open_browser::open_browser() { #ifdef WEBKIT_FOUND - webkit_web_view_load_uri(one, link_doc); + webkit_web_view_load_uri(one, _(global_lick_doc.c_str())); wndWeb->show_all(); #else - if (this->template_open_browser() != 0) { - - } + this->template_open_browser(global_lick_doc); #endif + this->wndShowWeb->hide(); } -int view_open_browser::template_open_browser() { - string cmd = cmd_xdg + string(_(link_doc)) + " &"; +int View_open_browser::template_open_browser(string str_link_doc) { + string cmd = cmd_xdg + string(_(str_link_doc.c_str())) + " &"; string buf = ""; if (geteuid() == 0) { string response_user = getlogin(); int size_s = std::snprintf(nullptr, 0, cmd_execute, response_user.c_str(), cmd.c_str()) + 1; auto size = static_cast(size_s); std::unique_ptr buf(new char[ size ]); - std::snprintf( buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str() ); - cmd = std::string( buf.get(), buf.get() + size - 1 ); + std::snprintf(buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str()); + cmd = string(buf.get(), buf.get() + size - 1); } - return system(cmd); + return system(cmd.c_str()); + +} +void View_open_browser::open_help() { + global_lick_doc = const_link_doc; + temp_help_show(); } -void view_filters::set_path_glade(string path_glade) { - this->path_glade = path_glade; -} \ No newline at end of file +View_about* View_open_browser::get_about() { + return obj_view_about; +} diff --git a/source/view/view_open_browser.h b/source/view/view_open_browser.h index 4966887..84e081a 100644 --- a/source/view/view_open_browser.h +++ b/source/view/view_open_browser.h @@ -1,42 +1,50 @@ #ifndef VIEW_OPEN_BROWSER_H #define VIEW_OPEN_BROWSER_H -#include "../project_lib.h" -#define link_doc "https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-diskquota" -#define cmd_xdg "xdg-open " -#define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \"" +#include "../project_lib.h" +#include "view_about.h" +#ifdef WEBKIT_FOUND +#include +#endif +#include "../var.h" -class view_open_browser -{ +class View_open_browser { private: - string path_glade; bool flag_open_browser = false; + View_about* obj_view_about; private: - Glib::RefPtr const& builder; + Glib::RefPtr builder; Gtk::Button *btnReadHelp; Gtk::Button *btnCancelHelp; - Gtk::Window *wndShowWeb; Gtk::CheckButton *chkAlwaysOpenHelp; Gtk::Label *lblwebHeaderName; Gtk::Label *lblhelpText; Gtk::Label *lblhelpHeader; Gtk::Label *lblHeadeWndWeb; +public: + string global_lick_doc; + Gtk::Window *wndShowWeb; #ifdef WEBKIT_FOUND Gtk::Window *wndWeb; Gtk::Widget *three; WebKitWebView *one; #endif public: - view_open_browser(/* args */); - ~view_open_browser(); + View_open_browser(/* args */); + ~View_open_browser(); void lacalization(); void event(); void get_builder(); void settings(); void show(); - void set_path_glade(string path_glade); + void open_help(); + void temp_help_show(); + void set_path_glade(string str_path_glade); + void set_obj_about(View_about* View_about); + View_about* get_about(); private: - int template_open_browser(); + int template_open_browser(string str_link_doc); void open_browser(); }; +void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data); #endif \ No newline at end of file diff --git a/source/view/view_set_user_group.cc b/source/view/view_set_user_group.cc index 9785589..342b2ce 100644 --- a/source/view/view_set_user_group.cc +++ b/source/view/view_set_user_group.cc @@ -117,10 +117,6 @@ void MainWindow::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *sp combo_box->set_sensitive(check_button->get_active()); } -void view_set_user_group::set_path_glade(string path_glade) { - this->path_glade = path_glade; -} - void MainWindow::edit_tree_view_U(Glib::RefPtr* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate) { lblSetUGP->set_text(str_user_1); set_change_gui(list_store, iter, flag_validate, usersDeviceCombo); diff --git a/source/view/view_set_user_group.h b/source/view/view_set_user_group.h index 7644a47..fa025d4 100644 --- a/source/view/view_set_user_group.h +++ b/source/view/view_set_user_group.h @@ -1,22 +1,11 @@ #ifndef VIEW_SET_USER_GROUP_H #define VIEW_SET_USER_GROUP_H #include "../project_lib.h" -#define str_device _("Device:") -#define str_quota_status _("Quota use status:") -#define str_size _("Size") -#define str_files _("files") -#define str_currently_using _("Currently using:") -#define str_soft_limit _("Soft limit") -#define str_hard_limit _("Hard limit") -#define str_hard_limit _("Hard limit") -#define str_prefix_KB _("Kb") -#define str_prefix_MB _("Mb") -#define str_prefix_GB _("Gb") -#define str_prefix_TB _("Tb") +#include "../var.h" class view_set_user_group { private: - string path_glade; + string str_path_glade; private: Glib::RefPtr const& builder; Gtk::Label* lblSetDevice; @@ -57,7 +46,7 @@ public: void get_builder(); void settings(); void show(); - void set_path_glade(string path_glade); + void set_path_glade(string str_path_glade); private: void set_change_gui(Glib::RefPtr* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate, Gtk::ComboBoxText *combo_box); void fill_in_pow_memory(Gtk::ComboBoxText *cb_text);