Replace gsheet-column interface by psppire-axis
[pspp-builds.git] / lib / gtksheet / gsheetmodel.h
index 2865e78385f037830cf75971075a38ff4616a78d..eb661c99c267a88d0c330eab96297ae621948b30 100644 (file)
  * 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 <glib-object.h>
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
-
+#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 */
+  glong row0, col0; /* upper-left cell */
+  glong rowi, coli; /* lower-right cell */
 };
 
 struct _GtkSheetCellBorder
@@ -70,47 +71,74 @@ 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 *const      (* 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_visible) (const 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);
 
-  gboolean  (* clear_datum) (GSheetModel *sheet_model, 
-                            gint row, gint column);
+  GdkColor *  (* get_background) (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 GtkJustification *  (* get_justification) (const GSheetModel *sheet_model,
+                                                  glong row, glong column);
 
-  const GdkColor *  (* get_foreground) (const GSheetModel *sheet_model, 
-                                   gint row, gint column);
+  const PangoFontDescription *  (* get_font_desc) (const GSheetModel *sheet_model,
+                                                  glong row, glong column);
 
-  const GdkColor *  (* get_background) (const GSheetModel *sheet_model, 
-                                   gint row, gint column);
+  const GtkSheetCellBorder *  (* get_cell_border) (const GSheetModel *sheet_model,
+                                                  glong row, glong column);
 
-  const GtkJustification *  (* get_justification) (const GSheetModel *sheet_model, 
-                                                  gint row, gint column);
 
-  const PangoFontDescription *  (* get_font_desc) (const GSheetModel *sheet_model, 
-                                                  gint row, gint column);
 
-  const GtkSheetCellBorder *  (* get_cell_border) (const GSheetModel *sheet_model, 
-                                                  gint row, gint column);
+  /* column related metadata */
 
+  gchar * (*get_column_title) (const GSheetModel *mode, gint col);
+  gchar * (*get_column_subtitle) (const GSheetModel *mode, gint col);
+  gboolean * (*get_column_sensitivity) (const GSheetModel *mode, gint col);
+  GtkJustification (*get_column_justification) (const GSheetModel *mode, gint col);
+  const GtkSheetButton * (* get_button) (const GSheetModel *model, gint col);
+
+  glong (*get_column_count) (const GSheetModel *model);
+
+
+  /* row related metadata */
+  glong (*get_row_count) (const GSheetModel *model);
 };
 
 
@@ -118,52 +146,76 @@ struct _GSheetModelIface
 GType              g_sheet_model_get_type   (void) G_GNUC_CONST;
 
 
-inline const gchar *const 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);
+
 
-inline gboolean  g_sheet_model_set_string (GSheetModel *sheet_model, 
-                                     const gchar *s, 
-                                     gint row, gint column);
+gboolean g_sheet_model_is_editable (const GSheetModel *model,
+                                   glong row, glong column);
 
-inline gboolean g_sheet_model_datum_clear    (GSheetModel *sheet_model, 
                                       gint row, gint column);
+gboolean g_sheet_model_is_visible
(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);
+GdkColor *g_sheet_model_get_foreground
+ (const GSheetModel *model, glong row, glong column);
 
-inline void g_sheet_model_rows_deleted (GSheetModel *sheet_model,
                                 gint row, gint n_rows);
+GdkColor *g_sheet_model_get_background
(const GSheetModel *model, glong row, glong column);
 
-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);
+const GtkJustification *g_sheet_model_get_justification
(const GSheetModel *model, glong row, glong column);
 
-inline gboolean g_sheet_model_is_visible 
-                   (const GSheetModel *model, gint row, gint column);
 
+const PangoFontDescription *g_sheet_model_get_font_desc
+ (const GSheetModel *model, glong row, glong column);
 
-inline const GdkColor *g_sheet_model_get_foreground 
                  (const GSheetModel *model, gint row, gint column);
+const GtkSheetCellBorder * g_sheet_model_get_cell_border
(const GSheetModel *model, glong row, glong column);
 
-inline const GdkColor *g_sheet_model_get_background 
-                   (const GSheetModel *model, gint row, gint column);
+gboolean g_sheet_model_free_strings (const GSheetModel *sheet_model);
 
+glong g_sheet_model_get_column_count (const GSheetModel *sheet_model);
 
-inline const GtkJustification *g_sheet_model_get_justification 
-                   (const GSheetModel *model, gint row, gint column);
+gint g_sheet_model_get_row_count (const GSheetModel *sheet_model);
 
+\f
 
-inline const PangoFontDescription *g_sheet_model_get_font_desc
-                   (const GSheetModel *model, gint row, gint column);
+gboolean g_sheet_model_get_column_sensitivity (const GSheetModel *model,
+                                              gint col);
 
-inline const GtkSheetCellBorder * g_sheet_model_get_cell_border 
-                   (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);
 
+GtkJustification g_sheet_model_get_column_justification (const GSheetModel *,
+                                                        gint);
 
 
 G_END_DECLS