@ -310,9 +310,31 @@ void config_init(){
// void *on_setup_system_configuration(void *data);
// void on_locale_changed(GtkWidget *,main_window *){
//
// }
void on_locale_changed ( GtkWidget * self , GtkWidget * child , main_window * widgets ) {
char * window_language = g_object_get_data ( G_OBJECT ( child ) , " language " ) ;
if ( ! yon_char_is_empty ( window_language ) ) {
yon_config_register ( installer_lang_parameter , installer_lang_parameter_command , ( char * ) window_language ) ;
}
int chosen_pos = gtk_flow_box_child_get_index ( GTK_FLOW_BOX_CHILD ( child ) ) ;
int size ;
config_str parameters = yon_config_get_save_parameters_by_key ( & size , installer_lang_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 ) ) { } ;
gtk_widget_destroy ( widgets - > MainWindow ) ;
setlocale ( LC_ALL , window_language ) ;
textdomain ( LocaleName ) ;
g_setenv ( " LANGUAGE " , window_language , 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 ) ;
g_signal_handlers_block_by_func ( G_OBJECT ( self ) , G_CALLBACK ( on_locale_changed ) , widgets ) ;
gtk_flow_box_select_child ( GTK_FLOW_BOX ( widgets - > LanguagesBox ) , gtk_flow_box_get_child_at_index ( GTK_FLOW_BOX ( widgets - > LanguagesBox ) , chosen_pos ) ) ;
g_signal_handlers_unblock_by_func ( G_OBJECT ( self ) , G_CALLBACK ( on_locale_changed ) , widgets ) ;
}
void on_additional_software_toggled ( GtkWidget * , char * path , main_window * widgets ) {
GtkTreeIter iter ;
@ -362,22 +384,36 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
gtk_main_quit ( ) ;
return 1 ;
}
}
return 1 ;
}
void set_locales_list ( main_window * widgets ) {
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > LanguagesBox ) ) ;
GList * iter ;
for ( iter = list ; iter ; iter = iter - > next ) {
gtk_widget_destroy ( GTK_WIDGET ( iter - > data ) ) ;
}
int size ;
config_str languages = yon_resource_open_file ( installer_languages_path , & size ) ;
for ( int i = 0 ; i < size ; i + + ) {
int parsed_size ;
config_str parsed = yon_char_parse ( languages [ i ] , & parsed_size , " ; " ) ;
if ( parsed_size = = 2 ) {
GtkWidget * child = gtk_flow_box_child_new ( ) ;
GtkWidget * label = gtk_label_new ( _ ( parsed [ 1 ] ) ) ;
gtk_label_set_xalign ( GTK_LABEL ( label ) , 0 ) ;
gtk_container_add ( GTK_CONTAINER ( child ) , label ) ;
g_object_set_data ( G_OBJECT ( child ) , " language " , yon_char_new ( parsed [ 0 ] ) ) ;
gtk_widget_show_all ( child ) ;
gtk_flow_box_insert ( GTK_FLOW_BOX ( widgets - > LanguagesBox ) , child , - 1 ) ;
}
}
return 1 ;
}
/**yon_main_window_complete(main_window *widgets)
* [ EN ]
*
* [ RU ]
* Ф у н к ц и я н а с т р о й к и о с н о в н о г о о к н а п р и л о ж е н и я . [ widgets ] - с т р у к т у р а с о с т а н д а р т н ы м и н т е р ф е й с о м .
*/
main_window * yon_main_window_complete ( ) {
main_window * widgets = NULL ;
widgets = yon_remalloc ( widgets , sizeof ( main_window ) ) ;
void yon_main_window_create ( main_window * widgets ) {
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_path ) ;
gtk_builder_add_callback_symbol ( builder , " yon_gtk_widget_set_sensitive_from_toggle_button " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) ) ;
gtk_builder_add_callback_symbol ( builder , " on_toggle_button_switch_on " , G_CALLBACK ( on_toggle_button_switch_on ) ) ;
@ -403,7 +439,6 @@ main_window *yon_main_window_complete(){
widgets - > DocumentationMenuItem = yon_ubl_menu_item_documentation_new ( DOCUMENTATION_LABEL ) ;
widgets - > AboutMenuItem = yon_ubl_menu_item_about_new ( ABOUT_LABEL ) ;
widgets - > LoadGlobalConfigurationMenuItem = yon_gtk_builder_get_widget ( builder , " LoadGlobalConfigurationMenuItem " ) ;
widgets - > LoadLocalConfigurationMenuItem = yon_gtk_builder_get_widget ( builder , " LoadLocalConfigurationMenuItem " ) ;
widgets - > LoadExternalConfigurationMenuItem = yon_gtk_builder_get_widget ( builder , " LoadExternalConfigurationMenuItem " ) ;
@ -530,7 +565,9 @@ main_window *yon_main_window_complete(){
widgets - > LanguagesFilter = GTK_TREE_MODEL ( gtk_builder_get_object ( builder , " LanguagesFilter " ) ) ;
widgets - > LayoutsFilter = GTK_TREE_MODEL ( gtk_builder_get_object ( builder , " LayoutsFilter " ) ) ;
widgets - > LayoutList = GTK_TREE_STORE ( gtk_builder_get_object ( builder , " LayoutList " ) ) ;
widgets - > LanguageCombo = yon_gtk_builder_get_widget ( builder , " LanguageCombo " ) ;
widgets - > LanguagesTree = yon_gtk_builder_get_widget ( builder , " LanguagesTree " ) ;
widgets - > CountryLanguagesTree = yon_gtk_builder_get_widget ( builder , " CountryLanguagesTree " ) ;
// widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
widgets - > RegionCombo = yon_gtk_builder_get_widget ( builder , " RegionCombo " ) ;
widgets - > ZoneCombo = yon_gtk_builder_get_widget ( builder , " ZoneCombo " ) ;
widgets - > AvailableLanguagesEntry = yon_gtk_builder_get_widget ( builder , " AvailableLanguagesEntry " ) ;
@ -658,11 +695,6 @@ main_window *yon_main_window_complete(){
g_signal_connect ( G_OBJECT ( widgets - > EnableVNCMenuItem ) , " activate " , G_CALLBACK ( on_vnc_toggled ) , widgets ) ;
// g_signal_connect(G_OBJECT(widgets->SaveGlobalLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_local_save),widgets);
// g_signal_connect(G_OBJECT(widgets->SaveGlobalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets);
// g_signal_connect(G_OBJECT(widgets->SaveLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets);
// g_signal_connect(G_OBJECT(widgets->SaveExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_save),widgets);
g_signal_connect ( G_OBJECT ( widgets - > ReadFullLogButton ) , " clicked " , G_CALLBACK ( on_process_log_view ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ReadShortLogButton ) , " clicked " , G_CALLBACK ( on_summary_log_view ) , widgets ) ;
@ -689,8 +721,6 @@ main_window *yon_main_window_complete(){
g_signal_connect ( G_OBJECT ( widgets - > OSDevicesTree ) , " cursor-changed " , G_CALLBACK ( on_device_selection_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ConfigurationModeMenuItem ) , " toggled " , G_CALLBACK ( on_configuration_mode_switch ) , widgets ) ;
// g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),widgets);
// g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),widgets);
g_signal_connect ( G_OBJECT ( widgets - > SamePlacePartTree ) , " cursor-changed " , G_CALLBACK ( on_partition_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > NextInstallationSysSectionTree ) , " cursor-changed " , G_CALLBACK ( on_partition_changed ) , widgets ) ;
@ -703,6 +733,8 @@ main_window *yon_main_window_complete(){
g_signal_connect ( G_OBJECT ( widgets - > BootloadDefaulOSButton ) , " clicked " , G_CALLBACK ( yon_menu_window_open ) , 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->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 ) ;
@ -814,6 +846,38 @@ main_window *yon_main_window_complete(){
} else {
gtk_widget_hide ( widgets - > StartScenarioButton ) ;
}
// char *locale = config(installer_lang_parameter);
// if (!yon_char_is_empty(locale)){
// locale = setlocale(LC_ALL,NULL);
// }
// yon_ubl_window_init(TITLE_LABEL,DESCRIPTION_LABEL,locale,CssPath,LocaleName,version_application,WIKI_LINK);
set_locales_list ( widgets ) ;
// {
// char *parameter = config(installer_lang_parameter);
// if (yon_char_is_empty(parameter)){
// parameter=setlocale(LC_ALL,NULL);
// }
// GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->LanguagesBox));
// GList *iter;
// for (iter = list;iter;iter=iter->next){
// char *lang = g_object_get_data(G_OBJECT(iter->data),"language");
// if (!strcmp(lang,parameter)){
// gtk_flow_box_select_child(GTK_FLOW_BOX(widgets->LanguagesBox),GTK_FLOW_BOX_CHILD(iter->data));
// }
// }
// }
}
/**yon_main_window_complete(main_window *widgets)
* [ EN ]
*
* [ RU ]
* Ф у н к ц и я н а с т р о й к и о с н о в н о г о о к н а п р и л о ж е н и я . [ widgets ] - с т р у к т у р а с о с т а н д а р т н ы м и н т е р ф е й с о м .
*/
main_window * yon_main_window_complete ( ) {
main_window * widgets = NULL ;
widgets = yon_remalloc ( widgets , sizeof ( main_window ) ) ;
yon_main_window_create ( widgets ) ;
return widgets ;
}