Intro page: contruction is initialisation
authorJohn Darrington <john@darrington.wattle.id.au>
Tue, 22 Jan 2013 19:04:44 +0000 (20:04 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 16 Feb 2013 14:03:16 +0000 (15:03 +0100)
src/ui/gui/page-assistant.c
src/ui/gui/page-intro.c
src/ui/gui/text-data-import-dialog.c

index 9c95005e4d02820d5472653b146d19ef0bca568c..1ebc7405fedd210f564312a54f5efb96bf09c8fe 100644 (file)
@@ -76,15 +76,15 @@ init_assistant (GtkWindow *parent_window)
   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);
index 56b182686c2502c2a186ce37854341624a3a6367..4034834c345957f2905f11d657e4fe4c22bfa5f5 100644 (file)
@@ -64,19 +64,19 @@ struct import_assistant;
 \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);
 
@@ -106,13 +106,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 "
@@ -147,6 +147,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 +161,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)));
index b8d357a71317b3144b78609bd2ae8a0e6726b83f..6d7e0777db4ebb27fcb4163dbfed204267fe2a61 100644 (file)
@@ -80,11 +80,9 @@ text_data_import_assistant (PsppireDataWindow *dw)
       return;
     }
 
-
   ssp = ia->sheet_spec;
   if (ssp->spreadsheet == NULL)
     {
-      init_intro_page (ia);
       init_first_line_page (ia);
       init_separators_page (ia);
     }