diff --git a/gresource.xml b/gresource.xml
index b6f2a4b..835a942 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -3,7 +3,6 @@
ubl-settings-services.glade
ubl-settings-services-terminal.glade
- ubl-settings-services-log.glade
ubl-settings-services.css
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index dde613a..6469d42 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -32,7 +32,6 @@ add_custom_target(GLADE ubl-settings-services.glade)
set(DEPENDFILES
../ubl-settings-services.glade
../ubl-settings-services-terminal.glade
- ../ubl-settings-services-log.glade
../gresource.xml
../ubl-settings-services-banner.png
../ubl-settings-services.css
diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c
index 437cd70..8b464be 100644
--- a/source/ubl-settings-services.c
+++ b/source/ubl-settings-services.c
@@ -126,15 +126,20 @@ log_window *yon_log_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_log);
window->Window = yon_gtk_builder_get_widget(builder,"MonitorWindow");
window->SystemTerminal = yon_gtk_builder_get_widget(builder,"SystemTerminal");
+ window->TerminalScroll = yon_gtk_builder_get_widget(builder,"TerminalScroll");
window->TextEditor = yon_gtk_builder_get_widget(builder,"TextEditor");
window->webHeaderNameLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel");
window->UpdateButton = yon_gtk_builder_get_widget(builder,"UpdateButton");
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
+ window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->target=NULL;
+ window->adjustment = GTK_ADJUSTMENT(gtk_builder_get_object(builder,"adjustment1"));
+ yon_gtk_widget_set_scroll_window_for_scroll(window->Window,GTK_SCROLLBAR(window->TerminalScroll));
GdkRGBA rgba;
vte_terminal_get_color_background_for_draw(VTE_TERMINAL(window->SystemTerminal),&rgba);
vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba);
yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"terminal_window");
+ g_signal_connect(G_OBJECT(window->UpdateButton),"clicked",G_CALLBACK(on_update_clicked),window);
return window;
}
@@ -153,6 +158,21 @@ void yon_system_systemd_restart(GtkWidget *self, main_window *widgets){
}
}
+void yon_system_systemd_reexec(GtkWidget *self, main_window *widgets){
+ if (self){};
+ if (widgets){
+ if (getuid()!=0&>k_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
+ if (system(reexec_systemd_root_command)){
+ yon_ubl_status_box_render("TEXT_ERROR",BACKGROUND_IMAGE_FAIL_TYPE);
+ }
+ } else {
+ if (system(reexec_systemd_user_command)){
+ yon_ubl_status_box_render("TEXT_ERROR",BACKGROUND_IMAGE_FAIL_TYPE);
+ }
+ }
+ }
+}
+
typedef void (*data_function)(void*,void*);
void on_system_update_hz_clicked(GtkWidget *self, main_window *widgets){
@@ -163,15 +183,18 @@ void on_system_update_hz_clicked(GtkWidget *self, main_window *widgets){
data->data = widgets;
data->function = (data_function)yon_system_systemd_restart;
yon_confirmation_dialog_call(self,data);
+
}
}
void on_system_update_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
- // log_window *window = yon_log_window_new();
-
- // gtk_widget_show(window->Window);
+ dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
+ data->action_text = "Are you sure?";
+ data->data = widgets;
+ data->function = (data_function)yon_system_systemd_reexec;
+ yon_confirmation_dialog_call(self,data);
}
}
@@ -179,9 +202,16 @@ void on_system_update_clicked(GtkWidget *self, main_window *widgets){
void on_system_info_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
- log_window *window = yon_log_window_new();
-
- gtk_widget_show(window->Window);
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){
+ char *name;
+ gtk_tree_model_get(model,&iter,5,&name,-1);
+ log_window *window = yon_log_window_new();
+ window->target = service_info_command(name);
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+ }
}
}
@@ -189,19 +219,63 @@ void on_system_info_clicked(GtkWidget *self, main_window *widgets){
void on_system_log_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
- log_window *window = yon_log_window_new();
-
- gtk_widget_show(window->Window);
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){
+ char *name;
+ gtk_tree_model_get(model,&iter,5,&name,-1);
+ log_window *window = yon_log_window_new();
+ window->target = get_log_command(name);
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+ }
}
}
+void *on_terminal_relaunch(log_window *window){
+ gtk_widget_set_sensitive(window->SystemTerminal,0);
+ sleep(1);
+ gtk_widget_set_sensitive(window->SystemTerminal,1);
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ return NULL;
+}
+
+void on_save_clicked(GtkWidget *self, log_window *window){
+ if (self){};
+ vte_terminal_feed_child(VTE_TERMINAL(window->SystemTerminal),"\30",-1);
+ vte_terminal_feed_child(VTE_TERMINAL(window->SystemTerminal),"Y\r",-1);
+ gtk_widget_grab_focus(window->SystemTerminal);
+ // yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),SAVING_LABEL,1,BACKGROUND_IMAGE_SUCCESS_TYPE);
+ g_thread_new(NULL,(GThreadFunc)on_terminal_relaunch,window);
+}
+
+void on_update_clicked(GtkWidget *self, log_window *window){
+ if (self){};
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+}
+
void on_system_edit_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
- log_window *window = yon_log_window_new();
-
- gtk_widget_show(window->Window);
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){
+ char *name;
+ gtk_tree_model_get(model,&iter,5,&name,-1);
+ log_window *window = yon_log_window_new();
+ gtk_widget_show(window->SaveButton);
+ window->target=show_source_command(name);
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ GdkRGBA rgba;
+ rgba.blue=1;
+ rgba.green=1;
+ rgba.red=1;
+ vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba);
+ gtk_widget_set_sensitive(window->SystemTerminal,1);
+ g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_save_clicked),window);
+ gtk_widget_show(window->Window);
+ }
}
}
@@ -209,9 +283,17 @@ void on_system_edit_clicked(GtkWidget *self, main_window *widgets){
void on_system_status_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
- log_window *window = yon_log_window_new();
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){
+ char *name;
+ gtk_tree_model_get(model,&iter,5,&name,-1);
+ log_window *window = yon_log_window_new();
+ window->target = properties_command(name);
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+ }
- gtk_widget_show(window->Window);
}
}
@@ -360,6 +442,18 @@ void on_config_edit_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
log_window *window = yon_log_window_new();
+ gtk_widget_hide(gtk_widget_get_parent(window->SystemTerminal));
+ gtk_widget_show(gtk_widget_get_parent(window->TextEditor));
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->ConfigList);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ConfigMainTree)),&model,&iter)){
+ char *name;
+ gtk_tree_model_get(model,&iter,0,&name,-1);
+ int size;
+ config_str parsed = yon_config_load(config_get_command(name),&size);
+ char *text = yon_char_parsed_to_string(parsed,size,"");
+ gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(window->TextEditor)),text,-1);
+ }
gtk_widget_show(window->Window);
}
@@ -397,9 +491,134 @@ void on_session_lock_clicked(GtkWidget *self, main_window *widgets){
}
+void on_system_services_status(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ window->target = system_services_status_command;
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+
+ }
+
+}
+
+void on_user_services_status(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ window->target = user_services_status_command;
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+
+ }
+
+}
+
+void on_units_status(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ window->target = installed_units_states_command;
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+
+ }
+
+}
+
+void on_units_list_status(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ window->target = list_of_units_states_command;
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+
+ }
+
+}
+
+void on_sockets_list_status(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ window->target = list_of_sockets_states_command;
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+
+ }
+
+}
+
+void on_timers_list_status(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ window->target = list_of_timers_states_command;
+ yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
+ gtk_widget_show(window->Window);
+
+ }
+
+}
+
gboolean yon_interface_update(main_window *widgets){
if (widgets){
+ int system_size;
+ config_str system_services = yon_config_load(load_services_command,&system_size);
+ int user_size;
+ config_str user_services = yon_config_load(load_user_services_command,&user_size);
+ int config_size;
+ config_str config_files = yon_config_load(get_config_files_command,&config_size);
+ int sessions_size;
+ config_str sessions = yon_config_load(list_of_session_command,&sessions_size);
+ // int timers_size;
+ // config_str timers = yon_config_load(list_of_timers_command,&timers_size);
+
+ for (int i=0; iSystemList,&iter);
+ gtk_list_store_set(widgets->SystemList,&iter,4,strcmp(parsed[2],"active")?0:1,5,parsed[0],6,parsed[4],-1);
+ }
+
+ }
+ for (int i=0; iUserList,&iter);
+ gtk_list_store_set(widgets->UserList,&iter,4,strcmp(parsed[2],"active")?0:1,5,parsed[0],6,parsed[4],-1);
+ }
+ }
+ for (int i=0; i2){
+ GtkTreeIter iter;
+ char *description = "";
+ gtk_list_store_append(widgets->ConfigList,&iter);
+ gtk_list_store_set(widgets->ConfigList,&iter,0,parsed[2],1,parsed[1],2,description,-1);
+ }
+ }
+ for (int i=0;i4){
+ gtk_list_store_append(widgets->SessionsList,&iter);
+ gtk_list_store_set(widgets->SessionsList,&iter,0,atoi(parsed[0]),1,atoi(parsed[1]),2,parsed[2],3,parsed[3],4,parsed[4],-1);
+ }
+ }
}
return 0;
}
@@ -476,6 +695,13 @@ void yon_main_window_complete(main_window *widgets){
widgets->SystemUnitsTree=yon_gtk_builder_get_widget(builder,"SystemUnitsTree");
widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
+ widgets->SystemServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"SystemServicesStatusMenuItem");
+ widgets->UserServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"UserServicesStatusMenuItem");
+ widgets->InstalledUnitsStatusMenuItem=yon_gtk_builder_get_widget(builder,"InstalledUnitsStatusMenuItem");
+ widgets->UnitsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UnitsStatusListMenuItem");
+ widgets->SocketsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"SocketsStatusListMenuItem");
+ widgets->TimersStatusListMenuItem=yon_gtk_builder_get_widget(builder,"TimersStatusListMenuItem");
+
widgets->SystemSearchEntry=yon_gtk_builder_get_widget(builder,"SystemSearchEntry");
widgets->SystemFiltersCombo=yon_gtk_builder_get_widget(builder,"SystemFiltersCombo");
widgets->SystemInactiveShowCheck=yon_gtk_builder_get_widget(builder,"SystemInactiveShowCheck");
@@ -581,6 +807,12 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->SessionStopButton),"clicked",G_CALLBACK(on_session_stop_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->SessionBlockButton),"clicked",G_CALLBACK(on_session_lock_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemServicesStatusMenuItem),"activate",G_CALLBACK(on_system_services_status),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserServicesStatusMenuItem),"activate",G_CALLBACK(on_user_services_status),widgets);
+ g_signal_connect(G_OBJECT(widgets->InstalledUnitsStatusMenuItem),"activate",G_CALLBACK(on_units_status),widgets);
+ g_signal_connect(G_OBJECT(widgets->UnitsStatusListMenuItem),"activate",G_CALLBACK(on_units_list_status),widgets);
+ g_signal_connect(G_OBJECT(widgets->SocketsStatusListMenuItem),"activate",G_CALLBACK(on_sockets_list_status),widgets);
+ g_signal_connect(G_OBJECT(widgets->TimersStatusListMenuItem),"activate",G_CALLBACK(on_timers_list_status),widgets);
// g_signal_connect(G_OBJECT(widgets->SystemUnitsTree),"button-press-event",G_CALLBACK(on_context_menu_open),widgets);
g_signal_connect(G_OBJECT(g_list_nth_data(list,0)),"notify::width",G_CALLBACK(on_column_resize),widgets);
diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h
index e18506a..a5677c3 100644
--- a/source/ubl-settings-services.h
+++ b/source/ubl-settings-services.h
@@ -23,8 +23,7 @@
#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 glade_path_log "/com/ublinux/ui/ubl-settings-services-log.glade"
+#define glade_path_log "/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"
@@ -33,8 +32,8 @@
#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_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g'",NULL)
+#define load_services_command "systemctl list-units --type=service --type=socket --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'"
+#define load_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --type=service --type=socket --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'",NULL)
#define load_system_services_command "systemctl --system list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'"
#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:"
@@ -42,13 +41,30 @@
#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)
#define service_kill_command(target) yon_char_append("systemctl kill ",target)
#define service_check_active_command(target) yon_char_append("systemctl is-active ",target)
-#define start_log_command(target) yon_char_append("journalctl --all --no-pager --unit ",target)
+#define service_info_command(target) yon_char_append("systemctl status -l --no-pager ",target)
+#define get_log_command(target) yon_char_append("journalctl --all --no-pager --unit ",target)
+#define show_source_command(target) yon_char_append("systemctl edit --full ",target)
+#define properties_command(target) yon_char_append("systemctl show --no-pager ",target)
+
+#define get_config_files_command "find /etc/systemd -iname *.conf -exec du -sh --time {} \\;|sed -e 's/\t/;/g'"
+
+#define system_services_status_command "systemctl status --no-pager"
+#define user_services_status_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get()," status --no-pager",NULL)
+#define installed_units_states_command "systemctl list-unit-files --no-pager"
+#define list_of_units_states_command "systemctl list-units --all --no-pager"
+#define list_of_sockets_states_command "systemctl list-sockets --all --no-pager"
+#define list_of_timers_states_command "systemctl list-timers --all --no-pager"
-#define get_config_files_command "find /etc/systemd -iname *.conf -exec du -sh --time {} \\;"
+#define installed_units_command "systemctl list-unit-files --no-pager| sed -e 's/ */;/g'"
+#define list_of_units_command "systemctl list-units --all --no-pager| sed -e 's/ */;/g'"
+#define list_of_sockets_command "systemctl list-sockets --all --no-pager| sed -e 's/ */;/g'"
+#define list_of_timers_command "systemctl list-timers --all --no-pager| sed -e 's/ */;/g'"
+#define list_of_session_command "while IFS=\" \" read -r GET_SESSION GET_UID GET_USER GET_SEAT GET_TTY; do echo -e \"${GET_SESSION} $(loginctl session-status ${GET_SESSION} --no-page | sed -Enr \"s/^\\s*State: (.*)$/\1/p\") ${GET_UID} ${GET_USER} ${GET_SEAT} ${GET_TTY}\"; done < <(loginctl list-sessions --no-legend)"
+
+#define config_get_command(target) yon_char_append("cat ",target)
#define config_get_local_command "ubconfig --source system get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK"
#define config_get_global_command "ubconfig --source global get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK"
@@ -152,6 +168,13 @@ typedef struct {
GtkWidget *TimersMainTree;
GtkWidget *MainNotebook;
+ GtkWidget *SystemServicesStatusMenuItem;
+ GtkWidget *UserServicesStatusMenuItem;
+ GtkWidget *InstalledUnitsStatusMenuItem;
+ GtkWidget *UnitsStatusListMenuItem;
+ GtkWidget *SocketsStatusListMenuItem;
+ GtkWidget *TimersStatusListMenuItem;
+
} main_window;
@@ -186,10 +209,13 @@ typedef struct{
typedef struct {
GtkWidget *Window;
GtkWidget *SystemTerminal;
+ GtkWidget *TerminalScroll;
GtkWidget *TextEditor;
GtkWidget *webHeaderNameLabel;
GtkWidget *UpdateButton;
GtkWidget *SaveButton;
+ GtkWidget *StatusBox;
+ GtkAdjustment *adjustment;
char *target;
} log_window;
@@ -207,6 +233,18 @@ void on_service_constant_update();
log_window *yon_log_window_new();
+void on_system_services_status(GtkWidget *self, main_window *widgets);
+
+void on_user_services_status(GtkWidget *self, main_window *widgets);
+
+void on_units_status(GtkWidget *self, main_window *widgets);
+
+void on_units_list_status(GtkWidget *self, main_window *widgets);
+
+void on_sockets_list_status(GtkWidget *self, main_window *widgets);
+
+void on_timers_list_status(GtkWidget *self, main_window *widgets);
+
gboolean yon_interface_update(main_window *widgets);
GtkWidget *yon_menu_button_create(char *icon_name, char *text);
@@ -248,12 +286,17 @@ void yon_user_systemd_restart(GtkWidget *self, main_window *widgets);
void on_system_update_hz_clicked(GtkWidget *self, main_window *widgets);
+void yon_system_systemd_reexec(GtkWidget *self, main_window *widgets);
+
void on_system_update_clicked(GtkWidget *self, main_window *widgets);
void on_system_info_clicked(GtkWidget *self, main_window *widgets);
void on_system_log_clicked(GtkWidget *self, main_window *widgets);
+void *on_terminal_relaunch(log_window *window);
+void on_save_clicked(GtkWidget *self, log_window *window);
+void on_update_clicked(GtkWidget *self, log_window *window);
void on_system_edit_clicked(GtkWidget *self, main_window *widgets);
void on_system_status_clicked(GtkWidget *self, main_window *widgets);
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index 44ff2ce..551fe33 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -52,5 +52,9 @@
#define END_SESSION_LABEL _("End session")
#define BLOCK_SESSION_LABEL _("Block session")
+#define SOURCE_UNFOUND_LABEL _("Service source were not loaded")
+
+#define SAVING_LABEL _("Saving...")
+
#define SWITCH_OFF_ERROR_LABEL _("Service were not stopped")
#define STOP_SERVICE_WARMING_LABEL(target) yon_char_unite(_("Are you sure want to stop "),target,"?\n",_("The stop will be forced.\nThe system may become unstable."),NULL)
\ No newline at end of file
diff --git a/ubl-settings-services-log.glade b/ubl-settings-services-log.glade
deleted file mode 100644
index 0715261..0000000
--- a/ubl-settings-services-log.glade
+++ /dev/null
@@ -1,172 +0,0 @@
-
-
-
-
-
-
-
-
-
- True
- False
- com.ublinux.ubl-settings-services.sync-symbolic
-
-
- True
- False
- document-save-symbolic
-
-
-
diff --git a/ubl-settings-services-terminal.glade b/ubl-settings-services-terminal.glade
index a8ab008..44063f1 100644
--- a/ubl-settings-services-terminal.glade
+++ b/ubl-settings-services-terminal.glade
@@ -14,6 +14,12 @@
False
com.ublinux.ubl-settings-services.sync-symbolic
+
+ True
+ False
+ document-save-symbolic
+
+
800
600
@@ -23,50 +29,14 @@
True
False
- 5
- 5
- 5
- 5
- 5
+ vertical
-
+
True
False
vertical
- 5
-
- True
- True
- True
- Update
- image1
-
-
-
- False
- True
- 0
-
-
-
-
- True
- True
- True
- Update
- image2
-
-
-
- False
- True
- 1
-
+
@@ -79,35 +49,126 @@
True
False
+ 5
+ 5
+ 5
+ 5
5
-
+
True
- False
- True
- natural
- adjustment1
- natural
- UTF-8
- 0
- True
- False
+ False
+ vertical
+ 5
+
+
+ True
+ True
+ True
+ Update
+ image1
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ Update
+ image2
+
+
+
+ False
+ True
+ 1
+
+
- True
+ False
True
0
-
+
True
False
- vertical
- adjustment1
+ 5
+
+
+ True
+ False
+
+
+ True
+ False
+ True
+ natural
+ adjustment1
+ natural
+ UTF-8
+ 0
+ True
+ False
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ adjustment1
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ in
+
+
+ True
+ True
+ textbuffer1
+
+
+
+
+ True
+ True
+ 2
+
+
- False
+ True
True
1
@@ -139,9 +200,4 @@
-
- True
- False
- document-save-symbolic
-
diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade
index 445165c..508fb87 100644
--- a/ubl-settings-services.glade
+++ b/ubl-settings-services.glade
@@ -167,7 +167,7 @@
True
False
-
-
-
-
-
-