Language switching fix

pull/207/head
parent e3f1278259
commit 99c5d8776f

@ -143,6 +143,7 @@ set(SOURCE_FILES
ubinstall-gtk-language.c
ubinstall-gtk-config-hub.c
ubinstall-gtk-startup-apps.c
ubinstall-gtk-ui-lang.c
ubinstall-gtk.h
ubl-strings.h
)

@ -0,0 +1,204 @@
#include "ubinstall-gtk.h"
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_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter));
char *config_code = config(installer_locale_parameter);
if (yon_char_is_empty(config_code)){
config_code = setlocale(LC_ALL,NULL);
}
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);
GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerCountryFilter),&iter);
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->CountryLanguagesTree),path,0,0,0,0);
gtk_tree_path_free(path);
break;
}
}
}
void on_installer_language_changed(GtkWidget *self,GtkTreePath*,GtkTreeViewColumn*, 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->CountryLanguagesTree)),&model,&iter)) return;
gtk_tree_model_get(model,&iter,2,&window_language,-1);
if (!yon_char_is_empty(window_language)){
char *prev_lang = config(installer_locale_parameter);
if (!yon_char_is_empty(prev_lang)&&!strcmp(prev_lang,window_language)) return;
yon_config_register(installer_locale_parameter,installer_locale_parameter_command,(char*)window_language);
}
char *active_lang_id = gtk_tree_model_get_string_from_iter(model,&iter);
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,installer_locale_parameter,NULL);
char *command_parameters = yon_char_parsed_to_string(parameters,size," ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
g_signal_handlers_block_by_func(G_OBJECT(widgets->MainWindow),G_CALLBACK(on_yon_exit),widgets);
if (!system(command)){};
yon_main_window_update_locale(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);
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
}
void yon_startup_language_init(){
char *source = yon_config_get_type_path(main_config.load_mode);
if (!source){
source = main_config.custom_load_path;
}
char *command =yon_config_parameter_prepare_command(get_localisation_command,source,NULL,NULL);
int size;
config_str parsed = yon_config_load(command,&size);
{
if (!yon_char_is_empty(parsed[0])&&strcmp(parsed[0],"(null)\n")){
yon_char_remove_last_symbol(parsed[0],'\n');
free(yon_char_divide_search(parsed[0],"=",-1));
yon_config_register(installer_locale_parameter,installer_locale_parameter_command,parsed[0]);
}
if (!yon_char_is_empty(parsed[1])&&strcmp(parsed[1],"(null)\n")){
yon_char_remove_last_symbol(parsed[1],'\n');
free(yon_char_divide_search(parsed[1],"=",-1));
yon_config_register(lang_parameter,lang_parameter_command,parsed[1]);
}
if (!yon_char_is_empty(parsed[2])&&strcmp(parsed[2],"(null)\n")){
yon_char_remove_last_symbol(parsed[2],'\n');
free(yon_char_divide_search(parsed[2],"=",-1));
yon_config_register(SYSTEM_LANG_parameter,SYSTEM_LANG_parameter_command,parsed[2]);
}
}
}
void yon_main_window_update_locale(main_window *widgets){
char *locale = config(installer_locale_parameter);
if (yon_char_is_empty(locale)){
char *sys_locale = config(lang_parameter);
if (!yon_char_is_empty(sys_locale)){
locale = sys_locale;
} else {
char *lang = config("LANG");
if (!yon_char_is_empty(lang)){
locale = lang;
}
}
}
locale = setlocale(LC_ALL,locale);
gtk_widget_destroy(widgets->MainWindow);
bind_textdomain_codeset(LocaleName,"UTF-8");
g_setenv("LANGUAGE",locale,1);
yon_main_window_create(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));
yon_window_config_load(path);
}
typedef struct{
char *locale_name;
char *code;
char *localised_name;
char *code_full;
} locale_struct;
int yon_char_parsed_compare(const void *a, const void *b){
const config_str str_a = (const config_str)a;
const config_str str_b = (const config_str)b;
return strcmp(*str_a,*str_b);
}
void set_locales_list(main_window *widgets){
gtk_list_store_clear(widgets->InstallerLanguageList);
gtk_list_store_clear(widgets->InstallerCountryList);
char *config_code = yon_char_new(config(installer_locale_parameter));
int size;
config_str locales = yon_locale_get_all_codes(&size);
qsort(locales,size,sizeof(char*),yon_char_parsed_compare);
GtkTreeIter iter,itar;
GHashTable *added = g_hash_table_new(g_str_hash,g_str_equal);
bind_textdomain_codeset(LOCALES_DOMAIN_NAME,"UTF-8");
textdomain(LOCALES_DOMAIN_NAME);
for (int i=0;i<size;i++){
char *lang_ab = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_AB);
char *code = yon_locale_get_parameter(locales[i],YON_LOCALE_CODE);
char *language = yon_locale_get_parameter(locales[i],YON_LOCALE_LANGUAGE);
char *lang_name = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_NAME);
char *territory = yon_locale_get_parameter(locales[i],YON_LOCALE_TERRITORY);
char *title = yon_locale_get_parameter(locales[i],YON_LOCALE_TITLE);
if (yon_char_is_empty(lang_ab)||
yon_char_is_empty(language)||
yon_char_is_empty(lang_name)||
yon_char_is_empty(territory)||
yon_char_is_empty(title)) continue;
char *country = yon_char_unite(language,", ",territory,NULL);
if (!g_hash_table_contains(added,lang_ab)){
g_hash_table_add(added,yon_char_new(lang_ab));
gtk_list_store_append(widgets->InstallerLanguageList,&iter);
gtk_list_store_set(widgets->InstallerLanguageList,&iter,
0,lang_ab,
1,_(language),
2,lang_name,
3,locales[i],
-1);
}
gtk_list_store_append(widgets->InstallerCountryList,&itar);
gtk_list_store_set(widgets->InstallerCountryList,&itar,
0,lang_ab,
1,_(country),
2,code,
3,_(title),
-1);
if (yon_char_is_empty(config_code)){
config_code=yon_char_new(setlocale(LC_ALL,NULL));
}
char *temp = strstr(config_code,".");
if (temp) temp[0]='\0';
if (!strcmp(config_code,locales[i])){
GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter);
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0);
gtk_tree_path_free(path);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter);
on_locale_changed(NULL,widgets);
}
}
bind_textdomain_codeset(LocaleName,"UTF-8");
}
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);
if (yon_char_is_empty(cur_code)) return 0;
char *code;
gtk_tree_model_get(model,&itar,0,&code,-1);
if (!strcmp(code,cur_code)){
char *config_lang = config(installer_locale_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;
}

@ -100,68 +100,6 @@ void yon_on_about(GtkWidget *, main_window *){
//functions
// int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data){
// textdomain(template_ui_LocaleName);
// GtkWindow *parent = self?GTK_WINDOW(gtk_widget_get_toplevel(self)):NULL;
// GtkWidget *dialog = gtk_dialog_new_with_buttons(TITLE_LABEL,parent,GTK_DIALOG_USE_HEADER_BAR,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL);
// textdomain(LocaleName);
// gtk_window_set_modal(GTK_WINDOW(dialog),1);
// gtk_window_set_icon_name(GTK_WINDOW(dialog),yon_char_append("com.ublinux.",LocaleName));
// gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
// gtk_widget_set_size_request(dialog,450,-1);
// GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_dialog_get_header_bar(GTK_DIALOG(dialog))));
// GtkWidget *image_cancel = gtk_image_new_from_icon_name("com.ublinux.libublsettingsui-gtk3.cancel-symbolic",GTK_ICON_SIZE_BUTTON);
// GtkWidget *image_accept = gtk_image_new_from_icon_name("com.ublinux.libublsettingsui-gtk3.accept-symbolic",GTK_ICON_SIZE_BUTTON);
// gtk_button_set_image((GtkButton*)g_list_nth_data(list,0),image_cancel);
// gtk_button_set_image((GtkButton*)g_list_nth_data(list,1),image_accept);
// gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,0)),"marginright");
// gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,1)),"marginright");
// g_list_free(list);
// GtkWidget *header_label = gtk_label_new(yon_char_is_empty(data->title)?TITLE_LABEL:data->title);
// gtk_widget_show(header_label);
// PangoAttrList *attributes = pango_attr_list_new();
// PangoAttribute *boldAttr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
// pango_attr_list_insert(attributes, boldAttr);
// gtk_label_set_attributes(GTK_LABEL(header_label),attributes);
// GtkWidget *header = gtk_dialog_get_header_bar(GTK_DIALOG(dialog));
// gtk_header_bar_set_custom_title(GTK_HEADER_BAR(header),header_label);
// gtk_widget_show(header);
// GtkWidget *image = gtk_image_new_from_icon_name("dialog-question-symbolic",GTK_ICON_SIZE_DIALOG);
// gtk_widget_show(image);
// gtk_widget_set_margin_start(image,20);
// gtk_widget_set_margin_end(image,20);
// gtk_widget_set_margin_bottom(image,20);
// gtk_widget_set_margin_top(image,20);
// GtkWidget *label = gtk_label_new("");
// gtk_widget_set_margin_end(label,20);
// gtk_widget_show(label);
// gtk_label_set_line_wrap_mode(GTK_LABEL(label),PANGO_WRAP_WORD);
// gtk_label_set_line_wrap(GTK_LABEL(label),1);
// gtk_label_set_markup(GTK_LABEL(label),data->action_text);
// GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
// gtk_widget_show(box);
// gtk_box_pack_start(GTK_BOX(box),image,0,0,5);
// gtk_box_pack_start(GTK_BOX(box),label,0,0,5);
// gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),box,1,1,5);
// gtk_window_set_default_size(GTK_WINDOW(dialog),450,-1);
// int resp = gtk_dialog_run(GTK_DIALOG(dialog));
// if (resp == GTK_RESPONSE_ACCEPT){
// if (data->function){
// data->function(NULL,data->data);
// }
// } else resp=0;
// gtk_widget_destroy(dialog);
// return resp;
// }
// //functions
// void yon_encryption_type_setup(GtkComboBoxText *target){
// int size;
@ -356,7 +294,7 @@ void config_init(){
main_config.save_done=0;
main_config.save_configured=0;
main_config.configure_mode=0;
main_config.load_mode=YON_CONFIG_LOCAL;
main_config.load_mode=YON_CONFIG_GLOBAL;
main_config.log_progress_buzy=0;
main_config.log_end=0;
main_config.exit_accepted=0;
@ -415,7 +353,7 @@ void on_reboot_accepted(main_window *widgets){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text=WARNING_REBOOT_TEXT_LABEL;
data->title=WARNING_TITLE_LABEL;
if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT){
g_mutex_lock(&main_config.install_mutex);
if (main_config.install_thread){
pthread_cancel((pthread_t)main_config.install_thread);
@ -460,181 +398,6 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
return 1;
}
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_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter));
char *config_code = config(installer_locale_parameter);
if (yon_char_is_empty(config_code)){
config_code = setlocale(LC_ALL,NULL);
}
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);
GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerCountryFilter),&iter);
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->CountryLanguagesTree),path,0,0,0,0);
gtk_tree_path_free(path);
break;
}
}
}
void on_installer_language_changed(GtkWidget *self,GtkTreePath*,GtkTreeViewColumn*, 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->CountryLanguagesTree)),&model,&iter)) return;
gtk_tree_model_get(model,&iter,2,&window_language,-1);
if (!yon_char_is_empty(window_language)){
char *prev_lang = config(installer_locale_parameter);
if (!yon_char_is_empty(prev_lang)&&!strcmp(prev_lang,window_language)) return;
yon_config_register(installer_locale_parameter,installer_locale_parameter_command,(char*)window_language);
}
char *active_lang_id = gtk_tree_model_get_string_from_iter(model,&iter);
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,installer_locale_parameter,NULL);
char *command_parameters = yon_char_parsed_to_string(parameters,size," ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
g_signal_handlers_block_by_func(G_OBJECT(widgets->MainWindow),G_CALLBACK(on_yon_exit),widgets);
if (!system(command)){};
yon_main_window_update_locale(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);
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
}
void yon_main_window_update_locale(main_window *widgets){
int size;
char *command = yon_config_parameter_prepare_command(get_localisation_command,main_config.config_load_path,NULL,NULL);
config_str locale_output = yon_config_load(yon_debug_output("%s\n",command),&size);
char *locale = NULL;
if (size&&strcmp(locale_output[0],"(null)\n")){
yon_char_remove_last_symbol(locale_output[0],'\n');
free(yon_char_divide_search(locale_output[0],"=",-1));
yon_char_remove_brackets(locale_output[0]);
locale = locale_output[0];
} else if (size>1&&strcmp(locale_output[1],"(null)\n")){
yon_char_remove_last_symbol(locale_output[1],'\n');
free(yon_char_divide_search(locale_output[1],"=",-1));
yon_char_remove_brackets(locale_output[1]);
locale = locale_output[1];
}
locale = setlocale(LC_ALL,locale);
yon_char_parsed_free(locale_output,size);
gtk_widget_destroy(widgets->MainWindow);
bind_textdomain_codeset(LocaleName,"UTF-8");
g_setenv("LANGUAGE",locale,1);
yon_main_window_create(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));
yon_window_config_load(path);
}
typedef struct{
char *locale_name;
char *code;
char *localised_name;
char *code_full;
} locale_struct;
int yon_char_parsed_compare(const void *a, const void *b){
const config_str str_a = (const config_str)a;
const config_str str_b = (const config_str)b;
return strcmp(*str_a,*str_b);
}
void set_locales_list(main_window *widgets){
gtk_list_store_clear(widgets->InstallerLanguageList);
gtk_list_store_clear(widgets->InstallerCountryList);
char *config_code = yon_char_new(config(installer_locale_parameter));
int size;
config_str locales = yon_locale_get_all_codes(&size);
qsort(locales,size,sizeof(char*),yon_char_parsed_compare);
GtkTreeIter iter,itar;
GHashTable *added = g_hash_table_new(g_str_hash,g_str_equal);
bind_textdomain_codeset(LOCALES_DOMAIN_NAME,"UTF-8");
for (int i=0;i<size;i++){
char *lang_ab = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_AB);
char *code = yon_locale_get_parameter(locales[i],YON_LOCALE_CODE);
char *language = yon_locale_get_parameter(locales[i],YON_LOCALE_LANGUAGE);
char *lang_name = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_NAME);
char *territory = yon_locale_get_parameter(locales[i],YON_LOCALE_TERRITORY);
char *title = yon_locale_get_parameter(locales[i],YON_LOCALE_TITLE);
if (yon_char_is_empty(lang_ab)||
yon_char_is_empty(language)||
yon_char_is_empty(lang_name)||
yon_char_is_empty(territory)||
yon_char_is_empty(title)) continue;
char *country = yon_char_unite(language,", ",territory,NULL);
if (!g_hash_table_contains(added,lang_ab)){
g_hash_table_add(added,yon_char_new(lang_ab));
gtk_list_store_append(widgets->InstallerLanguageList,&iter);
gtk_list_store_set(widgets->InstallerLanguageList,&iter,
0,lang_ab,
1,_(language),
2,lang_name,
3,locales[i],
-1);
}
gtk_list_store_append(widgets->InstallerCountryList,&itar);
gtk_list_store_set(widgets->InstallerCountryList,&itar,
0,lang_ab,
1,_(country),
2,code,
3,title,
-1);
if (yon_char_is_empty(config_code)){
config_code=yon_char_new(setlocale(LC_ALL,NULL));
}
char *temp = strstr(config_code,".");
if (temp) temp[0]='\0';
if (!strcmp(config_code,locales[i])){
GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter);
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0);
gtk_tree_path_free(path);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter);
on_locale_changed(NULL,widgets);
}
}
bind_textdomain_codeset(LocaleName,"UTF-8");
}
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);
if (yon_char_is_empty(cur_code)) return 0;
char *code;
gtk_tree_model_get(model,&itar,0,&code,-1);
if (!strcmp(code,cur_code)){
char *config_lang = config(installer_locale_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;
}
void yon_main_window_create(main_window *widgets){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
@ -1166,7 +929,8 @@ void yon_main_window_create(main_window *widgets){
char *licence = yon_char_parsed_to_string(parsed,size,"");
gtk_label_set_text(GTK_LABEL(widgets->LicenceLabel),_(licence));
free(licence);
yon_char_parsed_free(parsed,size);bind_textdomain_codeset(LocaleName,"UTF-8");
yon_char_parsed_free(parsed,size);
bind_textdomain_codeset(LocaleName,"UTF-8");
}
}
gtk_builder_connect_signals(builder,NULL);
@ -1180,7 +944,6 @@ void yon_main_window_create(main_window *widgets){
}
if (main_config.force_ini){
if (yon_configuration_path_check(main_config.config_save_path)){
main_config.configure_mode=1;
GList *box = gtk_container_get_children(GTK_CONTAINER(widgets->ConfigurationModeMenuItem));
GList *children = gtk_container_get_children(GTK_CONTAINER(box->data));
@ -1215,9 +978,17 @@ void *yon_maximize(main_window *widgets){
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/
main_window *yon_main_window_complete(){
if (main_config.force_ini){
if (yon_configuration_path_check(main_config.config_save_path)){
{
main_config.configure_mode=1;
}
}
}
main_window *widgets=NULL;
widgets = yon_remalloc(widgets,sizeof(main_window));
memset(widgets,0,sizeof(main_window));
yon_startup_language_init();
yon_main_window_create(widgets);
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
// yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow");
@ -1227,10 +998,10 @@ main_window *yon_main_window_complete(){
int main(int argc, char *argv[]){
__attribute__((unused)) char *locale = setlocale(LC_ALL, "");
bind_textdomain_codeset(LocaleName,"UTF-8");
yon_ubl_connect_config((_template_config*)&main_config);
config_init();
config_str unfound = NULL;
int size=0;
yon_ubl_connect_config((_template_config*)&main_config);
opterr=0;
yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
yon_ubl_setup_arguments(argc,argv,&unfound,&size,ADDITIONAL_ARGS);

@ -259,7 +259,9 @@ layout && /description:/ {\
#define source_parameter "AUTOINSTALL[source]"
#define source_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[source]"
#define get_localisation_command "ubconfig -ea --source global get [autoinstall] AUTOINSTALL[installer_locale] -- get [locale] LANG"
#define SYSTEM_LANG_parameter "AUTOINSTALL['ubconfig set [locale] LANG']"
#define SYSTEM_LANG_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [locale] LANG']"
#define get_localisation_command "ubconfig -ea --source global get [autoinstall] AUTOINSTALL[installer_locale] AUTOINSTALL['ubconfig set [locale] LANG'] -- get [locale] LANG"
#define save_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] AUTOINSTALL[log]=yes ", parameters, "; nice ubinstall2 --debug autoinstall", NULL)
@ -282,9 +284,9 @@ layout && /description:/ {\
#define full_log_path "/var/log/ubinstall.log"
#define config_get_command(target) yon_char_unite("ubconfig --source ", target, " --conarg get [autoinstall] AUTOINSTALL[*]", NULL)
#define config_get_command(target) yon_char_unite("ubconfig -ea --conarg --source ", target, " get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG", NULL)
#define config_get_default_command "ubconfig --source default --conarg get [autoinstall] AUTOINSTALL[*]"
#define config_get_default_command "ubconfig -ea --conarg --source default get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG"
#define config_get_global_only_parameters ""
#define config_get_local_only_parameters ""
@ -1457,3 +1459,4 @@ void yon_source_update(source_window *window);
void yon_main_window_update_locale(main_window *widgets);
gboolean yon_progress_bar_start(main_window *widgets);
void *yon_progress_file_buzyfy(void*);
void yon_startup_language_init();
Loading…
Cancel
Save