diff --git a/source/ubinstall-gtk-advanced.c b/source/ubinstall-gtk-advanced.c index da26162..d2b163f 100644 --- a/source/ubinstall-gtk-advanced.c +++ b/source/ubinstall-gtk-advanced.c @@ -693,14 +693,7 @@ void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *pa section->encryption = yon_char_new(gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->EncryptionCombo))); section->encryption_password = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->EncryptionEntry))); } else if (self == part->FormatCombo){ - int format_active = gtk_combo_box_get_active(GTK_COMBO_BOX(part->FormatCombo)); - if (format_active == 2){ - section->format=2; - } else if (format_active == 1){ - section->format=1; - } else { - section->format=0; - } + section->format = gtk_combo_box_get_active(GTK_COMBO_BOX(part->FormatCombo)); } } @@ -743,8 +736,8 @@ advanced_partition *yon_advanced_partition_new(){ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"T",_("Tb")); gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),0); + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),DEFAULT_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),DO_NOT_FORMAT_LABEL); - gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),AUTOMATIC_FORMAT_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),FORMAT_LABEL); gtk_combo_box_set_active(GTK_COMBO_BOX(part->FormatCombo),0); diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c index 1a2db87..d5fc62f 100644 --- a/source/ubinstall-gtk-installation.c +++ b/source/ubinstall-gtk-installation.c @@ -194,8 +194,10 @@ int yon_advanced_sections_save(dictionary *dict){ char *part = yon_char_unite(part_first,last_section?",":NULL,part_last,NULL); yon_config_register(part_parameter,part_parameter_command,part); - char * format_first = gtk_switch_get_active(GTK_SWITCH(first_section->FormatCombo))?"yes":"no"; - char * format_last = last_section?gtk_switch_get_active(GTK_SWITCH(last_section->FormatCombo))?"yes":"no":NULL; + int format_first_active = gtk_switch_get_active(GTK_SWITCH(first_section->FormatCombo)); + int format_last_active = gtk_switch_get_active(GTK_SWITCH(last_section->FormatCombo)); + char * format_first = format_first_active==1?"yes":format_first_active==2?"no":NULL; + char * format_last = format_last_active==1?"yes":format_last_active==2?"no":NULL; char *format = yon_char_unite(format_first,part_last?",":NULL,format_last,NULL); yon_config_register(part_format_parameter,part_format_parameter_command,format); diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 06937b4..a2ac57a 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -27,12 +27,14 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){ char *active = (char*)gtk_combo_box_get_active_id(self); size_t size; gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo)); - config_str parsed = yon_timezone_get_zones_from_region(active,&size); - for (size_t i=0;iZoneCombo),parsed[i],_(parsed[i])); + if (!yon_char_is_empty(active)){ + config_str parsed = yon_timezone_get_zones_from_region(active,&size); + for (size_t i=0;iZoneCombo),parsed[i],_(parsed[i])); + } + if (size) yon_char_parsed_free(parsed,size); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0); } - if (size) yon_char_parsed_free(parsed,size); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0); } #ifdef TIMEZONEMAP_INCLUDE @@ -108,25 +110,37 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind g_signal_handlers_block_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionEntry),G_CALLBACK(on_region_entry_changed),widgets); char *zone = yon_char_new(cc_timezone_location_get_zone(location)); - char *timezone = yon_char_divide_search(zone,"/",-1); - gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),timezone); - while(gtk_events_pending()) gtk_main_iteration(); - gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone); - if (!yon_char_is_empty(timezone)) free(timezone); + char *region = yon_char_divide_search(zone,"/",-1); + - timezone = (char*)cc_timezone_location_get_zone(location); + char *timezone = (char*)cc_timezone_location_get_zone(location); GtkTreeIter iter; + int found = 0; for_iter(widgets->RegionTimezoneCompletionList,&iter){ char *render, *tz; gtk_tree_model_get(GTK_TREE_MODEL(widgets->RegionTimezoneCompletionList),&iter,0,&render,1,&tz,-1); if (!strcmp(timezone,tz)){ + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),region); + while(gtk_events_pending()) gtk_main_iteration(); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone); gtk_entry_set_text(GTK_ENTRY(widgets->RegionEntry),render); char *utc = yon_timezone_get_utc(tz); yon_map_status_show(widgets,NULL,MAP_TITLE_LABEL(utc),render); + found = 1; } } - + if (!found){ + const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo)); + const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo)); + char *timezone = yon_char_unite(region,"/",zone,NULL); + g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); + cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); + free(timezone); + } + + if (!yon_char_is_empty(region)) free(region); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionEntry),G_CALLBACK(on_region_entry_changed),widgets); } @@ -216,17 +230,17 @@ void yon_region_init(main_window *widgets){ char *zone_name = yon_char_unite(_(zone_city),", ", _(zone_country),NULL); gtk_list_store_append(widgets->RegionTimezoneCompletionList,&iter); gtk_list_store_set(widgets->RegionTimezoneCompletionList,&iter,0,zone_name,1,parsed[i],-1); - g_hash_table_add(timezones_list,zone); + g_hash_table_add(timezones_list,yon_char_new(zone)); } yon_char_parsed_free(parsed,size); - size_t zones_size; - parsed = (config_str)g_hash_table_get_keys_as_array(timezones_list,(guint*)&zones_size); - qsort(parsed,zones_size,sizeof(char*),(__compar_fn_t)yon_char_parsed_compare); + size_t zones_size=0; + config_str keys = (config_str)g_hash_table_get_keys_as_array(timezones_list,(guint*)&zones_size); + qsort(keys,zones_size,sizeof(char*),(__compar_fn_t)yon_char_parsed_compare); for (size_t i=0;iRegionCombo),parsed[i],_(parsed[i])); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->RegionCombo),keys[i],_(keys[i])); } - yon_char_parsed_free(parsed,zones_size); + yon_char_parsed_free(keys,zones_size); textdomain(LocaleName); while(gtk_events_pending()) gtk_main_iteration(); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->RegionCombo),0); diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 4e5e2d3..61a2ce5 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -3840,6 +3840,7 @@ agreement True + False True entrycompletion1