|
|
|
@ -66,30 +66,27 @@ void on_locale_accept(GtkWidget *self, language_window *window){
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
char *locale_str = config(locale_parameter);
|
|
|
|
GtkTreeIter iter;
|
|
|
|
GtkTreeIter iter,itar;
|
|
|
|
char *sys_locale = NULL;
|
|
|
|
|
|
|
|
for_iter(widgets->LanguageList,&iter){
|
|
|
|
|
|
|
|
char *target;
|
|
|
|
|
|
|
|
int status;
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguageList),&iter,0,&status,3,&target,-1);
|
|
|
|
|
|
|
|
if (status){
|
|
|
|
|
|
|
|
sys_locale = target;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_list_store_clear(widgets->LanguageList);
|
|
|
|
int size;
|
|
|
|
int size;
|
|
|
|
config_str parsed = yon_char_parse(final,&size,",");
|
|
|
|
config_str parsed = yon_char_parse(final,&size,",");
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
int found = 0;
|
|
|
|
|
|
|
|
for_iter(GTK_TREE_MODEL(widgets->LanguageList),&itar){
|
|
|
|
|
|
|
|
char *checktarget;
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguageList),&itar,3,&checktarget,-1);
|
|
|
|
|
|
|
|
if (!strcmp(checktarget,parsed[i])){
|
|
|
|
|
|
|
|
found = 1;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (found) continue;
|
|
|
|
|
|
|
|
char *locale_str = g_hash_table_lookup(main_config.languages,parsed[i]);
|
|
|
|
char *locale_str = g_hash_table_lookup(main_config.languages,parsed[i]);
|
|
|
|
if (yon_char_is_empty(locale_str)) continue;
|
|
|
|
if (yon_char_is_empty(locale_str)) continue;
|
|
|
|
int parameter_size;
|
|
|
|
int parameter_size;
|
|
|
|
config_str parameter_parsed = yon_char_parse(locale_str,¶meter_size,"|");
|
|
|
|
config_str parameter_parsed = yon_char_parse(locale_str,¶meter_size,"|");
|
|
|
|
gtk_list_store_append(widgets->LanguageList,&iter);
|
|
|
|
gtk_list_store_append(widgets->LanguageList,&iter);
|
|
|
|
gtk_list_store_set(widgets->LanguageList,&iter,1,parameter_parsed[1],2,parameter_parsed[2],3,parameter_parsed[0],-1);
|
|
|
|
gtk_list_store_set(widgets->LanguageList,&iter,1,parameter_parsed[1],2,parameter_parsed[2],3,parameter_parsed[0],-1);
|
|
|
|
}
|
|
|
|
if (!yon_char_is_empty(sys_locale)&&!strcmp(parameter_parsed[0],sys_locale)){
|
|
|
|
if (yon_char_is_empty(locale_str)){
|
|
|
|
|
|
|
|
if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LanguageList),&iter)){
|
|
|
|
|
|
|
|
gtk_list_store_set(widgets->LanguageList,&iter,0,1,-1);
|
|
|
|
gtk_list_store_set(widgets->LanguageList,&iter,0,1,-1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -137,13 +134,8 @@ gboolean yon_locale_window_load(language_window *window){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void *yon_locales_load_func(language_window *window){
|
|
|
|
void *yon_locales_load_func(language_window *window){
|
|
|
|
char *config_value = config(lang_parameter);
|
|
|
|
|
|
|
|
int config_parsed_size;
|
|
|
|
int config_parsed_size;
|
|
|
|
config_str config_parsed = NULL;
|
|
|
|
config_str config_parsed = yon_char_parse(window->languages,&config_parsed_size,",");
|
|
|
|
if (config_value){
|
|
|
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),config_value);
|
|
|
|
|
|
|
|
config_parsed = yon_char_parse(config_value,&config_parsed_size,",");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int size;
|
|
|
|
int size;
|
|
|
|
config_str languages = yon_config_load(languages_command,&size);
|
|
|
|
config_str languages = yon_config_load(languages_command,&size);
|
|
|
|
@ -171,7 +163,7 @@ void *yon_locales_load_func(language_window *window){
|
|
|
|
g_thread_exit(NULL);
|
|
|
|
g_thread_exit(NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
language_window *yon_language_window_new(){
|
|
|
|
language_window *yon_language_window_new(char *chosen_languages){
|
|
|
|
language_window *window = malloc(sizeof(language_window));
|
|
|
|
language_window *window = malloc(sizeof(language_window));
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_locales_path);
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_locales_path);
|
|
|
|
window->Window = yon_gtk_builder_get_widget(builder,"Window");
|
|
|
|
window->Window = yon_gtk_builder_get_widget(builder,"Window");
|
|
|
|
@ -184,12 +176,15 @@ language_window *yon_language_window_new(){
|
|
|
|
window->LoadingSpinner = yon_gtk_builder_get_widget(builder,"LoadingSpinner");
|
|
|
|
window->LoadingSpinner = yon_gtk_builder_get_widget(builder,"LoadingSpinner");
|
|
|
|
window->ToggleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ToggleCell"));
|
|
|
|
window->ToggleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ToggleCell"));
|
|
|
|
window->LanguagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList"));
|
|
|
|
window->LanguagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList"));
|
|
|
|
|
|
|
|
window->languages = yon_char_new(chosen_languages);
|
|
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->ToggleCell),"toggled",G_CALLBACK(on_locale_toggle),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->ToggleCell),"toggled",G_CALLBACK(on_locale_toggle),window);
|
|
|
|
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(window->LanguagesTree));
|
|
|
|
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(window->LanguagesTree));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),chosen_languages);
|
|
|
|
|
|
|
|
|
|
|
|
gtk_overlay_add_overlay(GTK_OVERLAY(window->LoadingOverlay),window->LoadingSpinner);
|
|
|
|
gtk_overlay_add_overlay(GTK_OVERLAY(window->LoadingOverlay),window->LoadingSpinner);
|
|
|
|
g_thread_new("locales-thread",(GThreadFunc)yon_locales_load_func,window);
|
|
|
|
g_thread_new("locales-thread",(GThreadFunc)yon_locales_load_func,window);
|
|
|
|
|
|
|
|
|
|
|
|
@ -197,12 +192,22 @@ language_window *yon_language_window_new(){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_language_open(GtkWidget *, main_window *widgets){
|
|
|
|
void on_language_open(GtkWidget *, main_window *widgets){
|
|
|
|
language_window *window = yon_language_window_new();
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
|
|
|
char *languages = NULL;
|
|
|
|
|
|
|
|
for_iter(GTK_TREE_MODEL(widgets->LanguageList),&iter){
|
|
|
|
|
|
|
|
char *target;
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguageList),&iter,3,&target,-1);
|
|
|
|
|
|
|
|
char *temp = yon_char_append_element(languages,target,",");
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(languages)) free(languages);
|
|
|
|
|
|
|
|
languages = temp;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
language_window *window = yon_language_window_new(languages);
|
|
|
|
|
|
|
|
|
|
|
|
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
|
|
|
|
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
|
|
|
|
|
|
|
|
|
|
|
|
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),ADD_LANGUAGE_TITLE_LABEL,icon_path,"LocalesWindow");
|
|
|
|
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),ADD_LANGUAGE_TITLE_LABEL,icon_path,"LocalesWindow");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|