#include #include #include "ubl-utils.h" #include #include #include #include #include #include #include #include "../compile/ubl-cmake.h" #include #ifdef WEBKIT_FOUND #include #endif #include "ubl-strings.h" #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-services" #define _(String) gettext(String) #define glade_path "/com/ublinux/ui/ubl-settings-services.glade" #define banner_path "/com/ublinux/images/ubl-settings-services-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-services.css" #define config_path yon_char_unite("/home/",yon_ubl_root_user_get(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define terminal_window_path "/com/ublinux/ui/ubl-settings-services-terminal.glade" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-services" #define load_config_local_command "ubconfig --source system get config SERVICESSTART SERVICESNOSTART SERVICESMASK" #define load_services_command "systemctl list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' -e 's/running /running;/g' -e 's/inactive /inactive;/g'" #define load_sockets_command "systemctl list-sockets -all |grep -vE \"LISTEN|sockets listed\"| sed -e 's/ */:/g'" #define status_command "systemctl status --no-pager " typedef char* string; string version_application; char *local; typedef struct { int always_open_documentation; int win_pos_x; int win_pos_y; int win_width; int win_height; 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; config_str loaded_config; GtkListStore *list; gboolean rmb_clicked; } config; typedef struct { GtkWidget *Menu; GtkWidget *MenuConfigAutostart; GtkWidget *MenuConfigAutostop; GtkWidget *MenuConfigBlock; GtkWidget *MenuSystemAutostart; GtkWidget *MenuSystemLaunched; GtkWidget *MenuReloadConfig; GtkWidget *MenuStatus; } menu_obj; typedef struct { GtkWidget *Window; GtkWidget *HatLabel; GtkWidget *PlugBox; GtkWidget *HeadOverlay; GtkWidget *HeadImage; GtkWidget *HeadBox; GtkWidget *HeadTitleLabel; GtkWidget *HeadInfoLabel; GtkWidget *StatusBox; GtkWidget *StatusIcon; GtkWidget *StatusLabel; GtkWidget *SaveLabel; GtkWidget *SaveMenuItem; GtkWidget *SaveGlobalMenuItem; GtkWidget *SaveLocalMenuItem; GtkWidget *RightBox; GtkWidget *LoadLabel; GtkWidget *LoadGlobalMenuItem; GtkWidget *LoadLocalMenuItem; GtkWidget *LeftBox; GtkWidget *ChosenNameLabel; GtkWidget *ChosenDescriptionLabel; GtkWidget *DocumentationMenuItem; GtkWidget *AboutMenuItem; GtkWidget *ActionsPopover; GtkWidget *FirstRowNamesTree; GtkWidget *MainTree; GtkTreeViewColumn *ServiceTreeColumn; GtkWidget *RMBMenu; menu_obj *menu; } main_window; typedef struct { char *name; int loaded; int active; char *description; } service_info; typedef struct { GtkWidget *Window; GtkWidget *HatText; GtkWidget *HeaderText; GtkWidget *InfoText; GtkWidget *AlwaysOpenCheck; GtkWidget *CloseButton; GtkWidget *AcceptButton; } documentation_confirmation_window; void yon_config_main_clean(); main_window *setup_window();