#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,
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. */
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;
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;
/* 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);
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
GTK_CONTAINER (get_widget_assert (ia->asst.builder, "data-scroller")),
ia);
+ gtk_widget_show (ia->asst.paste_button);
+
pop_watch_cursor (ia);
}
}
+
+
+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 ? "." : "");
+ }
+}