#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);
+#if 0
p->page = add_page_to_assistant (ia, get_widget_assert (builder, "Formats"),
GTK_ASSISTANT_PAGE_CONFIRM);
+#endif
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. */
void
destroy_formats_page (struct import_assistant *ia)
{
- struct formats_page *p = &ia->formats;
+ struct formats_page *p = ia->formats;
if (p->psppire_dict != NULL)
{
GtkBin *vars_scroller;
GtkWidget *old_var_sheet;
PsppireVarSheet *var_sheet;
- struct separators_page *seps = &ia->separators;
- struct formats_page *p = &ia->formats;
+ struct separators_page *seps = ia->separators;
+ struct formats_page *p = ia->formats;
struct fmt_guesser *fg;
unsigned long int number = 0;
size_t column_idx;
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;
? 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->formats.psppire_dict = psppire_dict;
+ ia->dict = dict;
+ ia->formats->psppire_dict = psppire_dict;
/* XXX: PsppireVarStore doesn't hold a reference to
psppire_dict for now, but it should. After it does, we
should g_object_ref the psppire_dict here, since we also
- hold a reference via ia->formats.dict. */
+ hold a reference via ia->formats->dict. */
var_store = psppire_var_store_new (psppire_dict);
g_object_set (var_store,
"format-type", PSPPIRE_VAR_STORE_INPUT_FORMATS,
gtk_container_add (GTK_CONTAINER (vars_scroller), GTK_WIDGET (var_sheet));
gtk_widget_show (GTK_WIDGET (var_sheet));
- gtk_widget_destroy (GTK_WIDGET (ia->formats.data_tree_view));
- ia->formats.data_tree_view = create_data_tree_view (
+ gtk_widget_destroy (GTK_WIDGET (ia->formats->data_tree_view));
+ ia->formats->data_tree_view = create_data_tree_view (
false,
GTK_CONTAINER (get_widget_assert (ia->asst.builder, "data-scroller")),
ia);
static void
clear_modified_vars (struct import_assistant *ia)
{
- struct formats_page *p = &ia->formats;
+ struct formats_page *p = ia->formats;
size_t i;
for (i = 0; i < p->modified_var_cnt; i++)
on_variable_change (PsppireDict *dict, int dict_idx,
struct import_assistant *ia)
{
- struct formats_page *p = &ia->formats;
- GtkTreeView *tv = ia->formats.data_tree_view;
+ struct formats_page *p = ia->formats;
+ GtkTreeView *tv = ia->formats->data_tree_view;
gint column_idx = dict_idx + 1;
push_watch_cursor (ia);