]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcellarea.h
Added gtk_cell_area_stop_editing to allow explicit stopping of cell editing.
[~andy/gtk] / gtk / gtkcellarea.h
index 073f76a2d1c16d28289c3e9c020e849a0ce4256b..a0cc50f0059034bcbaafa1af7c630d8dd02f74ed 100644 (file)
@@ -44,7 +44,7 @@ G_BEGIN_DECLS
 typedef struct _GtkCellArea              GtkCellArea;
 typedef struct _GtkCellAreaClass         GtkCellAreaClass;
 typedef struct _GtkCellAreaPrivate       GtkCellAreaPrivate;
-
+typedef struct _GtkCellAreaIter          GtkCellAreaIter;
 
 /**
  * GtkCellCallback:
@@ -58,23 +58,6 @@ typedef void    (*GtkCellCallback)     (GtkCellRenderer  *renderer,
                                        gpointer          data);
 
 
-/**
- * GtkCellAttributeCallback:
- * @renderer: the #GtkCellRenderer that has an attribute
- * @attribute: the property attributed to @id
- * @id: the identifier of this attributed value
- * @data: user-supplied data
- *
- * The type of the callback functions used for iterating over the 
- * attributes of the cell renderers in a #GtkCellArea, 
- * see gtk_cell_area_attribute_forall().
- */
-typedef void    (*GtkCellAttributeCallback)     (GtkCellRenderer  *renderer,
-                                                const gchar      *attribute,
-                                                gint              id,
-                                                gpointer          data);
-
-
 struct _GtkCellArea
 {
   GInitiallyUnowned parent_instance;
@@ -96,50 +79,67 @@ struct _GtkCellAreaClass
   void               (* forall)                          (GtkCellArea             *area,
                                                          GtkCellCallback          callback,
                                                          gpointer                 callback_data);
+  void               (* get_cell_allocation)             (GtkCellArea             *area,
+                                                         GtkCellAreaIter         *iter,
+                                                         GtkWidget               *widget,
+                                                         GtkCellRenderer         *renderer,
+                                                         const GdkRectangle      *cell_area,
+                                                         GdkRectangle            *allocation);
   gint               (* event)                           (GtkCellArea             *area,
+                                                         GtkCellAreaIter         *iter,
                                                          GtkWidget               *widget,
                                                          GdkEvent                *event,
-                                                         const GdkRectangle      *cell_area);
+                                                         const GdkRectangle      *cell_area,
+                                                         GtkCellRendererState     flags);
   void               (* render)                          (GtkCellArea             *area,
-                                                         cairo_t                 *cr,
+                                                         GtkCellAreaIter         *iter,
                                                          GtkWidget               *widget,
-                                                         const GdkRectangle      *cell_area);
-
-  /* Attributes */
-  void               (* attribute_connect)               (GtkCellArea             *area,
-                                                         GtkCellRenderer         *renderer,
-                                                         const gchar             *attribute,
-                                                         gint                     id);
-  void               (* attribute_disconnect)            (GtkCellArea             *area,
-                                                         GtkCellRenderer         *renderer,
-                                                         const gchar             *attribute,
-                                                         gint                     id);
-  void               (* attribute_forall)                (GtkCellArea             *area,
-                                                         GtkCellRenderer         *renderer,
-                                                         GtkCellAttributeCallback callback,
-                                                         gpointer                 user_data);
+                                                         cairo_t                 *cr,
+                                                         const GdkRectangle      *cell_area,
+                                                         GtkCellRendererState     flags);
 
   /* Geometry */
