ia = xzalloc (sizeof *ia);
struct assistant *a = &ia->asst;
+ a->builder = builder_new ("text-data-import.ui");
+ a->assistant = GTK_ASSISTANT (gtk_assistant_new ());
- ia->intro = xzalloc (sizeof *ia->intro);
+ ia->intro = intro_page_create (ia);
ia->sheet_spec = xzalloc (sizeof *ia->sheet_spec);
ia->first_line = xzalloc (sizeof *ia->first_line);
ia->separators = xzalloc (sizeof *ia->separators);
ia->formats = xzalloc (sizeof *ia->formats);
- a->builder = builder_new ("text-data-import.ui");
- a->assistant = GTK_ASSISTANT (gtk_assistant_new ());
g_signal_connect (a->assistant, "prepare", G_CALLBACK (on_prepare), ia);
g_signal_connect (a->assistant, "cancel", G_CALLBACK (on_cancel), ia);
g_signal_connect (a->assistant, "close", G_CALLBACK (on_close), ia);
\f
/* The "intro" page of the assistant. */
-static void on_intro_amount_changed (struct import_assistant *);
+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);
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 "
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. */
/* 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)));