X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpage-intro.c;h=6db2bee688ffe6fe2b73461a2682ef8e674ae991;hb=03a7b96a587a58bda342b4eb5ce5f935880ba2b7;hp=56b182686c2502c2a186ce37854341624a3a6367;hpb=001db1bf60acf85491463edcd557aad6e661195c;p=pspp diff --git a/src/ui/gui/page-intro.c b/src/ui/gui/page-intro.c index 56b182686c..6db2bee688 100644 --- a/src/ui/gui/page-intro.c +++ b/src/ui/gui/page-intro.c @@ -16,11 +16,12 @@ #include +#include "page-intro.h" + #include "ui/gui/text-data-import-dialog.h" #include #include -#include #include #include #include @@ -36,7 +37,6 @@ #include "libpspp/i18n.h" #include "libpspp/line-reader.h" #include "libpspp/message.h" -#include "ui/gui/checkbox-treeview.h" #include "ui/gui/dialog-common.h" #include "ui/gui/executor.h" #include "ui/gui/helper.h" @@ -46,11 +46,9 @@ #include "ui/gui/psppire-encoding-selector.h" #include "ui/gui/psppire-empty-list-store.h" #include "ui/gui/psppire-var-sheet.h" -#include "ui/gui/psppire-var-store.h" #include "ui/gui/psppire-scanf.h" #include "ui/syntax-gen.h" -#include "gl/error.h" #include "gl/intprops.h" #include "gl/xalloc.h" @@ -64,19 +62,30 @@ struct import_assistant; /* The "intro" page of the assistant. */ -static void on_intro_amount_changed (struct import_assistant *); +/* The introduction page of the assistant. */ +struct intro_page + { + GtkWidget *page; + GtkWidget *all_cases_button; + GtkWidget *n_cases_button; + GtkWidget *n_cases_spin; + GtkWidget *percent_button; + GtkWidget *percent_spin; + }; + +static void on_intro_amount_changed (struct intro_page *); /* Initializes IA's intro substructure. */ -void -init_intro_page (struct import_assistant *ia) +struct intro_page * +intro_page_create (struct import_assistant *ia) { GtkBuilder *builder = ia->asst.builder; - struct intro_page *p = ia->intro; struct string s; GtkWidget *hbox_n_cases ; GtkWidget *hbox_percent ; GtkWidget *table ; + struct intro_page *p = xzalloc (sizeof (*p)); p->n_cases_spin = gtk_spin_button_new_with_range (0, INT_MAX, 100); @@ -84,17 +93,17 @@ init_intro_page (struct import_assistant *ia) table = get_widget_assert (builder, "button-table"); - gtk_table_attach_defaults (GTK_TABLE (table), hbox_n_cases, - 1, 2, - 1, 2); + gtk_grid_attach (GTK_GRID (table), hbox_n_cases, + 1, 1, + 1, 1); p->percent_spin = gtk_spin_button_new_with_range (0, 100, 10); hbox_percent = psppire_scanf_new (_("Only the first %3d %% of file (approximately)"), &p->percent_spin); - gtk_table_attach_defaults (GTK_TABLE (table), hbox_percent, - 1, 2, - 2, 3); + gtk_grid_attach (GTK_GRID (table), hbox_percent, + 1, 2, + 1, 1); p->page = add_page_to_assistant (ia, get_widget_assert (builder, "Intro"), GTK_ASSISTANT_PAGE_INTRO); @@ -106,13 +115,13 @@ init_intro_page (struct import_assistant *ia) p->percent_button = get_widget_assert (builder, "import-percent"); g_signal_connect_swapped (p->all_cases_button, "toggled", - G_CALLBACK (on_intro_amount_changed), ia); + G_CALLBACK (on_intro_amount_changed), p); g_signal_connect_swapped (p->n_cases_button, "toggled", - G_CALLBACK (on_intro_amount_changed), ia); + G_CALLBACK (on_intro_amount_changed), p); g_signal_connect_swapped (p->percent_button, "toggled", - G_CALLBACK (on_intro_amount_changed), ia); + G_CALLBACK (on_intro_amount_changed), p); - on_intro_amount_changed (ia); + on_intro_amount_changed (p); ds_init_empty (&s); ds_put_cstr (&s, _("This assistant will guide you through the process of " @@ -121,16 +130,16 @@ init_intro_page (struct import_assistant *ia) "commas, or other delimiters.\n\n")); if (ia->file.total_is_exact) ds_put_format ( - &s, ngettext ("The selected file contains %zu line of text. ", - "The selected file contains %zu lines of text. ", + &s, ngettext ("The selected file contains %'zu line of text. ", + "The selected file contains %'zu lines of text. ", ia->file.line_cnt), ia->file.line_cnt); else if (ia->file.total_lines > 0) { ds_put_format ( &s, ngettext ( - "The selected file contains approximately %lu line of text. ", - "The selected file contains approximately %lu lines of text. ", + "The selected file contains approximately %'lu line of text. ", + "The selected file contains approximately %'lu lines of text. ", ia->file.total_lines), ia->file.total_lines); ds_put_format ( @@ -147,6 +156,8 @@ init_intro_page (struct import_assistant *ia) gtk_label_set_text (GTK_LABEL (get_widget_assert (builder, "intro-label")), ds_cstr (&s)); ds_destroy (&s); + + return p; } /* Resets IA's intro page to its initial state. */ @@ -159,10 +170,8 @@ reset_intro_page (struct import_assistant *ia) /* Called when one of the radio buttons is clicked. */ static void -on_intro_amount_changed (struct import_assistant *ia) +on_intro_amount_changed (struct intro_page *p) { - struct intro_page *p = ia->intro; - gtk_widget_set_sensitive (p->n_cases_spin, gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (p->n_cases_button))); @@ -171,3 +180,17 @@ on_intro_amount_changed (struct import_assistant *ia) gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (p->percent_button))); } + + +void +intro_append_syntax (const struct intro_page *p, struct string *s) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (p->n_cases_button))) + ds_put_format (s, " /IMPORTCASE=FIRST %d\n", + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (p->n_cases_spin))); + else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (p->percent_button))) + ds_put_format (s, " /IMPORTCASE=PERCENT %d\n", + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (p->percent_spin))); + else + ds_put_cstr (s, " /IMPORTCASE=ALL\n"); +}