X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Frecode-dialog.c;h=2f0c332dbcea47cbbbbe7bc75b2dcc07b3fc2738;hb=fd0c595927a23ea0373551a1eed4570388ea0fc5;hp=9d1ad79d6efcc4e29ef87e27bcc24b2d1be0d225;hpb=b40f8032efcf6099f665ce8e7c0669bf0e9d655e;p=pspp-builds.git diff --git a/src/ui/gui/recode-dialog.c b/src/ui/gui/recode-dialog.c index 9d1ad79d..2f0c332d 100644 --- a/src/ui/gui/recode-dialog.c +++ b/src/ui/gui/recode-dialog.c @@ -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 @@ -24,16 +24,21 @@ #include "recode-dialog.h" +#include "executor.h" + +#include "psppire-var-view.h" + #include +#include #include -#include +#include #include #include #include #include #include -#include + #include #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; } @@ -470,14 +475,14 @@ toggle_sensitivity (GtkToggleButton *button, GtkWidget *target) gtk_widget_set_sensitive (target, state); } -static void recode_dialog (struct data_editor *de, gboolean diff); +static void recode_dialog (PsppireDataWindow *de, gboolean diff); /* Pops up the Recode Same version of the dialog box */ void recode_same_dialog (GObject *o, gpointer data) { - struct data_editor *de = data; + PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data); recode_dialog (de, FALSE); } @@ -486,7 +491,7 @@ recode_same_dialog (GObject *o, gpointer data) void recode_different_dialog (GObject *o, gpointer data) { - struct data_editor *de = data; + PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data); recode_dialog (de, TRUE); } @@ -836,7 +841,7 @@ set_acr (struct recode_dialog *rd) } static void -recode_dialog (struct data_editor *de, gboolean diff) +recode_dialog (PsppireDataWindow *de, gboolean diff) { gint response; @@ -864,7 +869,7 @@ recode_dialog (struct data_editor *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 (), @@ -882,19 +887,11 @@ recode_dialog (struct data_editor *de, gboolean diff) rd.different = diff; - gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), de->parent.window); - + gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de)); - attach_dictionary_to_treeview (GTK_TREE_VIEW (rd.dict_treeview), - vs->dict, - GTK_SELECTION_MULTIPLE, NULL); + g_object_set (rd.dict_treeview, "model", rd.dict, NULL); - - if ( ! rd.different ) - { - set_dest_model (GTK_TREE_VIEW (rd.variable_treeview), vs->dict); - } - else + if (rd.different) { GtkTreeSelection *sel; GtkTreeViewColumn *col; @@ -905,7 +902,6 @@ recode_dialog (struct data_editor *de, gboolean diff) G_TYPE_STRING); - gtk_tree_view_set_model (GTK_TREE_VIEW (rd.variable_treeview), GTK_TREE_MODEL (rd.var_map)); @@ -915,8 +911,8 @@ recode_dialog (struct data_editor *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); @@ -949,15 +945,6 @@ recode_dialog (struct data_editor *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 */ @@ -993,7 +980,7 @@ recode_dialog (struct data_editor *de, gboolean diff) PSPPIRE_DIALOG (get_widget_assert (builder, "old-new-values-dialog")); gtk_window_set_transient_for (GTK_WINDOW (rd.old_and_new_dialog), - de->parent.window); + GTK_WINDOW (de)); rd.acr = PSPPIRE_ACR (get_widget_assert (builder, "psppire-acr1")); @@ -1084,6 +1071,7 @@ recode_dialog (struct data_editor *de, gboolean diff) case GTK_RESPONSE_OK: { gchar *syntax = generate_syntax (&rd); + struct getl_interface *sss = create_syntax_string_source (syntax); execute_syntax (sss); @@ -1093,11 +1081,7 @@ recode_dialog (struct data_editor *de, gboolean diff) case PSPPIRE_RESPONSE_PASTE: { gchar *syntax = generate_syntax (&rd); - - struct syntax_editor *se = - (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL); - - gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1); + paste_syntax_in_new_window (syntax); g_free (syntax); } @@ -1279,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)); @@ -1288,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); @@ -1445,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");