X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp-builds.git;a=blobdiff_plain;f=src%2Fui%2Fgui%2Fvariable-info-dialog.c;h=2fdf2df87440ce8beec883aa65aab02dce988123;hp=2f5495f137dd5a41f0e889cc847a210f7bf4b3e7;hb=66153a44d861ccddf6a176ec5a94ffb959232ad6;hpb=8af88c0b7ea2fe75df7e45497988ed0371006a86 diff --git a/src/ui/gui/variable-info-dialog.c b/src/ui/gui/variable-info-dialog.c index 2f5495f1..2fdf2df8 100644 --- a/src/ui/gui/variable-info-dialog.c +++ b/src/ui/gui/variable-info-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 @@ -17,7 +17,6 @@ #include #include -#include "dict-display.h" #include "var-display.h" #include #include @@ -25,9 +24,11 @@ #include "psppire-data-window.h" #include "psppire-dialog.h" #include "psppire-var-store.h" +#include "psppire-dictview.h" #include "helper.h" #include +#include #include "helper.h" @@ -36,58 +37,43 @@ #define N_(msgid) msgid -static struct variable * -get_selected_variable (GtkTreeView *treeview) -{ - struct variable *var; - GtkTreeModel *top_model; - GtkTreeIter top_iter; - - GtkTreeModel *model; - GtkTreeIter iter; - - GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); - - if (! gtk_tree_selection_get_selected (selection, - &top_model, &top_iter)) - { - return NULL; - } +static const gchar none[] = N_("None"); - get_base_model (top_model, &top_iter, &model, &iter); - g_assert (PSPPIRE_IS_DICT (model)); +static const gchar * +label_to_string (const struct variable *var) +{ + const char *label = var_get_label (var); - gtk_tree_model_get (model, - &iter, DICT_TVM_COL_VAR, &var, -1); + if (NULL == label) return g_strdup (none); - return var; + return label; } - static void -populate_text (GtkTreeView *treeview, gpointer data) +populate_text (PsppireDictView *treeview, gpointer data) { gchar *text = 0; GString *gstring; + PsppireDict *dict; + + GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (data)); + const struct variable *var = + psppire_dict_view_get_selected_variable (treeview); - GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(data)); - const struct variable *var = get_selected_variable (treeview); if ( var == NULL) return; + g_object_get (treeview, "dictionary", &dict, + NULL); + gstring = g_string_sized_new (200); - text = name_to_string (var, NULL); - g_string_assign (gstring, text); - g_free (text); + g_string_assign (gstring, var_get_name (var)); g_string_append (gstring, "\n"); - text = label_to_string (var, NULL); - g_string_append_printf (gstring, _("Label: %s\n"), text); - g_free (text); - + g_string_append_printf (gstring, _("Label: %s\n"), label_to_string (var)); { const struct fmt_spec *fmt = var_get_print_format (var); char buffer[FMT_STRING_LEN_MAX + 1]; @@ -97,7 +83,7 @@ populate_text (GtkTreeView *treeview, gpointer data) g_string_append_printf (gstring, _("Type: %s\n"), buffer); } - text = missing_values_to_string (var, NULL); + text = missing_values_to_string (dict, var, NULL); g_string_append_printf (gstring, _("Missing Values: %s\n"), text); g_free (text); @@ -112,29 +98,27 @@ populate_text (GtkTreeView *treeview, gpointer data) /* Value Labels */ if ( var_has_value_labels (var)) { - struct val_labs_iterator *vli = 0; - struct val_lab *vl; - const struct val_labs *labs = var_get_value_labels (var); + const struct val_labs *vls = var_get_value_labels (var); + const struct val_lab **labels; + size_t n_labels; + size_t i; g_string_append (gstring, "\n"); g_string_append (gstring, _("Value Labels:\n")); -#if 1 - for (vl = val_labs_first_sorted (labs, &vli); - vl; - vl = val_labs_next (labs, &vli)) - { + labels = val_labs_sorted (vls); + n_labels = val_labs_count (vls); + for (i = 0; i < n_labels; i++) + { + const struct val_lab *vl = labels[i]; gchar *const vstr = - value_to_text (vl->value, *var_get_print_format (var)); - - text = pspp_locale_to_utf8 (vl->label, -1, NULL); + value_to_text (vl->value, dict, *var_get_print_format (var)); - g_string_append_printf (gstring, _("%s %s\n"), vstr, text); + g_string_append_printf (gstring, _("%s %s\n"), vstr, val_lab_get_label (vl)); - g_free (text); g_free (vstr); } -#endif + free (labels); } gtk_text_buffer_set_text (textbuffer, gstring->str, gstring->len); @@ -157,7 +141,7 @@ treeview_item_selected (gpointer data) } -static gchar * generate_syntax (GtkTreeView *treeview); +static gchar * generate_syntax (PsppireDictView *treeview); void @@ -167,23 +151,23 @@ variable_info_dialog (GObject *o, gpointer data) gint response ; - GtkBuilder *xml = builder_new ("psppire.ui"); + GtkBuilder *xml = builder_new ("variable-info-dialog.ui"); GtkWidget *dialog = get_widget_assert (xml, "variable-info-dialog"); GtkWidget *treeview = get_widget_assert (xml, "treeview2"); GtkWidget *textview = get_widget_assert (xml, "textview1"); PsppireVarStore *vs = NULL; + PsppireDict *dict = NULL; g_object_get (de->data_editor, "var-store", &vs, NULL); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de)); - attach_dictionary_to_treeview (GTK_TREE_VIEW (treeview), - vs->dict, - GTK_SELECTION_SINGLE, - NULL ); - + g_object_get (vs, "dictionary", &dict, NULL); + g_object_set (treeview, "dictionary", dict, + "selection-mode", GTK_SELECTION_SINGLE, + NULL); g_signal_connect (treeview, "cursor-changed", G_CALLBACK (populate_text), textview); @@ -201,18 +185,20 @@ variable_info_dialog (GObject *o, gpointer data) case PSPPIRE_RESPONSE_GOTO: { const struct variable *var = - get_selected_variable (GTK_TREE_VIEW (treeview)); + psppire_dict_view_get_selected_variable (PSPPIRE_DICT_VIEW (treeview)); if ( NULL == var) goto done; - g_object_set (de->data_editor, "current-variable", var_get_dict_index (var), NULL); + g_object_set (de->data_editor, + "current-variable", var_get_dict_index (var), + NULL); } break; case PSPPIRE_RESPONSE_PASTE: { - gchar *syntax = generate_syntax (GTK_TREE_VIEW (treeview)); + gchar *syntax = generate_syntax (PSPPIRE_DICT_VIEW (treeview)); paste_syntax_in_new_window (syntax); g_free (syntax); @@ -227,9 +213,10 @@ variable_info_dialog (GObject *o, gpointer data) } static gchar * -generate_syntax (GtkTreeView *treeview) +generate_syntax (PsppireDictView *treeview) { - const struct variable *var = get_selected_variable (treeview); + const struct variable *var = + psppire_dict_view_get_selected_variable (treeview); if ( NULL == var) return g_strdup ("");