|
|
#include <gtk/gtk.h>
|
|
|
#include <gtk/gtkx.h>
|
|
|
#include <locale.h>
|
|
|
#include <stdio.h>
|
|
|
#include <unistd.h>
|
|
|
#include <stdlib.h>
|
|
|
#include <libintl.h>
|
|
|
#include <getopt.h>
|
|
|
#include <libintl.h>
|
|
|
#include <vte/vte.h>
|
|
|
#include <libublsettings.h>
|
|
|
#include <libublsettings-gtk3.h>
|
|
|
#include <libublsettingsui-gtk3.h>
|
|
|
#include <time.h>
|
|
|
#ifdef WEBKIT_FOUND
|
|
|
#include <webkit2/webkit2.h>
|
|
|
#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 glade_path_terminal "/com/ublinux/ui/ubl-settings-services-terminal.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(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
|
|
|
|
|
|
#define LocalePath "/usr/share/locale"
|
|
|
#define LocaleName "ubl-settings-services"
|
|
|
|
|
|
#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_enabled_command "systemctl list-unit-files --type=service --type=socket --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:"
|
|
|
#define load_launched_command "systemctl list-units --type=service --type=socket --no-pager --state=active --all --no-legend|sed -e 's/^ //g' -e 's/ */:/g' |cut -f1 -d:"
|
|
|
#define service_start_command(target) yon_char_append("systemctl start --no-pager ",target)
|
|
|
#define service_stop_command(target) yon_char_append("systemctl stop --no-pager ",target)
|
|
|
#define service_enable_command(target) yon_char_append("systemctl enable --no-pager ",target)
|
|
|
#define service_disable_command(target) yon_char_append("systemctl disable --no-pager ",target)
|
|
|
#define service_info_command(target) yon_char_append("systemctl status -l --no-pager ",target)
|
|
|
|
|
|
typedef char* string;
|
|
|
string version_application;
|
|
|
|
|
|
char *local;
|
|
|
|
|
|
typedef struct {
|
|
|
// Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT {
|
|
|
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 load_mode;
|
|
|
|
|
|
int always_open_documentation;
|
|
|
// } Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT
|
|
|
// Type custom parameters below:
|
|
|
int rmb_clicked;
|
|
|
GtkTreeModel *ServiceFilter;
|
|
|
GtkTreeModel *SocketFilter;
|
|
|
GtkTreeModel *AutolaunchFilter;
|
|
|
GtkTreeModel *StoppedFilter;
|
|
|
GtkTreeModel *BlockedFilter;
|
|
|
|
|
|
} config;
|
|
|
|
|
|
typedef struct {
|
|
|
GtkWidget *Menu;
|
|
|
GtkWidget *MenuConfigAutostart;
|
|
|
GtkWidget *MenuConfigAutostop;
|
|
|
GtkWidget *MenuConfigBlock;
|
|
|
GtkWidget *MenuSystemAutostart;
|
|
|
GtkWidget *MenuSystemLaunched;
|
|
|
GtkWidget *MenuReloadConfig;
|
|
|
GtkWidget *MenuStatus;
|
|
|
} menu_obj;
|
|
|
|
|
|
typedef struct {
|
|
|
// Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT {
|
|
|
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 *RightBox;
|
|
|
|
|
|
GtkWidget *LoadGlobalMenuItem;
|
|
|
GtkWidget *LoadLocalMenuItem;
|
|
|
GtkWidget *LeftBox;
|
|
|
|
|
|
GtkWidget *DocumentationMenuItem;
|
|
|
GtkWidget *AboutMenuItem;
|
|
|
|
|
|
GtkWidget *InterfaceBox;
|
|
|
// } Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT
|
|
|
// Type custom parameters below:
|
|
|
GtkListStore *liststore1;
|
|
|
GtkListStore *liststore2;
|
|
|
GtkWidget *BoxMain;
|
|
|
GtkWidget *ServiceSourceCombo;
|
|
|
GtkWidget *ServiceTypeCombo;
|
|
|
GtkWidget *SearchEntry;
|
|
|
GtkWidget *UpdateButton;
|
|
|
GtkWidget *ConfigAutostartButton;
|
|
|
GtkWidget *ConfigAutostopButton;
|
|
|
GtkWidget *ConfigBlockButton;
|
|
|
GtkWidget *SystemAutostartButton;
|
|
|
GtkWidget *SystemLaunchButton;
|
|
|
GtkWidget *InfoButton;
|
|
|
GtkWidget *LogButton;
|
|
|
GtkWidget *MainUpperTree;
|
|
|
GtkWidget *MainTree;
|
|
|
GtkWidget *RMBMenu;
|
|
|
menu_obj *menu;
|
|
|
GtkWidget *ServiceLabel;
|
|
|
GtkWidget *DescriptionLabel;
|
|
|
|
|
|
} main_window;
|
|
|
|
|
|
typedef struct {
|
|
|
GtkWidget *Window;
|
|
|
|
|
|
GtkWidget *AlwaysOpenCheck;
|
|
|
|
|
|
GtkWidget *CloseButton;
|
|
|
GtkWidget *AcceptButton;
|
|
|
} documentation_confirmation_window;
|
|
|
|
|
|
typedef struct{
|
|
|
GtkListStore *liststore1;
|
|
|
GtkListStore *liststore2;
|
|
|
GtkWidget *BoxMain;
|
|
|
GtkWidget *ServiceSourceCombo;
|
|
|
GtkWidget *ServiceTypeCombo;
|
|
|
GtkWidget *SearchEntry;
|
|
|
GtkWidget *UpdateButton;
|
|
|
GtkWidget *ConfigAutostartButton;
|
|
|
GtkWidget *ConfigAutostopButton;
|
|
|
GtkWidget *ConfigBlockButton;
|
|
|
GtkWidget *SystemAutostartButton;
|
|
|
GtkWidget *SystemLaunchButton;
|
|
|
GtkWidget *InfoButton;
|
|
|
GtkWidget *LogButton;
|
|
|
GtkWidget *MainUpperTree;
|
|
|
GtkWidget *MainTree;
|
|
|
} bl_settings_services_window;
|
|
|
|
|
|
typedef struct {
|
|
|
GtkWidget *Window;
|
|
|
GtkWidget *UpdateButton;
|
|
|
GtkWidget *SystemTerminal;
|
|
|
GtkWidget *webHeaderNameLabel;
|
|
|
char *target;
|
|
|
} terminal_window;
|
|
|
|
|
|
void on_config_local_load(GtkWidget *self,main_window *widgets);
|
|
|
|
|
|
void on_config_global_load(GtkWidget *self,main_window *widgets);
|
|
|
|
|
|
void on_config_global_local_save();
|
|
|
|
|
|
void on_config_local_save();
|
|
|
|
|
|
void on_config_global_save();
|
|
|
|
|
|
void yon_interface_update(main_window *widgets);
|
|
|
|
|
|
GtkWidget *yon_menu_button_create(char *icon_name, char *text);
|
|
|
|
|
|
void on_column_resize(GtkTreeViewColumn *self,GParamSpec *pspec,main_window *widgets);
|
|
|
|
|
|
gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window *widgets);
|
|
|
|
|
|
GtkWidget *yon_menu_separator_create();
|
|
|
|
|
|
void on_config_autostart_clicked();
|
|
|
|
|
|
void on_activate(GtkTreeView *self, main_window *widgets);
|
|
|
|
|
|
void on_config_autostop_clicked();
|
|
|
|
|
|
void on_config_block_clicked();
|
|
|
|
|
|
void on_system_autostart_clicked();
|
|
|
|
|
|
void on_system_launch_clicked();
|
|
|
|
|
|
gboolean yon_service_source_check(GtkTreeModel *model, GtkTreeIter *iter, void *data);
|
|
|
|
|
|
void on_source_changed(GtkWidget *self, main_window *widgets);
|
|
|
|
|
|
gboolean yon_service_type_check(GtkTreeModel *model, GtkTreeIter *iter,void *data);
|
|
|
|
|
|
void on_type_changed(GtkWidget *self, main_window *widgets);
|
|
|
|
|
|
void on_search();
|
|
|
|
|
|
void on_info_clicked();
|
|
|
|
|
|
void *yon_unthreaded_config_load(void *widgets);
|
|
|
|
|
|
void on_update();
|
|
|
|
|
|
void on_status_show();
|
|
|
|
|
|
void yon_load_proceed(YON_CONFIG_TYPE type);
|
|
|
|
|
|
void config_init();
|
|
|
|
|
|
void yon_main_window_complete(main_window *widgets);
|
|
|
|
|
|
|
|
|
gboolean on_service_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
|
|
|
|
|
|
gboolean on_socket_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
|
|
|
|
|
|
gboolean on_autostart_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
|
|
|
|
|
|
gboolean on_stopped_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
|
|
|
|
|
|
gboolean on_blocked_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
|
|
|
|
|
|
terminal_window *yon_terminal_window_new();
|
|
|
|
|
|
void on_service_update(GtkWidget *self, terminal_window* window); |