X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Frecode-dialog.c;h=0bb82eb335a9a6d3c75a13f6c1cf34e47863c8a3;hb=66153a44d861ccddf6a176ec5a94ffb959232ad6;hp=3468e580c8fe8068cb3306110bfcee92fd82ffab;hpb=1bcb0e4c5d3084983b86675187088bb3ad906cc2;p=pspp-builds.git diff --git a/src/ui/gui/recode-dialog.c b/src/ui/gui/recode-dialog.c index 3468e580..0bb82eb3 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,18 +24,20 @@ #include "recode-dialog.h" +#include "executor.h" + #include -#include +#include #include -#include +#include #include #include #include #include #include -#include -#include + +#include #include "psppire-acr.h" @@ -72,7 +74,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; } @@ -374,7 +376,7 @@ enum { COL_OLD, COL_NEW_NAME, COL_NEW_LABEL, - n_COLS + n_COL_VARS }; enum { @@ -471,14 +473,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); } @@ -487,7 +489,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); } @@ -837,37 +839,35 @@ set_acr (struct recode_dialog *rd) } static void -recode_dialog (struct data_editor *de, gboolean diff) +recode_dialog (PsppireDataWindow *de, gboolean diff) { gint response; struct recode_dialog rd; - GladeXML *xml = XML_NEW ("recode.glade"); + GtkBuilder *builder = builder_new ("recode.ui"); + GtkWidget *selector = get_widget_assert (builder, "psppire-selector1"); - GtkWidget *selector = get_widget_assert (xml, "psppire-selector1"); + GtkWidget *oldandnew = get_widget_assert (builder, "button1"); - GtkWidget *oldandnew = get_widget_assert (xml, "button1"); + GtkWidget *output_variable_box = get_widget_assert (builder,"frame4"); - GtkWidget *output_variable_box = get_widget_assert (xml,"frame4"); - GtkSheet *var_sheet = - GTK_SHEET (get_widget_assert (de->xml, "variable_sheet")); + PsppireVarStore *vs = NULL; + g_object_get (de->data_editor, "var-store", &vs, NULL); - PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet)); + rd.change_button = get_widget_assert (builder, "change-button"); - rd.change_button = get_widget_assert (xml, "change-button"); + rd.dialog = get_widget_assert (builder, "recode-dialog"); + rd.dict_treeview = get_widget_assert (builder, "treeview1"); + rd.variable_treeview = get_widget_assert (builder, "treeview2"); + rd.new_name_entry = get_widget_assert (builder, "dest-name-entry"); + rd.new_label_entry = get_widget_assert (builder, "dest-label-entry"); - rd.dialog = get_widget_assert (xml, "recode-dialog"); - rd.dict_treeview = get_widget_assert (xml, "treeview1"); - rd.variable_treeview = get_widget_assert (xml, "treeview2"); - rd.new_name_entry = get_widget_assert (xml, "dest-name-entry"); - rd.new_label_entry = get_widget_assert (xml, "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 (), @@ -885,17 +885,14 @@ 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, "dictionary", rd.dict, NULL); if ( ! rd.different ) { - set_dest_model (GTK_TREE_VIEW (rd.variable_treeview), vs->dict); + set_dest_model (GTK_TREE_VIEW (rd.variable_treeview), rd.dict); } else { @@ -903,7 +900,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); @@ -919,7 +916,7 @@ recode_dialog (struct data_editor *de, gboolean diff) gtk_tree_view_column_set_cell_data_func (col, renderer, cell_var_name, - vs->dict, 0); + rd.dict, 0); gtk_tree_view_append_column (GTK_TREE_VIEW (rd.variable_treeview), col); @@ -965,40 +962,40 @@ recode_dialog (struct data_editor *de, gboolean diff) /* Set up the Old & New Values subdialog */ { - rd.string_button = get_widget_assert (xml, "checkbutton1"); - rd.width_entry = get_widget_assert (xml, "spinbutton1"); + rd.string_button = get_widget_assert (builder, "checkbutton1"); + rd.width_entry = get_widget_assert (builder, "spinbutton1"); - rd.convert_button = get_widget_assert (xml, "checkbutton2"); + rd.convert_button = get_widget_assert (builder, "checkbutton2"); - rd.ov_range_lower_entry = get_widget_assert (xml, "entry5"); - rd.ov_range_upper_entry = get_widget_assert (xml, "entry3"); - rd.ov_low_up_entry = get_widget_assert (xml, "entry6"); - rd.ov_high_down_entry = get_widget_assert (xml, "entry7"); + rd.ov_range_lower_entry = get_widget_assert (builder, "entry5"); + rd.ov_range_upper_entry = get_widget_assert (builder, "entry3"); + rd.ov_low_up_entry = get_widget_assert (builder, "entry6"); + rd.ov_high_down_entry = get_widget_assert (builder, "entry7"); - rd.new_value_entry = get_widget_assert (xml, "entry1"); - rd.ov_value_entry = get_widget_assert (xml, "entry2"); + rd.new_value_entry = get_widget_assert (builder, "entry1"); + rd.ov_value_entry = get_widget_assert (builder, "entry2"); - rd.toggle[BUTTON_NEW_VALUE] = get_widget_assert (xml, "radiobutton1"); - rd.toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (xml, "radiobutton2"); - rd.toggle[BUTTON_NEW_COPY] = get_widget_assert (xml, "radiobutton3"); - rd.toggle[BUTTON_OLD_VALUE] = get_widget_assert (xml, "radiobutton4"); - rd.toggle[BUTTON_OLD_SYSMIS] = get_widget_assert (xml, "radiobutton6"); - rd.toggle[BUTTON_OLD_MISSING]= get_widget_assert (xml, "radiobutton7"); - rd.toggle[BUTTON_OLD_RANGE] = get_widget_assert (xml, "radiobutton8"); - rd.toggle[BUTTON_OLD_LOW_UP] = get_widget_assert (xml, "radiobutton10"); - rd.toggle[BUTTON_OLD_HIGH_DOWN] = get_widget_assert (xml, "radiobutton5"); - rd.toggle[BUTTON_OLD_ELSE] = get_widget_assert (xml, "radiobutton11"); + rd.toggle[BUTTON_NEW_VALUE] = get_widget_assert (builder, "radiobutton1"); + rd.toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (builder, "radiobutton2"); + rd.toggle[BUTTON_NEW_COPY] = get_widget_assert (builder, "radiobutton3"); + rd.toggle[BUTTON_OLD_VALUE] = get_widget_assert (builder, "radiobutton4"); + rd.toggle[BUTTON_OLD_SYSMIS] = get_widget_assert (builder, "radiobutton6"); + rd.toggle[BUTTON_OLD_MISSING]= get_widget_assert (builder, "radiobutton7"); + rd.toggle[BUTTON_OLD_RANGE] = get_widget_assert (builder, "radiobutton8"); + rd.toggle[BUTTON_OLD_LOW_UP] = get_widget_assert (builder, "radiobutton10"); + rd.toggle[BUTTON_OLD_HIGH_DOWN] = get_widget_assert (builder, "radiobutton5"); + rd.toggle[BUTTON_OLD_ELSE] = get_widget_assert (builder, "radiobutton11"); - rd.new_copy_label = get_widget_assert (xml, "label3"); - rd.strings_box = get_widget_assert (xml, "table3"); + rd.new_copy_label = get_widget_assert (builder, "label3"); + rd.strings_box = get_widget_assert (builder, "table3"); rd.old_and_new_dialog = - PSPPIRE_DIALOG (get_widget_assert (xml, "old-new-values-dialog")); + 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 (xml, "psppire-acr1")); + rd.acr = PSPPIRE_ACR (get_widget_assert (builder, "psppire-acr1")); g_signal_connect_swapped (rd.toggle[BUTTON_NEW_VALUE], "toggled", G_CALLBACK (set_acr), &rd); @@ -1049,11 +1046,11 @@ recode_dialog (struct data_editor *de, gboolean diff) g_signal_connect (rd.toggle[BUTTON_OLD_RANGE], "toggled", G_CALLBACK (toggle_sensitivity), - get_widget_assert (xml, "entry3")); + get_widget_assert (builder, "entry3")); g_signal_connect (rd.toggle[BUTTON_OLD_RANGE], "toggled", G_CALLBACK (toggle_sensitivity), - get_widget_assert (xml, "entry5")); + get_widget_assert (builder, "entry5")); g_signal_connect (rd.toggle[BUTTON_OLD_LOW_UP], "toggled", G_CALLBACK (toggle_sensitivity), rd.ov_low_up_entry); @@ -1087,6 +1084,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 +1094,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); } @@ -1113,7 +1107,7 @@ recode_dialog (struct data_editor *de, gboolean diff) gtk_list_store_clear (GTK_LIST_STORE (rd.value_map)); g_object_unref (rd.value_map); - g_object_unref (xml); + g_object_unref (builder); } /* Initialise VAL to reflect the current status of RD */ @@ -1340,9 +1334,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); } @@ -1373,9 +1366,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); } @@ -1539,9 +1531,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));