|
|
#ifndef UBL_UTILS_UI
|
|
|
#define UBL_UTILS_UI
|
|
|
#include <gtk/gtk.h>
|
|
|
#include <gtk/gtkx.h>
|
|
|
#include <libublsettings.h>
|
|
|
#include <libublsettings-gtk3.h>
|
|
|
#include "save-window/libublsettingsui-gtk3-save.h"
|
|
|
#include "strings/libublsettingsui-gtk3-strings.h"
|
|
|
#include <vte/vte.h>
|
|
|
#include <locale.h>
|
|
|
#include <stdio.h>
|
|
|
#include <unistd.h>
|
|
|
#include <stdlib.h>
|
|
|
#include <libintl.h>
|
|
|
#include <getopt.h>
|
|
|
#include <libintl.h>
|
|
|
#ifdef WEBKIT_INCLUDE
|
|
|
#include <webkit2/webkit2.h>
|
|
|
#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 |