+  GtkCellAreaIter   *(* create_iter)                     (GtkCellArea             *area);
   GtkSizeRequestMode (* get_request_mode)                (GtkCellArea             *area);
   void               (* get_preferred_width)             (GtkCellArea             *area,
+                                                         GtkCellAreaIter         *iter,
                                                           GtkWidget               *widget,
                                                           gint                    *minimum_size,
                                                           gint                    *natural_size);
   void               (* get_preferred_height_for_width)  (GtkCellArea             *area,
+                                                         GtkCellAreaIter         *iter,
                                                           GtkWidget               *widget,
                                                           gint                     width,
                                                           gint                    *minimum_height,
                                                           gint                    *natural_height);
   void               (* get_preferred_height)            (GtkCellArea             *area,
+                                                         GtkCellAreaIter         *iter,
                                                           GtkWidget               *widget,
                                                           gint                    *minimum_size,
                                                           gint                    *natural_size);
   void               (* get_preferred_width_for_height)  (GtkCellArea             *area,
+                                                         GtkCellAreaIter         *iter,
                                                           GtkWidget               *widget,
                                                           gint                     height,
                                                           gint                    *minimum_width,
                                                           gint                    *natural_width);
 
+  /* Cell Properties */
+  void               (* set_cell_property)               (GtkCellArea             *area,
+                                                         GtkCellRenderer         *renderer,
+                                                         guint                    property_id,
+                                                         const GValue            *value,
+                                                         GParamSpec              *pspec);
+  void               (* get_cell_property)               (GtkCellArea             *area,
+                                                         GtkCellRenderer         *renderer,
+                                                         guint                    property_id,
+                                                         GValue                  *value,
+                                                         GParamSpec              *pspec);
+
+  /* Focus */
+  void               (* grab_focus)                      (GtkCellArea             *area,
+                                                         GtkDirectionType         direction);
+  void               (* update_focus)                    (GtkCellArea             *area);
 
   /* Padding for future expansion */
   void (*_gtk_reserved1) (void);
@@ -155,64 +155,176 @@ struct _GtkCellAreaClass
 GType              gtk_cell_area_get_type                       (void) G_GNUC_CONST;
 
 /* Basic methods */
-void               gtk_cell_area_add                            (GtkCellArea        *area,
-                                                                GtkCellRenderer    *renderer);
-void               gtk_cell_area_remove                         (GtkCellArea        *area,
-                                                                GtkCellRenderer    *renderer);
-void               gtk_cell_area_forall                         (GtkCellArea        *area,
-                                                                GtkCellCallback     callback,
-                                                                gpointer            callback_data);
-gint               gtk_cell_area_event                          (GtkCellArea        *area,
-                                                                GtkWidget          *widget,
-                                                                GdkEvent           *event,
-                                                                const GdkRectangle *cell_area);
-void               gtk_cell_area_render                         (GtkCellArea        *area,
-                                                                cairo_t            *cr,
-                                                                GtkWidget          *widget,
-                                                                const GdkRectangle *cell_area);
-
-/* Attributes */
-void               gtk_cell_area_attribute_connect              (GtkCellArea             *area,
-                                                                GtkCellRenderer         *renderer,
-                                                                const gchar             *attribute,
-                                                                gint                     id); 
-void               gtk_cell_area_attribute_disconnect           (GtkCellArea             *area,
-                                                                GtkCellRenderer         *renderer,
-                                                                const gchar             *attribute,
-                                                                gint                     id);
-void               gtk_cell_area_attribute_forall               (GtkCellArea             *area,
-                                                                GtkCellRenderer         *renderer,
-                                                                GtkCellAttributeCallback callback,
-                                                                gpointer                 user_data);
+void               gtk_cell_area_add                            (GtkCellArea          *area,
+                                                                GtkCellRenderer      *renderer);
+void               gtk_cell_area_remove                         (GtkCellArea          *area,
+                                                                GtkCellRenderer      *renderer);
+void               gtk_cell_area_forall                         (GtkCellArea          *area,
+                                                                GtkCellCallback       callback,
+                                                                gpointer              callback_data);
+void               gtk_cell_area_get_cell_allocation            (GtkCellArea          *area,
+                                                                GtkCellAreaIter      *iter,
+                                                                GtkWidget            *widget,
+                                                                GtkCellRenderer      *renderer,
+                                                                const GdkRectangle   *cell_area,
+                                                                GdkRectangle         *allocation);
+gint               gtk_cell_area_event                          (GtkCellArea          *area,
+                                                                GtkCellAreaIter      *iter,
+                                                                GtkWidget            *widget,
+                                                                GdkEvent             *event,
+                                                                const GdkRectangle   *cell_area,
+                                                                GtkCellRendererState  flags);
+void               gtk_cell_area_render                         (GtkCellArea          *area,
+                                                                GtkCellAreaIter      *iter,
+                                                                GtkWidget            *widget,
+                                                                cairo_t              *cr,
+                                                                const GdkRectangle   *cell_area,
+                                                                GtkCellRendererState  flags);
 
 /* Geometry */
