New objects psppire-window and psppire-syntax-window.
[pspp-builds.git] / src / ui / gui / recode-dialog.c
index 103c85c3250354d2a67c734e925bda58535a4780..af6cbfa0b6043bfab0bb77259ffef3d2f29431e0 100644 (file)
@@ -25,7 +25,6 @@
 #include "recode-dialog.h"
 
 #include <gtk/gtk.h>
-#include <gtksheet/gtksheet.h>
 
 #include <language/syntax-string-source.h>
 #include <ui/gui/data-editor.h>
@@ -34,8 +33,8 @@
 #include <ui/gui/helper.h>
 #include <ui/gui/psppire-dialog.h>
 #include <ui/gui/psppire-var-store.h>
-#include <ui/gui/syntax-editor.h>
-#include <libpspp/syntax-gen.h>
+#include <ui/gui/psppire-syntax-window.h>
+#include <ui/syntax-gen.h>
 
 #include "psppire-acr.h"
 
@@ -326,7 +325,6 @@ struct recode_dialog
   GtkWidget *ov_high_down_entry;
 
   GtkListStore *value_map;
-  GtkListStore *local_store;
 
   /* Indicates that the INTO {new variables} form of the dialog
      is being used */
@@ -375,7 +373,7 @@ enum {
   COL_OLD,
   COL_NEW_NAME,
   COL_NEW_LABEL,
-  n_COLS
+  n_COL_VARS
 };
 
 enum {
@@ -854,11 +852,10 @@ recode_dialog (struct data_editor *de, gboolean diff)
 
   GtkWidget *output_variable_box = get_widget_assert (xml,"frame4");
 
-  GtkSheet *var_sheet =
-    GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
 
+  PsppireVarStore *vs = NULL;
 
-  PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet));
+  g_object_get (de->data_editor, "var-store", &vs, NULL);
 
   rd.change_button = get_widget_assert (xml, "change-button");
 
@@ -904,7 +901,7 @@ recode_dialog (struct data_editor *de, gboolean diff)
       GtkTreeViewColumn *col;
       GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
 
-      rd.var_map = gtk_list_store_new (n_COLS, G_TYPE_INT,
+      rd.var_map = gtk_list_store_new (n_COL_VARS, G_TYPE_INT,
                                                    G_TYPE_STRING,
                                                    G_TYPE_STRING);
 
@@ -959,6 +956,7 @@ recode_dialog (struct data_editor *de, gboolean diff)
                                 rd.dict_treeview,
                                 rd.variable_treeview,
                                 insert_source_row_into_tree_view,
+                                NULL,
                                 NULL);
 
   psppire_selector_set_allow (PSPPIRE_SELECTOR (selector), homogeneous_types);
@@ -1097,10 +1095,11 @@ recode_dialog (struct data_editor *de, gboolean diff)
       {
        gchar *syntax = generate_syntax (&rd);
 
-       struct syntax_editor *se =
-         (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL);
+        GtkWidget *se = psppire_syntax_window_new ();
 
-       gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1);
+       gtk_text_buffer_insert_at_cursor (PSPPIRE_SYNTAX_WINDOW (se)->buffer, syntax, -1);
+
+       gtk_widget_show (se);
 
        g_free (syntax);
       }
@@ -1109,6 +1108,10 @@ recode_dialog (struct data_editor *de, gboolean diff)
       break;
     }
 
+
+  gtk_list_store_clear (GTK_LIST_STORE (rd.value_map));
+  g_object_unref (rd.value_map);
+
   g_object_unref (xml);
 }
 
@@ -1262,11 +1265,9 @@ static void
 run_old_and_new_dialog (struct recode_dialog *rd)
 {
   gint response;
-  rd->local_store = clone_list_store (rd->value_map);
-
-  g_object_ref (rd->local_store);
+  GtkListStore *local_store = clone_list_store (rd->value_map);
 
-  psppire_acr_set_model (rd->acr, rd->local_store);
+  psppire_acr_set_model (rd->acr, local_store);
   psppire_acr_set_get_value_func (rd->acr, set_value, rd);
 
   gtk_window_set_title (GTK_WINDOW (rd->old_and_new_dialog),
@@ -1315,7 +1316,12 @@ run_old_and_new_dialog (struct recode_dialog *rd)
 
 
   if ( response == PSPPIRE_RESPONSE_CONTINUE )
-      rd->value_map = clone_list_store (rd->local_store);
+    {
+      g_object_unref (rd->value_map);
+      rd->value_map = clone_list_store (local_store);
+    }
+  else
+    g_object_unref (local_store);
 
 
   psppire_dialog_notify_change (PSPPIRE_DIALOG (rd->dialog));
@@ -1333,9 +1339,8 @@ new_value_append_syntax (GString *str, const struct new_value *nv)
       break;
     case NV_STRING:
       {
-       struct string ds;
-       ds_init_cstr (&ds, nv->v.s);
-       gen_quoted_string (&ds);
+       struct string ds = DS_EMPTY_INITIALIZER;
+       syntax_gen_string (&ds, ss_cstr (nv->v.s));
        g_string_append (str, ds_cstr (&ds));
        ds_destroy (&ds);
       }
@@ -1366,9 +1371,8 @@ old_value_append_syntax (GString *str, const struct old_value *ov)
       break;
     case OV_STRING:
       {
-       struct string ds;
-       ds_init_cstr (&ds, ov->v.s);
-       gen_quoted_string (&ds);
+       struct string ds = DS_EMPTY_INITIALIZER;
+       syntax_gen_string (&ds, ss_cstr (ov->v.s));
        g_string_append (str, ds_cstr (&ds));
        ds_destroy (&ds);
       }
@@ -1443,7 +1447,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));
+  append_variable_names (str, rd->dict, GTK_TREE_VIEW (rd->variable_treeview), 0);
 
   g_string_append (str, "\n\t");
 
@@ -1532,9 +1536,9 @@ generate_syntax (const struct recode_dialog *rd)
              continue;
            }
 
-         ds_init_cstr (&ls, label);
+         ds_init_empty (&ls);
+         syntax_gen_string (&ls, ss_cstr (label));
          g_free (label);
-         gen_quoted_string (&ls);
 
          g_string_append_printf (str, "\nVARIABLE LABELS %s %s.",
                                  name, ds_cstr (&ls));