X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-var-view.c;h=47c845cba2c1e496a51ec4005de66876e4c75a1a;hb=refs%2Fbuilds%2F20140222033038%2Fpspp;hp=c71a5e66103e2821814972461c12b46e1de0aa5a;hpb=6f3865480503c571963d8a2d1af858a4d72d4e88;p=pspp diff --git a/src/ui/gui/psppire-var-view.c b/src/ui/gui/psppire-var-view.c index c71a5e6610..47c845cba2 100644 --- a/src/ui/gui/psppire-var-view.c +++ b/src/ui/gui/psppire-var-view.c @@ -104,30 +104,17 @@ psppire_var_view_get_type (void) void psppire_var_view_clear (PsppireVarView *vv) { - gint i; - for (i = 0; i < vv->n_lists; ++i) - g_object_unref (vv->list[i]); + GtkListStore *l = gtk_list_store_newv (vv->n_cols, vv->cols); - g_free (vv->list); - - vv->n_lists = 0; - vv->l_idx = -1; - vv->list = NULL; - - psppire_var_view_push_model (vv); + gtk_tree_view_set_model (GTK_TREE_VIEW (vv), GTK_TREE_MODEL (l)); } static void psppire_var_view_finalize (GObject *object) { - gint i; PsppireVarView *var_view = PSPPIRE_VAR_VIEW (object); g_free (var_view->nums); - for (i = 0; i < var_view->n_lists; ++i) - g_object_unref (var_view->list[i]); - - g_free (var_view->list); g_free (var_view->cols); } @@ -220,31 +207,10 @@ set_renderers (PsppireVarView *var_view) } - - -/* Set a model, which is an GtkListStore of gpointers which point to a variable */ -void -psppire_var_view_push_model (PsppireVarView *vv) -{ - vv->n_lists++; - vv->l_idx++; - vv->list = xrealloc (vv->list, sizeof (*vv->list) * vv->n_lists); - vv->list[vv->l_idx] = gtk_list_store_newv (vv->n_cols, vv->cols); - g_object_ref (vv->list[vv->l_idx]); - gtk_tree_view_set_model (GTK_TREE_VIEW (vv), GTK_TREE_MODEL (vv->list[vv->l_idx])); -} - -gboolean -psppire_var_view_set_current_model (PsppireVarView *vv, gint n) +GtkTreeModel * +psppire_var_view_get_current_model (PsppireVarView *vv) { - if (n < 0 || n >= vv->n_lists) - return FALSE; - - vv->l_idx = n; - - gtk_tree_view_set_model (GTK_TREE_VIEW (vv), GTK_TREE_MODEL (vv->list[vv->l_idx])); - - return TRUE; + return gtk_tree_view_get_model (GTK_TREE_VIEW (vv)); } static void @@ -307,8 +273,6 @@ psppire_var_view_base_init (PsppireVarViewClass *class) GObjectClass *object_class = G_OBJECT_CLASS (class); - - object_class->finalize = psppire_var_view_finalize; } @@ -326,9 +290,6 @@ static void psppire_var_view_init (PsppireVarView *vv) { vv->cols = 0; - vv->n_lists = 0; - vv->l_idx = -1; - vv->list = NULL; } @@ -343,27 +304,23 @@ gboolean psppire_var_view_get_iter_first (PsppireVarView *vv, GtkTreeIter *iter) { GtkTreeIter dummy; - if ( vv->l_idx < 0) - return FALSE; - - return gtk_tree_model_get_iter_first (GTK_TREE_MODEL (vv->list[vv->l_idx]), iter ? iter : &dummy); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (vv)); + return gtk_tree_model_get_iter_first (model, iter ? iter : &dummy); } gboolean psppire_var_view_get_iter_next (PsppireVarView *vv, GtkTreeIter *iter) { - if ( vv->l_idx < 0) - return FALSE; - - return gtk_tree_model_iter_next (GTK_TREE_MODEL (vv->list[vv->l_idx]), iter); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (vv)); + return gtk_tree_model_iter_next (model, iter); } const struct variable * -psppire_var_view_get_variable (PsppireVarView *vv, gint column, GtkTreeIter *iter) +psppire_var_view_get_var_from_model (GtkTreeModel *model, gint column, GtkTreeIter *iter) { const struct variable *var = NULL; GValue value = {0}; - gtk_tree_model_get_value (GTK_TREE_MODEL (vv->list[vv->l_idx]), iter, column, &value); + gtk_tree_model_get_value (model, iter, column, &value); if ( G_VALUE_TYPE (&value) == PSPPIRE_VAR_PTR_TYPE) var = g_value_get_boxed (&value); @@ -376,6 +333,15 @@ psppire_var_view_get_variable (PsppireVarView *vv, gint column, GtkTreeIter *ite return var; } +const struct variable * +psppire_var_view_get_variable (PsppireVarView *vv, gint column, GtkTreeIter *iter) +{ + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (vv)); + return psppire_var_view_get_var_from_model (model, column, iter); +} + + + /* Append the names of selected variables to STRING. Returns the number of variables appended.