|
|
|
|
@ -310,14 +310,28 @@ void config_init(){
|
|
|
|
|
|
|
|
|
|
// void *on_setup_system_configuration(void *data);
|
|
|
|
|
|
|
|
|
|
void on_locale_changed(GtkWidget *self,main_window *widgets){
|
|
|
|
|
char *window_language;
|
|
|
|
|
void on_locale_changed(GtkWidget *,main_window *widgets){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model;
|
|
|
|
|
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&iter)) return;
|
|
|
|
|
gtk_tree_model_get(model,&iter,0,&window_language,-1);
|
|
|
|
|
if (!yon_char_is_empty(window_language)){
|
|
|
|
|
yon_config_register(installer_lang_parameter,installer_lang_parameter_command,(char*)window_language);
|
|
|
|
|
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter));
|
|
|
|
|
char *config_code = config(installer_lang_parameter);
|
|
|
|
|
if (yon_char_is_empty(config_code)){
|
|
|
|
|
config_code = yon_char_new(setlocale(LC_ALL,NULL));
|
|
|
|
|
if (strstr(config_code,".")){
|
|
|
|
|
yon_char_divide_search_self(config_code,".",-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
GtkTreeIter itar;
|
|
|
|
|
for_iter(widgets->InstallerCountryFilter,&iter){
|
|
|
|
|
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&itar,&iter);
|
|
|
|
|
char *target;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->InstallerCountryList),&itar,2,&target,-1);
|
|
|
|
|
if (!strcmp(config_code,target)){
|
|
|
|
|
gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&iter,&itar);
|
|
|
|
|
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&iter);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -326,9 +340,8 @@ void on_installer_language_changed(GtkWidget *self, main_window *widgets){
|
|
|
|
|
char *window_language;
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model;
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&iter)){
|
|
|
|
|
gtk_tree_model_get(model,&iter,0,&window_language,-1);
|
|
|
|
|
}
|
|
|
|
|
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&model,&iter)) return;
|
|
|
|
|
gtk_tree_model_get(model,&iter,2,&window_language,-1);
|
|
|
|
|
if (!yon_char_is_empty(window_language)){
|
|
|
|
|
yon_config_register(installer_lang_parameter,installer_lang_parameter_command,(char*)window_language);
|
|
|
|
|
}
|
|
|
|
|
@ -351,7 +364,6 @@ void on_installer_language_changed(GtkWidget *self, main_window *widgets){
|
|
|
|
|
g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
|
|
|
|
|
model = GTK_TREE_MODEL(widgets->InstallerLanguageList);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,active_lang_id);
|
|
|
|
|
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -413,6 +425,7 @@ typedef struct{
|
|
|
|
|
char *locale_name;
|
|
|
|
|
char *code;
|
|
|
|
|
char *localised_name;
|
|
|
|
|
char *code_full;
|
|
|
|
|
} locale_struct;
|
|
|
|
|
|
|
|
|
|
void set_locales_list(main_window *widgets){
|
|
|
|
|
@ -435,6 +448,30 @@ void set_locales_list(main_window *widgets){
|
|
|
|
|
yon_char_remove_last_symbol(code,'"');
|
|
|
|
|
free(yon_char_divide_search(code,"\"",-1));
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
char *region = yon_char_parsed_check_exist_begins_with(code_info,info_size,"territory");
|
|
|
|
|
if (!yon_char_is_empty(region)){
|
|
|
|
|
yon_char_remove_last_symbol(region,'\n');
|
|
|
|
|
yon_char_remove_last_symbol(region,'"');
|
|
|
|
|
free(yon_char_divide_search(region,"\"",-1));
|
|
|
|
|
}
|
|
|
|
|
char *lang_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"language");
|
|
|
|
|
if (!yon_char_is_empty(lang_name)){
|
|
|
|
|
yon_char_remove_last_symbol(lang_name,'\n');
|
|
|
|
|
yon_char_remove_last_symbol(lang_name,'"');
|
|
|
|
|
free(yon_char_divide_search(lang_name,"\"",-1));
|
|
|
|
|
}
|
|
|
|
|
char *tooltip = yon_char_parsed_check_exist_begins_with(code_info,info_size,"title");
|
|
|
|
|
if (!yon_char_is_empty(tooltip)){
|
|
|
|
|
yon_char_remove_last_symbol(tooltip,'\n');
|
|
|
|
|
yon_char_remove_last_symbol(tooltip,'"');
|
|
|
|
|
free(yon_char_divide_search(tooltip,"\"",-1));
|
|
|
|
|
}
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
char *country = yon_char_unite(lang_name," (",region,")",NULL);
|
|
|
|
|
gtk_list_store_append(widgets->InstallerCountryList,&iter);
|
|
|
|
|
gtk_list_store_set(widgets->InstallerCountryList,&iter,0,code,1,_(country),2,locales[i],3,_(tooltip),-1);
|
|
|
|
|
}
|
|
|
|
|
if (!g_hash_table_contains(localisations,code)) {
|
|
|
|
|
locale_struct *locale = malloc(sizeof(locale_struct));
|
|
|
|
|
memset(locale,0,sizeof(locale_struct));
|
|
|
|
|
@ -442,6 +479,7 @@ void set_locales_list(main_window *widgets){
|
|
|
|
|
locale->locale_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"language");
|
|
|
|
|
locale->code = code;
|
|
|
|
|
locale->localised_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"lang_name");
|
|
|
|
|
locale->code_full = yon_char_new(locales[i]);
|
|
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(locale->locale_name)){
|
|
|
|
|
yon_char_remove_last_symbol(locale->locale_name,'\n');
|
|
|
|
|
@ -462,11 +500,50 @@ void set_locales_list(main_window *widgets){
|
|
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
dictionary *dict;
|
|
|
|
|
char *config_val = yon_char_new(config(installer_lang_parameter));
|
|
|
|
|
char *config_code = NULL;
|
|
|
|
|
if (yon_char_is_empty(config_val)) config_val = yon_char_new(setlocale(LC_ALL,NULL));
|
|
|
|
|
if(strstr(config_val,"_")){
|
|
|
|
|
config_code = yon_char_divide_search(config_val,"_",-1);
|
|
|
|
|
free(config_val);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
for_dictionaries(dict,locale_dict){
|
|
|
|
|
locale_struct *locale = yon_dictionary_get_data(dict,locale_struct*);
|
|
|
|
|
gtk_list_store_append(widgets->InstallerLanguageList,&iter);
|
|
|
|
|
gtk_list_store_set(widgets->InstallerLanguageList,&iter,0,locale->code,1,locale->locale_name,2,locale->localised_name,-1);
|
|
|
|
|
gtk_list_store_set(widgets->InstallerLanguageList,&iter,0,locale->code,1,locale->locale_name,2,_(locale->localised_name),3,locale->code_full,-1);
|
|
|
|
|
if (!yon_char_is_empty(config_code)){
|
|
|
|
|
if (!strcmp(config_code,locale->code)){
|
|
|
|
|
g_signal_handlers_block_by_func(G_OBJECT(widgets->CountryLanguagesTree),G_CALLBACK(on_installer_language_changed),widgets);
|
|
|
|
|
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter);
|
|
|
|
|
on_locale_changed(NULL,widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->CountryLanguagesTree),G_CALLBACK(on_installer_language_changed),widgets);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets){
|
|
|
|
|
GtkTreeIter itar;
|
|
|
|
|
GtkTreeModel *model;
|
|
|
|
|
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&itar)) return 0;
|
|
|
|
|
char *cur_code,*country;
|
|
|
|
|
gtk_tree_model_get(self,iter,0,&cur_code,1,&country,-1);
|
|
|
|
|
char *code;
|
|
|
|
|
|
|
|
|
|
gtk_tree_model_get(model,&itar,0,&code,-1);
|
|
|
|
|
if (!strcmp(code,cur_code)){
|
|
|
|
|
char *config_lang = config(installer_lang_parameter);
|
|
|
|
|
if (!yon_char_is_empty(config_lang)&&!strcmp(cur_code,config_lang)){
|
|
|
|
|
if (gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),iter,&itar)){
|
|
|
|
|
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&itar);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -625,6 +702,7 @@ void yon_main_window_create(main_window *widgets){
|
|
|
|
|
widgets->LanguagesTree=yon_gtk_builder_get_widget(builder,"LanguagesTree");
|
|
|
|
|
widgets->CountryLanguagesTree=yon_gtk_builder_get_widget(builder,"CountryLanguagesTree");
|
|
|
|
|
widgets->InstallerCountryList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerCountryList"));
|
|
|
|
|
widgets->InstallerCountryFilter=GTK_TREE_MODEL(gtk_builder_get_object(builder,"InstallerCountryFilter"));
|
|
|
|
|
widgets->InstallerLanguageList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerLanguageList"));
|
|
|
|
|
// widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
|
|
|
|
|
widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo");
|
|
|
|
|
@ -793,7 +871,7 @@ void yon_main_window_create(main_window *widgets){
|
|
|
|
|
gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),3);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"cursor-changed",G_CALLBACK(on_installer_language_changed),widgets);
|
|
|
|
|
// g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->AdditionalSoftwareCell),"toggled",G_CALLBACK(on_additional_software_toggled),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->StartupChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets);
|
|
|
|
|
@ -847,6 +925,7 @@ void yon_main_window_create(main_window *widgets){
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SourceButton),"clicked",G_CALLBACK(on_source_clicked),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SkipInstallationButton),"clicked",G_CALLBACK(on_system_setup_pass),widgets);
|
|
|
|
|
|
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL);
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (main_config.lock_load_global == 1){
|
|
|
|
|
@ -898,7 +977,6 @@ void yon_main_window_create(main_window *widgets){
|
|
|
|
|
}
|
|
|
|
|
gtk_builder_connect_signals(builder,NULL);
|
|
|
|
|
// yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
|
on_config_global_load(NULL,widgets);
|
|
|
|
|
// yon_interface_update(widgets);
|
|
|
|
|
if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){
|
|
|
|
|
gtk_widget_show(widgets->StartScenarioButton);
|
|
|
|
|
@ -951,6 +1029,7 @@ int main(int argc, char *argv[]){
|
|
|
|
|
gtk_init(&argc,&argv);
|
|
|
|
|
main_window *widgets = NULL;
|
|
|
|
|
widgets = yon_main_window_complete();
|
|
|
|
|
on_config_global_load(NULL,widgets);
|
|
|
|
|
if (widgets){};
|
|
|
|
|
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
|
|
|
|
|
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
|
|
|
|
|
|