Basic working spreadsheet import dialog (sort of)
[pspp] / src / ui / gui / text-data-import-dialog.c
index bb7ce56e489666874262e745b87b5f4d4458185f..00e82a7035fac41d9e47f6cae37fcb9dbd10e14f 100644 (file)
@@ -79,10 +79,20 @@ text_data_import_assistant (PsppireDataWindow *dw)
       return;
     }
 
+  printf ("%s:%d %s\n", __FILE__, __LINE__, ia->file.file_name);
+
   init_assistant (ia, parent_window);
-  init_intro_page (ia);
-  init_first_line_page (ia);
-  init_separators_page (ia);
+  if ( ia->file.type == FTYPE_TEXT)
+    {
+      init_intro_page (ia);
+      init_first_line_page (ia);
+      init_separators_page (ia);
+    }
+  else
+    {
+      init_sheet_spec_page (ia);
+    }
+
   init_formats_page (ia);
 
   gtk_widget_show_all (GTK_WIDGET (ia->asst.assistant));
@@ -103,8 +113,12 @@ text_data_import_assistant (PsppireDataWindow *dw)
       break;
     }
 
-  destroy_formats_page (ia);
-  destroy_separators_page (ia);
+  if ( ia->file.type == FTYPE_TEXT)
+    {
+      destroy_formats_page (ia);
+      destroy_separators_page (ia);
+    }
+
   destroy_assistant (ia);
   destroy_file (ia);
   free (ia);
@@ -199,65 +213,77 @@ static char *
 generate_syntax (const struct import_assistant *ia)
 {
   struct string s = DS_EMPTY_INITIALIZER;
-  size_t var_cnt;
-  size_t i;
 
-  syntax_gen_pspp (&s,
-                   "GET DATA\n"
-                   "  /TYPE=TXT\n"
-                   "  /FILE=%sq\n",
-                   ia->file.file_name);
-  if (ia->file.encoding && strcmp (ia->file.encoding, "Auto"))
-    syntax_gen_pspp (&s, "  /ENCODING=%sq\n", ia->file.encoding);
-  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (
-                                      ia->intro.n_cases_button)))
-    ds_put_format (&s, "  /IMPORTCASES=FIRST %d\n",
-                   gtk_spin_button_get_value_as_int (
-                     GTK_SPIN_BUTTON (ia->intro.n_cases_spin)));
-  else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (
-                                           ia->intro.percent_button)))
-    ds_put_format (&s, "  /IMPORTCASES=PERCENT %d\n",
-                   gtk_spin_button_get_value_as_int (
-                     GTK_SPIN_BUTTON (ia->intro.percent_spin)));
+  if (ia->file.type == FTYPE_TEXT)
+  {
+    size_t var_cnt;
+    size_t i;
+    syntax_gen_pspp (&s,
+                    "GET DATA\n"
+                    "  /TYPE=TXT\n"
+                    "  /FILE=%sq\n",
+                    ia->file.file_name);
+    if (ia->file.encoding && strcmp (ia->file.encoding, "Auto"))
+      syntax_gen_pspp (&s, "  /ENCODING=%sq\n", ia->file.encoding);
+    if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (
+                                                        ia->intro.n_cases_button)))
+      ds_put_format (&s, "  /IMPORTCASES=FIRST %d\n",
+                    gtk_spin_button_get_value_as_int (
+                                                      GTK_SPIN_BUTTON (ia->intro.n_cases_spin)));
+    else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (
+                                                             ia->intro.percent_button)))
+      ds_put_format (&s, "  /IMPORTCASES=PERCENT %d\n",
+                    gtk_spin_button_get_value_as_int (
+                                                      GTK_SPIN_BUTTON (ia->intro.percent_spin)));
+    else
+      ds_put_cstr (&s, "  /IMPORTCASES=ALL\n");
+    ds_put_cstr (&s,
+                "  /ARRANGEMENT=DELIMITED\n"
+                "  /DELCASE=LINE\n");
+    if (ia->first_line.skip_lines > 0)
+      ds_put_format (&s, "  /FIRSTCASE=%d\n", ia->first_line.skip_lines + 1);
+    ds_put_cstr (&s, "  /DELIMITERS=\"");
+    if (ds_find_byte (&ia->separators.separators, '\t') != SIZE_MAX)
+      ds_put_cstr (&s, "\\t");
+    if (ds_find_byte (&ia->separators.separators, '\\') != SIZE_MAX)
+      ds_put_cstr (&s, "\\\\");
+    for (i = 0; i < ds_length (&ia->separators.separators); i++)
+      {
+       char c = ds_at (&ia->separators.separators, i);
+       if (c == '"')
+         ds_put_cstr (&s, "\"\"");
+       else if (c != '\t' && c != '\\')
+         ds_put_byte (&s, c);
+      }
+    ds_put_cstr (&s, "\"\n");
+    if (!ds_is_empty (&ia->separators.quotes))
+      syntax_gen_pspp (&s, "  /QUALIFIER=%sq\n", ds_cstr (&ia->separators.quotes));
+    if (!ds_is_empty (&ia->separators.quotes) && ia->separators.escape)
+      ds_put_cstr (&s, "  /ESCAPE\n");
+    ds_put_cstr (&s, "  /VARIABLES=\n");
+
+    var_cnt = dict_get_var_cnt (ia->formats.dict);
+    for (i = 0; i < var_cnt; i++)
+      {
+       struct variable *var = dict_get_var (ia->formats.dict, i);
+       char format_string[FMT_STRING_LEN_MAX + 1];
+       fmt_to_string (var_get_print_format (var), format_string);
+       ds_put_format (&s, "    %s %s%s\n",
+                      var_get_name (var), format_string,
+                      i == var_cnt - 1 ? "." : "");
+      }
+
+    apply_dict (ia->formats.dict, &s);
+  }
   else
