X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpage-formats.c;h=eb863bdd12e12f308ce05efaa960ec812206f2c4;hb=91fc7d27740431120fac25a2a56d44bd3fc4fb0e;hp=3edb9e1439c2ae386089c6e61ea83aa15da3116b;hpb=fea69317c31a60056bf6a2c1260b1113aafb7e5a;p=pspp diff --git a/src/ui/gui/page-formats.c b/src/ui/gui/page-formats.c index 3edb9e1439..eb863bdd12 100644 --- a/src/ui/gui/page-formats.c +++ b/src/ui/gui/page-formats.c @@ -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" @@ -58,6 +57,16 @@ #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; @@ -116,10 +127,8 @@ prepare_formats_page (struct import_assistant *ia) fg = fmt_guesser_create (); 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 = &ia->columns[column_idx]; @@ -133,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); @@ -159,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 @@ -259,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 ? "." : ""); + } +}