X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Frecode-dialog.c;h=642dae02d4a01283276c86356618b79cf7689603;hb=4c4f035bfad520dc54f0d5a9e30e36d4fb009efc;hp=103c85c3250354d2a67c734e925bda58535a4780;hpb=c65449a628d13f4683e7dc7125874608c7152017;p=pspp-builds.git diff --git a/src/ui/gui/recode-dialog.c b/src/ui/gui/recode-dialog.c index 103c85c3..642dae02 100644 --- a/src/ui/gui/recode-dialog.c +++ b/src/ui/gui/recode-dialog.c @@ -25,17 +25,16 @@ #include "recode-dialog.h" #include -#include #include -#include +#include #include #include #include #include #include -#include -#include +#include +#include #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 { @@ -472,14 +470,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); } @@ -488,7 +486,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); } @@ -838,7 +836,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; @@ -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"); @@ -886,7 +883,7 @@ 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), @@ -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); @@ -996,7 +994,7 @@ recode_dialog (struct data_editor *de, gboolean diff) PSPPIRE_DIALOG (get_widget_assert (xml, "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 (xml, "psppire-acr1")); @@ -1087,6 +1085,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); @@ -1096,11 +1095,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); } @@ -1109,6 +1104,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 +1261,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 +1312,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 +1335,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 +1367,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 +1443,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 +1532,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));