X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fgui%2Fpsppire-dictview.c;h=1820d41179d51a45a38a5a9eb2eb53b3067bec64;hb=e339b2ca72d77a076566856e9357781d49cd983c;hp=baccea7b6b49108d5d07215ee2247bc03951f0f7;hpb=49ad45764ab062f60a205dd84d0c3b600f051727;p=pspp diff --git a/src/ui/gui/psppire-dictview.c b/src/ui/gui/psppire-dictview.c index baccea7b6b..1820d41179 100644 --- a/src/ui/gui/psppire-dictview.c +++ b/src/ui/gui/psppire-dictview.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2009, 2010, 2011 Free Software Foundation + Copyright (C) 2009, 2010, 2011, 2012, 2013 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 @@ -68,7 +68,7 @@ psppire_dict_view_finalize (GObject *object) { PsppireDictView *dict_view = PSPPIRE_DICT_VIEW (object); - g_object_unref (dict_view->menu); + gtk_widget_destroy (dict_view->menu); } /* Properties */ @@ -105,7 +105,10 @@ set_model (PsppireDictView *dict_view) { GtkTreeModel *model ; - if ( dict_view->predicate ) + if ( dict_view->dict == NULL) + return; + + if ( dict_view->predicate ) { model = gtk_tree_model_filter_new (GTK_TREE_MODEL (dict_view->dict), NULL); @@ -118,9 +121,11 @@ set_model (PsppireDictView *dict_view) else { model = GTK_TREE_MODEL (dict_view->dict); + g_object_ref (model); } gtk_tree_view_set_model (GTK_TREE_VIEW (dict_view), model); + g_object_unref (model); } static void @@ -300,12 +305,9 @@ 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); - dict = PSPPIRE_DICT (model); - gtk_tree_model_get (model, &iter, DICT_TVM_COL_VAR, &var, -1); @@ -336,37 +338,57 @@ var_icon_cell_data_func (GtkTreeViewColumn *col, gpointer data) { struct variable *var; + gtk_tree_model_get (model, iter, DICT_TVM_COL_VAR, &var, -1); - if ( var_is_alpha (var)) - { - g_object_set (cell, "stock-id", "var-string", NULL); - } - else + g_object_set (cell, "stock_id", + get_var_measurement_stock_id (var_get_print_format (var)->type, + var_get_measure (var)), + NULL); +} + +const char * +get_var_measurement_stock_id (enum fmt_type type, enum measure measure) +{ + switch (fmt_get_category (type)) { - const struct fmt_spec *fs = var_get_print_format (var); - int cat = fmt_get_category (fs->type); - switch ( var_get_measure (var)) + case FMT_CAT_STRING: + switch (measure) { - case MEASURE_NOMINAL: - g_object_set (cell, "stock-id", "var-nominal", NULL); - break; - case MEASURE_ORDINAL: - g_object_set (cell, "stock-id", "var-ordinal", NULL); - break; - case MEASURE_SCALE: - if ( ( FMT_CAT_DATE | FMT_CAT_TIME ) & cat ) - g_object_set (cell, "stock-id", "var-date-scale", NULL); - else - g_object_set (cell, "stock-id", "var-scale", NULL); - break; - default: - g_assert_not_reached (); - }; + case MEASURE_NOMINAL: return "variable-string-nominal"; + case MEASURE_ORDINAL: return "variable-string-ordinal"; + case MEASURE_SCALE: return "variable-string-scale"; + case n_MEASURES: break; + } + break; + + case FMT_CAT_DATE: + case FMT_CAT_TIME: + switch (measure) + { + case MEASURE_NOMINAL: return "variable-date-nominal"; + case MEASURE_ORDINAL: return "variable-date-ordinal"; + case MEASURE_SCALE: return "variable-date-scale"; + case n_MEASURES: break; + } + break; + + default: + switch (measure) + { + case MEASURE_NOMINAL: return "variable-nominal"; + case MEASURE_ORDINAL: return "variable-ordinal"; + case MEASURE_SCALE: return "variable-scale"; + case n_MEASURES: break; + } + break; } + + g_return_val_if_reached (""); } + /* Sets the tooltip to be the name of the variable under the cursor */ static gboolean set_tooltip_for_variable (GtkTreeView *treeview, @@ -409,10 +431,8 @@ set_tooltip_for_variable (GtkTreeView *treeview, { 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 = var_get_name (var);