-/* GSheetRow --- an abstract model of the row geometry of a
+/* GSheetRow --- an abstract model of the row geometry of a
* GSheet widget.
* Copyright (C) 2006 Free Software Foundation
*
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <config.h>
+
#include <stdlib.h>
#include <string.h>
#include <glib.h>
}
}
-void
+void
g_sheet_row_set_height (GSheetRow *row_geo,
- gint row, gint size, const GtkSheet *sheet)
+ glong row, gint size)
{
g_return_if_fail (G_IS_SHEET_ROW (row_geo));
- if ((G_SHEET_ROW_GET_IFACE (row_geo)->set_height) )
- (G_SHEET_ROW_GET_IFACE (row_geo)->set_height) (row_geo, row,
- size, sheet);
+ if ((G_SHEET_ROW_GET_IFACE (row_geo)->set_height) )
+ (G_SHEET_ROW_GET_IFACE (row_geo)->set_height) (row_geo, row,
+ size);
}
-gint
-g_sheet_row_get_height (const GSheetRow *row_geo,
- gint row, const GtkSheet *sheet)
+gint
+g_sheet_row_get_height (const GSheetRow *row_geo,
+ glong row)
{
g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), -1);
g_assert (G_SHEET_ROW_GET_IFACE (row_geo)->get_height);
-
- return (G_SHEET_ROW_GET_IFACE (row_geo)->get_height) (row_geo, row,
- sheet);
+
+ return (G_SHEET_ROW_GET_IFACE (row_geo)->get_height) (row_geo, row);
}
-gboolean
+gboolean
g_sheet_row_get_visibility(const GSheetRow *row_geo,
- gint row, const GtkSheet *sheet)
+ glong row)
{
g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), FALSE);
g_assert (G_SHEET_ROW_GET_IFACE (row_geo)->get_visibility);
-
- return (G_SHEET_ROW_GET_IFACE (row_geo)->get_visibility) (row_geo,
- row, sheet);
+
+ return (G_SHEET_ROW_GET_IFACE (row_geo)->get_visibility) (row_geo,
+ row);
}
-gboolean
+gboolean
g_sheet_row_get_sensitivity(const GSheetRow *row_geo,
- gint row, const GtkSheet *sheet)
+ glong row)
{
g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), FALSE);
g_assert (G_SHEET_ROW_GET_IFACE (row_geo)->get_sensitivity);
-
- return (G_SHEET_ROW_GET_IFACE (row_geo)->get_sensitivity) (row_geo,
- row, sheet);
+
+ return (G_SHEET_ROW_GET_IFACE (row_geo)->get_sensitivity) (row_geo,
+ row);
}
-const GtkSheetButton *
+GtkSheetButton *
g_sheet_row_get_button(const GSheetRow *row_geo,
- gint row, const GtkSheet *sheet)
+ glong row)
{
- g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), FALSE);
+ GtkSheetButton *button = gtk_sheet_button_new();
GSheetRowIface *iface = G_SHEET_ROW_GET_IFACE (row_geo);
- static GtkSheetButton button ;
- memcpy(&button, &default_button, sizeof (button));
+ g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), FALSE);
if ( iface->get_button_label)
- button.label = iface->get_button_label(row_geo, row, sheet);
+ button->label = iface->get_button_label(row_geo, row);
- return &button;
+ return button;
}
+gchar *
+g_sheet_row_get_subtitle (const GSheetRow *row_geo, glong row)
+{
+ g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), NULL);
+
+ if ( ! G_SHEET_ROW_GET_IFACE (row_geo)->get_subtitle )
+ return NULL;
+
+ return (G_SHEET_ROW_GET_IFACE (row_geo)->get_subtitle) (row_geo, row);
+}
-gint
-g_sheet_row_get_row_count(const GSheetRow *geo, const GtkSheet *sheet)
+
+
+
+glong
+g_sheet_row_get_row_count (const GSheetRow *geo)
{
g_return_val_if_fail (G_IS_SHEET_ROW (geo), -1);
g_assert ( G_SHEET_ROW_GET_IFACE (geo)->get_row_count);
- return (G_SHEET_ROW_GET_IFACE (geo)->get_row_count) (geo, sheet);
+ return (G_SHEET_ROW_GET_IFACE (geo)->get_row_count) (geo);
}
/**
* g_sheet_row_start_pixel:
* @geo: the row model
* @row: the row number
- * @sheet: pointer to the sheet
+ * @sheet: pointer to the sheet
*
* Returns the top y pixel for ROW.
* Instances may override this method in order to achieve time and/or memory
* Returns: the y coordinate of the top of the row.
*/
-gint
-g_sheet_row_start_pixel(const GSheetRow *geo, gint row, const GtkSheet *sheet)
+gint
+g_sheet_row_start_pixel(const GSheetRow *geo, glong row)
{
- g_return_val_if_fail (G_IS_SHEET_ROW (geo), -1);
- g_return_val_if_fail (row >= 0, -1);
- g_return_val_if_fail (row <
- g_sheet_row_get_row_count(geo, sheet),-1);
-
gint i;
gint start_pixel = 0;
- if ( G_SHEET_ROW_GET_IFACE(geo)->top_ypixel)
- return (G_SHEET_ROW_GET_IFACE(geo)->top_ypixel)(geo, row, sheet);
+ g_return_val_if_fail (G_IS_SHEET_ROW (geo), -1);
+ g_return_val_if_fail (row >= 0, -1);
+ g_return_val_if_fail (row <
+ g_sheet_row_get_row_count(geo),-1);
- for ( i = 0 ; i < row ; ++i )
+ if ( G_SHEET_ROW_GET_IFACE(geo)->top_ypixel)
+ return (G_SHEET_ROW_GET_IFACE(geo)->top_ypixel)(geo, row);
+
+ for ( i = 0 ; i < row ; ++i )
{
- if ( g_sheet_row_get_visibility(geo, i, sheet))
- start_pixel += g_sheet_row_get_height(geo, i, sheet);
+ if ( g_sheet_row_get_visibility(geo, i))
+ start_pixel += g_sheet_row_get_height(geo, i);
}
-
+
return start_pixel;
}
-gint
-g_sheet_row_pixel_to_row(const GSheetRow *geo, gint pixel,
- const GtkSheet *s)
+glong
+g_sheet_row_pixel_to_row (const GSheetRow *geo, gint pixel)
{
gint i, cy;
g_return_val_if_fail (G_IS_SHEET_ROW (geo), -1);
g_return_val_if_fail (pixel >= 0, -1) ;
- if ( G_SHEET_ROW_GET_IFACE(geo)->pixel_to_row)
- return (G_SHEET_ROW_GET_IFACE(geo)->pixel_to_row)(geo, pixel, s);
+ if ( G_SHEET_ROW_GET_IFACE(geo)->pixel_to_row)
+ return (G_SHEET_ROW_GET_IFACE(geo)->pixel_to_row)(geo, pixel);
cy = 0;
- for (i = 0; i < g_sheet_row_get_row_count(geo, s); ++i )
+ for (i = 0; i < g_sheet_row_get_row_count (geo); ++i )
{
- if (pixel >= cy &&
- pixel <= (cy + g_sheet_row_get_height(geo, i, s)) &&
- g_sheet_row_get_visibility(geo, i, s))
+ if (pixel >= cy &&
+ pixel <= (cy + g_sheet_row_get_height (geo, i)) &&
+ g_sheet_row_get_visibility (geo, i))
return i;
- if(g_sheet_row_get_visibility(geo, i, s))
- cy += g_sheet_row_get_height(geo, i, s);
+ if(g_sheet_row_get_visibility (geo, i))
+ cy += g_sheet_row_get_height (geo, i);
}
/* no match */
- return g_sheet_row_get_row_count(geo, s) - 1;
+ return g_sheet_row_get_row_count (geo) - 1;
}
void
-g_sheet_row_rows_deleted(GSheetRow *geo,
- gint first, gint n_rows)
+g_sheet_row_rows_deleted (GSheetRow *geo,
+ glong first, glong n_rows)
{
g_return_if_fail (G_IS_SHEET_ROW (geo));
- g_signal_emit (geo, sheet_row_signals[ROWS_CHANGED], 0,
+ g_signal_emit (geo, sheet_row_signals[ROWS_CHANGED], 0,
first, n_rows);
}