X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Ftext-data-import-dialog.c;h=d24a23242d7a03810de1fff1545cbd679d82767d;hb=1e3875c54e8c220e282ab46f17bebdf4c0dea689;hp=412af5b8f4a1c0e1ac12f5de8c2ff2d55e90e1d8;hpb=ddf35b11f8525281dd9e524a5d322a80bf56a24f;p=pspp diff --git a/src/ui/gui/text-data-import-dialog.c b/src/ui/gui/text-data-import-dialog.c index 412af5b8f4..d24a23242d 100644 --- a/src/ui/gui/text-data-import-dialog.c +++ b/src/ui/gui/text-data-import-dialog.c @@ -95,15 +95,28 @@ text_data_import_assistant (PsppireDataWindow *dw) else { ia->intro = intro_page_create (ia); - ia->separators = separators_page_create (ia); ia->first_line = first_line_page_create (ia); + ia->separators = separators_page_create (ia); } ia->formats = formats_page_create (ia); gtk_widget_show_all (GTK_WIDGET (ia->asst.assistant)); ia->asst.main_loop = g_main_loop_new (NULL, false); - g_main_loop_run (ia->asst.main_loop); + + { + /* + Instead of this block, + A simple g_main_loop_run (ia->asst.main_loop); should work here. But it seems to crash. + I have no idea why. + */ + GMainContext *ctx = g_main_loop_get_context (ia->asst.main_loop); + ia->asst.loop_done = false; + while (! ia->asst.loop_done) + { + g_main_context_iteration (ctx, TRUE); + } + } g_main_loop_unref (ia->asst.main_loop); switch (ia->asst.response) @@ -229,56 +242,23 @@ 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); -#if 0 intro_append_syntax (ia->intro, &s); + ds_put_cstr (&s, " /ARRANGEMENT=DELIMITED\n" " /DELCASE=LINE\n"); - - if (ia->first_line->skip_lines > 0) - ds_put_format (&s, " /FIRSTCASE=%d\n", ia->first_line->skip_lines + 1); - 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"); - ds_put_cstr (&s, " /VARIABLES=\n"); - - var_cnt = dict_get_var_cnt (ia->formats->dict); - for (i = 0; i < var_cnt; i++) - { - struct variable *var = dict_get_var (ia->formats->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 ? "." : ""); - } - - - apply_dict (ia->formats->dict, &s); -#endif + first_line_append_syntax (ia, &s); + separators_append_syntax (ia, &s); + formats_append_syntax (ia, &s); + apply_dict (ia->dict, &s); } else { return sheet_spec_gen_syntax (ia); } - + return ds_cstr (&s); }