From fea69317c31a60056bf6a2c1260b1113aafb7e5a Mon Sep 17 00:00:00 2001 From: John Darrington Date: Thu, 24 Jan 2013 18:58:30 +0100 Subject: [PATCH] Move column count from seperators into assist --- src/ui/gui/page-formats.c | 5 ++--- src/ui/gui/page-separators.c | 28 +++++++++++++--------------- src/ui/gui/page-sheet-spec.c | 17 ++++++++--------- src/ui/gui/text-data-import-dialog.c | 12 +++++------- src/ui/gui/text-data-import-dialog.h | 9 +++++---- 5 files changed, 33 insertions(+), 38 deletions(-) diff --git a/src/ui/gui/page-formats.c b/src/ui/gui/page-formats.c index 25d070276b..3edb9e1439 100644 --- a/src/ui/gui/page-formats.c +++ b/src/ui/gui/page-formats.c @@ -114,8 +114,7 @@ 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; @@ -123,7 +122,7 @@ prepare_formats_page (struct import_assistant *ia) ? 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; diff --git a/src/ui/gui/page-separators.c b/src/ui/gui/page-separators.c index 40a6e71959..d16f0fe3d2 100644 --- a/src/ui/gui/page-separators.c +++ b/src/ui/gui/page-separators.c @@ -199,9 +199,7 @@ reset_separators_page (struct import_assistant *ia) static void clear_fields (struct import_assistant *ia) { - struct separators_page *s = ia->separators; - - if (s->column_cnt > 0) + if (ia->column_cnt > 0) { struct column *col; size_t row; @@ -212,7 +210,7 @@ clear_fields (struct import_assistant *ia) const char *line_start = ds_data (line); const char *line_end = ds_end (line); - for (col = s->columns; col < &s->columns[s->column_cnt]; col++) + for (col = ia->columns; col < &ia->columns[ia->column_cnt]; col++) { char *s = ss_data (col->contents[row]); if (!(s >= line_start && s <= line_end)) @@ -220,15 +218,15 @@ clear_fields (struct import_assistant *ia) } } - for (col = s->columns; col < &s->columns[s->column_cnt]; col++) + for (col = ia->columns; col < &ia->columns[ia->column_cnt]; col++) { free (col->name); free (col->contents); } - free (s->columns); - s->columns = NULL; - s->column_cnt = 0; + free (ia->columns); + ia->columns = NULL; + ia->column_cnt = 0; } } @@ -297,20 +295,20 @@ split_fields (struct import_assistant *ia) ss_get_bytes (&text, ss_cspan (text, ds_ss (&s->separators)), &field); - if (column_idx >= s->column_cnt) + if (column_idx >= ia->column_cnt) { struct column *column; - if (s->column_cnt >= columns_allocated) - s->columns = x2nrealloc (s->columns, &columns_allocated, - sizeof *s->columns); - column = &s->columns[s->column_cnt++]; + if (ia->column_cnt >= columns_allocated) + ia->columns = x2nrealloc (ia->columns, &columns_allocated, + sizeof *ia->columns); + column = &ia->columns[ia->column_cnt++]; column->name = NULL; column->width = 0; column->contents = xcalloc (ia->file.line_cnt, sizeof *column->contents); } - column = &s->columns[column_idx]; + column = &ia->columns[column_idx]; column->contents[row] = field; if (ss_length (field) > column->width) column->width = ss_length (field); @@ -339,7 +337,7 @@ choose_column_names (struct import_assistant *ia) dict = dict_create (get_default_encoding ()); name_row = f->variable_names && f->skip_lines ? f->skip_lines : 0; - for (col = s->columns; col < &s->columns[s->column_cnt]; col++) + for (col = ia->columns; col < &ia->columns[ia->column_cnt]; col++) { char *hint, *name; diff --git a/src/ui/gui/page-sheet-spec.c b/src/ui/gui/page-sheet-spec.c index 74593f2523..6f6695f51b 100644 --- a/src/ui/gui/page-sheet-spec.c +++ b/src/ui/gui/page-sheet-spec.c @@ -207,7 +207,6 @@ update_assistant (struct import_assistant *ia) { struct sheet_spec_page *ssp = ia->sheet_spec; // struct file *file = &ia->file; - struct separators_page *sepp = ia->separators; int rows = 0; @@ -216,30 +215,30 @@ update_assistant (struct import_assistant *ia) struct ccase *c; int col; - sepp->column_cnt = dict_get_var_cnt (ssp->dict); - sepp->columns = xcalloc (sepp->column_cnt, sizeof (*sepp->columns)); - for (col = 0; col < sepp->column_cnt ; ++col) + ia->column_cnt = dict_get_var_cnt (ssp->dict); + ia->columns = xcalloc (ia->column_cnt, sizeof (*ia->columns)); + for (col = 0; col < ia->column_cnt ; ++col) { const struct variable *var = dict_get_var (ssp->dict, col); - sepp->columns[col].name = xstrdup (var_get_name (var)); - sepp->columns[col].contents = NULL; + ia->columns[col].name = xstrdup (var_get_name (var)); + ia->columns[col].contents = NULL; } for (; (c = casereader_read (ssp->reader)) != NULL; case_unref (c)) { rows++; - for (col = 0; col < sepp->column_cnt ; ++col) + for (col = 0; col < ia->column_cnt ; ++col) { char *ss; const struct variable *var = dict_get_var (ssp->dict, col); - sepp->columns[col].contents = xrealloc (sepp->columns[col].contents, + ia->columns[col].contents = xrealloc (ia->columns[col].contents, sizeof (struct substring) * rows); ss = data_out (case_data (c, var), dict_get_encoding (ssp->dict), var_get_print_format (var)); - sepp->columns[col].contents[rows - 1] = ss_cstr (ss); + ia->columns[col].contents[rows - 1] = ss_cstr (ss); } if (rows > MAX_PREVIEW_LINES) diff --git a/src/ui/gui/text-data-import-dialog.c b/src/ui/gui/text-data-import-dialog.c index c9cee75191..fc1485ff8a 100644 --- a/src/ui/gui/text-data-import-dialog.c +++ b/src/ui/gui/text-data-import-dialog.c @@ -200,8 +200,6 @@ apply_dict (const struct dictionary *dict, struct string *s) static char * generate_syntax (const struct import_assistant *ia) { - struct sheet_spec_page *ssp = ia->sheet_spec; - struct string s = DS_EMPTY_INITIALIZER; #if 0 @@ -323,7 +321,7 @@ render_input_cell (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tree_column), "column-number")); row = empty_list_store_iter_to_row (iter) + ia->first_line->skip_lines; - field = ia->separators->columns[column].contents[row]; + field = ia->columns[column].contents[row]; if (field.string != NULL) { GValue text = {0, }; @@ -359,7 +357,7 @@ on_query_input_tooltip (GtkWidget *widget, gint wx, gint wy, if (!get_tooltip_location (widget, wx, wy, ia, &row, &column)) return FALSE; - if (ia->separators->columns[column].contents[row].string != NULL) + if (ia->columns[column].contents[row].string != NULL) return FALSE; gtk_tooltip_set_text (tooltip, @@ -389,7 +387,7 @@ parse_field (struct import_assistant *ia, char *tooltip; bool ok; - field = ia->separators->columns[column].contents[row]; + field = ia->columns[column].contents[row]; var = dict_get_var (ia->formats->dict, column); value_init (&val, var_get_width (var)); in = var_get_print_format (var); @@ -625,7 +623,7 @@ make_data_column (struct import_assistant *ia, GtkTreeView *tree_view, char *name; if (input) - column = &ia->separators->columns[dict_idx]; + column = &ia->columns[dict_idx]; else var = dict_get_var (ia->formats->dict, dict_idx); @@ -665,7 +663,7 @@ create_data_tree_view (bool input, GtkContainer *parent, gtk_tree_selection_set_mode (gtk_tree_view_get_selection (tree_view), GTK_SELECTION_NONE); - for (i = 0; i < ia->separators->column_cnt; i++) + for (i = 0; i < ia->column_cnt; i++) gtk_tree_view_append_column (tree_view, make_data_column (ia, tree_view, input, i)); diff --git a/src/ui/gui/text-data-import-dialog.h b/src/ui/gui/text-data-import-dialog.h index be8c46e92d..29d4ab9bd3 100644 --- a/src/ui/gui/text-data-import-dialog.h +++ b/src/ui/gui/text-data-import-dialog.h @@ -54,6 +54,7 @@ struct assistant GtkCellRenderer *prop_renderer; GtkCellRenderer *fixed_renderer; + }; @@ -78,10 +79,6 @@ struct separators_page struct string quotes; /* Quote characters. */ bool escape; /* Doubled quotes yield a quote mark? */ - /* The columns produced thereby. */ - struct column *columns; /* Information about each column. */ - size_t column_cnt; /* Number of columns. */ - GtkWidget *page; GtkWidget *custom_cb; GtkWidget *custom_entry; @@ -115,6 +112,10 @@ struct import_assistant struct first_line_page *first_line; struct separators_page *separators; struct formats_page *formats; + + /* The columns produced. */ + struct column *columns; /* Information about each column. */ + size_t column_cnt; /* Number of columns. */ }; -- 2.30.2