X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcellarea.h;h=a0cc50f0059034bcbaafa1af7c630d8dd02f74ed;hb=09e3d9d3aaafa1b756120afcd5d2a80f4ae13439;hp=073f76a2d1c16d28289c3e9c020e849a0ce4256b;hpb=0d7fdfb36ecd7a1eeae5050656aff538a5b0440a;p=~andy%2Fgtk diff --git a/gtk/gtkcellarea.h b/gtk/gtkcellarea.h index 073f76a2d..a0cc50f00 100644 --- a/gtk/gtkcellarea.h +++ b/gtk/gtkcellarea.h @@ -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__ */