Only one spreadsheet
[pspp] / src / ui / gui / chi-square-dialog.c
index ccfa48ec33138dc42aed6bb29fc7e4150c653c11..4032b61ca6d44ced2217e281fe460d2032bab2f6 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2010  Free Software Foundation
+   Copyright (C) 2010, 2011, 2012  Free Software Foundation
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -23,9 +23,9 @@
 #include "psppire-acr.h"
 #include "dialog-common.h"
 
-#include "helper.h"
+#include "builder-wrapper.h"
 #include "executor.h"
-
+#include "helper.h"
 
 #include <gtk/gtk.h>
 
@@ -46,14 +46,6 @@ struct chisquare_dialog
   GtkListStore *expected_list;
 };
 
-static void
-set_sensitivity (GtkToggleButton *button, GtkWidget *w)
-{
-  gboolean state = gtk_toggle_button_get_active (button);
-  gtk_widget_set_sensitive (w, state);
-}
-
-
 static gboolean
 dialog_state_valid (gpointer data)
 {
@@ -90,40 +82,35 @@ static char *
 generate_syntax (const struct chisquare_dialog *scd)
 {
   gchar *text;
-  GString *string;
+  struct string dss;
 
+  ds_init_cstr (&dss, "NPAR TEST\n\t/CHISQUARE=");
 
-  string = g_string_new ("NPAR TEST\n\t/CHISQUARE=");
-
-  psppire_var_view_append_names (PSPPIRE_VAR_VIEW (scd->var_view), 0, string);
-
+  psppire_var_view_append_names_str (PSPPIRE_VAR_VIEW (scd->var_view), 0, &dss);
 
   if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->range_button)))
     {
-      g_string_append (string, "(");
+      ds_put_cstr (&dss, "(");
       
-      g_string_append (string
+      ds_put_cstr (&dss
                       gtk_entry_get_text (GTK_ENTRY (scd->value_lower)));
 
-      g_string_append (string, ", ");
+      ds_put_cstr (&dss, ", ");
 
-      g_string_append (string,
+      ds_put_cstr (&dss,
                       gtk_entry_get_text (GTK_ENTRY (scd->value_upper)));
 
-      g_string_append (string, ")");
+      ds_put_cstr (&dss, ")");
     }
 
-
-
-
   if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->values_button)))
     {
       GtkListStore *ls = scd->expected_list;
       GtkTreeIter iter;
       gboolean ok;
 
-      g_string_append (string, "\n\t");
-      g_string_append (string, "/EXPECTED = ");
+      ds_put_cstr (&dss, "\n\t");
+      ds_put_cstr (&dss, "/EXPECTED = ");
 
       
       for (ok = gtk_tree_model_get_iter_first (GTK_TREE_MODEL(ls),
@@ -135,18 +122,15 @@ generate_syntax (const struct chisquare_dialog *scd)
 
          gtk_tree_model_get (GTK_TREE_MODEL (ls), &iter, 0, &v, -1);
 
-         g_string_append_printf (string, " %g", v);
+         ds_put_c_format (&dss, " %g", v);
        }
-
-
-
     }
 
-  g_string_append (string, ".\n");
+  ds_put_cstr (&dss, ".\n");
 
-  text = string->str;
+  text = ds_steal_cstr (&dss);
 
-  g_string_free (string, FALSE);
+  ds_destroy (&dss);
 
   return text;
 }
@@ -201,14 +185,14 @@ chisquare_dialog (PsppireDataWindow *dw)
                NULL);
 
 
-  g_signal_connect (csd.range_button, "toggled", G_CALLBACK (set_sensitivity), 
+  g_signal_connect (csd.range_button, "toggled", G_CALLBACK (set_sensitivity_from_toggle), 
                    range_table);
 
 
-  g_signal_connect (csd.values_button, "toggled", G_CALLBACK (set_sensitivity), 
+  g_signal_connect (csd.values_button, "toggled", G_CALLBACK (set_sensitivity_from_toggle), 
                    values_acr);
 
-  g_signal_connect (csd.values_button, "toggled", G_CALLBACK (set_sensitivity), 
+  g_signal_connect (csd.values_button, "toggled", G_CALLBACK (set_sensitivity_from_toggle), 
                    expected_value_entry);
 
 
@@ -228,7 +212,7 @@ chisquare_dialog (PsppireDataWindow *dw)
   switch (response)
     {
     case GTK_RESPONSE_OK:
-      g_free (execute_syntax_string (generate_syntax (&csd)));
+      g_free (execute_syntax_string (dw, generate_syntax (&csd)));
       break;
     case PSPPIRE_RESPONSE_PASTE:
       g_free (paste_syntax_to_window (generate_syntax (&csd)));
@@ -237,5 +221,6 @@ chisquare_dialog (PsppireDataWindow *dw)
       break;
     }
 
+  g_object_unref (csd.expected_list);
   g_object_unref (xml);
 }