X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Ftext-data-import-dialog.c;h=6214d5ebae4fc05d51df3d3293b3658f4c508faa;hb=1076f8e88e2eee1bc780edd9d79d696a38af936d;hp=ce23093feefa33ea88837236f77fc9a8f43423e7;hpb=0b0ca44889e637251cb5f2dbf3c7fdc4ec8b9bd7;p=pspp diff --git a/src/ui/gui/text-data-import-dialog.c b/src/ui/gui/text-data-import-dialog.c index ce23093fee..6214d5ebae 100644 --- a/src/ui/gui/text-data-import-dialog.c +++ b/src/ui/gui/text-data-import-dialog.c @@ -19,6 +19,7 @@ #include "ui/gui/text-data-import-dialog.h" #include "page-intro.h" +#include "page-sheet-spec.h" #include "page-first-line.h" #include "page-separators.h" #include "page-formats.h" @@ -77,6 +78,7 @@ text_data_import_assistant (PsppireDataWindow *dw) { GtkWindow *parent_window = GTK_WINDOW (dw); struct import_assistant *ia = init_assistant (parent_window); + struct sheet_spec_page *ssp ; if (!init_file (ia, parent_window)) { @@ -84,7 +86,13 @@ text_data_import_assistant (PsppireDataWindow *dw) return; } + ssp = ia->sheet_spec; + if (ia->spreadsheet) + { + ia->sheet_spec = sheet_spec_page_create (ia); + } + else { ia->intro = intro_page_create (ia); ia->first_line = first_line_page_create (ia); @@ -114,7 +122,11 @@ text_data_import_assistant (PsppireDataWindow *dw) switch (ia->asst.response) { case GTK_RESPONSE_APPLY: - free (execute_syntax_string (dw, generate_syntax (ia))); + { + gchar *fn = g_path_get_basename (ia->file.file_name); + open_data_window (PSPPIRE_WINDOW (dw), fn, generate_syntax (ia)); + g_free (fn); + } break; case PSPPIRE_RESPONSE_PASTE: free (paste_syntax_to_window (generate_syntax (ia))); @@ -123,6 +135,7 @@ text_data_import_assistant (PsppireDataWindow *dw) break; } + if (ssp) { destroy_formats_page (ia); destroy_separators_page (ia); @@ -149,6 +162,7 @@ apply_dict (const struct dictionary *dict, struct string *s) enum val_type type = var_get_type (var); int width = var_get_width (var); enum measure measure = var_get_measure (var); + enum var_role role = var_get_role (var); enum alignment alignment = var_get_alignment (var); const struct fmt_spec *format = var_get_print_format (var); @@ -199,16 +213,13 @@ apply_dict (const struct dictionary *dict, struct string *s) name, var_get_label (var)); if (measure != var_default_measure (type)) syntax_gen_pspp (s, "VARIABLE LEVEL %ss (%ss).\n", - name, - (measure == MEASURE_NOMINAL ? "NOMINAL" - : measure == MEASURE_ORDINAL ? "ORDINAL" - : "SCALE")); + name, measure_to_syntax (measure)); + if (role != ROLE_INPUT) + syntax_gen_pspp (s, "VARIABLE ROLE /%ss %ss.\n", + var_role_to_syntax (role), name); if (alignment != var_default_alignment (type)) syntax_gen_pspp (s, "VARIABLE ALIGNMENT %ss (%ss).\n", - name, - (alignment == ALIGN_LEFT ? "LEFT" - : alignment == ALIGN_CENTRE ? "CENTER" - : "RIGHT")); + name, alignment_to_syntax (alignment)); if (var_get_display_width (var) != var_default_display_width (width)) syntax_gen_pspp (s, "VARIABLE WIDTH %ss (%d).\n", name, var_get_display_width (var)); @@ -223,6 +234,7 @@ generate_syntax (const struct import_assistant *ia) { struct string s = DS_EMPTY_INITIALIZER; + if (ia->spreadsheet == NULL) { syntax_gen_pspp (&s, "GET DATA" @@ -232,7 +244,6 @@ generate_syntax (const struct import_assistant *ia) if (ia->file.encoding && strcmp (ia->file.encoding, "Auto")) syntax_gen_pspp (&s, " /ENCODING=%sq\n", ia->file.encoding); - intro_append_syntax (ia->intro, &s); @@ -245,7 +256,11 @@ generate_syntax (const struct import_assistant *ia) formats_append_syntax (ia, &s); apply_dict (ia->dict, &s); } - + else + { + return sheet_spec_gen_syntax (ia); + } + return ds_cstr (&s); }