X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtksheet%2Fgsheetmodel.c;h=9ea17f2955a2c64fdb5120b334f45e5e72a6c692;hb=a89f1b18969c1c9603fc67aee3055585af9d167c;hp=704b86e23f71a599b34f71afaff758dc3fcd2715;hpb=dcf9b154cbcaa35c3d8459a201b77eec8bcb30bd;p=pspp diff --git a/lib/gtksheet/gsheetmodel.c b/lib/gtksheet/gsheetmodel.c index 704b86e23f..9ea17f2955 100644 --- a/lib/gtksheet/gsheetmodel.c +++ b/lib/gtksheet/gsheetmodel.c @@ -16,6 +16,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include + #include #include "gsheetmodel.h" #include "gtkextra-marshal.h" @@ -24,6 +26,8 @@ enum { RANGE_CHANGED, ROWS_INSERTED, ROWS_DELETED, + COLUMNS_INSERTED, + COLUMNS_DELETED, LAST_SIGNAL }; @@ -108,11 +112,51 @@ g_sheet_model_base_init (gpointer g_class) G_TYPE_INT, G_TYPE_INT); + sheet_model_signals[COLUMNS_INSERTED] = + g_signal_new ("columns_inserted", + G_TYPE_SHEET_MODEL, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GSheetModelIface, columns_inserted), + NULL, NULL, + gtkextra_VOID__INT_INT, + G_TYPE_NONE, 2, + G_TYPE_INT, + G_TYPE_INT); + + + sheet_model_signals[COLUMNS_DELETED] = + g_signal_new ("columns_deleted", + G_TYPE_SHEET_MODEL, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GSheetModelIface, columns_deleted), + NULL, NULL, + gtkextra_VOID__INT_INT, + G_TYPE_NONE, 2, + G_TYPE_INT, + G_TYPE_INT); + initialized = TRUE; } } + +/** + * g_sheet_model_free_strings + * @sheet_model: A #GSheetModel + * + * Returns: True if strings obtained with get_string should be freed by the + * sheet when no longer required. + **/ +inline gboolean +g_sheet_model_free_strings (const GSheetModel *sheet_model) +{ + g_return_val_if_fail (G_IS_SHEET_MODEL (sheet_model), FALSE); + + return G_SHEET_MODEL_GET_IFACE (sheet_model)->free_strings; +} + + /** * g_sheet_model_get_string: * @sheet_model: A #GSheetModel @@ -122,7 +166,7 @@ g_sheet_model_base_init (gpointer g_class) * Retrieves the datum at location ROW, COLUMN in the form of a string. * Returns: The string representation of the datum, or NULL on error. **/ -inline const gchar *const +inline gchar * g_sheet_model_get_string (const GSheetModel *sheet_model, gint row, gint column) { @@ -220,6 +264,25 @@ g_sheet_model_rows_inserted (GSheetModel *sheet_model, } +/** + * g_sheet_model_columns_inserted: + * @sheet_model: A #GSheetModel + * @column: The column before which the new columns should be inserted. + * @n_columns: The number of columns to insert. + * + * Emits the "columns_inserted" signal on @sheet_model. + **/ +void +g_sheet_model_columns_inserted (GSheetModel *sheet_model, + gint column, gint n_columns) +{ + g_return_if_fail (G_IS_SHEET_MODEL (sheet_model)); + + g_signal_emit (sheet_model, sheet_model_signals[COLUMNS_INSERTED], 0, + column, n_columns); +} + + /** @@ -242,6 +305,27 @@ g_sheet_model_rows_deleted (GSheetModel *sheet_model, +/** + * g_sheet_model_columns_deleted: + * @sheet_model: A #GSheetModel + * @column: The first column to be deleted. + * @n_columns: The number of columns to delete. + * + * Emits the "columns_deleted" signal on @sheet_model. + **/ +void +g_sheet_model_columns_deleted (GSheetModel *sheet_model, + gint column, gint n_columns) +{ + g_return_if_fail (G_IS_SHEET_MODEL (sheet_model)); + + g_signal_emit (sheet_model, sheet_model_signals[COLUMNS_DELETED], 0, + column, n_columns); +} + + + + /** * g_sheet_model_is_editable: @@ -393,3 +477,34 @@ g_sheet_model_get_cell_border (const GSheetModel *model, return G_SHEET_MODEL_GET_IFACE (model)->get_cell_border (model, row, column); } + + + +/** + * g_sheet_model_get_column_count: + * @model: A #GSheetModel + * + * Returns the total number of columns represented by the model + **/ +inline gint +g_sheet_model_get_column_count(const GSheetModel *model) +{ + g_return_val_if_fail (G_IS_SHEET_MODEL (model), -1); + + return G_SHEET_MODEL_GET_IFACE (model)->get_column_count (model); +} + +/** + * g_sheet_model_get_row_count: + * @model: A #GSheetModel + * + * Returns the total number of rows represented by the model + **/ +inline gint +g_sheet_model_get_row_count(const GSheetModel *model) +{ + g_return_val_if_fail (G_IS_SHEET_MODEL (model), -1); + + + return G_SHEET_MODEL_GET_IFACE (model)->get_row_count (model); +}