X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtksheet%2Fgsheet-row-iface.c;h=1512737fdab0ad4108c307731ec5cb50cbec2af4;hb=5ee84736663824fe12474b78dace867e42893a14;hp=01a96afe88b66a9630b1153c96daabb8f54f5e04;hpb=573068f2bdcd3f8796e9646668fed910a90f890b;p=pspp-builds.git diff --git a/lib/gtksheet/gsheet-row-iface.c b/lib/gtksheet/gsheet-row-iface.c index 01a96afe..1512737f 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 @@ -101,93 +103,103 @@ g_sheet_row_base_init (gpointer g_class) } } -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) { - static GtkSheetButton button ; + 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); - memcpy(&button, &default_button, sizeof (button)); - 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; +} + +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 &button; + 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 @@ -196,65 +208,64 @@ g_sheet_row_get_row_count(const GSheetRow *geo, const GtkSheet *sheet) * 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) { 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, sheet),-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, sheet); + 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, 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); }