+static gint
+tree_model_n_children (GtkTreeModel * model, GtkTreeIter * iter)
+{
+ PsppireSpreadsheetModel *spreadsheetModel =
+ PSPPIRE_SPREADSHEET_MODEL (model);
+
+ if (iter == NULL)
+ return spreadsheetModel->spreadsheet->n_sheets;
+
+ return 0;
+}
+
+static gboolean
+tree_model_iter_has_child (GtkTreeModel *tree_model, GtkTreeIter *iter)
+{
+ return FALSE;
+}
+
+static GtkTreePath *
+tree_model_get_path (GtkTreeModel * model, GtkTreeIter * iter)
+{
+ PsppireSpreadsheetModel *spreadsheetModel =
+ PSPPIRE_SPREADSHEET_MODEL (model);
+ GtkTreePath *path;
+ gint index = (intptr_t) iter->user_data;
+
+ g_return_val_if_fail (iter->stamp == spreadsheetModel->stamp, NULL);
+
+ path = gtk_tree_path_new ();
+
+ gtk_tree_path_append_index (path, index);
+
+ return path;
+}
+
+
+static gboolean
+tree_model_children (GtkTreeModel *model, GtkTreeIter *iter, GtkTreeIter *parent)
+{
+ PsppireSpreadsheetModel *spreadsheetModel = PSPPIRE_SPREADSHEET_MODEL (model);
+
+ if (parent != NULL)
+ return FALSE;
+
+ iter->stamp = spreadsheetModel->stamp;
+ iter->user_data = 0;
+
+ return TRUE;
+}
+
+