+GtkCellAreaIter   *gtk_cell_area_create_iter                    (GtkCellArea        *area);
 GtkSizeRequestMode gtk_cell_area_get_request_mode               (GtkCellArea        *area);
 void               gtk_cell_area_get_preferred_width            (GtkCellArea        *area,
+                                                                GtkCellAreaIter    *iter,
                                                                 GtkWidget          *widget,
                                                                 gint               *minimum_size,
                                                                 gint               *natural_size);
 void               gtk_cell_area_get_preferred_height_for_width (GtkCellArea        *area,
+                                                                GtkCellAreaIter    *iter,
                                                                 GtkWidget          *widget,
                                                                 gint                width,
                                                                 gint               *minimum_height,
                                                                 gint               *natural_height);
 void               gtk_cell_area_get_preferred_height           (GtkCellArea        *area,
+                                                                GtkCellAreaIter    *iter,
                                                                 GtkWidget          *widget,
                                                                 gint               *minimum_size,
                                                                 gint               *natural_size);
 void               gtk_cell_area_get_preferred_width_for_height (GtkCellArea        *area,
+                                                                GtkCellAreaIter    *iter,
                                                                 GtkWidget          *widget,
                                                                 gint                height,
                                                                 gint               *minimum_width,
                                                                 gint               *natural_width);
