@ -4,6 +4,29 @@ config main_config;
//functions
void on_layout_toggle_button_switch ( GtkWidget * self , main_window * widgets ) {
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( self ) ) ) {
gtk_widget_set_sensitive ( widgets - > DefaultLayoutRadio , 1 ) ;
gtk_widget_set_sensitive ( widgets - > ManualLayoutRadio , 1 ) ;
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( widgets - > ManualLayoutRadio ) ) ) {
gtk_widget_set_sensitive ( widgets - > LayoutTree , 1 ) ;
gtk_widget_set_sensitive ( widgets - > AddButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > RemoveButton , 1 ) ;
} else {
gtk_widget_set_sensitive ( widgets - > LayoutTree , 0 ) ;
gtk_widget_set_sensitive ( widgets - > AddButton , 0 ) ;
gtk_widget_set_sensitive ( widgets - > RemoveButton , 0 ) ;
}
} else {
gtk_widget_set_sensitive ( widgets - > DefaultLayoutRadio , 0 ) ;
gtk_widget_set_sensitive ( widgets - > ManualLayoutRadio , 0 ) ;
gtk_widget_set_sensitive ( widgets - > LayoutTree , 0 ) ;
gtk_widget_set_sensitive ( widgets - > AddButton , 0 ) ;
gtk_widget_set_sensitive ( widgets - > RemoveButton , 0 ) ;
}
}
void on_toggle_button_switch_on ( GtkWidget * , GtkToggleButton * toggle ) {
gtk_toggle_button_set_active ( toggle , 1 ) ;
}
@ -191,17 +214,14 @@ void yon_interface_update(main_window *widgets){
page = YON_PAGE_OPTIONS_SEPARATE ;
}
}
char * device = config ( AUTOINSTALL_DEVICE ) ;
char * part = NULL ;
if ( page ! = YON_PAGE_INSTALL_COMMON )
part = config ( part_parameter ) ;
char * fs_type = config ( part_type_parameter ) ;
char * device_label = config ( device_label_parameter ) ;
char * format = config ( device_format_parameter ) ;
char * part_size = config ( part_size_parameter ) ;
GtkListStore * device_list = widgets - > DevicesList ;
GtkListStore * part_list = widgets - > PartitionsList ;
GtkWidget * device_tree = NULL ;
@ -210,6 +230,7 @@ void yon_interface_update(main_window *widgets){
case YON_PAGE_INSTALL_COMMON : {
device_tree = widgets - > CommonInstallationDevicesTree ;
} break ;
case YON_PAGE_INSTALL_SEPARATE : {
device_tree = widgets - > InstallationNearSysDevicesTree ;
part_tree = widgets - > InstallationNearSysSectionTree ;
@ -229,6 +250,7 @@ void yon_interface_update(main_window *widgets){
gtk_entry_set_text ( GTK_ENTRY ( widgets - > NextInstallationSectionNameEntry ) , " " ) ;
} break ;
case YON_PAGE_INSTALL_SAME_PARTITION : {
device_tree = widgets - > SamePlaceDeviceTree ;
part_tree = widgets - > SamePlacePartTree ;
@ -245,9 +267,11 @@ void yon_interface_update(main_window *widgets){
case YON_PAGE_OPTIONS_GRUB_INSTALL : {
device_tree = widgets - > GrubInstallDevicesTree ;
} break ;
case YON_PAGE_OPTIONS_GRUB_UPDATE : {
device_tree = widgets - > GrubUpdateDevicesTree ;
} break ;
case YON_PAGE_OPTIONS_SEPARATE : {
GtkTreeIter iter ;
device_tree = widgets - > SeparateDevicesTree ;
@ -269,21 +293,19 @@ void yon_interface_update(main_window *widgets){
}
}
} break ;
case YON_PAGE_OPTIONS_OS_ONLY : {
device_tree = widgets - > OSDevicesTree ;
part_tree = widgets - > OSSysSectionTree ;
} break ;
case YON_PAGE_OPTIONS_USRDATA_ONLY : {
device_tree = widgets - > UserdataDevicesTree ;
part_tree = widgets - > UserdataSysSectionTree ;
} break ;
default : { } break ;
}
GtkTreeIter iter ;
char * cur_device = " " ;
if ( page ! = YON_PAGE_OPTIONS_SEPARATE & & ! yon_char_is_empty ( device ) ) {
@ -305,8 +327,6 @@ void yon_interface_update(main_window *widgets){
}
}
}
char * system_locale = config ( locale_parameter ) ;
if ( ! yon_char_is_empty ( system_locale ) ) {
char * chosen_langs = " " ;
@ -328,7 +348,6 @@ void yon_interface_update(main_window *widgets){
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 ) , " " ) ;
@ -346,14 +365,10 @@ void yon_interface_update(main_window *widgets){
if ( cur ) free ( cur ) ;
}
if ( langsize ) yon_char_parsed_free ( lang , langsize ) ;
// gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter));
}
char * zone = config ( zone_parameter ) ;
char * region = NULL ;
if ( ! yon_char_is_empty ( zone ) ) region = yon_char_divide_search ( zone , " / " , - 1 ) ; else { gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > RegionSensitiveCheck ) , 0 ) ; }
if ( ! yon_char_is_empty ( region ) ) {
gtk_combo_box_set_active_id ( GTK_COMBO_BOX ( widgets - > RegionCombo ) , region ) ;
@ -361,13 +376,11 @@ void yon_interface_update(main_window *widgets){
gtk_combo_box_set_active_id ( GTK_COMBO_BOX ( widgets - > RegionCombo ) , " Europe " ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > RegionSensitiveCheck ) , 0 ) ;
}
if ( ! yon_char_is_empty ( zone ) ) {
gtk_combo_box_set_active_id ( GTK_COMBO_BOX ( widgets - > ZoneCombo ) , zone ) ;
} else {
gtk_combo_box_set_active_id ( GTK_COMBO_BOX ( widgets - > ZoneCombo ) , " Moscow " ) ;
}
char * language = config ( lang_parameter ) ;
if ( ! yon_char_is_empty ( language ) ) {
gtk_combo_box_set_active_id ( GTK_COMBO_BOX ( widgets - > LanguageCombo ) , language ) ;
@ -375,12 +388,9 @@ void yon_interface_update(main_window *widgets){
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > LanguageCombo ) , 0 ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > MainLanguageSensitiveCheck ) , 0 ) ;
}
char * kbmodel = config ( xkbmodel_parameter ) ;
char * optinos = config ( xkboptions_parameter ) ;
char * layout = config ( xkblayout_parameter ) ;
if ( ! yon_char_is_empty ( kbmodel ) ) {
gtk_combo_box_set_active_id ( GTK_COMBO_BOX ( widgets - > KeyboardModelCombo ) , kbmodel ) ;
} else {
@ -388,25 +398,23 @@ void yon_interface_update(main_window *widgets){
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > KeyboardModelSensitiveCheck ) , 0 ) ;
}
if ( ! yon_char_is_empty ( optinos ) ) {
gtk_combo_box_set_active_id ( GTK_COMBO_BOX ( widgets - > LayoutBindingCombo ) , optinos ) ;
} else {
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > LayoutBindingCombo ) , 0 ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > OptionsSensitiveCheck ) , 0 ) ;
}
if ( ! yon_char_is_empty ( layout ) ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > ManualLayoutRadio ) , 1 ) ;
for_iter ( widgets - > LayoutList , & iter ) {
char * cur = NULL ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > LayoutList ) , & iter , 0 , & cur , - 1 ) ;
if ( strstr ( layout , cur ) ) {
gtk_tree_store_set ( widgets - > LayoutList , & iter , 3 , 1 , - 1 ) ;
} else {
gtk_tree_store_set ( widgets - > LayoutList , & iter , 3 , 0 , - 1 ) ;
for_iter ( widgets - > LayoutList , & iter ) {
char * cur = NULL ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > LayoutList ) , & iter , 0 , & cur , - 1 ) ;
if ( strstr ( layout , cur ) ) {
gtk_tree_store_set ( widgets - > LayoutList , & iter , 3 , 1 , - 1 ) ;
} else {
gtk_tree_store_set ( widgets - > LayoutList , & iter , 3 , 0 , - 1 ) ;
}
}
}
} else {
for_iter ( widgets - > LayoutList , & iter ) {
char * id ;
@ -419,28 +427,24 @@ void yon_interface_update(main_window *widgets){
}
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > LayoutSensitiveCheck ) , 0 ) ;
}
char * user_name = config ( user_name_parameter ) ;
char * user_gecos = config ( user_gecos_parameter ) ;
char * user_password = config ( user_password_parameter ) ;
char * root_password = config ( root_password_parameter ) ;
char * autologin = config ( autologin_parameter ) ;
char * hostname = config ( hostname_parameter ) ;
if ( ! yon_char_is_empty ( user_name ) ) {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > LoginEntry ) , user_name ) ;
} else {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > LoginEntry ) , " " ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > LoginSensitiveCheck ) , 0 ) ;
}
if ( ! yon_char_is_empty ( user_gecos ) ) {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > UserNameEntry ) , _ ( user_gecos ) ) ;
} else {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > UserNameEntry ) , " " ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > UsernameSensitiveCheck ) , 0 ) ;
}
if ( ! yon_char_is_empty ( user_password ) ) {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > PasswordEntry ) , user_password ) ;
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > PasswordCombo ) , 1 ) ;
@ -448,9 +452,7 @@ void yon_interface_update(main_window *widgets){
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > PasswordCombo ) , 0 ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > PasswordEntry ) , " " ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > PasswordSensitiveCheck ) , 0 ) ;
}
if ( ! yon_char_is_empty ( root_password ) ) {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > AdminPasswordEntry ) , root_password ) ;
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > AdminPasswordCombo ) , 1 ) ;
@ -459,7 +461,6 @@ void yon_interface_update(main_window *widgets){
gtk_entry_set_text ( GTK_ENTRY ( widgets - > AdminPasswordEntry ) , " " ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > RootPasswordSensitiveCheck ) , 0 ) ;
}
if ( ! yon_char_is_empty ( autologin ) ) {
if ( ! strcmp ( autologin , " yes " ) )
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > AutologinCheck ) , 1 ) ;
@ -469,7 +470,6 @@ void yon_interface_update(main_window *widgets){
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > AutologinCheck ) , main_config . autologin_default ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > AutologinSensitiveCheck ) , 0 ) ;
}
if ( ! yon_char_is_empty ( hostname ) ) {
if ( strcmp ( hostname , " auto " ) ) {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > HotnameEntry ) , hostname ) ;
@ -486,46 +486,26 @@ void yon_interface_update(main_window *widgets){
g_signal_handlers_unblock_by_func ( G_OBJECT ( widgets - > AutoHostnameCheck ) , on_autohostname_check , widgets ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > HostnameSensitiveCheck ) , 0 ) ;
}
// if (fs_type) free(fs_type);
// if (device_label) free(device_label);
// if (format) free(format);
// if (part_size) free(part_size);
// if (user_name) free(user_name);
// if (user_gecos) free(user_gecos);
// if (user_password) free(user_password);
// if (root_password) free(root_password);
// if (autologin) free(autologin);
// if (hostname) free(hostname);
// if (kbmodel) free(kbmodel);
// if (optinos) free(optinos);
// if (layout) free(layout);
// if (language) free(language);
// if (zone) free(zone);
// if (system_locale) free(system_locale);
// if (region) free(region);
// if (device) free(device);
// if (part) free(part);
}
void on_config_local_load ( GtkWidget * , main_window * widgets ) ;
void on_config_local_load ( GtkWidget * , main_window * widgets ) {
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
yon_interface_update ( widgets ) ;
main_config . load_mode = 1 ;
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
yon_interface_update ( widgets ) ;
main_config . load_mode = 1 ;
}
void on_config_global_load ( GtkWidget * , main_window * ) ;
void on_config_global_load ( GtkWidget * , main_window * widgets ) {
yon_load_proceed ( YON_CONFIG_GLOBAL ) ;
yon_interface_update ( widgets ) ;
main_config . load_mode = 0 ;
yon_load_proceed ( YON_CONFIG_GLOBAL ) ;
yon_interface_update ( widgets ) ;
main_config . load_mode = 0 ;
}
void on_config_custom_load ( GtkWidget * , main_window * ) ;
void on_config_custom_load ( GtkWidget * , main_window * widgets ) {
yon_load_proceed ( YON_CONFIG_CUSTOM ) ;
yon_interface_update ( widgets ) ;
yon_interface_update ( widgets ) ;
main_config . load_mode = 3 ;
}
@ -552,7 +532,6 @@ void on_config_global_save(GtkWidget *,main_window *widgets){
void on_config_custom_save ( GtkWidget * , main_window * widgets ) ;
void on_config_custom_save ( GtkWidget * , main_window * widgets ) {
char * path = NULL ;
// YON_CONFIG_TYPE type = YON_CONFIG_CUSTOM;
GtkWidget * dialog = gtk_file_chooser_dialog_new ( TITLE_LABEL , NULL , GTK_FILE_CHOOSER_ACTION_SAVE , CANCEL_LABEL , GTK_RESPONSE_CANCEL , SAVE_LABEL , GTK_RESPONSE_ACCEPT , NULL ) ;
textdomain ( TITLE_LABEL ) ;
GtkFileFilter * filter = gtk_file_filter_new ( ) ;
@ -563,7 +542,6 @@ void on_config_custom_save(GtkWidget *, main_window *widgets){
int response = gtk_dialog_run ( GTK_DIALOG ( dialog ) ) ;
if ( response = = GTK_RESPONSE_ACCEPT ) {
char * file = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER ( dialog ) ) ;
// char *directory = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog));
if ( ! yon_char_is_empty ( file ) ) {
if ( ! strstr ( file , " .ini " ) ) file = yon_char_append ( file , " .ini " ) ;
if ( access ( file , 0 ) ! = F_OK ) {
@ -864,7 +842,6 @@ void config_init(){
main_config . lock_save_local = 0 ;
main_config . debug_mode = 0 ;
main_config . slider_thread = 0 ;
main_config . config_save_thread = NULL ;
main_config . install_thread = 0 ;
main_config . progress_thread = 0 ;
main_config . install_complete = 0 ;
@ -884,7 +861,7 @@ void on_configuration_mode_switch(GtkWidget *self){
int cur_slide = 0 ;
int yon_image_resize_from_container ( GtkImage * target , GdkPixbuf * pixbuf_unscaled ) ;
int yon_image_resize_from_container ( GtkImage * target , GdkPixbuf * pixbuf_unscaled ) {
int yon_image_resize_from_container ( GtkImage * target , GdkPixbuf * pixbuf_unscaled ) {
int width = gtk_widget_get_allocated_width ( ( gtk_widget_get_parent ( GTK_WIDGET ( target ) ) ) ) ;
int height = gtk_widget_get_allocated_height ( ( gtk_widget_get_parent ( GTK_WIDGET ( target ) ) ) ) ;
@ -942,7 +919,14 @@ gboolean on_image_slide(void *data){
gtk_image_set_from_pixbuf ( GTK_IMAGE ( widgets - > SlidesImage ) , ( GdkPixbuf * ) g_list_nth_data ( widgets - > slides_original , cur_slide ) ) ;
// gtk_widget_queue_draw(widgets->SlidesImage);
if ( cur_slide < size - 1 ) cur_slide + + ; else cur_slide = 1 ;
return 1 ;
g_mutex_lock ( & main_config . install_mutex ) ;
if ( ! main_config . install_complete ) {
g_mutex_unlock ( & main_config . install_mutex ) ;
return 1 ;
} else {
g_mutex_unlock ( & main_config . install_mutex ) ;
return 0 ;
}
}
char * yon_debug_output ( char * pattern , char * text ) {
@ -959,8 +943,16 @@ void *on_config_save(void *data){
main_window * widgets = ( main_window * ) data ;
int size = 0 ;
config_str parameters = yon_config_get_all ( & size ) ;
// main_config.install_thread=(GThread*)0x1;
config_str parameters = yon_config_get_selection_by_key ( & size ,
AUTOINSTALL_TYPE_INSTALL ,
AUTOINSTALL_DEVICE ,
device_format_parameter ,
device_label_parameter ,
main_config . install_mode ! = 1 | | main_config . install_mode ! = 2 ? NULL : part_parameter ,
part_type_parameter ,
device_format_parameter ,
main_config . install_mode ! = 1 ? NULL : part_size_parameter ,
NULL ) ;
FILE * file = fopen ( progress_path , " w " ) ;
if ( file )
fclose ( file ) ;
@ -968,33 +960,28 @@ void *on_config_save(void *data){
yon_char_parsed_free ( parameters , size ) ;
yon_debug_output ( " %s \n " , " Entered installation " ) ;
if ( system ( yon_debug_output ( " %s \n " , command ) ) ) {
yon_debug_output ( " %s \n " , " Entered installation failed " ) ;
g _thread_new( " success func " , ( GThread Func) on_install_error , widgets ) ;
g dk_threads_add_idle( ( GSource Func) on_install_error , widgets ) ;
free ( command ) ;
main_config . config_save_thread = NULL ;
g_mutex_lock ( & main_config . install_mutex ) ;
main_config . install_thread = 0 ;
g_mutex_unlock ( & main_config . install_mutex ) ;
g_mutex_lock ( & main_config . install_mutex ) ;
main_config . install_complete = 1 ;
yon_debug_output ( " %s \n " , " Exit installation " ) ;
pthread_exit ( NULL ) ;
g_mutex_unlock ( & main_config . install_mutex ) ;
return 0 ;
} ;
yon_debug_output ( " %s \n " , " Entered installation success " ) ;
free ( command ) ;
g_mutex_lock ( & main_config . install_mutex ) ;
main_config . install_thread = 0 ;
g_mutex_unlock ( & main_config . install_mutex ) ;
g_mutex_lock ( & main_config . install_mutex ) ;
main_config . install_complete = 1 ;
yon_debug_output ( " Install set to: %s \n " , yon_char_from_int ( main_config . install_complete ) ) ;
yon_debug_output ( " Save state: %s \n " , yon_char_from_int ( main_config . save_done ) ) ;
g_mutex_unlock ( & main_config . install_mutex ) ;
if ( ! main_config . save_done ) {
yon_debug_output ( " %s \n " , " Entered installation page change " ) ;
pthread_t tid ;
pthread_create ( & tid , NULL , on_setup_system_configuration , widgets ) ;
// g_thread_new("success func",(GThreadFunc)on_install_success,widgets);
on_setup_system_configuration ( widgets ) ;
}
main_config . config_save_thread = NULL ;
yon_debug_output ( " %s \n " , " Exit installation " ) ;
pthread_exit ( NULL ) ;
return 0 ;
}
gboolean yon_installation_progress_update ( void * data ) ;
@ -1002,12 +989,9 @@ gboolean yon_installation_progress_update(void *data) {
main_window * widgets = ( main_window * ) data ;
int size ;
while ( main_config . log_progress_buzy ) {
while ( gtk_events_pending ( ) ) gtk_main_iteration ( ) ;
}
main_config . log_progress_buzy = 1 ;
g_mutex_lock ( & main_config . progress_mutex ) ;
config_str text = yon_file_open ( progress_path , & size ) ;
main_config . log_progress_buzy = 0 ;
g_mutex_unlock ( & main_config . progress_mutex ) ;
if ( size ) {
if ( ! yon_char_is_empty ( text [ size - 1 ] ) & & text [ size - 1 ] [ 0 ] = = ' ( ' ) {
@ -1029,25 +1013,26 @@ gboolean yon_installation_progress_update(void *data) {
gtk_progress_bar_set_fraction ( GTK_PROGRESS_BAR ( widgets - > PackageInstallationProgress ) , fraction ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > PackageInstallationLabel ) , yon_char_parsed_to_string ( parsed , size , " " ) ) ;
}
yon_char_parsed_free ( parsed , size ) ;
}
free ( current_copy ) ;
free ( percentage ) ;
}
yon_char_parsed_free ( text , size ) ;
}
g_mutex_lock ( & main_config . install_mutex ) ;
if ( main_config . install_thread ) {
g_mutex_unlock ( & main_config . install_mutex ) ;
return 1 ;
} else {
g_mutex_unlock ( & main_config . install_mutex ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > PackageInstallationLabel ) , " " ) ;
return 0 ;
return 0 ;
}
}
void on_page_changed ( GtkWidget * , GtkWidget * , int page , main_window * widgets ) ;
void on_page_changed ( GtkWidget * , GtkWidget * , int page , main_window * widgets ) {
if ( widgets ) { } ;
switch ( page ) {
case YON_PAGE_WELCOME : {
gtk_widget_hide ( widgets - > SaveButton ) ;
@ -1115,7 +1100,9 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){
gtk_widget_hide ( widgets - > PackageInstallationLabel ) ;
gtk_widget_set_sensitive ( widgets - > NextButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > CancelInstallButton , 1 ) ;
g_mutex_lock ( & main_config . install_mutex ) ;
main_config . install_complete = 0 ;
g_mutex_unlock ( & main_config . install_mutex ) ;
main_config . save_done = 0 ;
textdomain ( LocaleName ) ;
gtk_button_set_label ( GTK_BUTTON ( widgets - > NextButton ) , RESTART_LABEL ) ;
@ -1134,7 +1121,9 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){
gtk_widget_set_sensitive ( widgets - > NextButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > CancelInstallButton , 1 ) ;
yon_debug_output ( " %s \n " , " Done widgets " ) ;
g_mutex_lock ( & main_config . install_mutex ) ;
main_config . install_complete = 0 ;
g_mutex_unlock ( & main_config . install_mutex ) ;
main_config . save_done = 0 ;
yon_debug_output ( " %s \n " , " Done variables " ) ;
textdomain ( LocaleName ) ;
@ -1154,7 +1143,9 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){
gtk_widget_hide ( widgets - > PackageInstallationLabel ) ;
gtk_widget_set_sensitive ( widgets - > NextButton , 0 ) ;
gtk_widget_set_sensitive ( widgets - > CancelInstallButton , 1 ) ;
g_mutex_lock ( & main_config . install_mutex ) ;
main_config . install_complete = 0 ;
g_mutex_unlock ( & main_config . install_mutex ) ;
main_config . save_done = 0 ;
textdomain ( LocaleName ) ;
gtk_button_set_label ( GTK_BUTTON ( widgets - > CancelInstallButton ) , EXIT_LABEL ) ;
@ -1185,18 +1176,17 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){
}
}
void * on_install_success ( main_window * widgets ) {
gboolean on_install_success ( main_window * widgets ) {
gtk_label_set_text ( GTK_LABEL ( widgets - > InstallationLabel ) , " " ) ;
gtk_notebook_set_current_page ( GTK_NOTEBOOK ( widgets - > Notebook ) , YON_PAGE_COMPLETION ) ;
return NULL ;
return 0 ;
}
void * on_install_error ( main_window * widgets ) {
gboolean on_install_error ( main_window * widgets ) {
gtk_label_set_text ( GTK_LABEL ( widgets - > InstallationLabel ) , " " ) ;
gtk_notebook_set_current_page ( GTK_NOTEBOOK ( widgets - > Notebook ) , YON_PAGE_INSTALL_ERROR ) ;
return NULL ;
return 0 ;
}
void * on_setup_system_configuration ( void * data ) {
@ -1204,20 +1194,20 @@ void *on_setup_system_configuration(void * data){
main_window * widgets = ( main_window * ) data ;
if ( widgets ) { } ;
int size ;
config_str all_parameters = yon_c onfig_get_selection_by_key ( & size ,
user_name_parameter ,
user_gecos_parameter ,
user_password_parameter ,
root_password_parameter ,
autologin_parameter ,
xkbmodel_parameter ,
xkblayout_parameter ,
xkbvariant_parameter ,
xkboptions_parameter ,
hostname_parameter ,
zone_parameter ,
lang_parameter ,
locale_parameter ,
config_str all_parameters = yon_c har_parsed_new ( & size ,
config ( user_name_parameter ) ,
config ( user_gecos_parameter ) ,
config ( user_password_parameter ) ,
config ( root_password_parameter ) ,
config ( autologin_parameter ) ,
config ( xkbmodel_parameter ) ,
config ( xkblayout_parameter ) ,
config ( xkbvariant_parameter ) ,
config ( xkboptions_parameter ) ,
config ( hostname_parameter ) ,
config ( zone_parameter ) ,
config ( lang_parameter ) ,
config ( locale_parameter ) ,
NULL ) ;
if ( all_parameters ) {
char * parameter_string = yon_char_parsed_to_string ( all_parameters , size , " " ) ;
@ -1227,7 +1217,7 @@ void *on_setup_system_configuration(void * data){
free ( command ) ;
if ( parameter_string ) free ( parameter_string ) ;
}
g_ thread_new( " success func " , ( GThread Func) on_install_success , widgets ) ;
g_ idle_add( ( GSource Func) on_install_success , widgets ) ;
return NULL ;
}
@ -1243,37 +1233,6 @@ void on_log_closed(GtkWidget *, dictionary *dict){
window - > Window = NULL ;
}
void * on_save_system_configuration ( void * data ) ;
void * on_save_system_configuration ( void * data ) {
main_window * widgets = ( main_window * ) data ;
if ( widgets ) { } ;
int size ;
config_str all_parameters = yon_config_get_selection_by_key ( & size ,
user_name_parameter ,
user_gecos_parameter ,
user_password_parameter ,
root_password_parameter ,
autologin_parameter ,
xkbmodel_parameter ,
xkblayout_parameter ,
xkbvariant_parameter ,
xkboptions_parameter ,
hostname_parameter ,
zone_parameter ,
lang_parameter ,
locale_parameter ,
NULL ) ;
if ( all_parameters ) {
char * parameter_string = yon_char_parsed_to_string ( all_parameters , size , " " ) ;
char * command = save_additional_config_command ( parameter_string ) ;
if ( system ( yon_debug_output ( " %s \n " , command ) ) ) { } ;
yon_char_parsed_free ( all_parameters , size ) ;
free ( command ) ;
if ( parameter_string ) free ( parameter_string ) ;
}
return NULL ;
}
log_window * yon_log_window_new ( ) ;
log_window * yon_log_window_new ( ) {
log_window * window = malloc ( sizeof ( log_window ) ) ;
@ -1293,10 +1252,9 @@ gboolean yon_read_log(void *data){
log_window * window = ( log_window * ) data ;
if ( window - > Window ) {
int size ;
while ( ! main_config . install_complete & & main_config . log_progress_buzy ) { } ;
main_config . log_progress_buzy = 1 ;
g_mutex_lock ( & main_config . progress_mutex ) ;
config_str parsed = yon_file_open ( window - > command , & size ) ;
main_config . log_progress_buzy = 0 ;
g_mutex_unlock ( & main_config . progress_mutex ) ;
if ( size ) {
char * final = yon_char_parsed_to_string ( parsed , size , " " ) ;
gtk_label_set_text ( GTK_LABEL ( window - > LogLabel ) , final ) ;
@ -1306,10 +1264,12 @@ gboolean yon_read_log(void *data){
free ( final ) ;
yon_char_parsed_free ( parsed , size ) ;
}
yon_debug_output( " %s \n " , " Log read " ) ;
g_mutex_lock( & main_config . install_mutex ) ;
if ( ! main_config . install_complete ) {
g_mutex_unlock ( & main_config . install_mutex ) ;
return 1 ;
} else {
g_mutex_unlock ( & main_config . install_mutex ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( window - > ScrollToEndCheck ) , 0 ) ;
gtk_widget_set_sensitive ( window - > ScrollToEndCheck , 0 ) ;
}
@ -1396,8 +1356,8 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
active_id = 2 ;
else if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( widgets - > InstallationWindowsRadio ) ) )
active_id = 3 ;
// else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationRadio)))
// active_id=4;
else if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( widgets - > InstallationRadio ) ) )
active_id = 4 ;
main_config . install_mode = active_id ;
switch ( active_id ) {
case 0 : { // normal installation
@ -1512,6 +1472,7 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
char * file_system_type = ( char * ) gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT ( widgets - > CommonInstallationFilesystemTypeCombo ) ) ;
char * device_name = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( widgets - > CommonInstallationSectionNameEntry ) ) ;
char * device ;
yon_config_remove_by_key ( part_size_parameter ) ;
yon_config_remove_by_key ( part_parameter ) ;
gtk_tree_model_get ( model , & iter , 0 , & device , - 1 ) ;
yon_config_register ( AUTOINSTALL_TYPE_INSTALL , AUTOINSTALL_TYPE_INSTALL_command , " fast " ) ;
@ -1759,7 +1720,9 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
}
if ( ! main_config . configure_mode ) {
g_mutex_lock ( & main_config . install_mutex ) ;
if ( main_config . install_complete ) {
g_mutex_unlock ( & main_config . install_mutex ) ;
yon_debug_output ( " %s \n " , " Entered saving before installation done " ) ;
gtk_notebook_set_current_page ( GTK_NOTEBOOK ( widgets - > Notebook ) , YON_PAGE_INSTALLATION ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > InstallationLabel ) , CONFIGURATION_LABEL ) ;
@ -1772,7 +1735,8 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
gtk_widget_set_sensitive ( widgets - > BackButton , 0 ) ;
main_config . save_done = 1 ;
}
if ( ! main_config . install_complete ) {
else if ( ! main_config . install_complete ) {
g_mutex_unlock ( & main_config . install_mutex ) ;
gtk_notebook_set_current_page ( GTK_NOTEBOOK ( widgets - > Notebook ) , YON_PAGE_INSTALLATION ) ;
gtk_widget_set_sensitive ( widgets - > CancelInstallButton , 0 ) ;
@ -1785,6 +1749,7 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
} break ;
case YON_PAGE_INSTALLATION_BEGIN : {
g_mutex_lock ( & main_config . install_mutex ) ;
if ( ! main_config . install_thread ) {
pthread_attr_t attr ;
pthread_attr_init ( & attr ) ;
@ -1792,14 +1757,24 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
pthread_create ( & tid , & attr , on_config_save , widgets ) ;
memcpy ( & main_config . install_thread , & tid , sizeof ( pthread_t ) ) ;
g_mutex_unlock ( & main_config . install_mutex ) ;
}
gtk_notebook_set_current_page ( GTK_NOTEBOOK ( widgets - > Notebook ) , YON_PAGE_INSTALLATION ) ;
} break ;
case YON_PAGE_INSTALL_ERROR :
case YON_PAGE_COMPLETION :
if ( ! system ( " reboot " ) )
return ;
confirmation_window * window = yon_confirmation_window_new ( ) ;
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 ) ;
g_signal_connect ( G_OBJECT ( window - > AcceptButton ) , " clicked " , G_CALLBACK ( on_reboot_accepted ) , dict ) ;
gtk_window_set_transient_for ( GTK_WINDOW ( window - > Window ) , GTK_WINDOW ( widgets - > MainWindow ) ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > Window ) , TITLE_LABEL ) ;
gtk_window_set_icon_name ( GTK_WINDOW ( window - > Window ) , icon_path ) ;
gtk_label_set_text ( GTK_LABEL ( window - > TextLabel ) , WARNING_REBOOT_TEXT_LABEL ) ;
gtk_label_set_text ( GTK_LABEL ( window - > TitleLabel ) , WARNING_TITLE_LABEL ) ;
gtk_widget_show ( window - > Window ) ;
break ;
case YON_PAGE_INSTALL_OPTIONS : {
@ -2131,7 +2106,7 @@ void on_near_installation_device_changed(GtkWidget *self, main_window *widgets){
json_object_object_get_ex ( root , " blockdevices " , & blockdevices ) ;
for ( long unsigned int i = 0 ; i < json_object_array_length ( blockdevices ) ; i + + ) {
struct json_object * device = json_object_array_get_idx ( blockdevices , i ) ;
struct json_object * type , * path , * size , * model , * fstype , * fsused ;
struct json_object * type , * path , * size , * model , * fstype , * fsused , * label ;
json_object_object_get_ex ( device , " type " , & type ) ;
if ( strcmp ( " part " , json_object_get_string ( type ) ) )
@ -2142,6 +2117,7 @@ void on_near_installation_device_changed(GtkWidget *self, main_window *widgets){
}
json_object_object_get_ex ( device , " size " , & size ) ;
json_object_object_get_ex ( device , " model " , & model ) ;
json_object_object_get_ex ( device , " label " , & label ) ;
json_object_object_get_ex ( device , " fstype " , & fstype ) ;
json_object_object_get_ex ( device , " fsused " , & fsused ) ;
@ -2175,7 +2151,7 @@ void on_near_installation_device_changed(GtkWidget *self, main_window *widgets){
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin),0.0);
gtk_adjustment_set_upper ( gtk_spin_button_get_adjustment ( GTK_SPIN_BUTTON ( widgets - > InstallationNearSizeSpin ) ) , 0.0 ) ;
gtk_list_store_append ( widgets - > PartitionsList , & iter ) ;
gtk_list_store_set ( widgets - > PartitionsList , & iter , 0 , json_object_get_string ( path ) , 1 , json_object_get_string ( size ) , 2 , free_space_string , 3 , json_object_get_string ( fstype ) , - 1 ) ;
gtk_list_store_set ( widgets - > PartitionsList , & iter , 0 , json_object_get_string ( path ) , 1 , json_object_get_string ( size ) , 2 , free_space_string , 3 , json_object_get_string ( fstype ) , 4 , json_object_get_string ( label ) , - 1 ) ;
}
yon_char_parsed_free ( parsed , size ) ;
}
@ -2227,38 +2203,64 @@ void on_gparted_open(){
gboolean on_yon_exit ( GtkWidget * , GdkEvent * , main_window * widgets ) ;
void on_reboot_accepted ( GtkWidget * , dictionary * dict ) {
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
confirmation_window * window = yon_dictionary_get_data ( dict - > first - > next , confirmation_window * ) ;
g_mutex_lock ( & main_config . install_mutex ) ;
if ( main_config . install_thread ) {
pthread_cancel ( ( pthread_t ) main_config . install_thread ) ;
g_mutex_unlock ( & main_config . install_mutex ) ;
}
main_config . exit_accepted = 1 ;
g_signal_emit_by_name ( G_OBJECT ( widgets - > MainWindow ) , " delete-event " ) ;
free ( window ) ;
yon_dictionary_free_all ( dict , NULL ) ;
free ( dict ) ;
if ( system ( " reboot " ) ) { } ;
}
void on_exit_accepted ( GtkWidget * , dictionary * dict ) ;
void on_exit_accepted ( GtkWidget * , dictionary * dict ) {
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
confirmation_window * window = yon_dictionary_get_data ( dict - > first - > next , confirmation_window * ) ;
g_mutex_lock ( & main_config . install_mutex ) ;
if ( main_config . install_thread ) {
pthread_cancel ( ( pthread_t ) main_config . install_thread ) ;
g_mutex_unlock ( & main_config . install_mutex ) ;
}
main_config . exit_accepted = 1 ;
g_signal_emit_by_name ( G_OBJECT ( widgets - > MainWindow ) , " delete-event " , widgets - > MainWindow , NULL ) ;
g_signal_emit_by_name ( G_OBJECT ( widgets - > MainWindow ) , " delete-event " );
free ( window ) ;
yon_dictionary_free_all ( dict , NULL ) ;
free ( dict ) ;
gtk_widget_destroy ( widgets - > MainWindow ) ;
}
gboolean on_yon_exit ( GtkWidget * , GdkEvent * , main_window * widgets ) {
if ( ! main_config . exit_accepted ) {
if ( widgets ) { } ;
confirmation_window * window = malloc ( sizeof ( confirmation_window ) ) ;
confirmation_window * yon_confirmation_window_new ( ) {
confirmation_window * window = malloc ( sizeof ( confirmation_window ) ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_path_confirmation ) ;
window - > Window = yon_gtk_builder_get_widget ( builder , " MainWindow " ) ;
window - > TitleLabel = yon_gtk_builder_get_widget ( builder , " TitleLabel " ) ;
window - > TextLabel = yon_gtk_builder_get_widget ( builder , " TextLabel " ) ;
window - > AcceptButton = yon_gtk_builder_get_widget ( builder , " AcceptButton " ) ;
window - > CancelButton = yon_gtk_builder_get_widget ( builder , " CancelButton " ) ;
g_signal_connect ( G_OBJECT ( window - > CancelButton ) , " clicked " , G_CALLBACK ( on_subwindow_close ) , NULL ) ;
return window ;
}
gboolean on_yon_exit ( GtkWidget * , GdkEvent * , main_window * widgets ) {
if ( ! main_config . exit_accepted | | ( main_config . save_done & & main_config . install_complete ) ) {
if ( widgets ) { } ;
confirmation_window * window = yon_confirmation_window_new ( ) ;
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 ) ;
g_signal_connect ( G_OBJECT ( window - > AcceptButton ) , " clicked " , G_CALLBACK ( on_exit_accepted ) , dict ) ;
g_signal_connect ( G_OBJECT ( window - > AcceptButton ) , " clicked " , G_CALLBACK ( on_subwindow_close ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > CancelButton ) , " clicked " , G_CALLBACK ( on_subwindow_close ) , NULL ) ;
gtk_window_set_transient_for ( GTK_WINDOW ( window - > Window ) , GTK_WINDOW ( widgets - > MainWindow ) ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > Window ) , TITLE_LABEL ) ;
gtk_window_set_icon_name ( GTK_WINDOW ( window - > Window ) , icon_path ) ;
gtk_label_set_text ( GTK_LABEL ( window - > TextLabel ) , WARNING_TEXT_LABEL ) ;
gtk_label_set_text ( GTK_LABEL ( window - > TitleLabel ) , WARNING_TITLE_LABEL ) ;
gtk_widget_show ( window - > Window ) ;
@ -2471,6 +2473,7 @@ main_window *yon_main_window_complete(){
g_signal_connect ( G_OBJECT ( widgets - > CancelInstallButton ) , " clicked " , G_CALLBACK ( on_page_navigation_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > AvailableLanguagesButton ) , " clicked " , G_CALLBACK ( on_language_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > RegionCombo ) , " changed " , G_CALLBACK ( on_region_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LayoutSensitiveCheck ) , " toggled " , G_CALLBACK ( on_layout_toggle_button_switch ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > AddButton ) , " clicked " , G_CALLBACK ( on_keyboard_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > RemoveButton ) , " clicked " , G_CALLBACK ( on_keyboard_removed ) , widgets ) ;
@ -2506,6 +2509,18 @@ main_window *yon_main_window_complete(){
g_signal_connect ( G_OBJECT ( widgets - > RootPasswordSensitiveCheck ) , " toggled " , G_CALLBACK ( yon_password_set_sensitive_from_toggle ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > PasswordSensitiveCheck ) , " toggled " , G_CALLBACK ( yon_password_set_sensitive_from_toggle ) , widgets ) ;
if ( main_config . lock_load_global = = 1 ) {
gtk_widget_set_sensitive ( widgets - > LoadGlobalConfigurationMenuItem , 0 ) ;
}
if ( main_config . lock_save_global = = 1 ) {
gtk_widget_set_sensitive ( widgets - > SaveGlobalConfigurationMenuItem , 0 ) ;
gtk_widget_set_sensitive ( widgets - > SaveGlobalLocalConfigurationMenuItem , 0 ) ;
}
if ( main_config . lock_save_local = = 1 ) {
gtk_widget_set_sensitive ( widgets - > SaveLocalConfigurationMenuItem , 0 ) ;
gtk_widget_set_sensitive ( widgets - > SaveGlobalLocalConfigurationMenuItem , 0 ) ;
}
gtk_tree_model_filter_set_visible_column ( GTK_TREE_MODEL_FILTER ( widgets - > LanguagesFilter ) , 0 ) ;
gtk_tree_model_filter_refilter ( GTK_TREE_MODEL_FILTER ( widgets - > LanguagesFilter ) ) ;
@ -2743,7 +2758,7 @@ int main(int argc, char *argv[]){
yon_window_config_setup ( GTK_WINDOW ( widgets - > MainWindow ) ) ;
char * window_config_path = config_path ;
yon_window_config_load ( window_config_path ) ;
free ( window_config_path ) ;
free ( window_config_path ) ;
GtkCssProvider * css = gtk_css_provider_new ( ) ;
gtk_css_provider_load_from_resource ( css , CssPath ) ;
gtk_style_context_add_provider_for_screen ( gdk_screen_get_default ( ) ,