diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index a3e0cae..b60df14 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -95,7 +95,7 @@ add_definitions(-DVTE_INCLUDE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \ -O2 -pipe -fno-plt -fexceptions \ -Wformat -Werror=format-security \ - -fstack-clash-protection -fcf-protection") + -fstack-clash-protection -fcf-protection -fsanitize=address -fno-omit-frame-pointer") string(FIND "${CMAKE_CXX_FLAGS}" "-D_FORTIFY_SOURCE" FORTIFY_FOUND) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 1a4451c..0539b52 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -329,32 +329,42 @@ void yon_interface_update(main_window *widgets){ char *system_locale = config(locale_parameter); if (!yon_char_is_empty(system_locale)){ char *chosen_langs = ""; - for_iter(widgets->LanguagesList,&iter){ - char *cur=NULL, *render = NULL; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,1,&render,2,&cur,-1); - if (strstr(system_locale,cur)){ - gtk_list_store_set((widgets->LanguagesList),&iter,0,1,-1); - chosen_langs = yon_char_unite(chosen_langs,!yon_char_is_empty(chosen_langs)?";":"",render,NULL); + for_iter(widgets->LanguagesList,&iter){ + char *cur=NULL, *render = NULL; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,1,&render,2,&cur,-1); + if (strstr(system_locale,cur)){ + gtk_list_store_set((widgets->LanguagesList),&iter,0,1,-1); + chosen_langs = yon_char_unite(chosen_langs,!yon_char_is_empty(chosen_langs)?";":"",render,NULL); + } else { + gtk_list_store_set((widgets->LanguagesList),&iter,0,0,-1); + } + } + if (!yon_char_is_empty(chosen_langs)){ + gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),chosen_langs); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),1); + free(chosen_langs); } else { - gtk_list_store_set((widgets->LanguagesList),&iter,0,0,-1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),0); + gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),""); } - } - if (!yon_char_is_empty(chosen_langs)){ - gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),chosen_langs); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),1); - free(chosen_langs); - } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),0); - gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),""); - } // gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter)); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),0); gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),""); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),0); + int langsize; + config_str lang = default_langs(&langsize); for_iter(widgets->LanguagesList,&iter){ - gtk_list_store_set((widgets->LanguagesList),&iter,0,0,-1); + char *cur=NULL; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,2,&cur,-1); + if (lang&&yon_char_parsed_check_exist(lang,langsize,cur)>-1){ + gtk_list_store_set(widgets->LanguagesList,&iter,0,1,-1); + } else { + gtk_list_store_set(widgets->LanguagesList,&iter,0,0,-1); + } + if (cur) free(cur); } + if (langsize) yon_char_parsed_free(lang,langsize); // gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter)); } @@ -748,7 +758,7 @@ void on_language_window_accept(GtkWidget *,dictionary *dict){ gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),""); GtkTreeIter iter; int size; - config_str lang_parsed = yon_char_parsed_new(&size,"en_US.UTF-8","ru_RU.UTF-8",NULL); + config_str lang_parsed = default_langs(&size); char *final = ""; for_iter(widgets->LanguagesList,&iter){ @@ -828,6 +838,25 @@ void on_language_clicked(GtkWidget *, main_window *widgets){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultCheck),1); } + int size; + int found=0; + int statusfound=0; + config_str langs = default_langs(&size); + GtkTreeIter iter; + for_iter(widgets->LanguagesList,&iter){ + char *cur; + int status; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,0,&status,2,&cur,-1); + if (status){ + statusfound++; + if (yon_char_parsed_check_exist(langs,size,cur)>-1) + found++; + } + } + if ((found==size)&&statusfound==size){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultCheck),1); + } + dictionary *dict=NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); @@ -894,7 +923,7 @@ int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled GdkPixbuf *scaledPixBuf = gdk_pixbuf_scale_simple(pixbuf_unscaled, newImageWidth, newImgHeight, GDK_INTERP_BILINEAR); gtk_image_set_from_pixbuf(target, scaledPixBuf); - g_object_unref(scaledPixBuf); // Освобождаем память, занятую скалированным изображением + g_object_unref(scaledPixBuf); return 1; } @@ -965,24 +994,32 @@ void *on_config_save(void *data){ fclose(file); char *command = save_config_command(yon_char_parsed_to_string(parameters,size," ")); yon_char_parsed_free(parameters,size); + yon_debug_output("%s\n","Entered installation"); if (system(yon_debug_output("%s\n",command))){ - gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALL_ERROR); + yon_debug_output("%s\n","Entered installation failed"); + + g_thread_new("success func",(GThreadFunc)on_install_error,widgets); free(command); main_config.config_save_thread=NULL; main_config.install_thread=0; main_config.install_complete=1; + yon_debug_output("%s\n","Exit installation"); pthread_exit(NULL); return 0; }; + yon_debug_output("%s\n","Entered installation success"); free(command); main_config.install_thread=0; main_config.install_complete=1; yon_debug_output("Install set to: %s\n",yon_char_from_int(main_config.install_complete)); yon_debug_output("Save state: %s\n",yon_char_from_int(main_config.save_done)); if (main_config.save_done){ - gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETION); + yon_debug_output("%s\n","Entered installation page change"); + g_thread_new("success func",(GThreadFunc)on_install_success,widgets); } main_config.config_save_thread=NULL; + + yon_debug_output("%s\n","Exit installation"); pthread_exit(NULL); } @@ -1021,10 +1058,10 @@ gboolean yon_installation_progress_update(void *data) { yon_char_parsed_free(parsed, size); } - yon_char_parsed_free(text, size); free(current_copy); free(percentage); } + yon_char_parsed_free(text, size); } if (main_config.install_thread) { @@ -1115,6 +1152,7 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ } break; case YON_PAGE_COMPLETION:{ + yon_debug_output("%s\n","Enter completion"); yon_switch_page_render(widgets,7); gtk_widget_set_sensitive(widgets->BackButton,0); gtk_widget_hide(gtk_widget_get_parent(widgets->PackageInstallationProgress)); @@ -1122,13 +1160,16 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ gtk_widget_hide(widgets->PackageInstallationLabel); gtk_widget_set_sensitive(widgets->NextButton,1); gtk_widget_set_sensitive(widgets->CancelInstallButton,1); + yon_debug_output("%s\n","Done widgets"); main_config.install_complete=0; main_config.save_done=0; + yon_debug_output("%s\n","Done variables"); textdomain(LocaleName); gtk_button_set_label(GTK_BUTTON(widgets->NextButton),RESTART_LABEL); gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->NextButton))), - "com.ublinux.ubinstall-gtk.sync-symbolic",GTK_ICON_SIZE_BUTTON); + // gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->NextButton))), + // "com.ublinux.ubinstall-gtk.sync-symbolic",GTK_ICON_SIZE_BUTTON); + yon_debug_output("%s\n","Done labels and button icon"); } break; @@ -1178,8 +1219,16 @@ void *on_install_success(main_window *widgets){ return NULL; } +void *on_install_error(main_window *widgets){ + gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),""); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALL_ERROR); + + return NULL; +} + void *on_setup_system_configuration(void *data); void *on_setup_system_configuration(void * data){ + yon_debug_output("%s\n","Entered thread"); main_window *widgets = (main_window*)data; if (widgets){}; int size; @@ -1201,7 +1250,7 @@ void *on_setup_system_configuration(void * data){ if (all_parameters){ char *parameter_string = yon_char_parsed_to_string(all_parameters,size," "); char *command = set_user_config_command(parameter_string); - if (system(yon_debug_output("$s\n",command))){}; + if (system(yon_debug_output("%s\n",command))){}; yon_char_parsed_free(all_parameters,size); free(command); if (parameter_string) free(parameter_string); @@ -1730,14 +1779,17 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ } if (!main_config.configure_mode){ + yon_debug_output("%s\n","Entered saving"); if (!main_config.install_complete){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION); } if (gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress))>0.9){ + yon_debug_output("%s\n","Entered saving before installation done"); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION); gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),CONFIGURATION_LABEL); pthread_t tid; - pthread_create(&tid,NULL,on_setup_system_configuration,widgets); yon_debug_output("%s\n","installation ending configuration startup"); + pthread_create(&tid,NULL,on_setup_system_configuration,widgets); } else { pthread_t tid; pthread_create(&tid,NULL,on_save_system_configuration,widgets); @@ -1749,7 +1801,6 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ yon_debug_output("Install state: %s\n",yon_char_from_int(main_config.install_complete)); if (!main_config.install_complete){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION); - printf("still deactivated\n"); gtk_widget_set_sensitive(widgets->CancelInstallButton,0); gtk_widget_set_sensitive(widgets->NextButton,0); gtk_widget_set_sensitive(widgets->BackButton,0); @@ -1960,8 +2011,10 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){ for (int i=0;iZoneCombo),parsed[i],_(parsed[i])); } + if (size) yon_char_parsed_free(parsed,size); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0); } + free(active); } void on_locale_changed(GtkWidget *,main_window *); @@ -2052,14 +2105,33 @@ void on_separate_installation_changed(GtkWidget *self, main_window *widgets){ json_object_object_get_ex(device, "fstype", &fstype); json_object_object_get_ex(device, "fsused", &fsused); - float free_space=0; + double free_space=0; char *free_space_string=""; if (size&&fsused){ - free_space = atof(json_object_get_string(size))-atof(json_object_get_string(fsused)); - free_space_string = yon_char_append(yon_char_from_float(free_space)," "); - free_space_string[strlen(free_space_string)-1]=json_object_get_string(size)[strlen(json_object_get_string(size))-1]; + char *fsused_str = (char*)json_object_get_string(fsused); + double fsused_kbytes = atof(fsused_str); + for (int i=0;i1024;sz=sz+1){ + free_space=free_space/1024; + } + if (sz==-1) { + sz=0; + free_space=free_space/1024; + } + free_space_string = yon_char_append(yon_char_from_double(free_space)," "); + free_space_string[strlen(free_space_string)-1]=*(yon_size_get_mod(sz)); } - // gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin),0.0); gtk_adjustment_set_upper(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin)),0.0); gtk_list_store_append(widgets->PartitionsList,&iter); gtk_list_store_set(widgets->PartitionsList,&iter,0,json_object_get_string(path),1,json_object_get_string(size),2,free_space_string,3,json_object_get_string(fstype),-1); @@ -2099,12 +2171,32 @@ void on_near_installation_device_changed(GtkWidget *self, main_window *widgets){ json_object_object_get_ex(device, "fstype", &fstype); json_object_object_get_ex(device, "fsused", &fsused); - float free_space=0; + double free_space=0; char *free_space_string=""; if (size&&fsused){ - free_space = atof(json_object_get_string(size))-atof(json_object_get_string(fsused)); - free_space_string = yon_char_append(yon_char_from_float(free_space)," "); - free_space_string[strlen(free_space_string)-1]=json_object_get_string(size)[strlen(json_object_get_string(size))-1]; + char *fsused_str = (char*)json_object_get_string(fsused); + double fsused_kbytes = atof(fsused_str); + for (int i=0;i1024;sz=sz+1){ + free_space=free_space/1024; + } + if (sz==-1) { + sz=0; + free_space=free_space/1024; + } + free_space_string = yon_char_append(yon_char_from_double(free_space)," "); + free_space_string[strlen(free_space_string)-1]=*(yon_size_get_mod(sz)); } // gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin),0.0); gtk_adjustment_set_upper(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin)),0.0); @@ -2159,36 +2251,48 @@ void on_gparted_open(){ yon_launch_app_with_arguments(open_gparted_command,NULL); } -// gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets); -// void on_exit_accepted(GtkWidget *,main_window *widgets); -// void on_exit_accepted(GtkWidget *,main_window *widgets){ -// if (main_config.install_thread){ -// pthread_cancel((pthread_t)main_config.install_thread); -// } -// main_config.exit_accepted=1; -// g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"destroy",widgets->MainWindow,NULL); -// } - -// gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ -// if (!main_config.exit_accepted){ -// if (widgets){}; -// confirmation_window *window = malloc(sizeof(confirmation_window)); -// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_confirmation); -// window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); -// window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); -// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); -// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_exit_accepted),widgets); -// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); -// gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow)); -// gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL); -// gtk_window_set_icon_name(GTK_WINDOW(window->Window),icon_path); -// gtk_widget_show(window->Window); - -// return 1; -// } - -// return 0; -// } +gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets); + +void on_exit_accepted(GtkWidget *,dictionary *dict); +void on_exit_accepted(GtkWidget *,dictionary *dict){ + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + confirmation_window *window = yon_dictionary_get_data(dict->first->next,confirmation_window*); + if (main_config.install_thread){ + pthread_cancel((pthread_t)main_config.install_thread); + } + main_config.exit_accepted=1; + g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"delete-event",widgets->MainWindow,NULL); + free(window); + yon_dictionary_free_all(dict,NULL); + free(dict); + gtk_widget_destroy(widgets->MainWindow); +} + +gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ + if (!main_config.exit_accepted){ + if (widgets){}; + confirmation_window *window = malloc(sizeof(confirmation_window)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_confirmation); + window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); + window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); + window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); + dictionary *dict = NULL; + yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); + yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_exit_accepted),dict); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow)); + gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL); + gtk_window_set_icon_name(GTK_WINDOW(window->Window),icon_path); + gtk_widget_show(window->Window); + + + return 1; + } + + return 0; +} /**yon_main_window_complete(main_window *widgets) * [EN] @@ -2363,7 +2467,7 @@ main_window *yon_main_window_complete(){ widgets->SameFSTypeSensitiveCheck = yon_gtk_builder_get_widget(builder,"SameFSTypeSensitiveCheck"); widgets->SameLabelSensitiveCheck = yon_gtk_builder_get_widget(builder,"SameLabelSensitiveCheck"); - // g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets); + g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets); GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2"); gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle"); gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop"); @@ -2463,9 +2567,18 @@ main_window *yon_main_window_complete(){ int width = gdk_pixbuf_get_width(widgets->regions_original); int height = gdk_pixbuf_get_height(widgets->regions_original); widgets->region_height_mult = (float)height/width; - gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->RegionImage),gdk_pixbuf_scale_simple(widgets->regions_original,600,400,GDK_INTERP_BILINEAR)); - gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->KeyboardImage),gdk_pixbuf_scale_simple(widgets->keyboard_original,600,400,GDK_INTERP_BILINEAR)); - gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),gdk_pixbuf_scale_simple(widgets->slides_original[0],600,400,GDK_INTERP_BILINEAR)); + GdkPixbuf *pix = gdk_pixbuf_scale_simple(widgets->regions_original,600,400,GDK_INTERP_BILINEAR); + gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->RegionImage),pix); + g_object_unref(pix); + pix = gdk_pixbuf_scale_simple(widgets->keyboard_original,600,400,GDK_INTERP_BILINEAR); + gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->KeyboardImage),pix); + g_object_unref(pix); + pix = gdk_pixbuf_scale_simple(widgets->slides_original[0],600,400,GDK_INTERP_BILINEAR); + gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),pix); + g_object_unref(pix); + + int langsize; + config_str lang = default_langs(&langsize); GtkTreeIter iter; gtk_list_store_clear(widgets->LanguagesList); @@ -2481,6 +2594,8 @@ main_window *yon_main_window_complete(){ yon_char_parsed_free(cur,cur_size); } yon_char_parsed_free(parsed,size); + if (lang) + yon_char_parsed_free(lang,langsize); parsed = yon_dir_get_contents(zone_path,&size); for (int i=0;iLayoutList,&iter,NULL); gtk_tree_store_set(widgets->LayoutList,&iter,0,layout[0],1,_(layout[1]),2,1,-1); yon_char_parsed_free(layout,layout_size); - layout = yon_config_load(get_layouts_local_command(layout_id),&layout_size); + char *command = get_layouts_local_command(layout_id); + config_str layout_local = yon_config_load(command,&layout_size); + free(command); + free(layout_id); for (int j=0;jLayoutList,&itar,&iter); gtk_tree_store_set(widgets->LayoutList,&itar,0,layouts_parsed[0],1,_(layouts_parsed[1]),2,1,3,0,-1); @@ -2519,7 +2637,7 @@ main_window *yon_main_window_complete(){ if (layout_size==-1) { gtk_tree_store_set(widgets->LayoutList,&iter,2,1,-1); } - yon_char_parsed_free(layout,layout_size); + yon_char_parsed_free(layout_local,layout_size); } } yon_char_parsed_free(parsed,size); @@ -2529,6 +2647,7 @@ main_window *yon_main_window_complete(){ struct json_object *root; struct json_object *blockdevices; root = json_tokener_parse(string); + free(string); json_object_object_get_ex(root, "blockdevices", &blockdevices); for (long unsigned int i = 0; i < json_object_array_length(blockdevices); i++) { struct json_object *device = json_object_array_get_idx(blockdevices, i); @@ -2542,6 +2661,7 @@ main_window *yon_main_window_complete(){ gtk_list_store_append(widgets->DevicesList,&iter); gtk_list_store_set(widgets->DevicesList,&iter,0,json_object_get_string(path),1,json_object_get_string(model),2,json_object_get_string(serial),3,json_object_get_string(size),4,json_object_get_string(vendor),-1); + } yon_char_parsed_free(parsed,size); } @@ -2553,8 +2673,10 @@ main_window *yon_main_window_complete(){ if (module_size){ gtk_list_store_append(widgets->AdditionalSoftwareList,&iter); gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,1,1,module_parsed[0],3,module_parsed[1],-1); //2,module_parsed[2] + yon_char_parsed_free(module_parsed,module_size); } } + if (size) yon_char_parsed_free(parsed,size); config_str models = yon_config_load(get_models_command,&size); for (int i=0;iKeyboardModelCombo),models[i],_(models[i+1])); } + if (size) yon_char_parsed_free(models,size); gtk_builder_connect_signals(builder,NULL); yon_load_proceed(YON_CONFIG_DEFAULT); yon_interface_update(widgets); @@ -2650,12 +2773,14 @@ int main(int argc, char *argv[]){ main_window *widgets = NULL; widgets = yon_main_window_complete(); yon_window_config_setup(GTK_WINDOW(widgets->MainWindow)); - - yon_window_config_load(config_path); + char *window_config_path = config_path; + yon_window_config_load(window_config_path); + free(window_config_path); GtkCssProvider *css=gtk_css_provider_new(); gtk_css_provider_load_from_resource(css,CssPath); gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); gtk_main(); + free(widgets); } \ No newline at end of file diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 372dda6..64f0799 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -147,6 +147,8 @@ NULL #define ubconfig_file_create(target) yon_char_unite("ubconfig --target \"",target,"\" create",NULL) +#define default_langs(size) yon_char_parsed_new(size,"en_US.UTF-8","ru_RU.UTF-8",NULL); + typedef char* string; string version_application; @@ -465,4 +467,6 @@ void on_autohostname_sensitiveness_check(GtkWidget *, main_window *widgets); void on_autohostname_check(GtkWidget *, main_window *widgets); void on_hostname_entry_changed (GtkWidget *, main_window *widgets); -void *on_install_success(main_window *widgets); \ No newline at end of file +void *on_install_success(main_window *widgets); + +void *on_install_error(main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 357d8a7..c25745b 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -181,4 +181,8 @@ #define ADD_LAYOUT_LABEL _("Add layouts") #define REMOVE_LAYOUT_LABEL _("Remove layout") -#define CONFIGURATION_LABEL _("System configuration...") \ No newline at end of file +#define CONFIGURATION_LABEL _("System configuration...") + +#define WARNING_TITLE_LABEL _("Warning") + +#define WARNING_TEXT_LABEL _("Are you sure want to exit and\ninterrupt installation process?") \ No newline at end of file diff --git a/ubinstall-gtk-warning.glade b/ubinstall-gtk-warning.glade index 704a8d9..cf113d5 100644 --- a/ubinstall-gtk-warning.glade +++ b/ubinstall-gtk-warning.glade @@ -1,13 +1,25 @@ - + + + + True + False + com.ublinux.libublsettingsui-gtk3.cancel-symbolic + + + True + False + com.ublinux.libublsettingsui-gtk3.accept-symbolic + - 450 - 250 + 350 + 150 False False - 450 + True + 300 dialog-question-symbolic @@ -52,8 +64,10 @@ True False center + 15 Are you sure want to exit and interrupt installation process? + 0 @@ -133,14 +147,4 @@ interrupt installation process? - - True - False - com.ublinux.libublsettingsui-gtk3.cancel-symbolic - - - True - False - com.ublinux.libublsettingsui-gtk3.accept-symbolic - diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index ea6e2da..619a9b5 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -1897,7 +1897,7 @@ and help you install UBLinux on your computer - False + True True 1 @@ -2623,7 +2623,7 @@ and help you install UBLinux on your computer True False True - ublinux-install + auto True @@ -2686,7 +2686,7 @@ and help you install UBLinux on your computer True False - Completion + Installation completion diff --git a/ubinstall-gtk.pot b/ubinstall-gtk.pot index be35c77..98031f6 100644 --- a/ubinstall-gtk.pot +++ b/ubinstall-gtk.pot @@ -628,6 +628,15 @@ msgstr "" msgid "Remove layout" msgstr "" +msgid "Warning" +msgstr "" + +msgid "Accept" +msgstr "" + +msgid "Are you sure want to exit and\ninterrupt installation process?" +msgstr "" + msgid "English, U.S.A.; Russian, Russia" msgstr "" diff --git a/ubinstall-gtk_ru.po b/ubinstall-gtk_ru.po index 85fa027..36ae6c3 100644 --- a/ubinstall-gtk_ru.po +++ b/ubinstall-gtk_ru.po @@ -641,6 +641,15 @@ msgstr "Добавить раскладки" msgid "Remove layout" msgstr "Удалить раскладку" +msgid "Warning" +msgstr "Внимание" + +msgid "Accept" +msgstr "Принять" + +msgid "Are you sure want to exit and\ninterrupt installation process?" +msgstr "Вы уверены, что хотите закрыть программу и\nпрервать процесс установки?" + #: source/ubl-strings.h:140 msgid "Read installation log" msgstr "Открыть лог установки"