X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-import-assistant.c;h=a968431d865bf043759adbdafc8368c5c504cfa4;hb=81dece3642da9bdcbdec4aa09b0c2008c86d6161;hp=635941c2d25d55e72be412e4d9c0fad835fe5e6f;hpb=5312cd16f3d7226d4e62a847d64849c57d4b4843;p=pspp diff --git a/src/ui/gui/psppire-import-assistant.c b/src/ui/gui/psppire-import-assistant.c index 635941c2d2..a968431d86 100644 --- a/src/ui/gui/psppire-import-assistant.c +++ b/src/ui/gui/psppire-import-assistant.c @@ -285,24 +285,30 @@ choose_likely_separators (PsppireImportAssistant *ia) } gtk_tree_path_free (p); - int most_frequent = -1; - int largest = 0; - for (j = 0; j < SEPARATOR_CNT; ++j) + if (hmap_count (count_map) > 0) { - struct separator_count_node *cn; - HMAP_FOR_EACH (cn, struct separator_count_node, node, &count_map[j]) - { - if (largest < cn->quantity) - { - largest = cn->quantity; - most_frequent = j; - } - } - hmap_destroy (&count_map[j]); - } + int most_frequent = -1; + int largest = 0; + for (j = 0; j < SEPARATOR_CNT; ++j) + { + struct separator_count_node *cn; + HMAP_FOR_EACH (cn, struct separator_count_node, node, &count_map[j]) + { + if (largest < cn->quantity) + { + largest = cn->quantity; + most_frequent = j; + } + } + hmap_destroy (&count_map[j]); + } + + g_return_if_fail (most_frequent >= 0); - const char* sepname = separators[MAX (0,most_frequent)].name; - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (get_widget_assert (ia->builder, sepname)), TRUE); + GtkWidget *toggle = + get_widget_assert (ia->builder, separators[most_frequent].name); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), TRUE); + } } static void @@ -521,8 +527,11 @@ prepare_sheet_spec_page (PsppireImportAssistant *ia) GtkWidget *sheet_entry = get_widget_assert (builder, "sheet-entry"); GtkWidget *readnames_checkbox = get_widget_assert (builder, "readnames-checkbox"); - gtk_combo_box_set_model (GTK_COMBO_BOX (sheet_entry), - psppire_spreadsheet_model_new (ia->spreadsheet)); + GtkTreeModel *model = psppire_spreadsheet_model_new (ia->spreadsheet); + gtk_combo_box_set_model (GTK_COMBO_BOX (sheet_entry), model); + + gint items = gtk_tree_model_iter_n_children (model, NULL); + gtk_widget_set_sensitive (sheet_entry, items > 1); gtk_combo_box_set_active (GTK_COMBO_BOX (sheet_entry), 0); @@ -646,6 +655,11 @@ chooser_page_reset (PsppireImportAssistant *ia, GtkWidget *page) } +static void +on_file_activated (GtkFileChooser *chooser, PsppireImportAssistant *ia) +{ + gtk_assistant_next_page (GTK_ASSISTANT (ia)); +} static void chooser_page_create (PsppireImportAssistant *ia) @@ -654,6 +668,8 @@ chooser_page_create (PsppireImportAssistant *ia) GtkWidget *chooser = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_OPEN); + g_signal_connect (chooser, "file-activated", G_CALLBACK (on_file_activated), ia); + g_object_set_data (G_OBJECT (chooser), "on-forward", chooser_page_leave); g_object_set_data (G_OBJECT (chooser), "on-reset", chooser_page_reset); g_object_set_data (G_OBJECT (chooser), "on-entering",chooser_page_enter); @@ -1242,7 +1258,7 @@ textfile_create_reader (PsppireImportAssistant *ia) int i; - struct fmt_guesser **fg = xcalloc (n_vars, sizeof *fg); + struct fmt_guesser **fg = XCALLOC (n_vars, struct fmt_guesser *); for (i = 0 ; i < n_vars; ++i) { fg[i] = fmt_guesser_create ();