diff --git a/Makefile b/Makefile
index 5e79ef1..4856d78 100644
--- a/Makefile
+++ b/Makefile
@@ -135,6 +135,8 @@ install: check uninstall
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.launch-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.important-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.lookup-symbolic.svg"
+ @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.edit-symbolic.svg"
+ @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.lock-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \
diff --git a/icons/com.ublinux.ubl-settings-services.edit-symbolic.svg b/icons/com.ublinux.ubl-settings-services.edit-symbolic.svg
new file mode 100644
index 0000000..baba3f9
--- /dev/null
+++ b/icons/com.ublinux.ubl-settings-services.edit-symbolic.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/icons/com.ublinux.ubl-settings-services.lock-symbolic.svg b/icons/com.ublinux.ubl-settings-services.lock-symbolic.svg
new file mode 100644
index 0000000..132b656
--- /dev/null
+++ b/icons/com.ublinux.ubl-settings-services.lock-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c
index 1cc2867..437cd70 100644
--- a/source/ubl-settings-services.c
+++ b/source/ubl-settings-services.c
@@ -2,7 +2,7 @@
config main_config;
-//functions
+//saving & loading
void yon_load_proceed(YON_CONFIG_TYPE type){
yon_config_clean();
@@ -40,6 +40,8 @@ void on_config_global_load(GtkWidget *self,main_window *widgets){
}
+// functions
+
void on_service_constant_update(){
}
@@ -58,644 +60,365 @@ void on_config_global_save(){
}
+void on_config_autostart_clicked(){
-static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data)
-{
- if (error){};
- if (!terminal) return;
- if (pid == -1) printf("Error\n\n\n");
- else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data));
-}
-
-void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument){
- char **commands=new_arr(char*,2);
- gchar **envp = g_get_environ();
- commands[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
- commands[1]=NULL;
- char **env=new_arr(char*,2);
- env[0]="";
- env[1]=NULL;
- vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
- VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
- vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
- char *install_command=yon_char_unite("clear;tput cup 0 0 && tput ed; ",command," ; sleep 5; stty -echo; unset PS1","\n",NULL);
- if(endwork_function)
- g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument);
- vte_terminal_spawn_async(VTE_TERMINAL(terminal),
- VTE_PTY_DEFAULT,
- NULL,
- commands,
- NULL,
- 0,
- NULL, NULL,
- NULL,
- -1,
- NULL,
- child_ready,
- install_command);
- vte_pty_spawn_async(pty,
- NULL,
- commands,
- NULL,
- 0,
- NULL, NULL,
- NULL,
- -1,
- NULL,
- NULL,
- NULL);
- vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), -1);
- vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE);
- vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
- gtk_widget_show_all(terminal);
- }
+}
+
+void on_activate(GtkTreeView *self, main_window *widgets){
+ if (self&&widgets){};
+}
+
+void on_config_autostop_clicked(){
+
+}
+
+void on_config_block_clicked(){
+
+}
+
+void on_system_autostart_clicked(){
+
+}
+
+void on_system_kill_confirmed(GtkWidget *self,char *service_name){
+ if (self&&service_name){};
+
+}
+
+void on_system_launch_clicked(){
+
+}
+
+void on_system_restart_clicked(){
+
+}
+
+void on_source_show(){
+
+}
-// standard functions
+void on_properties_show(){
-void on_config_autostart_clicked(GtkWidget *self, main_window *widgets){
+}
+
+void on_session_activate(){
+
+}
+
+void on_session_end(){
+
+}
+
+void on_session_block(){
+
+}
+
+void on_status_show(){
+
+}
+
+void on_log_show(){
+
+}
+
+log_window *yon_log_window_new(){
+ log_window *window = malloc(sizeof(log_window));
+ 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->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->target=NULL;
+ 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");
+ return window;
+}
+
+void yon_system_systemd_restart(GtkWidget *self, main_window *widgets){
if (self){};
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- gboolean status = 0;
- char *name;
- gtk_tree_model_get(model,&iter,0,&status,5,&name,-1);
- char *parsed_name = yon_char_divide(name, yon_char_find_last(name,'.'));
- free(name);
- name=parsed_name;
- gtk_list_store_set(GTK_LIST_STORE(widgets->liststore2),&iter,0,!status,-1);
- char *config_sting = yon_config_get_by_key("SERVICES_ENABLE");
- int size;
- config_str parsed = yon_char_parse(config_sting,&size,",");
- int place = yon_char_parsed_check_exist(parsed,size,name);
- if (status==0){
- if (place ==-1){
- if (!yon_config_append("SERVICES_ENABLE",name,",")){
- yon_config_register("SERVICES_ENABLE",SERVICES_ENABLE_get_command,name);
- }
+ if (widgets){
+ if (getuid()!=0&>k_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
+ if (system(reload_systemd_root_command)){
+ yon_ubl_status_box_render("TEXT_ERROR",BACKGROUND_IMAGE_FAIL_TYPE);
}
} else {
- if (place !=-1){
- parsed = yon_char_parsed_rip(parsed,&size,place);
- if (parsed)
- yon_config_set("SERVICES_ENABLE",yon_char_parsed_to_string(parsed,size,","));
- else yon_config_remove_by_key("SERVICES_ENABLE");
+ if (system(reload_systemd_user_command)){
+ yon_ubl_status_box_render("TEXT_ERROR",BACKGROUND_IMAGE_FAIL_TYPE);
}
}
- yon_char_parsed_free(parsed,size);
}
}
-void on_config_autostop_clicked(GtkWidget *self, main_window *widgets){
- if (self){};
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- gboolean status = 0;
- char *name;
- gtk_tree_model_get(model,&iter,1,&status,5,&name,-1);
- char *parsed_name = yon_char_divide(name, yon_char_find_last(name,'.'));
- free(name);
- name=parsed_name;
- gtk_list_store_set(GTK_LIST_STORE(widgets->liststore2),&iter,1,!status,-1);
- char *config_sting = yon_config_get_by_key("SERVICES_DISABLE");
- int size;
- config_str parsed = yon_char_parse(config_sting,&size,",");
- int place = yon_char_parsed_check_exist(parsed,size,name);
- if (status==0){
- if (place ==-1){
- if (!yon_config_append("SERVICES_DISABLE",name,",")){
- yon_config_register("SERVICES_DISABLE",SERVICES_DISABLE_get_command,name);
- }
- }
- } else {
- if (place !=-1){
- parsed = yon_char_parsed_rip(parsed,&size,place);
- if (parsed)
- yon_config_set("SERVICES_DISABLE",yon_char_parsed_to_string(parsed,size,","));
- else yon_config_remove_by_key("SERVICES_DISABLE");
- }
- }
- yon_char_parsed_free(parsed,size);
+typedef void (*data_function)(void*,void*);
+
+void on_system_update_hz_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ 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_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);
+ }
}
-void on_config_block_clicked(GtkWidget *self, main_window *widgets){
- if (self){};
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- gboolean status = 0;
- char *name;
- gtk_tree_model_get(model,&iter,2,&status,5,&name,-1);
- char *parsed_name = yon_char_divide(name, yon_char_find_last(name,'.'));
- free(name);
- name=parsed_name;
- gtk_list_store_set(GTK_LIST_STORE(widgets->liststore2),&iter,2,!status,-1);
- char *config_sting = yon_config_get_by_key("SERVICES_MASK");
- int size;
- config_str parsed = yon_char_parse(config_sting,&size,",");
- int place = yon_char_parsed_check_exist(parsed,size,name);
- if (status==0){
- if (place ==-1){
- if (!yon_config_append("SERVICES_MASK",name,",")){
- yon_config_register("SERVICES_MASK",SERVICES_MASK_get_command,name);
- }
- }
- } else {
- if (place !=-1){
- parsed = yon_char_parsed_rip(parsed,&size,place);
- if (parsed)
- yon_config_set("SERVICES_MASK",yon_char_parsed_to_string(parsed,size,","));
- else yon_config_remove_by_key("SERVICES_MASK");
- }
- }
- yon_char_parsed_free(parsed,size);
- }
+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);
+ }
}
-void on_system_autostart_clicked(GtkWidget *self, main_window *widgets){
- if (self){};
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- gboolean status = 0;
- char *service_name;
- gtk_tree_model_get(model,&iter,3,&status,5,&service_name,-1);
- gtk_list_store_set(GTK_LIST_STORE(widgets->liststore2),&iter,3,!status,-1);
- yon_launch((!status)==1 ? service_enable_command(service_name) : \
- service_disable_command(service_name));
- }
+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);
+ }
}
-void on_system_kill_confirmed(GtkWidget *self,char *service_name){
- if (self){};
- char *command = service_kill_command(service_name);
- yon_launch(command);
+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);
+ }
+
}
-void on_system_launch_clicked(GtkWidget *self, main_window *widgets){
- if (self){};
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- gboolean status = 0;
- char *service_name;
- gtk_tree_model_get(model,&iter,4,&status,5,&service_name,-1);
- yon_launch((!status)==1 ? service_start_command(service_name) : \
- service_stop_command(service_name));
- int size;
- config_str result = yon_config_load(service_check_active_command(service_name),&size);
- yon_char_remove_last_symbol(result[0],'\n');
- if (size>0){
- if (!strcmp(result[0],"active")){
- if (status){
- dialog_confirmation_data data;
- data.action_text=STOP_SERVICE_WARMING_LABEL(service_name);
- data.function=(void*)(void*)on_system_kill_confirmed;
- data.data=service_name;
- int answer = yon_confirmation_dialog_call(self,&data);
- if (answer)
- gtk_list_store_set(GTK_LIST_STORE(widgets->liststore2),&iter,4,0,-1);
- } else {
- gtk_list_store_set(GTK_LIST_STORE(widgets->liststore2),&iter,4,1,-1);
- }
- } else {
- gtk_list_store_set(GTK_LIST_STORE(widgets->liststore2),&iter,4,0,-1);
- }
- }
- yon_char_parsed_free(result,size);
- }
+void on_system_status_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
}
-gboolean yon_service_source_check(GtkTreeModel *model, GtkTreeIter *iter,void *data){
- if (data){};
- int type;
- gtk_tree_model_get(model,iter,8,&type,-1);
- return 1;
+void on_system_filter_changed(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
+void on_system_search(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
-gboolean on_service_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data){
- if (data){};
- int type;
- gtk_tree_model_get(model,iter,7,&type,-1);
- if (type==1)
- return 1;
- return 0;
}
-gboolean on_socket_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data){
- if (data){};
- int type;
- gtk_tree_model_get(model,iter,7,&type,-1);
- if (type==2)
- return 1;
- return 0;
+void on_system_inactive_toggled(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-gboolean on_autostart_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data){
- if (data){};
- gboolean type;
- gtk_tree_model_get(model,iter,0,&type,-1);
- if (type)
- return 1;
- return 0;
+void on_system_unloaded_toggled(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-gboolean on_stopped_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data){
- if (data){};
- gboolean type;
- gtk_tree_model_get(model,iter,1,&type,-1);
- if (type)
- return 1;
- return 0;
+void on_user_update_hz_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ // log_window *window = yon_log_window_new();
+
+ // gtk_widget_show(window->Window);
+ }
+
}
-gboolean on_blocked_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data){
- if (data){};
- gboolean type;
- gtk_tree_model_get(model,iter,2,&type,-1);
- if (type)
- return 1;
- return 0;
+void on_user_update_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-gboolean on_source_user_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data){
- if (data){};
- gboolean type;
- gtk_tree_model_get(model,iter,8,&type,-1);
- if (type)
- return 1;
- return 0;
+void on_user_info_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ gtk_widget_show(window->Window);
+ }
+
}
-gboolean on_source_system_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data){
- if (data){};
- gboolean type;
- gtk_tree_model_get(model,iter,8,&type,-1);
- if (!type)
- return 1;
- return 0;
+void on_user_log_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ gtk_widget_show(window->Window);
+ }
+
}
-void on_type_changed(GtkWidget *self, main_window *widgets){
- if (self){};
- switch (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo))){
- case 0:
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(widgets->liststore2));
- break;
- case 1:
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(main_config.ServiceFilter));
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter));
- break;
- case 2:
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(main_config.SocketFilter));
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.SocketFilter));
- break;
- case 3:
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(main_config.AutolaunchFilter));
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.AutolaunchFilter));
- break;
- case 4:
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(main_config.StoppedFilter));
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.StoppedFilter));
- break;
- case 5:
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(main_config.BlockedFilter));
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.BlockedFilter));
- break;
- }
- if (main_config.SourceFilter){
- g_object_unref(main_config.SourceFilter);
- main_config.SourceFilter=NULL;
- }
- main_config.SourceFilter = gtk_tree_model_filter_new(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->MainTree)),NULL);
- int active = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo));
- if (active==1){
- gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.SourceFilter),(GtkTreeModelFilterVisibleFunc)on_source_system_filter,NULL,NULL);
-
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.SourceFilter);
- } else if (active==2){
- gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.SourceFilter),(GtkTreeModelFilterVisibleFunc)on_source_user_filter,NULL,NULL);
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.SourceFilter);
- }
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.SourceFilter));
- gtk_tree_view_set_search_column(GTK_TREE_VIEW(widgets->MainTree),5);
+void on_user_edit_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-void on_service_update(GtkWidget *self, terminal_window* window){
- if (self){};
- yon_terminal_integrated_start(window->SystemTerminal,service_info_command(window->target),NULL,NULL);
- GdkRGBA rgba;
- vte_terminal_get_color_background_for_draw(VTE_TERMINAL(window->SystemTerminal),&rgba);
- vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba);
+void on_user_status_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-terminal_window *yon_terminal_window_new(){
- terminal_window *window = malloc(sizeof(terminal_window));
- GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_terminal);
- window->Window = yon_gtk_builder_get_widget(builder,"MonitorWindow");
- window->SystemTerminal = yon_gtk_builder_get_widget(builder,"SystemTerminal");
- window->UpdateButton = yon_gtk_builder_get_widget(builder,"UpdateButton");
- window->webHeaderNameLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel");
- window->target=NULL;
- yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"terminal_window");
+void on_user_filter_changed(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
+}
- g_signal_connect(G_OBJECT(window->UpdateButton),"clicked",G_CALLBACK(on_service_update),window);
+void on_user_search(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
gtk_widget_show(window->Window);
- return window;
+ }
}
-void on_info_clicked(GtkWidget *self, main_window *widgets){
- if (self){}
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
- GtkTreeIter iter;
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- char *service_name;
- gtk_tree_model_get(model,&iter,5,&service_name,-1);
- if (!yon_char_is_empty(service_name)){
- terminal_window *window = yon_terminal_window_new();
- window->target=service_name;
- char *header = yon_char_unite(STATUS_LABEL," ",service_name,NULL);
- gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),header);
- gtk_window_set_title(GTK_WINDOW(window->Window),header);
- free(header);
- on_service_update(NULL,window);
- }
- }
+void on_user_inactive_toggled(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-log_window *yon_log_window_new(){
- log_window *window = malloc(sizeof(log_window));
- 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->webHeaderNameLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel");
- window->target=NULL;
- yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"terminal_window");
- return window;
+void on_user_unloaded_toggled(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-void on_log_show(GtkWidget *self, main_window *widgets){
- if (self){};
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
- GtkTreeIter iter;
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- log_window *window = yon_log_window_new();
- char *name;
- gtk_tree_model_get(model,&iter,5,&name,-1);
- yon_terminal_integrated_start(window->SystemTerminal,start_log_command(name),NULL,NULL);
- GdkRGBA rgba;
- rgba.alpha=1;
- rgba.red=0.95;
- rgba.green=0.95;
- rgba.blue=0.95;
- vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba);
- vte_terminal_set_color_background(VTE_TERMINAL(window->SystemTerminal),&rgba);
- rgba.red=0;
- rgba.green=0;
- rgba.blue=0;
- vte_terminal_set_color_foreground(VTE_TERMINAL(window->SystemTerminal),&rgba);
- gtk_widget_show(window->Window);
- }
+void on_config_edit_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+ gtk_widget_show(window->Window);
+ }
+
}
-void *yon_unthreaded_config_load(void *widgets){
- if (main_config.load_mode==1){
- on_config_local_load(NULL,(main_window*)widgets);
- } else if (main_config.load_mode==0){
- on_config_global_load(NULL,(main_window*)widgets);
- }
- return NULL;
+void on_session_start_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-void on_update(GtkWidget *self,main_window *widgets){
- if (!main_config.update_thread_active){
- if (self){}
- yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
- if (yon_unthreaded_config_load(widgets)){};
- }
+void on_session_stop_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+ }
+
}
-void *update_delay(main_window *widgets){
- on_type_changed(NULL,widgets);
- main_config.update_thread_active=0;
- textdomain(template_ui_LocaleName);
- if (main_config.load_mode){
- yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
- } else {
- yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
- }
- textdomain(LocaleName);
- return NULL;
+void on_session_lock_clicked(GtkWidget *self, main_window *widgets){
+ if (self){}
+ if (widgets){
+ log_window *window = yon_log_window_new();
+
+ gtk_widget_show(window->Window);
+
+ }
+
}
gboolean yon_interface_update(main_window *widgets){
- gtk_widget_set_sensitive(widgets->UpdateButton,0);
- int size;
- int size_users;
- GtkTreeIter iter;
- gtk_list_store_clear(widgets->liststore2);
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),NULL);
- config_str services = yon_config_load(load_services_command,&size);
- char *command = load_user_services_command;
- config_str users_services = yon_config_load(command,&size_users);
- for (int i=0;iliststore2,&iter);
- int type;
- char *description = parsed[parsed_size-1];
- if (strstr(parsed[0],".socket"))
- type = 2;
- else type = 1;
- int user_service=0;
- gtk_list_store_set(widgets->liststore2,&iter,5,parsed[0],6,description,7,type,8,user_service,-1);
- }
- for (int i=0;iliststore2,&iter);
- int type;
- char *description = parsed[parsed_size-1];
- if (strstr(parsed[0],".socket"))
- type = 2;
- else type = 1;
- int user_service=1;
- gtk_list_store_set(widgets->liststore2,&iter,5,parsed[0],6,description,7,type,8,user_service,-1);
- }
+ if (widgets){
- int launched_size;
- config_str launched_parsed = yon_config_load(load_launched_command,&launched_size);
- int enabled_size;
- config_str enabled_parsed = yon_config_load(load_enabled_command,&enabled_size);
- yon_char_parsed_divide_search_full(launched_parsed,launched_size,"\n",-1);
- yon_char_parsed_divide_search_full(enabled_parsed,enabled_size,"\n",-1);
- char *launched = yon_char_parsed_to_string(launched_parsed,launched_size,",");
- char *enabled = yon_char_parsed_to_string(enabled_parsed,enabled_size,",");
- char *start = yon_config_get_by_key("SERVICES_ENABLE");
- char *stop = yon_config_get_by_key("SERVICES_DISABLE");
- char *block = yon_config_get_by_key("SERVICES_MASK");
- if (!yon_char_is_empty(launched)&&launched[strlen(launched)-1]=='\n') launched[strlen(launched)-1]='\0';
- if (!yon_char_is_empty(enabled)&&enabled[strlen(enabled)-1]=='\n') enabled[strlen(enabled)-1]='\0';
- if (!yon_char_is_empty(start)&&start[strlen(start)-1]=='\n') start[strlen(start)-1]='\0';
- if (!yon_char_is_empty(stop)&&stop[strlen(stop)-1]=='\n') stop[strlen(stop)-1]='\0';
- if (!yon_char_is_empty(block)&&block[strlen(block)-1]=='\n') block[strlen(block)-1]='\0';
- int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->liststore2),&iter);
- for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->liststore2),&iter)){
- char *name;
- gtk_tree_model_get(GTK_TREE_MODEL(widgets->liststore2),&iter,5,&name,-1);
- char *name_copy = yon_char_new(name);
- char *name_parsed = yon_char_divide(name_copy,yon_char_find_last(name_copy,'.'));
- if (!yon_char_is_empty(start)){
- if (!strcmp(start,name))
- gtk_list_store_set(widgets->liststore2,&iter,0,1,-1);
- else if (strstr(start,name_parsed)&&strcmp(name_copy,"socket"))
- gtk_list_store_set(widgets->liststore2,&iter,0,1,-1);
- else
- gtk_list_store_set(widgets->liststore2,&iter,0,0,-1);
- }
- if (!yon_char_is_empty(stop)){
- if (strstr(stop,name))
- gtk_list_store_set(widgets->liststore2,&iter,1,1,-1);
- else if (strstr(stop,name_parsed)&&strcmp(name_copy,"socket"))
- gtk_list_store_set(widgets->liststore2,&iter,1,1,-1);
- else
- gtk_list_store_set(widgets->liststore2,&iter,1,0,-1);
- }
- if (!yon_char_is_empty(block)){
- if (strstr(block,name))
- gtk_list_store_set(widgets->liststore2,&iter,2,1,-1);
- else if (strstr(block,name_parsed)&&strcmp(name_copy,"socket"))
- gtk_list_store_set(widgets->liststore2,&iter,2,1,-1);
- else
- gtk_list_store_set(widgets->liststore2,&iter,2,0,-1);
- }
- if (!yon_char_is_empty(launched)){
- if (strstr(launched,name))
- gtk_list_store_set(widgets->liststore2,&iter,4,1,-1);
- else if (strstr(launched,name_parsed)&&strcmp(name_copy,"socket"))
- gtk_list_store_set(widgets->liststore2,&iter,4,1,-1);
- else
- gtk_list_store_set(widgets->liststore2,&iter,4,0,-1);
- }
- if (!yon_char_is_empty(enabled)){
- if (strstr(enabled,name))
- gtk_list_store_set(widgets->liststore2,&iter,3,1,-1);
- else if (strstr(enabled,name_parsed)&&strcmp(name_copy,"socket"))
- gtk_list_store_set(widgets->liststore2,&iter,3,1,-1);
- else
- gtk_list_store_set(widgets->liststore2,&iter,3,0,-1);
- }
- free(name);
- free(name_parsed);
- while(gtk_events_pending()) gtk_main_iteration();
}
- update_delay(widgets);
- gtk_widget_set_sensitive(widgets->UpdateButton,1);
return 0;
}
void on_column_resize(GtkTreeViewColumn *self,GParamSpec *pspec,main_window *widgets){
if (self||pspec){}
- GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->MainTree));
+ GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->SystemUnitsTree));
int width_configuration = gtk_tree_view_column_get_width(g_list_nth_data(list,0))+gtk_tree_view_column_get_width(g_list_nth_data(list,1))+gtk_tree_view_column_get_width(g_list_nth_data(list,2));
- int width_system = gtk_tree_view_column_get_width(g_list_nth_data(list,3))+gtk_tree_view_column_get_width(g_list_nth_data(list,4));
+ int width_system = gtk_tree_view_column_get_width(g_list_nth_data(list,3))+gtk_tree_view_column_get_width(g_list_nth_data(list,4))+gtk_tree_view_column_get_width(g_list_nth_data(list,5));
g_list_free(list);
- gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->MainUpperTree),0),width_configuration);
- gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->MainUpperTree),1),width_system);
-}
-
-GtkWidget *yon_menu_separator_create() {
- GtkWidget *menu_item = gtk_separator_menu_item_new();
-
- gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"sepat");
- gtk_widget_show(menu_item);
- gtk_widget_set_sensitive(menu_item,0);
- return menu_item;
-}
-
-GtkWidget *yon_menu_button_create(char *icon_name, char *text) {
- GtkWidget *menu_item = gtk_menu_item_new();
- GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0);
- GtkWidget *icon;
- if(icon_name){
- icon = gtk_image_new_from_icon_name(icon_name,GTK_ICON_SIZE_BUTTON);
- gtk_box_pack_start(GTK_BOX(box),icon,0,0,5);
- }
- GtkWidget *label = gtk_label_new(text);
- gtk_box_pack_start(GTK_BOX(box),label,0,0,5);
- gtk_container_add(GTK_CONTAINER(menu_item),box);
- gtk_widget_show_all(menu_item);
- return menu_item;
-}
+ gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemUpperTree),0),width_configuration);
+ gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemUpperTree),1),width_system);
-gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window *widgets){
- if (self){};
- if (event->button==3){
- main_config.rmb_clicked=1;
- menu_obj *menu_object = g_malloc0(sizeof(menu_obj));
- GtkWidget *menu = gtk_menu_new();
- gtk_menu_set_reserve_toggle_size(GTK_MENU(menu),0);
- GtkWidget *menu_item_configuration_in_config = yon_menu_button_create(NULL,CONFIG_CONFIGURATION_LABEL);
- gtk_widget_set_sensitive(menu_item_configuration_in_config,0);
- GtkWidget *menu_item_autostart_config = yon_menu_button_create("media-playback-start-symbolic",AUTOSTART_LABEL);
- GtkWidget *menu_item_autostop = yon_menu_button_create("media-playback-stop-symbolic",AUTOSTOP_LABEL);
- GtkWidget *menu_item_block = yon_menu_button_create("process-stop-symbolic",BLOCK_LABEL);
- GtkWidget *menu_item_separator1 = yon_menu_separator_create();
- GtkWidget *menu_item_configuration_in_system = yon_menu_button_create(NULL,SYSTEM_CONFIGURATION_LABEL);
- gtk_widget_set_sensitive(menu_item_configuration_in_system,0);
- GtkWidget *menu_item_autostart_system = yon_menu_button_create("media-playback-start-symbolic",AUTOSTART_LABEL);
- GtkWidget *menu_item_launched = yon_menu_button_create("emoji-flags-symbolic",SYSTEM_LAUNCH_TOGGLE_LABEL);
- GtkWidget *menu_item_separator2 = yon_menu_separator_create();
- GtkWidget *menu_item_reload = yon_menu_button_create("emblem-synchronizing-symbolic",SERVICE_RELOAD_LABEL);
- GtkWidget *menu_item_status = yon_menu_button_create("dialog-information-symbolic",STATUS_LABEL);
- menu_object->Menu = menu;
- menu_object->MenuConfigAutostart = menu_item_autostart_config;
- menu_object->MenuConfigAutostop = menu_item_autostop;
- menu_object->MenuConfigBlock = menu_item_block;
- menu_object->MenuSystemAutostart = menu_item_autostart_system;
- menu_object->MenuSystemLaunched = menu_item_launched;
- menu_object->MenuReloadConfig = menu_item_reload;
- menu_object->MenuStatus = menu_item_status;
- g_signal_connect(G_OBJECT(menu_item_autostart_config),"activate",G_CALLBACK(on_config_autostart_clicked),widgets);
- g_signal_connect(G_OBJECT(menu_item_autostop),"activate",G_CALLBACK(on_config_autostop_clicked),widgets);
- g_signal_connect(G_OBJECT(menu_item_block),"activate",G_CALLBACK(on_config_block_clicked),widgets);
- g_signal_connect(G_OBJECT(menu_item_autostart_system),"activate",G_CALLBACK(on_system_autostart_clicked),widgets);
- g_signal_connect(G_OBJECT(menu_item_launched),"activate",G_CALLBACK(on_system_launch_clicked),widgets);
- g_signal_connect(G_OBJECT(menu_item_reload),"activate",G_CALLBACK(on_update),widgets);
- g_signal_connect(G_OBJECT(menu_item_status),"activate",G_CALLBACK(on_info_clicked),widgets);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_configuration_in_config);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_autostart_config);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_autostop);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_block);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_separator1);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_configuration_in_system);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_autostart_system);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_launched);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_separator2);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_reload);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_item_status);
- widgets->RMBMenu=menu;
- widgets->menu=menu_object;
- gtk_widget_show_all(widgets->RMBMenu);
- gtk_menu_popup_at_pointer(GTK_MENU(menu),NULL);
- return 0;
- }
- return 0;
+ list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->UserUnitsTree));
+ width_configuration = gtk_tree_view_column_get_width(g_list_nth_data(list,0))+gtk_tree_view_column_get_width(g_list_nth_data(list,1))+gtk_tree_view_column_get_width(g_list_nth_data(list,2));
+ width_system = gtk_tree_view_column_get_width(g_list_nth_data(list,3))+gtk_tree_view_column_get_width(g_list_nth_data(list,4))+gtk_tree_view_column_get_width(g_list_nth_data(list,5));
+ g_list_free(list);
+ gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->UsersUpperTree),0),width_configuration);
+ gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->UsersUpperTree),1),width_system);
}
/**config_init()
@@ -716,43 +439,18 @@ void config_init(){
main_config.lock_save_local=0;
main_config.load_mode=1;
main_config.update_thread_active=0;
-}
-
-void on_activate(GtkTreeView *self, main_window *widgets){
- if (self){};
- GtkTreeIter iter;
- GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->MainTree));
- char *name=NULL;
- char *description=NULL;
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- gtk_tree_model_get(model,&iter,5,&name,6,&description,-1);
- gtk_label_set_text(GTK_LABEL(widgets->ServiceLabel),name);
- gtk_label_set_text(GTK_LABEL(widgets->DescriptionLabel),description);
- menu_obj *menu=widgets->menu;
- if (main_config.rmb_clicked){
- gtk_menu_popup_at_pointer(GTK_MENU(menu->Menu),NULL);
- }
- }
- main_config.rmb_clicked=0;
}
void on_tree_selection_changed(GtkWidget *self, main_window *widgets){
if (self){};
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList);
GtkTreeIter iter;
- int switch_status=0;
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
- switch_status=1;
+ // int switch_status=0;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){
+ // switch_status=1;
}
if (getuid()==0){
- gtk_widget_set_sensitive(widgets->ConfigAutostartButton,switch_status);
- gtk_widget_set_sensitive(widgets->ConfigAutostopButton,switch_status);
- gtk_widget_set_sensitive(widgets->ConfigBlockButton,switch_status);
}
- gtk_widget_set_sensitive(widgets->SystemAutostartButton,switch_status);
- gtk_widget_set_sensitive(widgets->SystemLaunchButton,switch_status);
- gtk_widget_set_sensitive(widgets->InfoButton,switch_status);
- gtk_widget_set_sensitive(widgets->LogButton,switch_status);
}
/**yon_main_window_complete(main_window *widgets)
@@ -766,44 +464,180 @@ void yon_main_window_complete(main_window *widgets){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0);
// Custom widgets configuration
-
- widgets->liststore1=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
- widgets->liststore2=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2"));
+ {
+ widgets->UserList=GTK_LIST_STORE(gtk_builder_get_object(builder,"UserList"));
+ widgets->TimersList =GTK_LIST_STORE(gtk_builder_get_object(builder,"TimersList"));
+ widgets->SessionsList=GTK_LIST_STORE(gtk_builder_get_object(builder,"SessionsList"));
+ widgets->ConfigList=GTK_LIST_STORE(gtk_builder_get_object(builder,"ConfigList"));
+ widgets->SystemList=GTK_LIST_STORE(gtk_builder_get_object(builder,"SystemList"));
widgets->BoxMain=yon_gtk_builder_get_widget(builder,"BoxMain");
- widgets->ServiceSourceCombo=yon_gtk_builder_get_widget(builder,"ServiceSourceCombo");
- widgets->ServiceTypeCombo=yon_gtk_builder_get_widget(builder,"ServiceTypeCombo");
- widgets->SearchEntry=yon_gtk_builder_get_widget(builder,"SearchEntry");
- widgets->UpdateButton=yon_gtk_builder_get_widget(builder,"UpdateButton");
- widgets->ConfigAutostartButton=yon_gtk_builder_get_widget(builder,"ConfigAutostartButton");
- widgets->ConfigAutostopButton=yon_gtk_builder_get_widget(builder,"ConfigAutostopButton");
- widgets->ConfigBlockButton=yon_gtk_builder_get_widget(builder,"ConfigBlockButton");
- widgets->SystemAutostartButton=yon_gtk_builder_get_widget(builder,"SystemAutostartButton");
- widgets->SystemLaunchButton=yon_gtk_builder_get_widget(builder,"SystemLaunchButton");
- widgets->InfoButton=yon_gtk_builder_get_widget(builder,"InfoButton");
- widgets->LogButton=yon_gtk_builder_get_widget(builder,"LogButton");
- widgets->MainUpperTree=yon_gtk_builder_get_widget(builder,"MainUpperTree");
- widgets->MainTree=yon_gtk_builder_get_widget(builder,"MainTree");
- widgets->DescriptionLabel=yon_gtk_builder_get_widget(builder,"DescriptionLabel");
- widgets->ServiceLabel=yon_gtk_builder_get_widget(builder,"ServiceLabel");
- GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->MainTree));
- yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->MainTree));
- g_signal_connect(G_OBJECT(widgets->MainTree),"button-press-event",G_CALLBACK(on_context_menu_open),widgets);
- g_signal_connect(G_OBJECT(widgets->ConfigAutostartButton),"clicked",G_CALLBACK(on_config_autostart_clicked),widgets);
- g_signal_connect(G_OBJECT(widgets->ConfigAutostopButton),"clicked",G_CALLBACK(on_config_autostop_clicked),widgets);
- g_signal_connect(G_OBJECT(widgets->ConfigBlockButton),"clicked",G_CALLBACK(on_config_block_clicked),widgets);
- g_signal_connect(G_OBJECT(widgets->SystemAutostartButton),"clicked",G_CALLBACK(on_system_autostart_clicked),widgets);
- g_signal_connect(G_OBJECT(widgets->SystemLaunchButton),"clicked",G_CALLBACK(on_system_launch_clicked),widgets);
- g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_update),widgets);
- g_signal_connect(G_OBJECT(widgets->InfoButton),"clicked",G_CALLBACK(on_info_clicked),widgets);
- g_signal_connect(G_OBJECT(widgets->LogButton),"clicked",G_CALLBACK(on_log_show),widgets);
+ widgets->SystemSearchEntry=yon_gtk_builder_get_widget(builder,"SystemSearchEntry");
+ widgets->SystemUpperTree=yon_gtk_builder_get_widget(builder,"SystemUpperTree");
+ widgets->SystemUnitsTree=yon_gtk_builder_get_widget(builder,"SystemUnitsTree");
+ widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
+
+ 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");
+ widgets->SystemUnloadedShowCheck=yon_gtk_builder_get_widget(builder,"SystemUnloadedShowCheck");
+ widgets->SystemUpperTree=yon_gtk_builder_get_widget(builder,"SystemUpperTree");
+ widgets->SystemUnitsTree=yon_gtk_builder_get_widget(builder,"SystemUnitsTree");
+ widgets->SystemPrevButton=yon_gtk_builder_get_widget(builder,"SystemPrevButton");
+ widgets->SystemUpdateButton=yon_gtk_builder_get_widget(builder,"SystemUpdateButton");
+ widgets->SystemInfoButton=yon_gtk_builder_get_widget(builder,"SystemInfoButton");
+ widgets->SystemLogButton=yon_gtk_builder_get_widget(builder,"SystemLogButton");
+ widgets->SystemEditButton=yon_gtk_builder_get_widget(builder,"SystemEditButton");
+ widgets->SystemPropertiesButton=yon_gtk_builder_get_widget(builder,"SystemPropertiesButton");
+ widgets->SystemStatusButton=yon_gtk_builder_get_widget(builder,"SystemStatusButton");
+ widgets->SystemMenu = yon_rmb_menu_setup(widgets->SystemUnitsTree,NULL,NULL,
+ CONFIGURE_CONFIGURATION_LABEL,NULL,NULL,NULL,
+ AUTOSTART_LABEL,play_icon_path,on_config_autostart_clicked,widgets,
+ AUTOSTOP_LABEL,stop_icon_path,on_config_autostop_clicked,widgets,
+ BLOCK_LABEL,block_icon_path,on_config_block_clicked,widgets,
+ SYSTEM_CONFIGURATION_LABEL,NULL,NULL,NULL,
+ AUTOSTART_LABEL,start_icon_path,on_system_autostart_clicked,widgets,
+ LAUNCHED_LABEL,launch_icon_path,on_system_launch_clicked,widgets,
+ RESTART_LABEL,update_icon_path,on_system_restart_clicked,widgets,
+ STATUS_LABEL,status_icon_path,on_status_show,widgets,
+ SHOW_LOG_LABEL,log_icon_path,on_log_show,widgets,
+ SHOW_SOURCE_LABEL,source_icon_path,on_source_show,widgets,
+ PROPERTIES_LABEL,properties_icon_path,on_properties_show,widgets,
+ NULL);
+
+ widgets->UserSearchEntry=yon_gtk_builder_get_widget(builder,"UserSearchEntry");
+ widgets->UserFiltersCombo=yon_gtk_builder_get_widget(builder,"UserFiltersCombo");
+ widgets->UserInactiveShowCheck=yon_gtk_builder_get_widget(builder,"UserInactiveShowCheck");
+ widgets->UserUnloadedShowCheck=yon_gtk_builder_get_widget(builder,"UserUnloadedShowCheck");
+ widgets->UsersUpperTree=yon_gtk_builder_get_widget(builder,"UsersUpperTree");
+ widgets->UserUnitsTree=yon_gtk_builder_get_widget(builder,"UserUnitsTree");
+ widgets->UserPrevButton=yon_gtk_builder_get_widget(builder,"UserPrevButton");
+ widgets->UserUpdateButton=yon_gtk_builder_get_widget(builder,"UserUpdateButton");
+ widgets->UserInfoButton=yon_gtk_builder_get_widget(builder,"UserInfoButton");
+ widgets->UserLogButton=yon_gtk_builder_get_widget(builder,"UserLogButton");
+ widgets->UserEditButton=yon_gtk_builder_get_widget(builder,"UserEditButton");
+ widgets->UserStatusButton=yon_gtk_builder_get_widget(builder,"UserStatusButton");
+ widgets->UserServiceLabel=yon_gtk_builder_get_widget(builder,"UserServiceLabel");
+ widgets->UserDescriptionLabel=yon_gtk_builder_get_widget(builder,"UserDescriptionLabel");
+ widgets->UserMenu = yon_rmb_menu_setup(widgets->UserUnitsTree,NULL,NULL,
+ CONFIGURE_CONFIGURATION_LABEL,NULL,NULL,NULL,
+ AUTOSTART_LABEL,play_icon_path,on_config_autostart_clicked,widgets,
+ AUTOSTOP_LABEL,stop_icon_path,on_config_autostop_clicked,widgets,
+ BLOCK_LABEL,block_icon_path,on_config_block_clicked,widgets,
+ SYSTEM_CONFIGURATION_LABEL,NULL,NULL,NULL,
+ AUTOSTART_LABEL,start_icon_path,on_system_autostart_clicked,widgets,
+ LAUNCHED_LABEL,launch_icon_path,on_system_launch_clicked,widgets,
+ RESTART_LABEL,update_icon_path,on_system_restart_clicked,widgets,
+ STATUS_LABEL,status_icon_path,on_status_show,widgets,
+ SHOW_LOG_LABEL,log_icon_path,on_log_show,widgets,
+ SHOW_SOURCE_LABEL,source_icon_path,on_source_show,widgets,
+ PROPERTIES_LABEL,properties_icon_path,on_properties_show,widgets,
+ NULL);
+
+ widgets->ConfigEditButton=yon_gtk_builder_get_widget(builder,"ConfigEditButton");
+ widgets->ConfigMainTree=yon_gtk_builder_get_widget(builder,"ConfigMainTree");
+
+ widgets->SessionMainTree=yon_gtk_builder_get_widget(builder,"SessionMainTree");
+ widgets->SessionStartButton=yon_gtk_builder_get_widget(builder,"SessionStartButton");
+ widgets->SessionStopButton=yon_gtk_builder_get_widget(builder,"SessionStopButton");
+ widgets->SessionBlockButton=yon_gtk_builder_get_widget(builder,"SessionBlockButton");
+ widgets->SessionMenu = yon_rmb_menu_setup(widgets->SessionMainTree,NULL,NULL,
+ ACTIVATE_SESSION_LABEL,play_icon_path,on_session_activate,NULL,
+ END_SESSION_LABEL,stop_icon_path,on_session_end,NULL,
+ BLOCK_SESSION_LABEL,block_icon_path,on_session_block,NULL,
+ NULL);
+
+ widgets->SystemServiceLabel=yon_gtk_builder_get_widget(builder,"SystemServiceLabel");
+ widgets->SystemDescriptionLabel=yon_gtk_builder_get_widget(builder,"SystemDescriptionLabel");
+ }
+ widgets->TimersMainTree=yon_gtk_builder_get_widget(builder,"TimersMainTree");
+ GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->SystemUnitsTree));
+ yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->SystemUnitsTree));
+
+ g_signal_connect(G_OBJECT(widgets->SystemPrevButton),"clicked",G_CALLBACK(on_system_update_hz_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemUpdateButton),"clicked",G_CALLBACK(on_system_update_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemInfoButton),"clicked",G_CALLBACK(on_system_info_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemLogButton),"clicked",G_CALLBACK(on_system_log_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemEditButton),"clicked",G_CALLBACK(on_system_edit_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemStatusButton),"clicked",G_CALLBACK(on_system_status_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemFiltersCombo),"changed",G_CALLBACK(on_system_filter_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemSearchEntry),"changed",G_CALLBACK(on_system_search),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemInactiveShowCheck),"toggled",G_CALLBACK(on_system_inactive_toggled),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemUnloadedShowCheck),"toggled",G_CALLBACK(on_system_unloaded_toggled),widgets);
+
+ g_signal_connect(G_OBJECT(widgets->UserPrevButton),"clicked",G_CALLBACK(on_user_update_hz_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserUpdateButton),"clicked",G_CALLBACK(on_user_update_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserInfoButton),"clicked",G_CALLBACK(on_user_info_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserLogButton),"clicked",G_CALLBACK(on_user_log_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserEditButton),"clicked",G_CALLBACK(on_user_edit_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserStatusButton),"clicked",G_CALLBACK(on_user_status_clicked),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserFiltersCombo),"changed",G_CALLBACK(on_user_filter_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserSearchEntry),"changed",G_CALLBACK(on_user_search),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserInactiveShowCheck),"toggled",G_CALLBACK(on_user_inactive_toggled),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserUnloadedShowCheck),"toggled",G_CALLBACK(on_user_unloaded_toggled),widgets);
+
+ g_signal_connect(G_OBJECT(widgets->ConfigEditButton),"clicked",G_CALLBACK(on_config_edit_clicked),widgets);
+
+ g_signal_connect(G_OBJECT(widgets->SessionStartButton),"clicked",G_CALLBACK(on_session_start_clicked),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->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);
g_signal_connect(G_OBJECT(g_list_nth_data(list,1)),"notify::width",G_CALLBACK(on_column_resize),widgets);
g_signal_connect(G_OBJECT(g_list_nth_data(list,2)),"notify::width",G_CALLBACK(on_column_resize),widgets);
g_signal_connect(G_OBJECT(g_list_nth_data(list,3)),"notify::width",G_CALLBACK(on_column_resize),widgets);
g_signal_connect(G_OBJECT(g_list_nth_data(list,4)),"notify::width",G_CALLBACK(on_column_resize),widgets);
- g_signal_connect(G_OBJECT(widgets->MainTree),"cursor-changed",G_CALLBACK(on_activate),widgets);
- g_signal_connect(G_OBJECT(widgets->ServiceTypeCombo),"changed",G_CALLBACK(on_type_changed),widgets);
- g_signal_connect(G_OBJECT(widgets->ServiceSourceCombo),"changed",G_CALLBACK(on_type_changed),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,5)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ for (unsigned int i=0;iUserUnitsTree));
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,0)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,1)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,2)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,3)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,4)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,5)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ for (unsigned int i=0;iConfigMainTree));
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,0)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,1)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,2)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ for (unsigned int i=0;iSessionMainTree));
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,0)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,1)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,2)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,3)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,4)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ for (unsigned int i=0;iTimersMainTree));
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,0)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,1)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,2)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,3)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,4)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ g_signal_connect(G_OBJECT(g_list_nth_data(list,5)),"notify::width",G_CALLBACK(on_column_resize),widgets);
+ for (unsigned int i=0;iSystemUnitsTree),"cursor-changed",G_CALLBACK(on_activate),widgets);
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
@@ -811,24 +645,14 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_global_local_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),NULL);
- g_signal_connect(G_OBJECT(widgets->MainTree),"cursor-changed",G_CALLBACK(on_tree_selection_changed),widgets);
- g_list_free(list);
- main_config.ServiceFilter = gtk_tree_model_filter_new(GTK_TREE_MODEL(widgets->liststore2),NULL);
- gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_service_filter,NULL,NULL);
- main_config.SocketFilter = gtk_tree_model_filter_new(GTK_TREE_MODEL(widgets->liststore2),NULL);
- gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.SocketFilter),(GtkTreeModelFilterVisibleFunc)on_socket_filter,NULL,NULL);
- main_config.AutolaunchFilter = gtk_tree_model_filter_new(GTK_TREE_MODEL(widgets->liststore2),NULL);
- gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.AutolaunchFilter),(GtkTreeModelFilterVisibleFunc)on_autostart_filter,NULL,NULL);
- main_config.StoppedFilter = gtk_tree_model_filter_new(GTK_TREE_MODEL(widgets->liststore2),NULL);
- gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.StoppedFilter),(GtkTreeModelFilterVisibleFunc)on_stopped_filter,NULL,NULL);
- main_config.BlockedFilter = gtk_tree_model_filter_new(GTK_TREE_MODEL(widgets->liststore2),NULL);
- gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.BlockedFilter),(GtkTreeModelFilterVisibleFunc)on_blocked_filter,NULL,NULL);
- gtk_tree_view_set_search_entry(GTK_TREE_VIEW(widgets->MainTree),GTK_ENTRY(widgets->SearchEntry));
+ g_signal_connect(G_OBJECT(widgets->SystemUnitsTree),"cursor-changed",G_CALLBACK(on_tree_selection_changed),widgets);
+ gtk_tree_view_set_search_entry(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_ENTRY(widgets->SystemSearchEntry));
yon_load_proceed(YON_CONFIG_LOCAL);
yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
if (!main_config.update_thread_active){
main_config.update_thread_active=1;
- gdk_threads_add_idle((GSourceFunc)((gboolean*)(void*)yon_interface_update),widgets);
+ pthread_t tid;
+ pthread_create(&tid,NULL,(void*)(void*)((yon_interface_update)),widgets);
}
}
@@ -845,6 +669,8 @@ int main(int argc, char *argv[]){
gtk_init(&argc,&argv);
template_main_window *widgets = yon_ubl_window_setup();
yon_main_window_complete((main_window*)widgets);
+ char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
+ yon_window_config_load(path);
if (getuid()!=0)
yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
gtk_main();
diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h
index f453bde..e18506a 100644
--- a/source/ubl-settings-services.h
+++ b/source/ubl-settings-services.h
@@ -48,6 +48,8 @@
#define start_log_command(target) yon_char_append("journalctl --all --no-pager --unit ",target)
+#define get_config_files_command "find /etc/systemd -iname *.conf -exec du -sh --time {} \\;"
+
#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"
#define config_get_default_command ""
@@ -60,28 +62,30 @@
#define SERVICES_MASK_get_command "ubconfig --source global get [system] SERVICES_MASK"
#define CONSOLE_FONT_get_command "ubconfig --source global get [locale] CONSOLE_FONT"
+#define play_icon_path "com.ublinux.ubl-settings-services.play-symbolic"
+#define stop_icon_path "com.ublinux.ubl-settings-services.stop-symbolic"
+#define block_icon_path "com.ublinux.ubl-settings-services.cancel-symbolic"
+#define start_icon_path "com.ublinux.ubl-settings-services.launch-symbolic"
+#define update_icon_path "com.ublinux.ubl-settings-services.sync-symbolic"
+#define launch_icon_path "com.ublinux.ubl-settings-services.check-symbolic"
+#define log_icon_path "com.ublinux.ubl-settings-services.lookup-symbolic"
+#define source_icon_path "com.ublinux.ubl-settings-services.play-symbolic"
+#define properties_icon_path "com.ublinux.ubl-settings-services.play-symbolic"
+#define status_icon_path "com.ublinux.ubl-settings-services.play-symbolic"
+
+#define reload_systemd_root_command "systemctl daemon-reload"
+#define reexec_systemd_root_command "systemctl daemon-reexec"
+
+#define reload_systemd_user_command "systemctl --user daemon-reload"
+#define reexec_systemd_user_command "systemctl --user daemon-reexec"
+
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 lock_load_system;
-
- 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:
+ template_config_fields
int rmb_clicked;
GtkTreeModel *ServiceFilter;
GtkTreeModel *SocketFilter;
@@ -93,69 +97,61 @@ typedef struct {
int update_thread_active;
} 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;
+ template_window_fields
+ GtkListStore *UserList;
+ GtkListStore *TimersList;
+ GtkListStore *SessionsList;
+ GtkListStore *ConfigList;
+ GtkListStore *SystemList;
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;
+
+ GtkWidget *SystemSearchEntry;
+ GtkWidget *SystemFiltersCombo;
+ GtkWidget *SystemInactiveShowCheck;
+ GtkWidget *SystemUnloadedShowCheck;
+ GtkWidget *SystemUpperTree;
+ GtkWidget *SystemUnitsTree;
+ GtkWidget *SystemPrevButton;
+ GtkWidget *SystemUpdateButton;
+ GtkWidget *SystemInfoButton;
+ GtkWidget *SystemLogButton;
+ GtkWidget *SystemEditButton;
+ GtkWidget *SystemPropertiesButton;
+ GtkWidget *SystemStatusButton;
+ rmb_menu_window *SystemMenu;
+ GtkWidget *SystemServiceLabel;
+ GtkWidget *SystemDescriptionLabel;
+
+ GtkWidget *UserSearchEntry;
+ GtkWidget *UserFiltersCombo;
+ GtkWidget *UserInactiveShowCheck;
+ GtkWidget *UserUnloadedShowCheck;
+ GtkWidget *UsersUpperTree;
+ GtkWidget *UserUnitsTree;
+ GtkWidget *UserPrevButton;
+ GtkWidget *UserUpdateButton;
+ GtkWidget *UserInfoButton;
+ GtkWidget *UserLogButton;
+ GtkWidget *UserEditButton;
+ GtkWidget *UserStatusButton;
+ rmb_menu_window *UserMenu;
+ GtkWidget *UserServiceLabel;
+ GtkWidget *UserDescriptionLabel;
+
+ GtkWidget *ConfigEditButton;
+ GtkWidget *ConfigMainTree;
+
+ GtkWidget *SessionMainTree;
+ GtkWidget *SessionStartButton;
+ GtkWidget *SessionStopButton;
+ GtkWidget *SessionBlockButton;
+ rmb_menu_window *SessionMenu;
+
+ GtkWidget *TimersMainTree;
+ GtkWidget *MainNotebook;
+
} main_window;
@@ -187,18 +183,13 @@ typedef struct{
GtkWidget *MainTree;
} bl_settings_services_window;
-typedef struct {
- GtkWidget *Window;
- GtkWidget *UpdateButton;
- GtkWidget *SystemTerminal;
- GtkWidget *webHeaderNameLabel;
- char *target;
-} terminal_window;
-
typedef struct {
GtkWidget *Window;
GtkWidget *SystemTerminal;
+ GtkWidget *TextEditor;
GtkWidget *webHeaderNameLabel;
+ GtkWidget *UpdateButton;
+ GtkWidget *SaveButton;
char *target;
} log_window;
@@ -240,6 +231,69 @@ void on_system_kill_confirmed(GtkWidget *self,char *service_name);
void on_system_launch_clicked();
+void on_system_restart_clicked();
+
+void on_source_show();
+
+void on_properties_show();
+
+void on_session_activate();
+
+void on_session_end();
+
+void on_session_block();
+
+void yon_system_systemd_restart(GtkWidget *self, main_window *widgets);
+void yon_user_systemd_restart(GtkWidget *self, main_window *widgets);
+
+void on_system_update_hz_clicked(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_system_edit_clicked(GtkWidget *self, main_window *widgets);
+
+void on_system_status_clicked(GtkWidget *self, main_window *widgets);
+
+void on_system_filter_changed(GtkWidget *self, main_window *widgets);
+
+void on_system_search(GtkWidget *self, main_window *widgets);
+
+void on_system_inactive_toggled(GtkWidget *self, main_window *widgets);
+
+void on_system_unloaded_toggled(GtkWidget *self, main_window *widgets);
+
+void on_user_update_hz_clicked(GtkWidget *self, main_window *widgets);
+
+void on_user_update_clicked(GtkWidget *self, main_window *widgets);
+
+void on_user_info_clicked(GtkWidget *self, main_window *widgets);
+
+void on_user_log_clicked(GtkWidget *self, main_window *widgets);
+
+void on_user_edit_clicked(GtkWidget *self, main_window *widgets);
+
+void on_user_status_clicked(GtkWidget *self, main_window *widgets);
+
+void on_user_filter_changed(GtkWidget *self, main_window *widgets);
+
+void on_user_search(GtkWidget *self, main_window *widgets);
+
+void on_user_inactive_toggled(GtkWidget *self, main_window *widgets);
+
+void on_user_unloaded_toggled(GtkWidget *self, main_window *widgets);
+
+void on_config_edit_clicked(GtkWidget *self, main_window *widgets);
+
+void on_session_start_clicked(GtkWidget *self, main_window *widgets);
+
+void on_session_stop_clicked(GtkWidget *self, main_window *widgets);
+
+void on_session_lock_clicked(GtkWidget *self, main_window *widgets);
+
gboolean yon_service_source_check(GtkTreeModel *model, GtkTreeIter *iter, void *data);
gboolean yon_service_type_check(GtkTreeModel *model, GtkTreeIter *iter,void *data);
@@ -280,8 +334,4 @@ gboolean on_blocked_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
gboolean on_source_user_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
-gboolean on_source_system_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
-
-terminal_window *yon_terminal_window_new();
-
-void on_service_update(GtkWidget *self, terminal_window* window);
\ No newline at end of file
+gboolean on_source_system_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data);
\ No newline at end of file
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index ecc6005..44ff2ce 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -44,6 +44,13 @@
#define LAUNCHED_LABEL _("Launched")
#define LIST_LOAD_LABEL _("Service list is loading")
#define STATUS_LABEL _("Status")
+#define RESTART_LABEL _("Restart with new configuration")
+#define SHOW_LOG_LABEL _("Show log")
+#define SHOW_SOURCE_LABEL _("Show source")
+#define PROPERTIES_LABEL _("Properties")
+#define ACTIVATE_SESSION_LABEL _("Activate session")
+#define END_SESSION_LABEL _("End session")
+#define BLOCK_SESSION_LABEL _("Block session")
#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
index 9b05667..0715261 100644
--- a/ubl-settings-services-log.glade
+++ b/ubl-settings-services-log.glade
@@ -23,6 +23,53 @@
5
5
5
+
+
+
+ False
+ True
+ 0
+
+
True
@@ -39,18 +86,40 @@
True
False
-
+
True
- False
- True
- natural
- adjustment1
- natural
- UTF-8
- True
- 0
- True
- False
+ False
+ vertical
+
+
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ True
+ natural
+ adjustment1
+ natural
+ UTF-8
+ True
+ 0
+ True
+ False
+
+
+ True
+ True
+ 1
+
+
@@ -89,4 +158,15 @@
+
+ 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 ba2cd2f..a8ab008 100644
--- a/ubl-settings-services-terminal.glade
+++ b/ubl-settings-services-terminal.glade
@@ -33,6 +33,7 @@
True
False
vertical
+ 5
True
@@ -50,6 +51,23 @@
0
+
+
+ True
+ True
+ True
+ Update
+ image2
+
+
+
+ False
+ True
+ 1
+
+
False
@@ -121,4 +139,9 @@
+
+ True
+ False
+ document-save-symbolic
+
diff --git a/ubl-settings-services.css b/ubl-settings-services.css
index fee529c..9a6c1f7 100644
--- a/ubl-settings-services.css
+++ b/ubl-settings-services.css
@@ -118,10 +118,12 @@ background:transparent;
border-style:solid;
}
-.sepat{
+.separator_menu_item{
border-color: darker (@theme_bg_color);
border-top-width:1px;
border-style:solid;
+ margin:0px;
+ padding:0px;
}
.marginright image{
diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade
index ce0ef08..445165c 100644
--- a/ubl-settings-services.glade
+++ b/ubl-settings-services.glade
@@ -3,155 +3,381 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True
False
- com.ublinux.ubl-settings-services.play-symbolic
-
+
True
False
com.ublinux.ubl-settings-services.stop-symbolic
-
+
True
False
- com.ublinux.ubl-settings-services.cancel-uncolored-symbolic
+ com.ublinux.ubl-settings-services.play-symbolic
-
+
True
False
- com.ublinux.ubl-settings-services.launch-symbolic
+ com.ublinux.ubl-settings-services.edit-symbolic
-
+
+ True
+ False
+
+
True
False
- com.ublinux.ubl-settings-services.check-symbolic
+ com.ublinux.ubl-settings-services.sync-symbolic
-
+
True
False
com.ublinux.ubl-settings-services.important-symbolic
-
+
+ True
+ False
+ com.ublinux.ubl-settings-services.lookup-symbolic
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+ True
+ False
+ com.ublinux.ubl-settings-services.important-symbolic
+
+
True
False
com.ublinux.ubl-settings-services.lookup-symbolic
+
+ True
+ False
+
+
+ True
+ False
+
True
False
com.ublinux.ubl-settings-services.sync-symbolic
+
+ True
+ False
+ com.ublinux.ubl-settings-services.lock-symbolic
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
True
False
vertical
-
+
True
- False
- 0.019999999552965164
- in
+ True
-
+
True
False
- 5
- 5
- 5
+ 5
+ 5
+ 5
+ 5
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ 0
+
+ - All
+ - Autolaunch in configuration
+ - Stopped in configuration
+ - Blocked in configuration
+ - service
+ - swap
+ - socket
+ - target
+ - device
+ - automount
+ - timer
+ - slice
+ - path
+ - scope
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ Show inactive
+ True
+ True
+ False
+ True
+
+
+ False
+ True
+ 1
+
+
+
+
+ Show unloaded
+ True
+ True
+ False
+ True
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ True
+ edit-find-symbolic
+ False
+ False
+
+
+ True
+ True
+ 3
+
+
+
+
+ False
+ True
+ 0
+
+
True
False
- vertical
5
True
False
+ vertical
5
-
+
True
- False
- 0
-
- - All services
- - System services only
- - User services only
-
+ True
+ True
+ Toggle autostart at configuration
+ image1
+
- True
+ False
True
0
-
+
True
- False
- 0
-
- - All
- - Services
- - Sockets
- - Autolaunch in configuration
- - Stopped in configuration
- - Blocked in configuration
-
+ True
+ True
+ Update
+ image8
+
- True
+ False
True
1
-
+
True
- True
- edit-find-symbolic
- False
- False
+ False
- True
+ False
True
2
-
+
True
True
True
- Update
- image8
+ Toggle service blocking at configuration
+ image3
@@ -162,179 +388,104 @@
3
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- 5
-
+
True
- False
- vertical
- 5
-
-
- True
- False
- True
- True
- Toggle autostart at configuration
- image1
-
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- True
- True
- Toggle autostop at configuration
- image2
-
-
-
- False
- True
- 1
-
-
-
-
- True
- False
- True
- True
- Toggle service blocking at configuration
- image3
-
-
-
- False
- True
- 2
-
-
-
-
- True
- False
-
-
- False
- True
- 3
-
-
-
-
- True
- False
- True
- True
- Toggle autostart at system
- image4
-
-
-
- False
- True
- 4
-
-
-
-
- True
- False
- True
- True
- Launch/Stop service
- image5
-
-
-
- False
- True
- 5
-
-
+ True
+ True
+ Toggle autostart at system
+ image4
+
+
+
+ False
+ True
+ 4
+
+
+
+
+ True
+ True
+ True
+ Launch/Stop service
+ image5
+
+
+
+ False
+ True
+ 5
+
+
+
+
+ True
+ True
+ True
+ Check service log
+ image7
+
+
+
+ False
+ True
+ 6
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 7
+
+
+
+
False
True
- 0
+ 8
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
True
@@ -347,7 +498,7 @@
False
vertical
-
+
True
True
liststore1
@@ -385,10 +536,10 @@
True
True
-
+
True
True
- liststore2
+ SystemList
5
horizontal
@@ -459,10 +610,25 @@
+
+
+ True
+ 10
+ 10
+ Unit
+
+
+
+ 5
+
+
+
+
autosize
+ True
@@ -489,54 +655,6 @@
True
True
- 1
-
-
-
-
- True
- True
- 1
-
-
-
-
- True
- False
- vertical
- 5
-
-
- True
- False
- 5
-
-
- True
- False
- Service:
-
-
- False
- True
- 0
-
-
-
-
- True
- False
-
-
- False
- True
- 1
-
-
-
-
- False
- True
0
@@ -544,12 +662,36 @@
True
False
+ vertical
5
-
+
True
False
- Description:
+ 5
+
+
+ True
+ False
+ Service:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 1
+
+
False
@@ -558,10 +700,34 @@
-
+
True
False
- True
+ 5
+
+
+ True
+ False
+ Description:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ True
+
+
+ False
+ True
+ 1
+
+
False
@@ -577,22 +743,969 @@
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+ True
+ False
+ System units
+
+
+ False
+
+
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ 0
+
+ - All
+ - Autolaunch in configuration
+ - Stopped in configuration
+ - Blocked in configuration
+ - service
+ - swap
+ - socket
+ - target
+ - device
+ - automount
+ - timer
+ - path
+ - slice
+ - scope
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ Show inactive
+ True
+ True
+ False
+ True
+
+
+ False
+ True
+ 1
+
+
+
+
+ Show unloaded
+ True
+ True
+ False
+ True
+
False
True
2
+
+
+ True
+ True
+ edit-find-symbolic
+ False
+ False
+
+
+ True
+ True
+ 3
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ True
+ True
+ image13
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ image14
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ True
+ True
+ image15
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ True
+ True
+ True
+ image16
+
+
+
+ False
+ True
+ 4
+
+
+
+
+ True
+ True
+ True
+ image17
+
+
+
+ False
+ True
+ 5
+
+
+
+
+ True
+ True
+ True
+ image18
+
+
+
+ False
+ True
+ 7
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 0.019999999552965164
+ in
+
+
+ True
+ False
+ vertical
+
+
+ True
+ True
+ liststore1
+
+
+
+
+
+ Configure in configuration
+
+
+
+
+ Configure in system
+
+
+
+
+ Service
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+
+
+ True
+ True
+ UserList
+ 5
+ horizontal
+
+
+
+
+
+ True
+ fixed
+ Autostart
+
+
+
+ 0
+
+
+
+
+
+
+ True
+ fixed
+ Autostop
+
+
+
+ 1
+
+
+
+
+
+
+ True
+ fixed
+ Block
+
+
+
+ 2
+
+
+
+
+
+
+ True
+ fixed
+ Autostart
+
+
+
+ 3
+
+
+
+
+
+
+ True
+ fixed
+ Launched
+
+
+
+ 4
+
+
+
+
+
+
+ True
+ 10
+ 10
+ Unit
+
+
+
+ 5
+
+
+
+
+
+
+ autosize
+
+ True
+
+
+
+ 5
+
+
+
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Service:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ Description:
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ 1
+
+
+
+
+ True
+ False
+ User units
+
+
+ 1
+ False
+
+
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ 5
+
+
+ True
+ False
+ vertical
+
+
+ True
+ True
+ True
+ image12
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+ in
+
+
+ True
+ True
+ ConfigList
+
+
+
+
+
+ True
+ fixed
+ 10
+ File
+
+
+
+ 0
+
+
+
+
+
+
+ True
+ fixed
+ 10
+ Change date
+
+
+
+ 1
+
+
+
+
+
+
+ 10
+ Description
+ True
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ 2
+
+
+
+
+ True
+ False
+ Config files
+
+
+ 2
+ False
+
+
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ 5
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ True
+ True
+ image11
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+ image10
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ True
+ image9
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0
+ in
+
+
+ True
+ True
+ SessionsList
+
+
+
+
+
+ True
+ fixed
+ 10
+ Session ID
+
+
+
+ 0
+
+
+
+
+
+
+ True
+ fixed
+ 10
+ Status
+
+
+
+ 1
+
+
+
+
+
+
+ True
+ fixed
+ 10
+ User ID
+
+
+
+ 2
+
+
+
+
+
+
+ True
+ fixed
+ 10
+ User name
+
+
+
+ 3
+
+
+
+
+
+
+ 10
+ Seat ID
+ True
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+ 3
+
+
+
+
+ True
+ False
+ Sessions
+
+
+ 3
+ False
+
+
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ vertical
+
+
+ True
+ False
+ 0.019999999552965164
+ in
+
+
+ True
+ True
+ TimersList
+
+
+
+
+
+ True
+ fixed
+ 10
+ Timer
+
+
+
+ 0
+
+
+
+
+
+
+ True
+ fixed
+ 10
+ Next
+
+
+
+ 1
+
+
+
+
+
+
+ True
+ fixed
+ 10
+ Previous
+
+
+
+ 2
+
+
+
+
+
+
+ True
+ fixed
+ 10
+ Last
+
+
+
+ 3
+
+
+
+
+
+
+ True
+ fixed
+ 10
+ Passed
+
+
+
+ 4
+
+
+
+
+
+
+ 10
+ Activates
+ True
+
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ 0
+
+
+ 4
+
-
+
True
False
- Services
+ Timers
+
+ 4
+ False
+