-    ds_put_cstr (&s, "  /IMPORTCASES=ALL\n");
-  ds_put_cstr (&s,
-               "  /ARRANGEMENT=DELIMITED\n"
-               "  /DELCASE=LINE\n");
-  if (ia->first_line.skip_lines > 0)
-    ds_put_format (&s, "  /FIRSTCASE=%d\n", ia->first_line.skip_lines + 1);
-  ds_put_cstr (&s, "  /DELIMITERS=\"");
-  if (ds_find_byte (&ia->separators.separators, '\t') != SIZE_MAX)
-    ds_put_cstr (&s, "\\t");
-  if (ds_find_byte (&ia->separators.separators, '\\') != SIZE_MAX)
-    ds_put_cstr (&s, "\\\\");
-  for (i = 0; i < ds_length (&ia->separators.separators); i++)
-    {
-      char c = ds_at (&ia->separators.separators, i);
-      if (c == '"')
-        ds_put_cstr (&s, "\"\"");
-      else if (c != '\t' && c != '\\')
-        ds_put_byte (&s, c);
-    }
-  ds_put_cstr (&s, "\"\n");
-  if (!ds_is_empty (&ia->separators.quotes))
-    syntax_gen_pspp (&s, "  /QUALIFIER=%sq\n", ds_cstr (&ia->separators.quotes));
-  if (!ds_is_empty (&ia->separators.quotes) && ia->separators.escape)
-    ds_put_cstr (&s, "  /ESCAPE\n");
-  ds_put_cstr (&s, "  /VARIABLES=\n");
-
-  var_cnt = dict_get_var_cnt (ia->formats.dict);
-  for (i = 0; i < var_cnt; i++)
     {
-      struct variable *var = dict_get_var (ia->formats.dict, i);
-      char format_string[FMT_STRING_LEN_MAX + 1];
-      fmt_to_string (var_get_print_format (var), format_string);
-      ds_put_format (&s, "    %s %s%s\n",
-                     var_get_name (var), format_string,
-                     i == var_cnt - 1 ? "." : "");
+      syntax_gen_pspp (&s,
+                      "GET DATA\n"
+                      "  /TYPE=GNM\n"
+                      "  /FILE=%sq\n",
+                      ia->file.file_name);
     }
 
-  apply_dict (ia->formats.dict, &s);
 
   return ds_cstr (&s);
 }