+static void
+set_renderers (PsppireVarView *var_view)
+{
+ gint c;
+ var_view->nums = g_malloc (sizeof *var_view->nums * var_view->n_cols);
+
+ for (c = 0 ; c < var_view->n_cols; ++c)
+ {
+ GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
+ GtkTreeViewColumn *col = gtk_tree_view_column_new ();
+
+ gchar *label = g_strdup_printf (_("Var%d"), c + 1);
+
+ gtk_tree_view_column_set_min_width (col, 100);
+ gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED);
+ gtk_tree_view_column_set_resizable (col, TRUE);
+ gtk_tree_view_column_set_title (col, label);
+
+ g_free (label);
+
+ var_view->nums[c] = c;
+
+ gtk_tree_view_column_pack_start (col, renderer, TRUE);
+ gtk_tree_view_column_set_cell_data_func (col, renderer,
+ display_cell_var_name,
+ &var_view->nums[c], 0);
+
+ gtk_tree_view_append_column (GTK_TREE_VIEW (var_view), col);
+ }
+}
+
+
+
+
+/* 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)
+{
+ 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;
+}