Merge remote branch 'origin/master' into import-gui
[pspp] / src / ui / gui / page-file.c
index 6422fa6ab463c49cda1a8f75b90089d067fecef9..2647bb5c256006656c13d552783e8e26796d53da 100644 (file)
@@ -66,61 +66,8 @@ struct import_assistant;
 
 /* Choose a file */
 static char *choose_file (GtkWindow *parent_window, gchar **encodingp);
-enum { MAX_PREVIEW_LINES = 1000 }; /* Max number of lines to read. */
 
 
-/*
-  Update IA according to the contents of DICT and CREADER.
-  CREADER will be destroyed by this function.
-*/
-void 
-update_assistant (struct import_assistant *ia)
-{
-  struct sheet_spec_page *ssp = &ia->sheet_spec;
-
-  struct file *file = &ia->file;
-  struct separators_page *sepp = &ia->separators;
-  int col;
-  int rows = 0;
-  struct ccase *c;
-  
-  sepp->column_cnt = dict_get_var_cnt (ssp->dict);
-  sepp->columns = xcalloc (sepp->column_cnt, sizeof (*sepp->columns));
-  for (col = 0; col < sepp->column_cnt ; ++col)
-    {
-      const struct variable *var = dict_get_var (ssp->dict, col);
-      sepp->columns[col].name = xstrdup (var_get_name (var));
-      sepp->columns[col].contents = NULL;
-    }
-
-  for (; (c = casereader_read (ssp->reader)) != NULL; case_unref (c))
-    {
-      rows++;
-      for (col = 0; col < sepp->column_cnt ; ++col)
-       {
-         char *ss;
-         const struct variable *var = dict_get_var (ssp->dict, col);
-
-         sepp->columns[col].contents = xrealloc (sepp->columns[col].contents,
-                                                 sizeof (struct substring) * rows);
-
-         ss = data_out (case_data (c, var), dict_get_encoding (ssp->dict), 
-                        var_get_print_format (var));
-
-         sepp->columns[col].contents[rows - 1] = ss_cstr (ss);
-       }
-
-      if (rows > MAX_PREVIEW_LINES)
-       {
-         case_unref (c);
-         break;
-       }
-    }
-
-  file->line_cnt = rows;
-  casereader_destroy (ssp->reader);
-  ssp->reader = NULL;
-}
 
 
 /* Obtains the file to import from the user and initializes IA's
@@ -134,9 +81,6 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window)
 {
   enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */
   struct file *file = &ia->file;
-  struct casereader *creader = NULL;
-  struct dictionary *dict = NULL;
-  struct spreadsheet_read_info sri;
   struct spreadsheet_read_options opts;
 
   file->lines = NULL;
@@ -148,31 +92,22 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window)
   opts.cell_range = NULL;
   opts.sheet_index = 1;
 
-  sri.file_name = file->file_name;
-  sri.read_names = true;
-  sri.asw = -1;
+  opts.read_names = true;
+  opts.asw = -1;
 
-  if (!creader) 
-    {
-      creader = gnumeric_open_reader (&sri, &opts, &dict);
-      ia->file.type = FTYPE_GNUMERIC;
-    }
-       
-  if (!creader) 
-    {
-      creader = ods_open_reader (&sri, &opts, &dict);
-      ia->file.type = FTYPE_ODS;
-    }
-    
-  if (creader)
-    {
-      struct sheet_spec_page *ssp = &ia->sheet_spec;
-      ssp->dict = dict;
-      ssp->reader = creader;
+  printf ("%s:%d %p\n", __FILE__, __LINE__, ia->spreadsheet);
 
-      update_assistant (ia);
-    }
-  else
+  if (ia->spreadsheet == NULL)
+    ia->spreadsheet = gnumeric_probe (file->file_name, false);
+
+  printf ("%s:%d %p\n", __FILE__, __LINE__, ia->spreadsheet);
+
+  if (ia->spreadsheet == NULL)
+    ia->spreadsheet = ods_probe (file->file_name, false);
+
+  printf ("%s:%d %p\n", __FILE__, __LINE__, ia->spreadsheet);
+  
+  if (ia->spreadsheet == NULL)
     {
     struct string input;
     struct line_reader *reader = line_reader_for_file (file->encoding, file->file_name, O_RDONLY);
@@ -235,7 +170,6 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window)
       }
 
     line_reader_close (reader);
-    ia->file.type = FTYPE_TEXT;
   }
 
   return true;
@@ -316,7 +250,7 @@ choose_file (GtkWindow *parent_window, gchar **encodingp)
   gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
 
   filter = gtk_file_filter_new ();
-  gtk_file_filter_set_name (filter, _("OpenOffice.Org Spreadsheet Files"));
+  gtk_file_filter_set_name (filter, _("OpenDocument Spreadsheet Files"));
   gtk_file_filter_add_mime_type (filter, "application/vnd.oasis.opendocument.spreadsheet");
   gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);