diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 1a4451c..b9eeaeb 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -329,31 +329,39 @@ 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; + 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); + } } // gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter)); } @@ -748,7 +756,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 +836,26 @@ 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); + } + printf("%d == %d == %d\n",found,size,statusfound); + 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); @@ -2467,6 +2495,9 @@ main_window *yon_main_window_complete(){ 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)); + int langsize; + config_str lang = default_langs(&langsize); + GtkTreeIter iter; gtk_list_store_clear(widgets->LanguagesList); parsed = yon_file_open(languages_path,&size); @@ -2481,6 +2512,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;i