+ iface->get_button_label = geometry_get_column_button_label;
+ iface->get_subtitle = geometry_get_column_subtitle;
+}
+
+
+/* Row related funcs */
+
+static glong
+geometry_get_row_count (const GSheetRow *geom)
+{
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
+
+ return TRAILING_ROWS + psppire_case_file_get_case_count (ds->case_file);
+}
+
+#define ROW_HEIGHT 25
+
+static gint
+geometry_get_height (const GSheetRow *geom, glong unit)
+{
+ return ROW_HEIGHT;
+}
+
+static guint
+geometry_get_top_ypixel (const GSheetRow *geo, glong row)
+{
+ return row * ROW_HEIGHT;
+}
+
+static glong
+geometry_pixel_to_row (const GSheetRow *geo, guint pixel)
+{
+ glong row = pixel / ROW_HEIGHT;
+
+ if (row >= geometry_get_row_count (geo))
+ row = geometry_get_row_count (geo) - 1;
+
+ return row;
+}
+
+
+static gboolean
+geometry_get_row_sensitivity (const GSheetRow *geom, glong unit)
+{
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
+
+
+ return (unit < psppire_case_file_get_case_count (ds->case_file));
+}
+
+
+static gchar *
+geometry_get_row_button_label (const GSheetRow *geom, glong unit)
+{
+ gchar *text;
+ gchar *s;
+ PsppireDataStore *ds = PSPPIRE_DATA_STORE (geom);
+
+ if ( unit >
+ TRAILING_ROWS + psppire_case_file_get_case_count (ds->case_file))
+ return 0;
+
+ s = g_strdup_printf (_("%ld"), unit + FIRST_CASE_NUMBER);
+
+ text = pspp_locale_to_utf8 (s, -1, 0);
+
+ g_free (s);