#ifndef UBL_UTILS_UI #define UBL_UTILS_UI #include #include #include #include #include "save-window/libublsettingsui-gtk3-save.h" #include "strings/libublsettingsui-gtk3-strings.h" #include #include #include #include #include #include #include #include #ifdef WEBKIT_INCLUDE #include #endif #define ui_WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ublsettingsui-gtk3" #define _(String) gettext(String) #define ui_glade_path "/com/ublinux/ui/libublsettingsui-gtk3.glade" #define ui_glade_path_documentation "/com/ublinux/ui/libublsettingsui-gtk3-documentation.glade" #define ui_glade_path_about "/com/ublinux/ui/libublsettingsui-gtk3-about.glade" #define ui_glade_path_saving "/com/ublinux/ui/libublsettingsui-gtk3-saving.glade" #define ui_glade_path_debug "/com/ublinux/ui/libublsettingsui-gtk3-debugger.glade" #define ui_banner_path "/com/ublinux/images/libublsettingsui-gtk3-banner.png" #define ui_CssPath "/com/ublinux/css/libublsettingsui-gtk3.css" #define ui_config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",template_app_information.app_tech_name,"/",template_app_information.app_tech_name,".conf",NULL) #define remove_config_dir_command yon_char_unite("rm -rfd ", yon_ubl_user_get_home_directory(),"/.config/",template_app_information.app_tech_name,"/",NULL) #define dull_parameter_get_command "ubconfig --source global get users PARAMETER" #define SAVE_MODE_GET_COMMAND "ubconfig --raw --source system get [config] SYSTEMBOOT_STATEMODE" #define ubconfig_file_create(target) yon_char_unite("ubconfig --target \"",target,"\" create",NULL) typedef enum SAVE_MODE_TYPE { SAVE_MODE_FULL, SAVE_MODE_MODULE, SAVE_MODE_SANDBOX, SAVE_MODE_RAM_HOME, SAVE_MODE_HDD, SAVE_MODE_HDD_HOME, } SAVE_MODE_TYPE; char *yon_ubl_save_mode_get_icon_name(SAVE_MODE_TYPE type); SAVE_MODE_TYPE yon_ubl_save_mode_get_type(char *type); typedef struct { GtkWidget *interface; char *app_locale; char *css_path; char *app_title; char *app_description; char *app_tech_name; char *app_version; char *wiki_link; gboolean always_open_documentation; } template_app_info; static template_app_info template_app_information; #define template_config_fields\ int socket_id;\ int load_socket_id;\ int save_socket_id;\ \ int lock_help;\ int lock_save_local;\ int lock_save_global;\ int lock_load_global;\ int lock_load_system;\ \ int load_mode;\ \ int always_open_documentation;\ int debug_mode;\ char *custom_load_path; typedef struct { template_config_fields } _template_config; [[maybe_unused]] static _template_config *template_config; #define template_window_fields\ GtkWidget *Window;\ GtkWidget *HeadLabel;\ GtkWidget *PlugBox;\ \ GtkWidget *HeadOverlay;\ GtkWidget *HeadImage;\ GtkWidget *HeadBox;\ GtkWidget *HeadTitleLabel;\ GtkWidget *HeadInfoLabel;\ \ GtkWidget *StatusBox;\ GtkWidget *StatusIcon;\ GtkWidget *StatusLabel;\ \ GtkWidget *SaveMenuItem;\ GtkWidget *SaveGlobalMenuItem;\ GtkWidget *SaveLocalMenuItem;\ GtkWidget *SaveCustomMenuItem;\ GtkWidget *RightBox;\ \ GtkWidget *LoadGlobalMenuItem;\ GtkWidget *LoadLocalMenuItem;\ GtkWidget *LoadCustomMenuItem;\ GtkWidget *LeftBox;\ \ GtkWidget *DocumentationMenuItem;\ GtkWidget *AboutMenuItem;\ \ GtkWidget *InterfaceBox;\ //} typedef struct { template_window_fields } template_main_window; typedef struct { GtkWidget *Window; GtkWidget *HeaderLabel; GtkWidget *AlwaysOpenCheck; GtkWidget *CloseButton; GtkWidget *AcceptButton; } template_documentation_confirmation_window; typedef struct { GtkWidget *Window; GtkWidget *HeaderTopic; GtkWidget *HeaderImage; GtkWidget *StatusBox; GtkWidget *Vte; } template_debug_window; typedef struct { void (*function)(void*,void*); void *data; char *action_text; } dialog_confirmation_data; int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data); /**yon_open_browser(GtkWidget *self, char *link) * [EN] * Opens browser with [link] link. * [RU] * Открывает браузер с [link] ссылкой. */ void yon_open_browser(GtkWidget *self, char *link); char *yon_debug_output(char *pattern,char*text); /**yon_ubl_connect_config(_template_config *config) * [EN] * * [RU] * Присоединяет конфиг основной утилиты (struct config) к стандартному интерфейсу. */ int yon_ubl_connect_config(_template_config *config); void yon_root_button_setup(template_main_window *widgets, config_str args, int args_size); /**yon_ubl_window_init(int argc, char *argv[]) * [EN] * * [RU] * Создаёт и настраивает основное окно приложения. */ template_main_window *yon_ubl_window_setup(); /**yon_ubl_window_setup(GtkWidget *interface, char *app_title, char *app_description, char *locale, char *css, char *tech_name, char *version, char *wiki) * [EN] * * [RU] * Установить важные значения для конфига; * [app_title] - оботражаемое имя утилиты; * [app_description] - отображаемое описание утилиты; * [css] - путь к ресурсу css файла; * [tech_name] - техническое имя утилиты (ubl-settings-) * [version] - строка с версией приложения; * [wiki] - ссылка на вики страницу; */ int yon_ubl_window_init(char *app_title, char *app_description, char *locale, char *css, char *tech_name, char *version, char *wiki); /**on_about() * [EN] * Function for setting up and showing AboutDialog. * Connect it to "activate" signal of Documentation MenuItem. * [RU] * Функиця для настройки и показа окна AboutDialog. * Присоединять к сигналу "activate" кнопки справки типа MenuItem. */ void on_about(GtkWidget *self, char *version_application); /**on_open_documentation_confirmation(GtkWidget *self, char *link) * [EN] * Opens confirmation window for [link] link. * [RU] * Открывает окно подтверждения перехода по ссылке [link]. */ void on_open_documentation_confirmation(GtkWidget *self, char *link); int yon_ubl_setup_arguments(int argc, char *argv[],config_str *unfound_arguments, int *arguments_size, char *additional_options_output); void yon_gtk_scrolled_window_set_horizontal_at_desired_size(GtkWidget *window, GtkScrolledWindow *target); template_app_info yon_ubl_get_app_info(); #endif