X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpage-separators.c;h=e147881730e710e6b70472806a2430c241071efa;hb=7640d70ac1a3641869d8de331594c340c9568ea2;hp=999950bcaf45f8d13213c148b9a5eb589344d78c;hpb=c81095f27220e7896eb5b42df87d648538cfa5b9;p=pspp diff --git a/src/ui/gui/page-separators.c b/src/ui/gui/page-separators.c index 999950bcaf..e147881730 100644 --- a/src/ui/gui/page-separators.c +++ b/src/ui/gui/page-separators.c @@ -16,6 +16,8 @@ #include +#include "page-separators.h" + #include "ui/gui/text-data-import-dialog.h" #include @@ -159,6 +161,7 @@ separators_page_create (struct import_assistant *ia) p->page = add_page_to_assistant (ia, get_widget_assert (builder, "Separators"), GTK_ASSISTANT_PAGE_CONTENT); + p->custom_cb = get_widget_assert (builder, "custom-cb"); p->custom_entry = get_widget_assert (builder, "custom-entry"); p->quote_combo = get_widget_assert (builder, "quote-combo"); @@ -347,14 +350,13 @@ split_fields (struct import_assistant *ia) static void choose_column_names (struct import_assistant *ia) { - const struct first_line_page *f = ia->first_line; struct dictionary *dict; unsigned long int generated_name_count = 0; struct column *col; size_t name_row; dict = dict_create (get_default_encoding ()); - name_row = f->variable_names && f->skip_lines ? f->skip_lines : 0; + name_row = ia->variable_names && ia->skip_lines ? ia->skip_lines : 0; for (col = ia->columns; col < &ia->columns[ia->column_cnt]; col++) { char *hint, *name; @@ -587,3 +589,28 @@ on_separator_toggle (GtkToggleButton *toggle UNUSED, revise_fields_preview (ia); } + + +void +separators_append_syntax (const struct import_assistant *ia, struct string *s) +{ + int i; + ds_put_cstr (s, " /DELIMITERS=\""); + if (ds_find_byte (&ia->separators->separators, '\t') != SIZE_MAX) + ds_put_cstr (s, "\\t"); + if (ds_find_byte (&ia->separators->separators, '\\') != SIZE_MAX) + ds_put_cstr (s, "\\\\"); + for (i = 0; i < ds_length (&ia->separators->separators); i++) + { + char c = ds_at (&ia->separators->separators, i); + if (c == '"') + ds_put_cstr (s, "\"\""); + else if (c != '\t' && c != '\\') + ds_put_byte (s, c); + } + ds_put_cstr (s, "\"\n"); + if (!ds_is_empty (&ia->separators->quotes)) + syntax_gen_pspp (s, " /QUALIFIER=%sq\n", ds_cstr (&ia->separators->quotes)); + if (!ds_is_empty (&ia->separators->quotes) && ia->separators->escape) + ds_put_cstr (s, " /ESCAPE\n"); +}