New file: builder-wrapper.h and builder-wrapper.c
[pspp-builds.git] / src / ui / gui / select-cases-dialog.c
index 0f50c91a3f96cf8dcbe60049cdfaa4158c74efb1..be0a957f6c46e3c6e15140358bfe55945cbfe654 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 
    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
 #include "dict-display.h"
 #include "dialog-common.h"
 #include "widget-io.h"
-#include <language/syntax-string-source.h>
+#include "psppire-scanf.h"
+#include "builder-wrapper.h"
 #include "helper.h"
+
 #include <xalloc.h>
 
 
@@ -104,7 +106,7 @@ sample_subdialog (GtkButton *b, gpointer data)
 
   if ( ! scd->hbox1 )
     {
-      scd->hbox1 = widget_scanf (gettext (label1), &scd->spinbutton);
+      scd->hbox1 = psppire_scanf_new (gettext (label1), &scd->spinbutton);
 
       gtk_widget_show (scd->hbox1);
 
@@ -121,7 +123,7 @@ sample_subdialog (GtkButton *b, gpointer data)
   if ( ! scd->hbox2 )
     {
       scd->hbox2 =
-       widget_scanf (gettext (label2), &scd->spinbutton1, &scd->spinbutton2);
+       psppire_scanf_new (gettext (label2), &scd->spinbutton1, &scd->spinbutton2);
 
       gtk_spin_button_set_range (GTK_SPIN_BUTTON (scd->spinbutton1),
                                 1, case_count);
@@ -348,22 +350,10 @@ select_cases_dialog (PsppireDataWindow *de)
   switch (response)
     {
     case GTK_RESPONSE_OK:
-      {
-       gchar *syntax = generate_syntax (&scd);
-
-       struct getl_interface *sss = create_syntax_string_source (syntax);
-       execute_syntax (sss);
-
-       g_free (syntax);
-      }
+      g_free (execute_syntax_string (de, generate_syntax (&scd)));
       break;
     case PSPPIRE_RESPONSE_PASTE:
-      {
-       gchar *syntax = generate_syntax (&scd);
-        paste_syntax_to_window (syntax);
-
-       g_free (syntax);
-      }
+      g_free (paste_syntax_to_window (generate_syntax (&scd)));
       break;
     default:
       break;
@@ -379,7 +369,7 @@ generate_syntax_filter (const struct select_cases_dialog *scd)
   gchar *text = NULL;
   GString *string = g_string_new ("");
 
-  const gchar filter[]="filter_$";
+  const gchar *filter = "filter_$";
   const gchar key[]="case_$";
 
   if ( gtk_toggle_button_get_active
@@ -475,6 +465,13 @@ generate_syntax_filter (const struct select_cases_dialog *scd)
       g_string_append (string, "EXECUTE.\n");
 
     }
+  else
+    {
+      GtkEntry *entry =
+       GTK_ENTRY (get_widget_assert (scd->xml,
+                                     "filter-variable-entry"));
+      filter = gtk_entry_get_text (entry);
+    }
 
 
   g_string_append_printf  (string, "FILTER BY %s.\n", filter);