typedef struct _GtkCellArea GtkCellArea;
typedef struct _GtkCellAreaClass GtkCellAreaClass;
typedef struct _GtkCellAreaPrivate GtkCellAreaPrivate;
-
+typedef struct _GtkCellAreaIter GtkCellAreaIter;
/**
* GtkCellCallback:
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;
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);
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__ */