X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dictview.c;h=4d56eda9052318128e2b6575edfe296b6226dbd8;hb=fc1c214753f9074c05ac1609d8cdecbdf1eea255;hp=863365f9f8549696f9c0afa2fb1cbd14dba09e79;hpb=9a331fe64eb814ae5c1322e21717a04fb254bf65;p=pspp-builds.git diff --git a/src/ui/gui/psppire-dictview.c b/src/ui/gui/psppire-dictview.c index 863365f9..4d56eda9 100644 --- a/src/ui/gui/psppire-dictview.c +++ b/src/ui/gui/psppire-dictview.c @@ -21,6 +21,7 @@ #include "psppire-dict.h" #include "psppire-conf.h" #include +#include #include "helper.h" #include @@ -74,7 +75,6 @@ psppire_dict_view_finalize (GObject *object) enum { PROP_0, - PROP_MODEL, PROP_DICTIONARY, PROP_PREDICATE, PROP_SELECTION_MODE @@ -136,11 +136,6 @@ psppire_dict_view_set_property (GObject *object, case PROP_DICTIONARY: dict_view->dict = g_value_get_object (value); break; - case PROP_MODEL: - g_critical ("Don't set the \"model\" property on %s. " - "Use the \"dictionary\" property instead.", - G_OBJECT_TYPE_NAME (dict_view)); - break; case PROP_PREDICATE: dict_view->predicate = g_value_get_pointer (value); break; @@ -200,45 +195,27 @@ psppire_dict_view_class_init (PsppireDictViewClass *class) { GObjectClass *object_class = G_OBJECT_CLASS (class); - GParamSpec *dictionary_spec = - g_param_spec_object ("dictionary", - "Dictionary", - _("The dictionary to be displayed by this widget"), - PSPPIRE_TYPE_DICT, - G_PARAM_READABLE | G_PARAM_WRITABLE); - GParamSpec *predicate_spec = g_param_spec_pointer ("predicate", "Predicate", - _("A predicate function"), + "A predicate function", G_PARAM_READABLE | G_PARAM_WRITABLE); GParamSpec *selection_mode_spec = g_param_spec_enum ("selection-mode", "Selection Mode", - _("How many things can be selected"), + "How many things can be selected", GTK_TYPE_SELECTION_MODE, GTK_SELECTION_MULTIPLE, G_PARAM_CONSTRUCT | G_PARAM_READABLE | G_PARAM_WRITABLE); - - GParamSpec *dummy_spec = - g_param_spec_pointer ("model", - "Model", - "Don't set the property", - G_PARAM_WRITABLE); - object_class->set_property = psppire_dict_view_set_property; object_class->get_property = psppire_dict_view_get_property; - g_object_class_install_property (object_class, - PROP_MODEL, - dummy_spec); - - g_object_class_install_property (object_class, - PROP_DICTIONARY, - dictionary_spec); + g_object_class_override_property (object_class, + PROP_DICTIONARY, + "model"); g_object_class_install_property (object_class, PROP_PREDICATE, @@ -270,15 +247,18 @@ psppire_dict_view_base_finalize (PsppireDictViewClass *class, static void dv_get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter, - GtkTreeModel **model, GtkTreeIter *iter - ) + GtkTreeModel **model, GtkTreeIter *iter) { *model = top_model; - *iter = *top_iter; + + if ( iter) + *iter = *top_iter; while ( ! PSPPIRE_IS_DICT (*model)) { - GtkTreeIter parent_iter = *iter; + GtkTreeIter parent_iter; + if (iter) + parent_iter = *iter; if ( GTK_IS_TREE_MODEL_FILTER (*model)) { @@ -286,9 +266,10 @@ dv_get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter, *model = gtk_tree_model_filter_get_model (parent_model); - gtk_tree_model_filter_convert_iter_to_child_iter (parent_model, - iter, - &parent_iter); + if (iter) + gtk_tree_model_filter_convert_iter_to_child_iter (parent_model, + iter, + &parent_iter); } else if (GTK_IS_TREE_MODEL_SORT (*model)) { @@ -296,9 +277,10 @@ dv_get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter, *model = gtk_tree_model_sort_get_model (parent_model); - gtk_tree_model_sort_convert_iter_to_child_iter (parent_model, - iter, - &parent_iter); + if (iter) + gtk_tree_model_sort_convert_iter_to_child_iter (parent_model, + iter, + &parent_iter); } } } @@ -318,32 +300,27 @@ var_description_cell_data_func (GtkTreeViewColumn *col, struct variable *var; GtkTreeIter iter; GtkTreeModel *model; - + PsppireDict *dict; dv_get_base_model (top_model, top_iter, &model, &iter); - g_assert (PSPPIRE_IS_DICT (model)); + dict = PSPPIRE_DICT (model); gtk_tree_model_get (model, &iter, DICT_TVM_COL_VAR, &var, -1); if ( var_has_label (var) && dv->prefer_labels) { - gchar *text = g_strdup_printf ( + gchar *text = g_markup_printf_escaped ( "%s", var_get_label (var)); - char *utf8 = pspp_locale_to_utf8 (text, -1, NULL); - + g_object_set (cell, "markup", text, NULL); g_free (text); - g_object_set (cell, "markup", utf8, NULL); - g_free (utf8); } else { - char *name = pspp_locale_to_utf8 (var_get_name (var), -1, NULL); - g_object_set (cell, "text", name, NULL); - g_free (name); + g_object_set (cell, "text", var_get_name (var), NULL); } } @@ -406,7 +383,6 @@ set_tooltip_for_variable (GtkTreeView *treeview, struct variable *var = NULL; gboolean ok; - gtk_tree_view_convert_widget_to_bin_window_coords (treeview, x, y, &bx, &by); @@ -416,7 +392,6 @@ set_tooltip_for_variable (GtkTreeView *treeview, tree_model = gtk_tree_view_get_model (treeview); - gtk_tree_view_set_tooltip_row (treeview, tooltip, path); ok = gtk_tree_model_get_iter (tree_model, &iter, path); @@ -432,16 +407,19 @@ set_tooltip_for_variable (GtkTreeView *treeview, return FALSE; { - gchar *tip ; + const gchar *tip ; + GtkTreeModel *m; + PsppireDict *dict; + + dv_get_base_model (tree_model, NULL, &m, NULL); + dict = PSPPIRE_DICT (m); if ( PSPPIRE_DICT_VIEW (treeview)->prefer_labels ) - tip = pspp_locale_to_utf8 (var_get_name (var), -1, NULL); + tip = var_get_name (var); else - tip = pspp_locale_to_utf8 (var_get_label (var), -1, NULL); + tip = var_get_label (var); gtk_tooltip_set_text (tooltip, tip); - - g_free (tip); } return TRUE; @@ -509,7 +487,10 @@ psppire_dict_view_init (PsppireDictView *dict_view) gtk_tree_view_append_column (GTK_TREE_VIEW (dict_view), col); - g_object_set (dict_view, "has-tooltip", TRUE, NULL); + g_object_set (dict_view, + "has-tooltip", TRUE, + "headers-visible", FALSE, + NULL); g_signal_connect (dict_view, "query-tooltip", G_CALLBACK (set_tooltip_for_variable), NULL);