Merge branch 'master' into import-gui
[pspp] / src / ui / gui / page-formats.c
index 25d070276b75d67bc8e9239a73e889823ca665b6..eb863bdd12e12f308ce05efaa960ec812206f2c4 100644 (file)
@@ -48,7 +48,6 @@
 #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"
 #define _(msgid) gettext (msgid)
 #define N_(msgid) msgid
 
+/* Page where the user verifies and adjusts input formats. */
+struct formats_page
+  {
+    GtkWidget *page;
+    GtkTreeView *data_tree_view;
+    PsppireDict *psppire_dict;
+    struct variable **modified_vars;
+    size_t modified_var_cnt;
+  };
+
 /* The "formats" page of the assistant. */
 
 static void on_variable_change (PsppireDict *dict, int idx,
@@ -65,18 +74,21 @@ static void on_variable_change (PsppireDict *dict, int idx,
 static void clear_modified_vars (struct import_assistant *);
 
 /* Initializes IA's formats substructure. */
-void
-init_formats_page (struct import_assistant *ia)
+
+struct formats_page *
+formats_page_create (struct import_assistant *ia)
 {
   GtkBuilder *builder = ia->asst.builder;
-  struct formats_page *p = ia->formats;
+  struct formats_page *p = xzalloc (sizeof *p);
 
   p->page = add_page_to_assistant (ia, get_widget_assert (builder, "Formats"),
-                                   GTK_ASSISTANT_PAGE_CONFIRM);
+                        GTK_ASSISTANT_PAGE_CONFIRM);
+
   p->data_tree_view = GTK_TREE_VIEW (get_widget_assert (builder, "data"));
   p->modified_vars = NULL;
   p->modified_var_cnt = 0;
-  p->dict = NULL;
+
+  return p;
 }
 
 /* Frees IA's formats substructure. */
@@ -104,7 +116,6 @@ prepare_formats_page (struct import_assistant *ia)
   GtkBin *vars_scroller;
   GtkWidget *old_var_sheet;
   PsppireVarSheet *var_sheet;
-  struct separators_page *seps = ia->separators;
   struct formats_page *p = ia->formats;
   struct fmt_guesser *fg;
   unsigned long int number = 0;
@@ -114,16 +125,13 @@ prepare_formats_page (struct import_assistant *ia)
 
   dict = dict_create (get_default_encoding ());
   fg = fmt_guesser_create ();
-  printf ("%s:%d Column count %d\n", __FILE__, __LINE__, seps->column_cnt);
-  for (column_idx = 0; column_idx < seps->column_cnt; column_idx++)
+  for (column_idx = 0; column_idx < ia->column_cnt; column_idx++)
     {
-      struct variable *modified_var;
-
-      modified_var = (column_idx < p->modified_var_cnt
-                      ? p->modified_vars[column_idx] : NULL);
+      struct variable *modified_var = 
+       (column_idx < p->modified_var_cnt ? p->modified_vars[column_idx] : NULL);
       if (modified_var == NULL)
         {
-          struct column *column = &seps->columns[column_idx];
+          struct column *column = &ia->columns[column_idx];
           struct variable *var;
           struct fmt_spec format;
           char *name;
@@ -134,7 +142,7 @@ prepare_formats_page (struct import_assistant *ia)
 
           /* Choose variable format. */
           fmt_guesser_clear (fg);
-          for (row = ia->first_line->skip_lines; row < ia->file.line_cnt; row++)
+          for (row = ia->skip_lines; row < ia->file.line_cnt; row++)
             fmt_guesser_add (fg, column->contents[row]);
           fmt_guesser_guess (fg, &format);
           fmt_fix_input (&format);
@@ -160,7 +168,7 @@ prepare_formats_page (struct import_assistant *ia)
   psppire_dict = psppire_dict_new_from_dict (dict);
   g_signal_connect (psppire_dict, "variable_changed",
                     G_CALLBACK (on_variable_change), ia);
-  ia->formats->dict = dict;
+  ia->dict = dict;
   ia->formats->psppire_dict = psppire_dict;
 
   /* XXX: PsppireVarStore doesn't hold a reference to
@@ -260,3 +268,23 @@ on_variable_change (PsppireDict *dict, int dict_idx,
 }
 
 
+
+
+void
+formats_append_syntax (const struct import_assistant *ia, struct string *s)
+{
+  int i;
+  int var_cnt;
+  ds_put_cstr (s, "  /VARIABLES=\n");
+  
+  var_cnt = dict_get_var_cnt (ia->dict);
+  for (i = 0; i < var_cnt; i++)
+    {
+      struct variable *var = dict_get_var (ia->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 ? "." : "");
+    }
+}