#include "ubl-settings-bootloader.h" config main_config; //functions void on_save_done(main_window *, config_str output, int size){ char *final_output = yon_char_parsed_to_string(output,size,""); if (final_output){ printf("%s\n",final_output); free(final_output); } yon_char_parsed_free(output,size); textdomain(template_ui_LocaleName); switch (main_config.save_config){ case 0: yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); break; case 1: yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); break; case 2: yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); break; } textdomain(LocaleName); } void on_config_global_local_save(GtkWidget *, main_window *){ main_config.save_config=3; yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL); } void on_config_local_save(GtkWidget *, main_window *){ main_config.save_config=1; yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_local_command,NULL); } void on_config_global_save(GtkWidget *, main_window *){ main_config.save_config=0; yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL); } void on_config_custom_save(GtkWidget *, main_window *){ main_config.save_config=1; template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,yon_config_get_custom_command("system"),NULL); if (window){}; } void on_config_local_load(GtkWidget *,main_window *widgets){ yon_load_proceed(YON_CONFIG_LOCAL); yon_interface_update(widgets); main_config.load_mode=1; } void on_config_global_load(GtkWidget *,main_window *widgets){ yon_load_proceed(YON_CONFIG_GLOBAL); yon_interface_update(widgets); main_config.load_mode=0; } void on_config_custom_load(GtkWidget *,main_window *widgets){ yon_load_proceed(YON_CONFIG_CUSTOM); textdomain(template_ui_LocaleName); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); textdomain(LocaleName); main_config.load_mode=3; yon_interface_update(widgets); } 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); } else if (type==YON_CONFIG_LOCAL){ yon_config_load_config(type,config_get_local_command,NULL); } else if (type==YON_CONFIG_CUSTOM){ char *path=""; textdomain(template_ui_LocaleName); GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); textdomain(LocaleName); gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services"); gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL); GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_add_pattern(filter,"*.ini"); gtk_file_filter_set_name(filter, "*.ini"); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); gtk_widget_show(dialog); int response = gtk_dialog_run(GTK_DIALOG(dialog)); if (response == GTK_RESPONSE_ACCEPT){ char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); if (!yon_char_is_empty(file)){ path=file; } gtk_widget_destroy(dialog); } else { gtk_widget_destroy(dialog); } char *command = yon_config_get_custom_command(path); yon_config_load_config(type,command,NULL); } } void yon_interface_update(main_window *widgets){ gtk_list_store_clear(widgets->BootUsersList); gtk_list_store_clear(widgets->BootRingtoneList); gtk_list_store_clear(widgets->KernelParametersList); gtk_list_store_clear(widgets->InputTerminalList); gtk_list_store_clear(widgets->OutputTerminalList); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->BootUsersTree),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->BootRingtoneTree),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->KernelParametersTree),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->InputTerminalTree),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->OutputTerminalTree),NULL); char *timeout = config(GRUB_TIMEOUT_parameter); if (!yon_char_is_empty(timeout)){ gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->BootSelectionTimerSpin),atof(timeout)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootSelectionTimerCheck),1); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->BootSelectionTimerSpin),0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootSelectionTimerCheck),0); } { char *display_mode = config(GRUB_BOOT_SILENT_parameter); if (!yon_char_is_empty(display_mode)){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->BootDisplayModeCombo),display_mode); } } { char *grub_default = config(GRUB_DEFAULT_parameter); if (!yon_char_is_empty(grub_default)) gtk_entry_set_text(GTK_ENTRY(widgets->OSDefaultEntry),grub_default); } { GtkTreeIter iter; int users_size; int admins_size; char *admins = config(GRUB_SUPERUSERS_parameter); config_str users = yon_config_get_all_by_key(GRUB_PASSWORD_search,&users_size); config_str admins_parsed = yon_char_parse(admins,&admins_size,","); for (int i=0;iBootUsersList,&iter); gtk_list_store_set(widgets->BootUsersList,&iter,0,yon_char_parsed_check_exist(admins_parsed,admins_size,username),1,username,2,"******",-1); } } { char *ringtone = config(GRUB_PLAY_parameter); gsize size=0; config_str codes = yon_window_config_get_section("melodies",&size); GtkTreeIter iter; for (gsize i=0;iBootRingtoneList,&iter); gtk_list_store_set(widgets->BootRingtoneList,&iter,0,!yon_char_is_empty(ringtone)&&!strcmp(ringtone,cur_code),1,name,2,cur_code,-1); free(cur_code); free(name); } if (size) yon_char_parsed_free(codes,size); } { int size; GtkTreeIter iter; char *parameter = config(GRUB_CMDLINE_LINUX_parameter); config_str parameters = yon_char_parse(parameter,&size," "); for (int i=1;iKernelParametersList,&iter); gtk_list_store_set(widgets->KernelParametersList,&iter,0,yon_char_parsed_check_exist(parameters,size,cur_parameter)>-1,1,cur_parameter,2,_(description),-1); } if (yon_char_is_empty(parameter)) parameter=""; gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),parameter); } { int size; GtkTreeIter iter; char *parameter = config(GRUB_TERMINAL_INPUT_parameter); config_str parameters = yon_char_parse(parameter,&size," "); for (int i=1;iInputTerminalList,&iter); gtk_list_store_set(widgets->InputTerminalList,&iter,0,yon_char_parsed_check_exist(parameters,size,cur_parameter)>-1,1,cur_parameter,2,_(description),-1); } if (yon_char_is_empty(parameter)) parameter=""; gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),parameter); } { int size; GtkTreeIter iter; char *parameter = config(GRUB_TERMINAL_OUTPUT_parameter); config_str parameters = yon_char_parse(parameter,&size," "); for (int i=1;iOutputTerminalList,&iter); gtk_list_store_set(widgets->OutputTerminalList,&iter,0,yon_char_parsed_check_exist(parameters,size,cur_parameter)>-1,1,cur_parameter,2,_(description),-1); } if (yon_char_is_empty(parameter)) parameter=""; gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),parameter); } gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->BootUsersTree),GTK_TREE_MODEL(widgets->BootUsersList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->BootRingtoneTree),GTK_TREE_MODEL(widgets->BootRingtoneList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->KernelParametersTree),GTK_TREE_MODEL(widgets->KernelParametersList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->InputTerminalTree),GTK_TREE_MODEL(widgets->InputTerminalList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->OutputTerminalTree),GTK_TREE_MODEL(widgets->OutputTerminalList)); } void on_kernel_parameter_switch(GtkCellRenderer *, char *path, main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->KernelParametersList); if (gtk_tree_model_get_iter_from_string(model,&iter,path)){ int status; char *parameter; gtk_tree_model_get(model,&iter,0,&status,1,¶meter,-1); gtk_list_store_set(widgets->KernelParametersList,&iter,0,!status,-1); char *config_param = config(GRUB_CMDLINE_LINUX_parameter); if (!yon_char_is_empty(config_param)){ int size; config_str parsed = yon_char_parse(config_param,&size," "); switch (status){ case 0:{ int pos = yon_char_parsed_check_exist(parsed,size,parameter); if (pos == -1){ yon_char_parsed_add_or_create_if_exists(parsed,&size,parameter); char *final = yon_char_parsed_to_string(parsed,size," "); yon_config_register(GRUB_CMDLINE_LINUX_parameter,GRUB_CMDLINE_LINUX_command,final); gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),final); free(final); } }break; case 1:{ int pos = yon_char_parsed_check_exist(parsed,size,parameter); if (pos>-1){ if (size>1){ parsed = yon_char_parsed_rip(parsed,&size,pos); char *final = yon_char_parsed_to_string(parsed,size," "); yon_config_register(GRUB_CMDLINE_LINUX_parameter,GRUB_CMDLINE_LINUX_command,final); gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),final); free(final); } else { gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),""); yon_config_remove_by_key(GRUB_CMDLINE_LINUX_parameter); } } } break; } } else if (status==0) { yon_config_register(GRUB_CMDLINE_LINUX_parameter,GRUB_CMDLINE_LINUX_command,parameter); gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),parameter); } } } void on_input_option_switch(GtkCellRenderer *,char *path, main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->InputTerminalList); if (gtk_tree_model_get_iter_from_string(model,&iter,path)){ int status; char *parameter; gtk_tree_model_get(model,&iter,0,&status,1,¶meter,-1); gtk_list_store_set(widgets->InputTerminalList,&iter,0,!status,-1); char *config_param = config(GRUB_TERMINAL_INPUT_parameter); if (!yon_char_is_empty(config_param)){ int size; config_str parsed = yon_char_parse(config_param,&size," "); switch (status){ case 0:{ int pos = yon_char_parsed_check_exist(parsed,size,parameter); if (pos == -1){ yon_char_parsed_add_or_create_if_exists(parsed,&size,parameter); char *final = yon_char_parsed_to_string(parsed,size," "); yon_config_register(GRUB_TERMINAL_INPUT_parameter,GRUB_TERMINAL_INPUT_command,final); gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),final); free(final); } }break; case 1:{ int pos = yon_char_parsed_check_exist(parsed,size,parameter); if (pos>-1){ if (size>1){ parsed = yon_char_parsed_rip(parsed,&size,pos); char *final = yon_char_parsed_to_string(parsed,size," "); yon_config_register(GRUB_TERMINAL_INPUT_parameter,GRUB_TERMINAL_INPUT_command,final); gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),final); free(final); } else { gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),""); yon_config_remove_by_key(GRUB_TERMINAL_INPUT_parameter); } } } break; } } else if (status==0) { yon_config_register(GRUB_TERMINAL_INPUT_parameter,GRUB_TERMINAL_INPUT_command,parameter); gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),parameter); } } } void on_output_option_switch(GtkCellRenderer *,char *path, main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->OutputTerminalList); if (gtk_tree_model_get_iter_from_string(model,&iter,path)){ int status; char *parameter; gtk_tree_model_get(model,&iter,0,&status,1,¶meter,-1); gtk_list_store_set(widgets->OutputTerminalList,&iter,0,!status,-1); char *config_param = config(GRUB_TERMINAL_OUTPUT_parameter); if (!yon_char_is_empty(config_param)){ int size; config_str parsed = yon_char_parse(config_param,&size," "); switch (status){ case 0:{ int pos = yon_char_parsed_check_exist(parsed,size,parameter); if (pos == -1){ yon_char_parsed_add_or_create_if_exists(parsed,&size,parameter); char *final = yon_char_parsed_to_string(parsed,size," "); yon_config_register(GRUB_TERMINAL_OUTPUT_parameter,GRUB_TERMINAL_OUTPUT_command,final); gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),final); free(final); } }break; case 1:{ int pos = yon_char_parsed_check_exist(parsed,size,parameter); if (pos>-1){ if (size>1){ parsed = yon_char_parsed_rip(parsed,&size,pos); char *final = yon_char_parsed_to_string(parsed,size," "); yon_config_register(GRUB_TERMINAL_OUTPUT_parameter,GRUB_TERMINAL_OUTPUT_command,final); gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),final); free(final); } else { gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),""); yon_config_remove_by_key(GRUB_TERMINAL_OUTPUT_parameter); } } } break; } } else if (status==0) { yon_config_register(GRUB_TERMINAL_OUTPUT_parameter,GRUB_TERMINAL_OUTPUT_command,parameter); gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),parameter); } } } // standard functions /**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.password_min_length=yon_password_get_min_len(); main_config.kernel_parameters = yon_resource_open_file(kernel_options_path,&main_config.kernel_size); main_config.input_parameters = yon_resource_open_file(terminal_input_path,&main_config.input_size); main_config.output_parameters = yon_resource_open_file(terminal_output_path,&main_config.output_size); } void on_parameter_changed(GtkWidget *self,main_window *widgets){ if (self == widgets->BootSelectionTimerSpin){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->BootSelectionTimerCheck))){ glong val = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widgets->BootSelectionTimerSpin)); if (val){ yon_config_register(GRUB_TIMEOUT_parameter,GRUB_TIMEOUT_command,yon_char_from_long(val)); return; } } yon_config_remove_by_key(GRUB_TIMEOUT_parameter); } else if (self == widgets->BootDisplayModeCombo){ char *display_mode = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->BootDisplayModeCombo)); if (!yon_char_is_empty(display_mode)){ yon_config_register(GRUB_BOOT_SILENT_parameter,GRUB_BOOT_SILENT_parameter,display_mode); } else { yon_config_remove_by_key(GRUB_BOOT_SILENT_parameter); } } else if (self == widgets->OSDefaultEntry){ char *os = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->OSDefaultEntry)); if (!yon_char_is_empty(os)){ yon_config_register(GRUB_DEFAULT_parameter,GRUB_DEFAULT_command,os); } else { yon_config_remove_by_key(GRUB_DEFAULT_parameter); } }// else if (){ } /**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->BootDisplayModeCombo = yon_gtk_builder_get_widget(builder,"BootDisplayModeCombo"); widgets->BootRingtoneAddButton = yon_gtk_builder_get_widget(builder,"BootRingtoneAddButton"); widgets->BootRingtoneEditButton = yon_gtk_builder_get_widget(builder,"BootRingtoneEditButton"); widgets->BootRingtoneRemoveButton = yon_gtk_builder_get_widget(builder,"BootRingtoneRemoveButton"); widgets->BootRingtoneTree = yon_gtk_builder_get_widget(builder,"BootRingtoneTree"); widgets->BootSelectionTimerCheck = yon_gtk_builder_get_widget(builder,"BootSelectionTimerCheck"); widgets->BootSelectionTimerSpin = yon_gtk_builder_get_widget(builder,"BootSelectionTimerSpin"); widgets->BootUsersAddButton = yon_gtk_builder_get_widget(builder,"BootUsersAddButton"); widgets->BootUsersEditButton = yon_gtk_builder_get_widget(builder,"BootUsersEditButton"); widgets->BootUsersRemoveButton = yon_gtk_builder_get_widget(builder,"BootUsersRemoveButton"); widgets->BootUsersTree = yon_gtk_builder_get_widget(builder,"BootUsersTree"); widgets->CommandLineParametersEntry = yon_gtk_builder_get_widget(builder,"CommandLineParametersEntry"); widgets->InputTerminalEntry = yon_gtk_builder_get_widget(builder,"InputTerminalEntry"); widgets->InputTerminalTree = yon_gtk_builder_get_widget(builder,"InputTerminalTree"); widgets->KernelParametersTree = yon_gtk_builder_get_widget(builder,"KernelParametersTree"); widgets->MenuButton = yon_gtk_builder_get_widget(builder,"MenuButton"); widgets->MenuOverlay = yon_gtk_builder_get_widget(builder,"MenuOverlay"); widgets->OSDefaultEntry = yon_gtk_builder_get_widget(builder,"OSDefaultEntry"); widgets->OutputTerminalEntry = yon_gtk_builder_get_widget(builder,"OutputTerminalEntry"); widgets->OutputTerminalTree = yon_gtk_builder_get_widget(builder,"OutputTerminalTree"); widgets->KernelChooseCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"KernelChooseCell")); widgets->InputChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"InputChosenCell")); widgets->OutputChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"OutputChosenCell")); widgets->BootUsersList = GTK_LIST_STORE(gtk_builder_get_object(builder,"BootUsersList")); widgets->BootRingtoneList = GTK_LIST_STORE(gtk_builder_get_object(builder,"BootRingtoneList")); widgets->KernelParametersList = GTK_LIST_STORE(gtk_builder_get_object(builder,"KernelParametersList")); widgets->InputTerminalList = GTK_LIST_STORE(gtk_builder_get_object(builder,"InputTerminalList")); widgets->OutputTerminalList = GTK_LIST_STORE(gtk_builder_get_object(builder,"OutputTerminalList")); } g_signal_connect(G_OBJECT(widgets->MenuButton),"clicked",G_CALLBACK(yon_menu_window_open),widgets); g_signal_connect(G_OBJECT(widgets->BootUsersAddButton),"clicked",G_CALLBACK(on_user_add_clicked),widgets); g_signal_connect(G_OBJECT(widgets->BootUsersEditButton),"clicked",G_CALLBACK(on_user_edit_clicked),widgets); g_signal_connect(G_OBJECT(widgets->BootUsersRemoveButton),"clicked",G_CALLBACK(on_user_remove_clicked),widgets); g_signal_connect(G_OBJECT(widgets->BootRingtoneAddButton),"clicked",G_CALLBACK(on_ringtone_add_clicked),widgets); g_signal_connect(G_OBJECT(widgets->BootRingtoneEditButton),"clicked",G_CALLBACK(on_ringtone_edit_clicked),widgets); g_signal_connect(G_OBJECT(widgets->BootRingtoneRemoveButton),"clicked",G_CALLBACK(on_ringtone_remove_clicked),widgets); g_signal_connect(G_OBJECT(widgets->KernelChooseCell),"toggled",G_CALLBACK(on_kernel_parameter_switch),widgets); g_signal_connect(G_OBJECT(widgets->InputChosenCell),"toggled",G_CALLBACK(on_input_option_switch),widgets); g_signal_connect(G_OBJECT(widgets->OutputChosenCell),"toggled",G_CALLBACK(on_output_option_switch),widgets); g_signal_connect(G_OBJECT(widgets->BootSelectionTimerCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),widgets->BootSelectionTimerSpin); g_signal_connect(G_OBJECT(widgets->BootSelectionTimerSpin),"changed",G_CALLBACK(on_parameter_changed),widgets); g_signal_connect(G_OBJECT(widgets->BootDisplayModeCombo),"changed",G_CALLBACK(on_parameter_changed),widgets); g_signal_connect(G_OBJECT(widgets->CommandLineParametersEntry),"changed",G_CALLBACK(on_parameter_changed),widgets); g_signal_connect(G_OBJECT(widgets->InputTerminalEntry),"changed",G_CALLBACK(on_parameter_changed),widgets); g_signal_connect(G_OBJECT(widgets->OutputTerminalEntry),"changed",G_CALLBACK(on_parameter_changed),widgets); g_signal_connect(G_OBJECT(widgets->OSDefaultEntry),"changed",G_CALLBACK(on_parameter_changed),widgets); g_signal_connect(G_OBJECT(widgets->BootDisplayModeCombo),"changed",G_CALLBACK(on_parameter_changed),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->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_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->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),NULL); yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size); yon_save_window_set_postsave_function(on_save_done,widgets); yon_load_proceed(YON_CONFIG_LOCAL); yon_interface_update(widgets); } int main(int argc, char *argv[]){ 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); main_config.launch_arguments=yon_char_parsed_copy(argv,argc); main_config.launch_size=argc; if (getuid()!=0){ textdomain(template_ui_LocaleName); yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); textdomain(LocaleName); } gtk_main(); return 0; }