New module psppire-var-view
[pspp-builds.git] / src / ui / gui / recode-dialog.c
index e5de4597cb011b0dc67999d9342eef487850938b..2f0c332dbcea47cbbbbe7bc75b2dcc07b3fc2738 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2007  Free Software Foundation
+   Copyright (C) 2007, 2009  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
 
 #include "recode-dialog.h"
 
+#include "executor.h"
+
+#include "psppire-var-view.h"
+
 #include <gtk/gtk.h>
 
+#include <xalloc.h>
 #include <language/syntax-string-source.h>
 #include <ui/gui/psppire-data-window.h>
 #include <ui/gui/dialog-common.h>
@@ -33,7 +38,7 @@
 #include <ui/gui/helper.h>
 #include <ui/gui/psppire-dialog.h>
 #include <ui/gui/psppire-var-store.h>
-#include <ui/gui/helper.h>
+
 #include <ui/syntax-gen.h>
 
 #include "psppire-acr.h"
@@ -71,7 +76,7 @@ new_value_copy (struct new_value *nv)
   struct new_value *copy = g_memdup (nv, sizeof (*copy));
 
   if ( nv->type == NV_STRING )
-    copy->v.s = strdup (nv->v.s);
+    copy->v.s = xstrdup (nv->v.s);
 
   return copy;
 }
@@ -864,7 +869,7 @@ recode_dialog (PsppireDataWindow *de, gboolean diff)
   rd.new_name_entry = get_widget_assert (builder, "dest-name-entry");
   rd.new_label_entry = get_widget_assert (builder, "dest-label-entry");
 
-  rd.dict = vs->dict;
+  g_object_get (vs, "dictionary", &rd.dict, NULL);
 
   rd.value_map = gtk_list_store_new (2,
                                     old_value_get_type (),
@@ -884,14 +889,9 @@ recode_dialog (PsppireDataWindow *de, gboolean diff)
 
   gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
 
+  g_object_set (rd.dict_treeview, "model", rd.dict, NULL);
 
-  g_object_set (rd.dict_treeview, "model", vs->dict, NULL);
-
-  if ( ! rd.different )
-    {
-      set_dest_model (GTK_TREE_VIEW (rd.variable_treeview), vs->dict);
-    }
-  else
+  if (rd.different)
     {
       GtkTreeSelection *sel;
       GtkTreeViewColumn *col;
@@ -902,7 +902,6 @@ recode_dialog (PsppireDataWindow *de, gboolean diff)
                                                    G_TYPE_STRING);
 
 
-
       gtk_tree_view_set_model (GTK_TREE_VIEW (rd.variable_treeview),
                               GTK_TREE_MODEL (rd.var_map));
 
@@ -912,8 +911,8 @@ recode_dialog (PsppireDataWindow *de, gboolean diff)
                                                  NULL);
 
       gtk_tree_view_column_set_cell_data_func (col, renderer,
-                                              cell_var_name,
-                                              vs->dict, 0);
+                                              XXX_cell_var_name,
+                                              rd.dict, 0);
 
 
       gtk_tree_view_append_column (GTK_TREE_VIEW (rd.variable_treeview), col);
@@ -946,15 +945,6 @@ recode_dialog (PsppireDataWindow *de, gboolean diff)
                        G_CALLBACK (select_something), &rd);
     }
 
-
-
-  psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
-                                rd.dict_treeview,
-                                rd.variable_treeview,
-                                insert_source_row_into_tree_view,
-                                NULL,
-                                NULL);
-
   psppire_selector_set_allow (PSPPIRE_SELECTOR (selector), homogeneous_types);
 
   /* Set up the Old & New Values subdialog */
@@ -1273,7 +1263,6 @@ run_old_and_new_dialog (struct recode_dialog *rd)
     /* Find the type of the first variable (it's invariant that
        all variables are of the same type) */
     const struct variable *v;
-    gint idx;
     GtkTreeIter iter;
     GtkTreeModel *model =
       gtk_tree_view_get_model (GTK_TREE_VIEW (rd->variable_treeview));
@@ -1282,9 +1271,7 @@ run_old_and_new_dialog (struct recode_dialog *rd)
 
     g_return_if_fail (not_empty);
 
-    gtk_tree_model_get (model, &iter, 0, &idx, -1);
-
-    v = psppire_dict_get_variable (rd->dict, idx);
+    gtk_tree_model_get (model, &iter, 0, &v, -1);
 
     rd->input_var_is_string = var_is_alpha (v);
 
@@ -1439,7 +1426,7 @@ generate_syntax (const struct recode_dialog *rd)
 
   g_string_append (str, "\nRECODE ");
 
-  append_variable_names (str, rd->dict, GTK_TREE_VIEW (rd->variable_treeview), 0);
+  psppire_var_view_append_names (PSPPIRE_VAR_VIEW (rd->variable_treeview), 0, str);
 
   g_string_append (str, "\n\t");