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 + + + True + False + vertical + 5 + + + True + True + True + Update + image1 + + + + False + True + 0 + + + + + True + True + True + Update + image2 + + + + False + True + 1 + + + + + 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 + + + True + False + System services status + True + + + + + True + False + User services status + True + + + + + True + False + Installed unit files + True + + + + + True + False + Units and status list + True + + + + + True + False + Sockets and status list + True + + + + + True + False + Timers and status list + True + + 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 + + + + + True + True + False + True + menu1 - + True False - - False - True - 6 - - - - - True - False - True - True - Check service status - image6 - - - - False - True - 7 - - - - - True - False - True - True - Check service log - image7 - - - - False - True - 8 - + 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 +