X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtksheet%2Fgsheet-row-iface.c;h=4bbd2e1c529b4c4b042633ee907a8580ed681ae7;hb=c5bf90ff8baa7a81274421acb24a915c953e560f;hp=1136b9a5714b5aecef211d7ac7a3d44fa5118409;hpb=e294a372f351d7105c21a2db58022af8b119aa64;p=pspp-builds.git diff --git a/lib/gtksheet/gsheet-row-iface.c b/lib/gtksheet/gsheet-row-iface.c index 1136b9a5..4bbd2e1c 100644 --- a/lib/gtksheet/gsheet-row-iface.c +++ b/lib/gtksheet/gsheet-row-iface.c @@ -1,4 +1,4 @@ -/* 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 * @@ -16,6 +16,8 @@ * 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 + #include #include #include @@ -34,7 +36,7 @@ static guint sheet_row_signals[LAST_SIGNAL]; -static void g_sheet_row_base_init (gpointer g_class); +static void g_sheet_row_base_init (gpointer g_class); GType @@ -94,165 +96,159 @@ g_sheet_row_base_init (gpointer g_class) default_button.state = GTK_STATE_NORMAL; default_button.label = NULL; default_button.label_visible = TRUE; - default_button.child = NULL; default_button.justification = GTK_JUSTIFY_FILL; initialized = TRUE; } } -void +void g_sheet_row_set_height (GSheetRow *row_geo, - gint row, gint size, gpointer data) + 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, data); + 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, gpointer data) +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, - data); -} - - -gboolean -g_sheet_row_get_visibility(const GSheetRow *row_geo, - gint row, gpointer data) -{ - g_return_val_if_fail (G_IS_SHEET_ROW (row_geo), FALSE); + return (G_SHEET_ROW_GET_IFACE (row_geo)->get_height) (row_geo, row); +} - g_assert (G_SHEET_ROW_GET_IFACE (row_geo)->get_visibility); - - return (G_SHEET_ROW_GET_IFACE (row_geo)->get_visibility) (row_geo, - row, data); -} -gboolean -g_sheet_row_get_sensitivity(const GSheetRow *row_geo, - gint row, gpointer data) +gboolean +g_sheet_row_get_sensitivity (const GSheetRow *row_geo, + 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, data); + return (G_SHEET_ROW_GET_IFACE (row_geo)->get_sensitivity) (row_geo, + row); } GtkSheetButton * -g_sheet_row_get_button(const GSheetRow *row_geo, - gint row, gpointer data) +g_sheet_row_get_button (const GSheetRow *row_geo, + glong row) { - GtkSheetButton *button = gtk_sheet_button_new(); + GtkSheetButton *button = gtk_sheet_button_new (); GSheetRowIface *iface = G_SHEET_ROW_GET_IFACE (row_geo); 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, data); + button->label = iface->get_button_label (row_geo, row); 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, gpointer data) + + + +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, data); + 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. + * ROW may point to the row BELOW the last row, in which case it should + * return the position where it would start if it existed. * Instances may override this method in order to achieve time and/or memory * optmisation. * * Returns: the y coordinate of the top of the row. */ -gint -g_sheet_row_start_pixel(const GSheetRow *geo, gint row, gpointer data) +gint +g_sheet_row_start_pixel (const GSheetRow *geo, glong row) { gint i; gint start_pixel = 0; 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, data),-1); + g_return_val_if_fail (row <= g_sheet_row_get_row_count (geo), -1); - if ( G_SHEET_ROW_GET_IFACE(geo)->top_ypixel) - return (G_SHEET_ROW_GET_IFACE(geo)->top_ypixel)(geo, row, data); + 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 ) + for (i = 0; i < row; ++i) { - if ( g_sheet_row_get_visibility(geo, i, data)) - start_pixel += g_sheet_row_get_height(geo, i, data); + start_pixel += g_sheet_row_get_height (geo, i); } - + return start_pixel; } -gint -g_sheet_row_pixel_to_row(const GSheetRow *geo, gint pixel, - gpointer data) +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, data); + 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, data); ++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, data)) && - g_sheet_row_get_visibility(geo, i, data)) + if (pixel >= cy && + pixel <= (cy + g_sheet_row_get_height (geo, i))) return i; - if(g_sheet_row_get_visibility(geo, i, data)) - cy += g_sheet_row_get_height(geo, i, data); + cy += g_sheet_row_get_height (geo, i); } /* no match */ - return g_sheet_row_get_row_count(geo, data) - 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); }