Fix problem redrawing old active cell
[pspp-builds.git] / lib / gtksheet / gsheetmodel.h
index 97db2d1b85101b676cf773464889dddd6eea6d81..510c92e9fcf5d3ae7a9a73051f4c2719e6848803 100644 (file)
@@ -26,7 +26,7 @@
 #include <glib-object.h>
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
-
+#include "gtkextra-sheet.h"
 
 G_BEGIN_DECLS
 
@@ -51,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
@@ -75,20 +75,22 @@ struct _GSheetModelIface
 
   /* 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,
-                                    gint column, gint n_columns);
+                                       glong column, glong n_columns);
 
   void         (* columns_deleted)     (GSheetModel *sheet_model,
-                                    gint column, gint n_columns);
+                                       glong column, glong n_columns);
+
+
 
 
 
@@ -96,37 +98,49 @@ struct _GSheetModelIface
   /* Virtual Table */
 
   gchar *      (* get_string)      (const GSheetModel *sheet_model,
-                                              gint row, gint column);
+                                   glong row, glong column);
 
   gboolean  (* set_string) (GSheetModel *sheet_model,
-                           const gchar *s, gint row, gint column);
+                           const gchar *s, glong row, glong column);
 
   gboolean  (* clear_datum) (GSheetModel *sheet_model,
-                            gint row, gint column);
+                            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);
+  gboolean (* is_editable) (const GSheetModel *sheet_model, glong row, glong column);
 
-  const GdkColor *  (* get_foreground) (const GSheetModel *sheet_model,
-                                   gint row, gint column);
+  GdkColor *  (* get_foreground) (const GSheetModel *sheet_model,
+                                 glong row, glong column);
 
-  const GdkColor *  (* get_background) (const GSheetModel *sheet_model,
-                                   gint row, gint column);
+  GdkColor *  (* get_background) (const GSheetModel *sheet_model,
+                                 glong row, glong column);
 
   const GtkJustification *  (* get_justification) (const GSheetModel *sheet_model,
-                                                  gint row, gint column);
+                                                  glong row, glong column);
 
   const PangoFontDescription *  (* get_font_desc) (const GSheetModel *sheet_model,
-                                                  gint row, gint column);
+                                                  glong row, glong column);
 
   const GtkSheetCellBorder *  (* get_cell_border) (const GSheetModel *sheet_model,
-                                                  gint row, gint column);
+                                                  glong row, glong column);
+
+
 
+  /* column related metadata */
 
-  gint (*get_column_count) (const GSheetModel *model);
+  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);
 
-  gint (*get_row_count) (const GSheetModel *model);
+  glong (*get_column_count) (const GSheetModel *model);
 
+
+  /* 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);
 };
 
 
@@ -134,63 +148,91 @@ struct _GSheetModelIface
 GType              g_sheet_model_get_type   (void) G_GNUC_CONST;
 
 
-inline  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);
 
-inline gboolean g_sheet_model_datum_clear    (GSheetModel *sheet_model,
                                       gint row, gint column);
+const GtkJustification *g_sheet_model_get_justification
(const GSheetModel *model, glong row, glong column);
 
 
-inline void g_sheet_model_range_changed (GSheetModel *sheet_model,
-                                   gint row0, gint col0,
-                                   gint rowi, gint coli);
+const PangoFontDescription *g_sheet_model_get_font_desc
+ (const GSheetModel *model, glong row, glong column);
 
-inline void g_sheet_model_rows_deleted (GSheetModel *sheet_model,
                                 gint row, gint n_rows);
+const GtkSheetCellBorder * g_sheet_model_get_cell_border
(const GSheetModel *model, glong row, glong column);
 
-inline void g_sheet_model_rows_inserted (GSheetModel *sheet_model,
-                                   gint row, gint n_rows);
+gboolean g_sheet_model_free_strings (const GSheetModel *sheet_model);
 
-inline void g_sheet_model_columns_inserted (GSheetModel *sheet_model,
-                                           gint column, gint n_columns);
+glong g_sheet_model_get_column_count (const GSheetModel *sheet_model);
 
-inline void g_sheet_model_columns_deleted (GSheetModel *sheet_model,
-                                          gint column, gint n_columns);
+gint g_sheet_model_get_row_count (const GSheetModel *sheet_model);
 
+\f
 
-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);
+\f
 
+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);
 
-inline  gboolean g_sheet_model_free_strings (const GSheetModel *sheet_model);
 
-inline gint g_sheet_model_get_column_count(const GSheetModel *sheet_model);
 
-inline gint g_sheet_model_get_row_count(const GSheetModel *sheet_model);
 
 G_END_DECLS