X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Frecode-dialog.c;h=05984dd44b368af9684b167fd66b0420ff0881f4;hb=refs%2Fbuilds%2F20121117032022%2Fpspp;hp=dc14067d0b1cd6c581d4f19a09e797e533708d43;hpb=523bde2a5dc354528b1535afc8643a8617e1cefe;p=pspp diff --git a/src/ui/gui/recode-dialog.c b/src/ui/gui/recode-dialog.c index dc14067d0b..05984dd44b 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, 2009, 2010, 2011 Free Software Foundation + Copyright (C) 2007, 2009, 2010, 2011, 2012 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 @@ -34,9 +34,9 @@ #include #include #include -#include +#include +#include "helper.h" #include -#include #include "psppire-val-chooser.h" @@ -242,7 +242,7 @@ dialog_state_valid (gpointer data) if ( rd->different ) { - GtkTreeModel *model = GTK_TREE_MODEL (PSPPIRE_VAR_VIEW (rd->variable_treeview)->list); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (rd->variable_treeview)); if (g_hash_table_size (rd->varmap) != gtk_tree_model_iter_n_children (model, NULL) ) return FALSE; @@ -434,7 +434,7 @@ on_selection_change (GtkTreeSelection *selection, gpointer data) { struct recode_dialog *rd = data; - GtkTreeModel *model = GTK_TREE_MODEL (PSPPIRE_VAR_VIEW (rd->variable_treeview)->list); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (rd->variable_treeview)); GList *rows = gtk_tree_selection_get_selected_rows (selection, &model); @@ -451,6 +451,7 @@ on_selection_change (GtkTreeSelection *selection, gpointer data) gtk_widget_set_sensitive (rd->new_label_entry, TRUE); ok = gtk_tree_model_get_iter (model, &iter, (GtkTreePath*) rows->data); + g_return_if_fail (ok); gtk_tree_model_get (model, &iter, 0, &var, @@ -513,7 +514,9 @@ on_change_clicked (GObject *obj, gpointer data) struct recode_dialog *rd = data; struct variable *var = NULL; struct nlp *nlp; - GtkTreeModel *model = GTK_TREE_MODEL (PSPPIRE_VAR_VIEW (rd->variable_treeview)->list); + + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (rd->variable_treeview)); + GtkTreeIter iter; GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (rd->variable_treeview)); @@ -547,6 +550,14 @@ on_change_clicked (GObject *obj, gpointer data) } +static void +focus_value_entry (GtkWidget *w, struct recode_dialog *rd) +{ + if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) + gtk_widget_grab_focus (rd->new_value_entry); +} + + /* Callback for the new_value_entry and new_value_togglebutton widgets. It's used to enable/disable the acr. */ static void @@ -608,9 +619,6 @@ recode_dialog (PsppireDataWindow *de, gboolean diff) GtkWidget *output_variable_box = get_widget_assert (builder,"frame4"); - PsppireVarStore *vs = NULL; - g_object_get (de->data_editor, "var-store", &vs, NULL); - rd.change_button = get_widget_assert (builder, "change-button"); rd.varmap = NULL; rd.dialog = get_widget_assert (builder, "recode-dialog"); @@ -619,7 +627,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"); - g_object_get (vs, "dictionary", &rd.dict, NULL); + g_object_get (de->data_editor, "dictionary", &rd.dict, NULL); rd.value_map = gtk_list_store_new (2, old_value_get_type (), @@ -710,6 +718,9 @@ recode_dialog (PsppireDataWindow *de, gboolean diff) g_signal_connect_swapped (rd.toggle[BUTTON_NEW_VALUE], "toggled", G_CALLBACK (set_acr), &rd); + g_signal_connect_after (rd.toggle[BUTTON_NEW_VALUE], "toggled", + G_CALLBACK (focus_value_entry), &rd); + g_signal_connect_swapped (rd.new_value_entry, "changed", G_CALLBACK (set_acr), &rd); @@ -1075,8 +1086,15 @@ generate_syntax (const struct recode_dialog *rd) while (g_hash_table_iter_next (&iter, (void**) &var, (void**) &nlp)) { if (nlp->label) - g_string_append_printf (str, "\nVARIABLE LABELS %s %s.", - nlp->name, nlp->label); + { + struct string sl; + ds_init_empty (&sl); + syntax_gen_string (&sl, ss_cstr (nlp->label)); + g_string_append_printf (str, "\nVARIABLE LABELS %s %s.", + nlp->name, ds_cstr (&sl)); + + ds_destroy (&sl); + } } }