#include "ubl-settings-services.h" config main_config; //saving & loading void yon_load_proceed(YON_CONFIG_TYPE type){ yon_config_clean(); if (!yon_char_is_empty(config_get_default_command)) yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); if (type==YON_CONFIG_GLOBAL){ yon_config_load_config(type,config_get_global_command,NULL); } if (type==YON_CONFIG_LOCAL){ yon_config_load_config(type,config_get_local_command,NULL); } } void on_config_local_load(GtkWidget *self,main_window *widgets){ if (!main_config.update_thread_active){ main_config.update_thread_active=1; if (self){}; yon_load_proceed(YON_CONFIG_LOCAL); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); gdk_threads_add_idle((GSourceFunc)((gboolean*)(void*)yon_interface_update),widgets); main_config.load_mode=1; } } void on_config_global_load(GtkWidget *self,main_window *widgets){ if (!main_config.update_thread_active){ main_config.update_thread_active=1; if (self){}; yon_load_proceed(YON_CONFIG_GLOBAL); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); gdk_threads_add_idle((GSourceFunc)((gboolean*)(void*)yon_interface_update),widgets); main_config.load_mode=0; } } // functions void on_service_constant_update(){ } void on_config_global_local_save(){ yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL); } void on_config_local_save(){ yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_local_command,NULL); } void on_config_global_save(){ yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL); } void on_config_autostart_clicked(){ } 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(){ } void on_properties_show(){ } 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->TerminalScroll = yon_gtk_builder_get_widget(builder,"TerminalScroll"); window->TextEditor = yon_gtk_builder_get_widget(builder,"TextEditor"); window->webHeaderNameLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel"); window->UpdateButton = yon_gtk_builder_get_widget(builder,"UpdateButton"); window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton"); window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); window->target=NULL; window->adjustment = GTK_ADJUSTMENT(gtk_builder_get_object(builder,"adjustment1")); yon_gtk_widget_set_scroll_window_for_scroll(window->Window,GTK_SCROLLBAR(window->TerminalScroll)); GdkRGBA rgba; vte_terminal_get_color_background_for_draw(VTE_TERMINAL(window->SystemTerminal),&rgba); vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba); yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"terminal_window"); g_signal_connect(G_OBJECT(window->UpdateButton),"clicked",G_CALLBACK(on_update_clicked),window); return window; } void yon_system_systemd_restart(GtkWidget *self, main_window *widgets){ if (self){}; 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 (system(reload_systemd_user_command)){ yon_ubl_status_box_render("TEXT_ERROR",BACKGROUND_IMAGE_FAIL_TYPE); } } } } void yon_system_systemd_reexec(GtkWidget *self, main_window *widgets){ if (self){}; if (widgets){ if (getuid()!=0&>k_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (system(reexec_systemd_root_command)){ yon_ubl_status_box_render("TEXT_ERROR",BACKGROUND_IMAGE_FAIL_TYPE); } } else { if (system(reexec_systemd_user_command)){ yon_ubl_status_box_render("TEXT_ERROR",BACKGROUND_IMAGE_FAIL_TYPE); } } } } typedef void (*data_function)(void*,void*); void on_system_update_hz_clicked(GtkWidget *self, main_window *widgets){ 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){ dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); data->action_text = "Are you sure?"; data->data = widgets; data->function = (data_function)yon_system_systemd_reexec; yon_confirmation_dialog_call(self,data); } } void on_system_info_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){ char *name; gtk_tree_model_get(model,&iter,5,&name,-1); log_window *window = yon_log_window_new(); window->target = service_info_command(name); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } } void on_system_log_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){ char *name; gtk_tree_model_get(model,&iter,5,&name,-1); log_window *window = yon_log_window_new(); window->target = get_log_command(name); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } } void *on_terminal_relaunch(log_window *window){ gtk_widget_set_sensitive(window->SystemTerminal,0); sleep(1); gtk_widget_set_sensitive(window->SystemTerminal,1); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); return NULL; } void on_save_clicked(GtkWidget *self, log_window *window){ if (self){}; vte_terminal_feed_child(VTE_TERMINAL(window->SystemTerminal),"\30",-1); vte_terminal_feed_child(VTE_TERMINAL(window->SystemTerminal),"Y\r",-1); gtk_widget_grab_focus(window->SystemTerminal); // yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),SAVING_LABEL,1,BACKGROUND_IMAGE_SUCCESS_TYPE); g_thread_new(NULL,(GThreadFunc)on_terminal_relaunch,window); } void on_update_clicked(GtkWidget *self, log_window *window){ if (self){}; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); } void on_system_edit_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){ char *name; gtk_tree_model_get(model,&iter,5,&name,-1); log_window *window = yon_log_window_new(); gtk_widget_show(window->SaveButton); window->target=show_source_command(name); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); GdkRGBA rgba; rgba.blue=1; rgba.green=1; rgba.red=1; vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba); gtk_widget_set_sensitive(window->SystemTerminal,1); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_save_clicked),window); gtk_widget_show(window->Window); } } } void on_system_status_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter)){ char *name; gtk_tree_model_get(model,&iter,5,&name,-1); log_window *window = yon_log_window_new(); window->target = properties_command(name); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } } 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); } } 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); } } 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); } } void on_user_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_user_update_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_reexec; yon_confirmation_dialog_call(self,data); } } void on_user_info_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter)){ char *name; gtk_tree_model_get(model,&iter,5,&name,-1); log_window *window = yon_log_window_new(); window->target = user_service_info_command(name); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } } void on_user_log_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter)){ char *name; gtk_tree_model_get(model,&iter,5,&name,-1); log_window *window = yon_log_window_new(); window->target = user_get_log_command(name); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } } void on_user_edit_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter)){ char *name; gtk_tree_model_get(model,&iter,5,&name,-1); log_window *window = yon_log_window_new(); gtk_widget_show(window->SaveButton); window->target=user_show_source_command(name); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); GdkRGBA rgba; rgba.blue=1; rgba.green=1; rgba.red=1; vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba); gtk_widget_set_sensitive(window->SystemTerminal,1); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_save_clicked),window); gtk_widget_show(window->Window); } } } void on_user_status_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter)){ char *name; gtk_tree_model_get(model,&iter,5,&name,-1); log_window *window = yon_log_window_new(); window->target = user_properties_command(name); yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->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); } } 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); } } 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); } } 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_config_log_save(GtkWidget *self, log_window *window){ if (self){}; GtkTextIter start, end; GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(window->TextEditor)); gtk_text_buffer_get_end_iter(buffer,&end); gtk_text_buffer_get_start_iter(buffer,&start); char *text = gtk_text_buffer_get_text(buffer,&start,&end,1); if (text){ if (yon_file_save(window->target,text)){ yon_ubl_status_box_render(SAVED_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } else { yon_ubl_status_box_render(ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } } void on_config_edit_clicked(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->ConfigList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ConfigMainTree)),&model,&iter)){ log_window *window = yon_log_window_new(); gtk_widget_hide(gtk_widget_get_parent(window->SystemTerminal)); gtk_widget_show(gtk_widget_get_parent(window->TextEditor)); gtk_widget_show(window->SaveButton); char *name; gtk_tree_model_get(model,&iter,0,&name,-1); int size; window->target = name; config_str parsed = yon_config_load(config_get_command(name),&size); char *text = yon_char_parsed_to_string(parsed,size,""); gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(window->TextEditor)),text,-1); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_config_log_save),window); gtk_widget_show(window->Window); } } } 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_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 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); } } void on_system_services_status(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ log_window *window = yon_log_window_new(); window->target = system_services_status_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } void on_user_services_status(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ log_window *window = yon_log_window_new(); window->target = user_services_status_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } void on_units_status(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ log_window *window = yon_log_window_new(); window->target = installed_units_states_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } void on_units_list_status(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ log_window *window = yon_log_window_new(); window->target = list_of_units_states_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } void on_sockets_list_status(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ log_window *window = yon_log_window_new(); window->target = list_of_sockets_states_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } void on_timers_list_status(GtkWidget *self, main_window *widgets){ if (self){} if (widgets){ log_window *window = yon_log_window_new(); window->target = list_of_timers_states_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); } } gboolean yon_interface_update(main_window *widgets){ if (widgets){ int system_size; config_str system_services = yon_config_load(load_services_command,&system_size); int user_size; config_str user_services = yon_config_load(load_user_services_command,&user_size); int config_size; config_str config_files = yon_config_load(get_config_files_command,&config_size); int sessions_size; config_str sessions = yon_config_load(list_of_session_command,&sessions_size); int timers_size; config_str timers = yon_config_load(get_timers_command,&timers_size); struct json_object *jsobject = json_tokener_parse(timers[0]); for (int i=0; iSystemList,&iter); gtk_list_store_set(widgets->SystemList,&iter,4,strcmp(parsed[2],"active")?0:1,5,parsed[0],6,parsed[4],-1); } } for (int i=0; iUserList,&iter); gtk_list_store_set(widgets->UserList,&iter,4,strcmp(parsed[2],"active")?0:1,5,parsed[0],6,parsed[4],-1); } } for (int i=0; i2){ GtkTreeIter iter; char *description = ""; gtk_list_store_append(widgets->ConfigList,&iter); gtk_list_store_set(widgets->ConfigList,&iter,0,parsed[2],1,parsed[1],2,description,-1); } } for (int i=0;i4){ gtk_list_store_append(widgets->SessionsList,&iter); gtk_list_store_set(widgets->SessionsList,&iter,0,atoi(parsed[0]),1,atoi(parsed[1]),2,parsed[2],3,parsed[3],4,parsed[4],-1); } } for (size_t i=0;iTimersList,&iter); GDateTime *datetime = g_date_time_new_from_unix_local(atoi(next)); next = g_date_time_format(datetime,"%Y.%m.%d H:M:s"); g_date_time_unref(datetime); datetime = g_date_time_new_from_unix_local(atoi(left)); left = g_date_time_format(datetime,"%Y.%m.%d H:M:s"); g_date_time_unref(datetime); datetime = g_date_time_new_from_unix_local(atoi(last)); last = g_date_time_format(datetime,"%Y.%m.%d H:M:s"); g_date_time_unref(datetime); gtk_list_store_set(widgets->TimersList,&iter,0,unit,1,next,2,left,3,last,4,passed,5,activates,-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->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))+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->SystemUpperTree),0),width_configuration); gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemUpperTree),1),width_system); 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() * [EN] * * [RU] * Функция инициализации всех параметров конфигурации */ void config_init(){ main_config.always_open_documentation=0; main_config.socket_id=-1; main_config.save_socket_id=-1; main_config.load_socket_id=-1; main_config.lock_help=0; main_config.lock_help=0; main_config.lock_load_global=0; main_config.lock_save_global=0; main_config.lock_save_local=0; main_config.load_mode=1; main_config.update_thread_active=0; } void on_tree_selection_changed(GtkWidget *self, main_window *widgets){ if (self){}; 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->SystemUnitsTree)),&model,&iter)){ // switch_status=1; } if (getuid()==0){ } } /**yon_main_window_complete(main_window *widgets) * [EN] * * [RU] * Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом. */ void yon_main_window_complete(main_window *widgets){ widgets = yon_remalloc(widgets,sizeof(main_window)); 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->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->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->SystemServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"SystemServicesStatusMenuItem"); widgets->UserServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"UserServicesStatusMenuItem"); widgets->InstalledUnitsStatusMenuItem=yon_gtk_builder_get_widget(builder,"InstalledUnitsStatusMenuItem"); widgets->UnitsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UnitsStatusListMenuItem"); widgets->SocketsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"SocketsStatusListMenuItem"); widgets->TimersStatusListMenuItem=yon_gtk_builder_get_widget(builder,"TimersStatusListMenuItem"); widgets->SystemSearchEntry=yon_gtk_builder_get_widget(builder,"SystemSearchEntry"); widgets->SystemFiltersCombo=yon_gtk_builder_get_widget(builder,"SystemFiltersCombo"); widgets->SystemInactiveShowCheck=yon_gtk_builder_get_widget(builder,"SystemInactiveShowCheck"); 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->SystemServicesStatusMenuItem),"activate",G_CALLBACK(on_system_services_status),widgets); g_signal_connect(G_OBJECT(widgets->UserServicesStatusMenuItem),"activate",G_CALLBACK(on_user_services_status),widgets); g_signal_connect(G_OBJECT(widgets->InstalledUnitsStatusMenuItem),"activate",G_CALLBACK(on_units_status),widgets); g_signal_connect(G_OBJECT(widgets->UnitsStatusListMenuItem),"activate",G_CALLBACK(on_units_list_status),widgets); g_signal_connect(G_OBJECT(widgets->SocketsStatusListMenuItem),"activate",G_CALLBACK(on_sockets_list_status),widgets); g_signal_connect(G_OBJECT(widgets->TimersStatusListMenuItem),"activate",G_CALLBACK(on_timers_list_status),widgets); // g_signal_connect(G_OBJECT(widgets->SystemUnitsTree),"button-press-event",G_CALLBACK(on_context_menu_open),widgets); g_signal_connect(G_OBJECT(g_list_nth_data(list,0)),"notify::width",G_CALLBACK(on_column_resize),widgets); 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;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); 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->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; pthread_t tid; pthread_create(&tid,NULL,(void*)(void*)((yon_interface_update)),widgets); } } int main(int argc, char *argv[]){ local=setlocale(LC_ALL, ""); textdomain (LocaleName); config_init(); yon_ubl_connect_config((_template_config*)&main_config); yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); config_str unfound = NULL; int size=0; yon_ubl_setup_arguments(argc,argv,&unfound,&size,NULL); 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(); return 0; }