Whitespace changes only
[pspp] / src / ui / gui / page-file.c
index ccdf37dcdf796e3edb1cd848c24d6b3411646cf4..bf09902bf9e68c19cf3894f3d37ff504334a6a98 100644 (file)
@@ -20,7 +20,6 @@
 
 #include <errno.h>
 #include <fcntl.h>
-#include <gtk-contrib/psppire-sheet.h>
 #include <gtk/gtk.h>
 #include <limits.h>
 #include <stdlib.h>
@@ -40,7 +39,6 @@
 #include "libpspp/i18n.h"
 #include "libpspp/line-reader.h"
 #include "libpspp/message.h"
-#include "ui/gui/checkbox-treeview.h"
 #include "ui/gui/dialog-common.h"
 #include "ui/gui/executor.h"
 #include "ui/gui/helper.h"
 #include "ui/gui/psppire-encoding-selector.h"
 #include "ui/gui/psppire-empty-list-store.h"
 #include "ui/gui/psppire-var-sheet.h"
-#include "ui/gui/psppire-var-store.h"
 #include "ui/gui/psppire-scanf.h"
 #include "ui/syntax-gen.h"
 
-#include "gl/error.h"
 #include "gl/intprops.h"
 #include "gl/xalloc.h"
 
 
 struct import_assistant;
 
-/* Choosing a file and reading it. */
-
+/* Choose a file */
 static char *choose_file (GtkWindow *parent_window, gchar **encodingp);
 
+
+
+
 /* Obtains the file to import from the user and initializes IA's
    file substructure.  PARENT_WINDOW must be the window to use
    as the file chooser window's parent.
@@ -77,90 +75,28 @@ static char *choose_file (GtkWindow *parent_window, gchar **encodingp);
 bool
 init_file (struct import_assistant *ia, GtkWindow *parent_window)
 {
-  enum { MAX_PREVIEW_LINES = 1000 }; /* Max number of lines to read. */
   enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */
   struct file *file = &ia->file;
-  struct separators_page *sepp = &ia->separators;
-  struct casereader *creader = NULL;
-  struct dictionary *dict = NULL;
-  struct spreadsheet_read_info sri;
-  struct spreadsheet_read_options opts;
 
   file->lines = NULL;
   file->file_name = choose_file (parent_window, &file->encoding);
   if (file->file_name == NULL)
     return false;
 
-  opts.sheet_name = NULL;
-  opts.cell_range = NULL;
-  opts.sheet_index = 1;
-
-  sri.file_name = file->file_name;
-  sri.read_names = true;
-  sri.asw = -1;
+  if (ia->spreadsheet == NULL)
+    ia->spreadsheet = gnumeric_probe (file->file_name, false);
 
-  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)
-    {
-      int col;
-      int rows = 0;
-      struct ccase *c;
-  
-      sepp->column_cnt = dict_get_var_cnt (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 (dict, col);
-         sepp->columns[col].name = xstrdup (var_get_name (var));
-         sepp->columns[col].contents = NULL;
-       }
-
-      for (; (c = casereader_read (creader)) != NULL; case_unref (c))
-       {
-         rows++;
-         for (col = 0; col < sepp->column_cnt ; ++col)
-           {
-             char *ss;
-             const struct variable *var = dict_get_var (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 (dict), 
-                            var_get_print_format (var));
-
-             sepp->columns[col].contents[rows - 1] = ss_cstr (ss);
-           }
-
-         if (rows > MAX_PREVIEW_LINES)
-           {
-             case_unref (c);
-             break;
-           }
-       }
+  if (ia->spreadsheet == NULL)
+    ia->spreadsheet = ods_probe (file->file_name, false);
 
-      file->line_cnt = rows;
-      casereader_destroy (creader);
-    }
-  else
+  if (ia->spreadsheet == NULL)
     {
     struct string input;
     struct line_reader *reader = line_reader_for_file (file->encoding, file->file_name, O_RDONLY);
     if (reader == NULL)
       {
-       msg (ME, _("Could not open `%s': %s"),
-            file->file_name, strerror (errno));
+       msg_error (errno, _("Could not open `%s'"),
+            file->file_name);
        return false;
       }
 
@@ -202,21 +138,30 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window)
        return false;
       }
 
+
     /* Estimate the number of lines in the file. */
     if (file->line_cnt < MAX_PREVIEW_LINES)
-      file->total_lines = file->line_cnt;
+      {
+       file->total_lines = file->line_cnt;
+       file->total_is_exact = true;
+      }
     else
       {
        struct stat s;
        off_t position = line_reader_tell (reader);
        if (fstat (line_reader_fileno (reader), &s) == 0 && position > 0)
-         file->total_lines = (double) file->line_cnt / position * s.st_size;
+         {
+           file->total_lines = (double) file->line_cnt / position * s.st_size;
+           file->total_is_exact = false;
+         }
        else
+         {
          file->total_lines = 0;
+         file->total_is_exact = true;
+         }
       }
 
     line_reader_close (reader);
-    ia->file.type = FTYPE_TEXT;
   }
 
   return true;
@@ -257,14 +202,14 @@ choose_file (GtkWindow *parent_window, gchar **encodingp)
   GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Import Delimited Text Data"),
                                         parent_window,
                                         GTK_FILE_CHOOSER_ACTION_OPEN,
-                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-                                        GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+                                       _("Cancel"), GTK_RESPONSE_CANCEL,
+                                       _("Open"), GTK_RESPONSE_ACCEPT,
                                         NULL);
 
   g_object_set (dialog, "local-only", FALSE, NULL);
 
   filter = gtk_file_filter_new ();
-  gtk_file_filter_set_name (filter, _("Text files"));
+  gtk_file_filter_set_name (filter, _("Text Files"));
   gtk_file_filter_add_mime_type (filter, "text/*");
   gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
 
@@ -297,7 +242,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);
 
@@ -307,7 +252,6 @@ choose_file (GtkWindow *parent_window, gchar **encodingp)
   gtk_file_filter_add_mime_type (filter, "application/vnd.oasis.opendocument.spreadsheet");
   gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
 
-
   gtk_file_chooser_set_extra_widget (
     GTK_FILE_CHOOSER (dialog), psppire_encoding_selector_new ("Auto", true));