+G_CONST_RETURN gchar *gtk_cell_area_get_current_path_string     (GtkCellArea        *area);
 
 
-/* Following apis are not class virtual methods */
+/* Attributes */
 void               gtk_cell_area_apply_attributes               (GtkCellArea        *area,
                                                                 GtkTreeModel       *tree_model,
-                                                                GtkTreeIter        *iter);
+                                                                GtkTreeIter        *iter,
+                                                                gboolean            is_expander,
+                                                                gboolean            is_expanded);
+void               gtk_cell_area_attribute_connect              (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *attribute,
+                                                                gint                column); 
+void               gtk_cell_area_attribute_disconnect           (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *attribute);
+
+/* Cell Properties */
+void               gtk_cell_area_class_install_cell_property    (GtkCellAreaClass   *aclass,
+                                                                guint               property_id,
+                                                                GParamSpec         *pspec);
+GParamSpec*        gtk_cell_area_class_find_cell_property       (GtkCellAreaClass   *aclass,
+                                                                const gchar        *property_name);
+GParamSpec**       gtk_cell_area_class_list_cell_properties     (GtkCellAreaClass   *aclass,
+                                                                guint              *n_properties);
+void               gtk_cell_area_add_with_properties            (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *first_prop_name,
+                                                                ...) G_GNUC_NULL_TERMINATED;
+void               gtk_cell_area_cell_set                       (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *first_prop_name,
+                                                                ...) G_GNUC_NULL_TERMINATED;
+void               gtk_cell_area_cell_get                       (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *first_prop_name,
+                                                                ...) G_GNUC_NULL_TERMINATED;
+void               gtk_cell_area_cell_set_valist                (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *first_property_name,
+                                                                va_list             var_args);
+void               gtk_cell_area_cell_get_valist                (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *first_property_name,
+                                                                va_list             var_args);
+void               gtk_cell_area_cell_set_property              (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *property_name,
+                                                                const GValue       *value);
+void               gtk_cell_area_cell_get_property              (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                const gchar        *property_name,
+                                                                GValue             *value);
+
+#define GTK_CELL_AREA_WARN_INVALID_CHILD_PROPERTY_ID(object, property_id, pspec) \
+  G_OBJECT_WARN_INVALID_PSPEC ((object), "cell property id", (property_id), (pspec))
 
 
+/* Focus */
+void               gtk_cell_area_grab_focus                     (GtkCellArea        *area,
+                                                                GtkDirectionType    direction);
+void               gtk_cell_area_focus_leave                    (GtkCellArea        *area,
+                                                                GtkDirectionType    direction,
+                                                                const gchar        *path);
+void               gtk_cell_area_update_focus                   (GtkCellArea        *area);
+void               gtk_cell_area_set_can_focus                  (GtkCellArea        *area,
+                                                                gboolean            can_focus);
+gboolean           gtk_cell_area_get_can_focus                  (GtkCellArea        *area);
+void               gtk_cell_area_set_focus_cell                 (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer);
+GtkCellRenderer   *gtk_cell_area_get_focus_cell                 (GtkCellArea        *area);
+
+
+/* Cell Activation/Editing */
+void               gtk_cell_area_set_edited_cell                (GtkCellArea          *area,
+                                                                GtkCellRenderer      *renderer);
+GtkCellRenderer   *gtk_cell_area_get_edited_cell                (GtkCellArea          *area);
+void               gtk_cell_area_set_edit_widget                (GtkCellArea          *area,
+                                                                GtkCellEditable      *editable);
+GtkCellEditable   *gtk_cell_area_get_edit_widget                (GtkCellArea          *area);
+gboolean           gtk_cell_area_activate_cell                  (GtkCellArea          *area,
+                                                                GtkWidget            *widget,
+                                                                GtkCellRenderer      *renderer,
+                                                                GdkEvent             *event,
+                                                                const GdkRectangle   *cell_area,
+                                                                GtkCellRendererState  flags);
+void               gtk_cell_area_stop_editing                   (GtkCellArea          *area,
+                                                                gboolean              canceled);
+
+/* Margins */
+gint               gtk_cell_area_get_cell_margin_left           (GtkCellArea        *area);
+void               gtk_cell_area_set_cell_margin_left           (GtkCellArea        *area,
+                                                                gint                margin);
+gint               gtk_cell_area_get_cell_margin_right          (GtkCellArea        *area);
+void               gtk_cell_area_set_cell_margin_right          (GtkCellArea        *area,
+                                                                gint                margin);
+gint               gtk_cell_area_get_cell_margin_top            (GtkCellArea        *area);
+void               gtk_cell_area_set_cell_margin_top            (GtkCellArea        *area,
+                                                                gint                margin);
+gint               gtk_cell_area_get_cell_margin_bottom         (GtkCellArea        *area);
+void               gtk_cell_area_set_cell_margin_bottom         (GtkCellArea        *area,
+                                                                gint                margin);
+
+/* Functions for area implementations */
+
+/* Distinguish the inner cell area from the whole requested area including margins */
+void               gtk_cell_area_inner_cell_area                (GtkCellArea        *area,
+                                                                const GdkRectangle *cell_area,
+                                                                GdkRectangle       *inner_cell_area);
+
+/* Request the size of a cell while respecting the cell margins (requests are margin inclusive) */
+void               gtk_cell_area_request_renderer               (GtkCellArea        *area,
+                                                                GtkCellRenderer    *renderer,
+                                                                GtkOrientation      orientation,
+                                                                GtkWidget          *widget,
+                                                                gint                for_size,
+                                                                gint               *minimum_size,
+                                                                gint               *natural_size);
+
 G_END_DECLS
 
 #endif /* __GTK_CELL_AREA_H__ */