X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtksheet%2Fgsheetmodel.h;h=cd7f1d33596814fe9e8ec261eea1d5ef9afef156;hb=bc632e6f82af2edb7e1c3f9feb9901deaa5038c0;hp=50746462b93db8a8efd647b92a9cb691e98933f4;hpb=573068f2bdcd3f8796e9646668fed910a90f890b;p=pspp diff --git a/lib/gtksheet/gsheetmodel.h b/lib/gtksheet/gsheetmodel.h index 50746462b9..cd7f1d3359 100644 --- a/lib/gtksheet/gsheetmodel.h +++ b/lib/gtksheet/gsheetmodel.h @@ -15,17 +15,18 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + #ifndef __G_SHEET_MODEL_H__ #define __G_SHEET_MODEL_H__ -/* This file provides an abstract interface or the data displayed by the +/* This file provides an abstract interface or the data displayed by the GtkSheet widget */ #include #include #include - +#include "gtkextra-sheet.h" G_BEGIN_DECLS @@ -36,11 +37,11 @@ G_BEGIN_DECLS typedef enum { - GTK_SHEET_LEFT_BORDER = 1 << 0, - GTK_SHEET_RIGHT_BORDER = 1 << 1, - GTK_SHEET_TOP_BORDER = 1 << 2, - GTK_SHEET_BOTTOM_BORDER = 1 << 3 -} GtkSheetBorderType ; + GTK_SHEET_LEFT_BORDER = 1 << 0, + GTK_SHEET_RIGHT_BORDER = 1 << 1, + GTK_SHEET_TOP_BORDER = 1 << 2, + GTK_SHEET_BOTTOM_BORDER = 1 << 3 +} GtkSheetBorderType ; typedef struct _GSheetModel GSheetModel; /* Dummy typedef */ @@ -50,8 +51,8 @@ typedef struct _GtkSheetCellBorder GtkSheetCellBorder; struct _GtkSheetRange { - gint row0,col0; /* upper-left cell */ - gint rowi,coli; /* lower-right cell */ + gint row0, col0; /* upper-left cell */ + gint rowi, coli; /* lower-right cell */ }; struct _GtkSheetCellBorder @@ -70,47 +71,73 @@ struct _GSheetModelIface { GTypeInterface g_iface; + gboolean free_strings; + /* Signals */ void (* range_changed) (GSheetModel *sheet_model, - gint row0, gint col0, - gint rowi, gint coli); + glong row0, glong col0, + glong rowi, glong coli); void (* rows_inserted) (GSheetModel *sheet_model, - gint row, gint n_rows); + glong row, glong n_rows); void (* rows_deleted) (GSheetModel *sheet_model, - gint row, gint n_rows); + glong row, glong n_rows); + + void (* columns_inserted) (GSheetModel *sheet_model, + glong column, glong n_columns); + + void (* columns_deleted) (GSheetModel *sheet_model, + glong column, glong n_columns); + + + /* Virtual Table */ - const gchar * (* get_string) (const GSheetModel *sheet_model, - gint row, gint column); - gboolean (* set_string) (GSheetModel *sheet_model, - const gchar *s, gint row, gint column); + gchar * (* get_string) (const GSheetModel *sheet_model, + glong row, glong column); + + gboolean (* set_string) (GSheetModel *sheet_model, + const gchar *s, glong row, glong column); + + gboolean (* clear_datum) (GSheetModel *sheet_model, + glong row, glong column); + + gboolean (* is_editable) (const GSheetModel *sheet_model, glong row, glong column); + + GdkColor * (* get_foreground) (const GSheetModel *sheet_model, + glong row, glong column); + + GdkColor * (* get_background) (const GSheetModel *sheet_model, + glong row, glong column); + + const GtkJustification * (* get_justification) (const GSheetModel *sheet_model, + glong row, glong column); - gboolean (* clear_datum) (GSheetModel *sheet_model, - gint row, gint column); + const GtkSheetCellBorder * (* get_cell_border) (const GSheetModel *sheet_model, + glong row, glong column); - gboolean (* is_visible) (const GSheetModel *sheet_model, gint row, gint column); - gboolean (* is_editable) (const GSheetModel *sheet_model, gint row, gint column); - const GdkColor * (* get_foreground) (const GSheetModel *sheet_model, - gint row, gint column); - const GdkColor * (* get_background) (const GSheetModel *sheet_model, - gint row, gint column); + /* column related metadata */ - const GtkJustification * (* get_justification) (const GSheetModel *sheet_model, - gint row, gint column); + gchar * (*get_column_title) (const GSheetModel *, gint col); + gchar * (*get_column_subtitle) (const GSheetModel *, gint col); + gboolean (*get_column_sensitivity) (const GSheetModel *, gint col); + GtkJustification (*get_column_justification) (const GSheetModel *mode, gint col); + const GtkSheetButton * (* get_button) (const GSheetModel *model, gint col); - const PangoFontDescription * (* get_font_desc) (const GSheetModel *sheet_model, - gint row, gint column); + glong (*get_column_count) (const GSheetModel *model); - const GtkSheetCellBorder * (* get_cell_border) (const GSheetModel *sheet_model, - gint row, gint column); + /* row related metadata */ + gchar * (*get_row_title) (const GSheetModel *, gint row); + gchar * (*get_row_subtitle) (const GSheetModel *, gint row); + glong (*get_row_count) (const GSheetModel *model); + gboolean (*get_row_sensitivity) (const GSheetModel *, gint row); }; @@ -118,50 +145,83 @@ struct _GSheetModelIface GType g_sheet_model_get_type (void) G_GNUC_CONST; -inline const gchar * g_sheet_model_get_string (const GSheetModel *sheet_model, - gint row, gint column); +gchar * g_sheet_model_get_string (const GSheetModel *sheet_model, + glong row, glong column); + +gboolean g_sheet_model_set_string (GSheetModel *sheet_model, + const gchar *s, + glong row, glong column); + +gboolean g_sheet_model_datum_clear (GSheetModel *sheet_model, + glong row, glong column); + + +void g_sheet_model_range_changed (GSheetModel *sheet_model, + glong row0, glong col0, + glong rowi, glong coli); + +void g_sheet_model_rows_deleted (GSheetModel *sheet_model, + glong row, glong n_rows); + +void g_sheet_model_rows_inserted (GSheetModel *sheet_model, + glong row, glong n_rows); + +void g_sheet_model_columns_inserted (GSheetModel *sheet_model, + glong column, glong n_columns); + +void g_sheet_model_columns_deleted (GSheetModel *sheet_model, + glong column, glong n_columns); + + +gboolean g_sheet_model_is_editable (const GSheetModel *model, + glong row, glong column); + +gboolean g_sheet_model_is_visible + (const GSheetModel *model, glong row, glong column); + + +GdkColor *g_sheet_model_get_foreground + (const GSheetModel *model, glong row, glong column); + +GdkColor *g_sheet_model_get_background + (const GSheetModel *model, glong row, glong column); -inline gboolean g_sheet_model_set_string (GSheetModel *sheet_model, - const gchar *s, - gint row, gint column); +const GtkJustification *g_sheet_model_get_justification + (const GSheetModel *model, glong row, glong column); -inline gboolean g_sheet_model_datum_clear (GSheetModel *sheet_model, - gint row, gint column); +const GtkSheetCellBorder * g_sheet_model_get_cell_border + (const GSheetModel *model, glong row, glong column); +gboolean g_sheet_model_free_strings (const GSheetModel *sheet_model); -inline void g_sheet_model_range_changed (GSheetModel *sheet_model, - gint row0, gint col0, - gint rowi, gint coli); +glong g_sheet_model_get_column_count (const GSheetModel *sheet_model); -inline void g_sheet_model_rows_deleted (GSheetModel *sheet_model, - gint row, gint n_rows); +gint g_sheet_model_get_row_count (const GSheetModel *sheet_model); -inline void g_sheet_model_rows_inserted (GSheetModel *sheet_model, - gint row, gint n_rows); + -inline gboolean g_sheet_model_is_editable (const GSheetModel *model, - gint row, gint column); +gboolean g_sheet_model_get_column_sensitivity (const GSheetModel *model, + gint col); -inline gboolean g_sheet_model_is_visible - (const GSheetModel *model, gint row, gint column); +gchar * g_sheet_model_get_column_subtitle (const GSheetModel *model, + gint col); +GtkSheetButton * g_sheet_model_get_column_button (const GSheetModel *, gint); -inline const GdkColor *g_sheet_model_get_foreground - (const GSheetModel *model, gint row, gint column); +GtkJustification g_sheet_model_get_column_justification (const GSheetModel *, + gint); -inline const GdkColor *g_sheet_model_get_background - (const GSheetModel *model, gint row, gint column); + +gboolean g_sheet_model_get_row_sensitivity (const GSheetModel *model, + gint row); -inline const GtkJustification *g_sheet_model_get_justification - (const GSheetModel *model, gint row, gint column); +gchar * g_sheet_model_get_row_subtitle (const GSheetModel *model, + gint row); -inline const PangoFontDescription *g_sheet_model_get_font_desc - (const GSheetModel *model, gint row, gint column); -inline const GtkSheetCellBorder * g_sheet_model_get_cell_border - (const GSheetModel *model, gint row, gint column); +GtkSheetButton * g_sheet_model_get_row_button (const GSheetModel *, gint);