Merge "output" into "master"
[pspp-builds.git] / src / ui / gui / find-dialog.c
index faeb8f6490578ad703096f40cbce96cce44886a8..ca0c3b5f4a9bb20b378792db2c7f1664a5d44b46 100644 (file)
@@ -34,6 +34,7 @@ which match particular strings */
 #include <ctype.h>
 #include <sys/types.h>
 #include <regex.h>
+#include <libpspp/cast.h>
 #include <libpspp/message.h>
 
 #include <gtk/gtk.h>
@@ -207,7 +208,7 @@ find_dialog (GObject *o, gpointer data)
 
   buttonbox = get_widget_assert (fd.xml, "find-buttonbox");
 
-  gtk_box_pack_start_defaults (GTK_BOX (buttonbox), find_button);
+  psppire_box_pack_start_defaults (GTK_BOX (buttonbox), find_button);
   gtk_box_reorder_child (GTK_BOX (buttonbox), find_button, 0);
 
   dialog = get_widget_assert (fd.xml, "find-dialog");
@@ -219,7 +220,8 @@ find_dialog (GObject *o, gpointer data)
                "data-store", &ds,
                NULL);
 
-  fd.dict = vs->dict;
+  g_object_get (vs, "dictionary", &fd.dict, NULL);
+
   fd.data = ds->datasheet;
 
   fd.variable_entry        = get_widget_assert (fd.xml, "find-variable-entry");
@@ -241,17 +243,13 @@ find_dialog (GObject *o, gpointer data)
   gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
 
 
-  g_object_set (source, "dictionary", fd.dict,
+  g_object_set (source, "model", fd.dict,
        "selection-mode", GTK_SELECTION_SINGLE,
        NULL);
 
-  psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
-                                source,
-                                fd.variable_entry,
-                                insert_source_row_into_entry,
-                                is_currently_in_entry,
-                                NULL
-                                );
+
+  psppire_selector_set_filter_func (PSPPIRE_SELECTOR (selector),
+                                   is_currently_in_entry);
 
   g_signal_connect (dialog, "refresh", G_CALLBACK (refresh),  &fd);
 
@@ -569,7 +567,8 @@ regexp_label_compare (const struct comparator *cmptr,
 static void
 regexp_destroy (struct comparator *cmptr)
 {
-  struct regexp_comparator *rec = (struct regexp_comparator *) cmptr;
+  struct regexp_comparator *rec
+    = UP_CAST (cmptr, struct regexp_comparator, parent);
 
   regfree (&rec->re);
 }
@@ -577,7 +576,8 @@ regexp_destroy (struct comparator *cmptr)
 static void
 cmptr_value_destroy (struct comparator *cmptr)
 {
-  struct value_comparator *vc = (struct value_comparator *) cmptr;
+  struct value_comparator *vc
+    = UP_CAST (cmptr, struct value_comparator, parent);
   value_destroy (&vc->pattern, var_get_width (cmptr->var));
 }
 
@@ -585,10 +585,8 @@ cmptr_value_destroy (struct comparator *cmptr)
 static struct comparator *
 value_comparator_create (const struct variable *var, const PsppireDict *dict, const char *target)
 {
-  const struct fmt_spec *fmt;
-  int width ;
   struct value_comparator *vc = xzalloc (sizeof (*vc));
-  struct comparator *cmptr = (struct comparator *) vc;
+  struct comparator *cmptr = &vc->parent;
 
   cmptr->flags = 0;
   cmptr->var = var;
@@ -596,12 +594,7 @@ value_comparator_create (const struct variable *var, const PsppireDict *dict, co
   cmptr->destroy = cmptr_value_destroy;
   cmptr->dict = dict;
 
-  width = var_get_width (var);
-  fmt = var_get_write_format (var);
-
-  value_init (&vc->pattern, width);
-
-  text_to_value (target, &vc->pattern, dict, *var_get_write_format (var) );
+  text_to_value (target, dict, var, &vc->pattern);
 
   return cmptr;
 }
@@ -612,7 +605,7 @@ string_comparator_create (const struct variable *var, const PsppireDict *dict,
                          enum string_cmp_flags flags)
 {
   struct string_comparator *ssc = xzalloc (sizeof (*ssc));
-  struct comparator *cmptr = (struct comparator *) ssc;
+  struct comparator *cmptr = &ssc->parent;
 
   cmptr->flags = flags;
   cmptr->var = var;
@@ -635,7 +628,7 @@ regexp_comparator_create (const struct variable *var, const PsppireDict *dict, c
 {
   int code;
   struct regexp_comparator *rec = xzalloc (sizeof (*rec));
-  struct comparator *cmptr = (struct comparator *) rec;
+  struct comparator *cmptr = &rec->parent;
 
   cmptr->flags = flags;
   cmptr->var = var;