+ struct casereader *cr = casereader_create_random (proto, n_rows,
+ &my_casereader_class, ia);
+ psppire_data_store_set_reader (store, cr);
+ dict_unref (ia->casereader_dict);
+ ia->casereader_dict = dict_clone (ia->dict);
+}
+
+/* Called just before the formats page of the assistant is
+ displayed. */
+static void
+prepare_formats_page (PsppireImportAssistant *ia)
+{
+ my_casereader_class.read = my_read;
+ my_casereader_class.destroy = my_destroy;
+ my_casereader_class.advance = my_advance;
+
+ if (ia->spreadsheet)
+ {
+ GtkBuilder *builder = ia->builder;
+ GtkWidget *range_entry = get_widget_assert (builder, "cell-range-entry");
+ GtkWidget *rnc = get_widget_assert (builder, "readnames-checkbox");
+ GtkWidget *combo_box = get_widget_assert (builder, "sheet-entry");
+
+ struct spreadsheet_read_options opts;
+ opts.sheet_name = NULL;
+ opts.sheet_index = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box)) + 1;
+ opts.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rnc));
+ opts.cell_range = g_strdup (gtk_entry_get_text (GTK_ENTRY (range_entry)));
+ opts.asw = 8;
+
+ struct casereader *reader = spreadsheet_make_reader (ia->spreadsheet, &opts);
+
+ PsppireDict *dict = psppire_dict_new_from_dict (ia->spreadsheet->dict);
+ PsppireDataStore *store = psppire_data_store_new (dict);
+ psppire_data_store_set_reader (store, reader);
+ g_object_set (ia->data_sheet, "data-model", store, NULL);
+ g_object_set (ia->var_sheet, "data-model", dict, NULL);
+ }
+ else
+ {
+ struct casereader *reader = textfile_create_reader (ia);