pspp-sheet-view: Optimize by making column header widgets lazy.
[pspp] / src / ui / gui / pspp-sheet-view-column.h
index 82c20e41df5575310129c79cca0ecfa9161cd700..743440f6820e4b52f124135041c7ab2fe184d8b6 100644 (file)
@@ -40,7 +40,6 @@
 
 G_BEGIN_DECLS
 
-
 #define PSPP_TYPE_SHEET_VIEW_COLUMN         (pspp_sheet_view_column_get_type ())
 #define PSPP_SHEET_VIEW_COLUMN(obj)         (G_TYPE_CHECK_INSTANCE_CAST ((obj), PSPP_TYPE_SHEET_VIEW_COLUMN, PsppSheetViewColumn))
 #define PSPP_SHEET_VIEW_COLUMN_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PSPP_TYPE_SHEET_VIEW_COLUMN, PsppSheetViewColumnClass))
@@ -48,16 +47,6 @@ G_BEGIN_DECLS
 #define PSPP_IS_SHEET_VIEW_COLUMN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PSPP_TYPE_SHEET_VIEW_COLUMN))
 #define PSPP_SHEET_VIEW_COLUMN_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PSPP_TYPE_SHEET_VIEW_COLUMN, PsppSheetViewColumnClass))
 
-typedef enum
-{
-  PSPP_SHEET_VIEW_COLUMN_GROW_ONLY,
-  PSPP_SHEET_VIEW_COLUMN_AUTOSIZE,
-  PSPP_SHEET_VIEW_COLUMN_FIXED
-} PsppSheetViewColumnSizing;
-
-GType pspp_sheet_view_column_sizing_get_type (void) G_GNUC_CONST;
-#define PSPP_TYPE_SHEET_VIEW_COLUMN_SIZING (pspp_sheet_view_column_sizing_get_type ())
-
 typedef struct _PsppSheetViewColumn      PsppSheetViewColumn;
 typedef struct _PsppSheetViewColumnClass PsppSheetViewColumnClass;
 
@@ -82,10 +71,10 @@ struct _PsppSheetViewColumn
   gfloat GSEAL (xalign);
   guint GSEAL (property_changed_signal);
   gint GSEAL (spacing);
+  GtkAllocation GSEAL (allocation);
 
   /* Sizing fields */
   /* see gtk+/doc/tree-column-sizing.txt for more information on them */
-  PsppSheetViewColumnSizing GSEAL (column_type);
   gint GSEAL (requested_width);
   gint GSEAL (button_request);
   gint GSEAL (resized_width);
@@ -117,13 +106,20 @@ struct _PsppSheetViewColumn
   guint GSEAL (reorderable)         : 1;
   guint GSEAL (use_resized_width)   : 1;
   guint GSEAL (expand)              : 1;
+  guint GSEAL (quick_edit)          : 1;
+  guint GSEAL (selected)            : 1;
+  guint GSEAL (selectable)          : 1;
+  guint GSEAL (row_head)            : 1;
+  guint GSEAL (need_button)         : 1;
 };
 
 struct _PsppSheetViewColumnClass
 {
   GtkObjectClass parent_class;
 
-  void (*clicked) (PsppSheetViewColumn *tree_column);
+  gboolean (*clicked) (PsppSheetViewColumn *tree_column);
+  gboolean (*button_press_event) (PsppSheetViewColumn *,
+                                  GdkEventButton *);
 
   /* Padding for future expansion */
   void (*_gtk_reserved1) (void);
@@ -170,9 +166,6 @@ gboolean                pspp_sheet_view_column_get_visible         (PsppSheetVie
 void                    pspp_sheet_view_column_set_resizable       (PsppSheetViewColumn       *tree_column,
                                                                  gboolean                 resizable);
 gboolean                pspp_sheet_view_column_get_resizable       (PsppSheetViewColumn       *tree_column);
-void                    pspp_sheet_view_column_set_sizing          (PsppSheetViewColumn       *tree_column,
-                                                                 PsppSheetViewColumnSizing  type);
-PsppSheetViewColumnSizing pspp_sheet_view_column_get_sizing          (PsppSheetViewColumn       *tree_column);
 gint                    pspp_sheet_view_column_get_width           (PsppSheetViewColumn       *tree_column);
 gint                    pspp_sheet_view_column_get_fixed_width     (PsppSheetViewColumn       *tree_column);
 void                    pspp_sheet_view_column_set_fixed_width     (PsppSheetViewColumn       *tree_column,
@@ -208,6 +201,20 @@ void                    pspp_sheet_view_column_set_reorderable     (PsppSheetVie
                                                                  gboolean                 reorderable);
 gboolean                pspp_sheet_view_column_get_reorderable     (PsppSheetViewColumn       *tree_column);
 
+void                    pspp_sheet_view_column_set_quick_edit     (PsppSheetViewColumn       *tree_column,
+                                                                 gboolean                 quick_edit);
+gboolean                pspp_sheet_view_column_get_quick_edit     (PsppSheetViewColumn       *tree_column);
+void                    pspp_sheet_view_column_set_selected     (PsppSheetViewColumn       *tree_column,
+                                                                 gboolean                 selected);
+gboolean                pspp_sheet_view_column_get_selected     (PsppSheetViewColumn       *tree_column);
+
+void                    pspp_sheet_view_column_set_selectable     (PsppSheetViewColumn       *tree_column,
+                                                                 gboolean                 selectable);
+gboolean                pspp_sheet_view_column_get_selectable     (PsppSheetViewColumn       *tree_column);
+void                    pspp_sheet_view_column_set_row_head     (PsppSheetViewColumn       *tree_column,
+                                                                 gboolean                 row_head);
+gboolean                pspp_sheet_view_column_get_row_head     (PsppSheetViewColumn       *tree_column);
+
 
 
 /* You probably only want to use pspp_sheet_view_column_set_sort_column_id.  The
@@ -228,9 +235,7 @@ GtkSortType             pspp_sheet_view_column_get_sort_order      (PsppSheetVie
  */
 void                    pspp_sheet_view_column_cell_set_cell_data  (PsppSheetViewColumn       *tree_column,
                                                                  GtkTreeModel            *tree_model,
-                                                                 GtkTreeIter             *iter,
-                                                                 gboolean                 is_expander,
-                                                                 gboolean                 is_expanded);
+                                                                 GtkTreeIter             *iter);
 void                    pspp_sheet_view_column_cell_get_size       (PsppSheetViewColumn       *tree_column,
                                                                  const GdkRectangle      *cell_area,
                                                                  gint                    *x_offset,
@@ -247,6 +252,14 @@ gboolean                pspp_sheet_view_column_cell_get_position   (PsppSheetVie
 void                    pspp_sheet_view_column_queue_resize        (PsppSheetViewColumn       *tree_column);
 GtkWidget              *pspp_sheet_view_column_get_tree_view       (PsppSheetViewColumn       *tree_column);
 
+void                    pspp_sheet_view_column_size_request       (PsppSheetViewColumn       *tree_column,
+                                                                    GtkRequisition             *requisition);
+
+void                    pspp_sheet_view_column_size_allocate       (PsppSheetViewColumn       *tree_column,
+                                                                    GtkAllocation             *allocation);
+gboolean                pspp_sheet_view_column_can_focus           (PsppSheetViewColumn       *tree_column);
+void                    pspp_sheet_view_column_set_need_button     (PsppSheetViewColumn       *tree_column,
+                                                                    gboolean                   need_button);
 
 G_END_DECLS