Creates a new #GtkCellAreaBox.
The widget currently editing the edited cell
This property is read-only and only changes as a result of a call gtk_cell_area_activate_cell().
The cell in the area that is currently edited
This property is read-only and only changes as a result of a call gtk_cell_area_activate_cell().
The cell in the area that currently has focus
The orientation of the orientable.
The amount of space to reserve between cells.
Activates area,
usually by activating the currently focused
cell, however some subclasses which embed widgets in the area
can also activate a widget if it currently has the focus.
the #GtkCellAreaContext in context with the current row data
the #GtkWidget that area
is rendering on
the size and location of area
relative to widget’
s allocation
the #GtkCellRendererState flags for area
for this row of data.
if %TRUE then only cell renderers that are %GTK_CELL_RENDERER_MODE_EDITABLE will be activated.
This is used by #GtkCellArea subclasses when handling events to activate cells, the base #GtkCellArea class activates cells for keyboard events for free in its own GtkCellArea->activate() implementation.
the #GtkWidget that area
is rendering onto
the #GtkCellRenderer in area
to activate
the #GdkEvent for which cell activation should occur
the #GdkRectangle in widget
relative coordinates of renderer
for the current row.
the #GtkCellRendererState for renderer
Adds renderer
to area
with the default child cell properties.
the #GtkCellRenderer to add to area
Adds an attribute mapping to the list in cell_layout
.
The column
is the column of the model to get a value from, and the
attribute
is the parameter on cell
to be set from the value. So for
example if column 2 of the model contains strings, you could have the
“text” attribute of a #GtkCellRendererText get its values from column 2.
a #GtkCellRenderer
an attribute on the renderer
the column position on the model to get the attribute from
Adds sibling
to renderer’
s focusable area, focus will be drawn
around renderer
and all of its siblings if renderer
can
focus for a given row.
Events handled by focus siblings can also activate the given
focusable renderer
.
the #GtkCellRenderer expected to have focus
the #GtkCellRenderer to add to renderer’
s focus area
Applies any connected attributes to the renderers in
area
by pulling the values from tree_model
.
the #GtkTreeModel to pull values from
the #GtkTreeIter in tree_model
to apply values for
whether iter
has children
whether iter
is expanded in the view and children are visible
Connects an attribute
to apply values from column
for the
#GtkTreeModel in use.
the #GtkCellRenderer to connect an attribute for
the attribute name
the #GtkTreeModel column to fetch attribute values from
Disconnects attribute
for the renderer
in area
so that
attribute will no longer be updated with values from the
model.
the #GtkCellRenderer to disconnect an attribute for
the attribute name
Returns the model column that an attribute has been mapped to, or -1 if the attribute is not mapped.
a #GtkCellRenderer
an attribute on the renderer
Creates a binding between source_property
on source
and target_property
on target
.
Whenever the source_property
is changed the target_property
is
updated using the same value. For instance:
g_object_bind_property (action, "active", widget, "sensitive", 0);
Will result in the "sensitive" property of the widget #GObject instance to be updated with the same value of the "active" property of the action #GObject instance.
If flags
contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual:
if target_property
on target
changes then the source_property
on source
will be updated as well.
The binding will automatically be removed when either the source
or the
target
instances are finalized. To remove the binding without affecting the
source
and the target
you can just call g_object_unref() on the returned
#GBinding instance.
Removing the binding by calling g_object_unref() on it must only be done if
the binding, source
and target
are only used from a single thread and it
is clear that both source
and target
outlive the binding. Especially it
is not safe to rely on this if the binding, source
or target
can be
finalized from different threads. Keep another reference to the binding and
use g_binding_unbind() instead to be on the safe side.
A #GObject can have multiple bindings.
the property on source
to bind
the target #GObject
the property on target
to bind
flags to pass to #GBinding
Creates a binding between source_property
on source
and target_property
on target,
allowing you to set the transformation functions to be used by
the binding.
This function is the language bindings friendly version of g_object_bind_property_full(), using #GClosures instead of function pointers.
the property on source
to bind
the target #GObject
the property on target
to bind
flags to pass to #GBinding
a #GClosure wrapping the transformation function from the source
to the target,
or %NULL to use the default
a #GClosure wrapping the transformation function from the target
to the source,
or %NULL to use the default
Gets the value of a cell property for renderer
in area
.
a #GtkCellRenderer inside area
the name of the property to get
a location to return the value
Sets a cell property for renderer
in area
.
a #GtkCellRenderer inside area
the name of the cell property to set
the value to set the cell property to
Unsets all the mappings on all renderers on cell_layout
and
removes all renderers from cell_layout
.
Clears all existing attributes previously set with gtk_cell_layout_set_attributes().
a #GtkCellRenderer to clear the attribute mapping on
This is sometimes needed for cases where rows need to share alignments in one orientation but may be separately grouped in the opposing orientation.
For instance, #GtkIconView creates all icons (rows) to have the same width and the cells theirin to have the same horizontal alignments. However each row of icons may have a separate collective height. #GtkIconView uses this to request the heights of each row based on a context which was already used to request all the row widths that are to be displayed.
the #GtkCellAreaContext to copy
Creates a #GtkCellAreaContext to be used with area
for
all purposes. #GtkCellAreaContext stores geometry information
for rows for which it was operated on, it is important to use
the same context for the same row of data at all times (i.e.
one should render and handle events with the same #GtkCellAreaContext
which was used to request the size of those rows of data).
This is similar to gtk_buildable_parser_finished() but is
called once for each custom tag handled by the buildable
.
a #GtkBuilder
child object or %NULL for non-child tags
the name of the tag
user data created in custom_tag_start
This is called at the end of each custom element handled by the buildable.
#GtkBuilder used to construct this object
child object or %NULL for non-child tags
name of tag
user data that will be passed in to parser functions
This is called for each unknown element under <child>
.
a #GtkBuilder used to construct this object
child object or %NULL for non-child tags
name of tag
Delegates event handling to a #GtkCellArea.
the #GtkCellAreaContext for this row of data.
the #GtkWidget that area
is rendering to
the #GdkEvent to handle
the widget
relative coordinates for area
the #GtkCellRendererState for area
in this row.
This should be called by the area’
s owning layout widget
when focus is to be passed to area,
or moved within area
for a given direction
and row data.
Implementing #GtkCellArea classes should implement this method to receive and navigate focus in its own way particular to how it lays out cells.
the #GtkDirectionType
This function is intended for #GObject implementations to re-enforce a [floating][floating-ref] object reference. Doing this is seldom required: all #GInitiallyUnowneds are created with a floating reference which usually just needs to be sunken by calling g_object_ref_sink().
Calls callback
for every #GtkCellRenderer in area
.
the #GtkCellCallback to call
Calls callback
for every #GtkCellRenderer in area
with the
allocated rectangle inside cell_area
.
the #GtkCellAreaContext for this row of data.
the #GtkWidget that area
is rendering to
the widget
relative coordinates and size for area
the widget
relative coordinates of the background area
the #GtkCellAllocCallback to call
Increases the freeze count on object
. If the freeze count is
non-zero, the emission of "notify" signals on object
is
stopped. The signals are queued until the freeze count is decreased
to zero. Duplicate notifications are squashed so that at most one
#GObject::notify signal is emitted for each property modified while the
object is frozen.
This is necessary for accessors that modify multiple properties to prevent premature notification while the object is still being modified.
Derives the allocation of renderer
inside area
if area
were to be renderered in cell_area
.
the #GtkCellAreaContext used to hold sizes for area
.
the #GtkWidget that area
is rendering on
the #GtkCellRenderer to get the allocation for
the whole allocated area for area
in widget
for this row
Gets the #GtkCellRenderer at x
and y
coordinates inside area
and optionally
returns the full cell allocation for it inside cell_area
.
the #GtkCellAreaContext used to hold sizes for area
.
the #GtkWidget that area
is rendering on
the whole allocated area for area
in widget
for this row
the x position
the y position
Returns the cell renderers which have been added to cell_layout
.
Gets the current #GtkTreePath string for the currently applied #GtkTreeIter, this is implicitly updated when gtk_cell_area_apply_attributes() is called and can be used to interact with renderers from #GtkCellArea subclasses.
Gets a named field from the objects table of associations (see g_object_set_data()).
name of the key for that association
Gets the #GtkCellEditable widget currently used to edit the currently edited cell.
Gets the #GtkCellRenderer in area
that is currently
being edited.
Retrieves the currently focused cell for area
Gets the #GtkCellRenderer which is expected to be focusable
for which renderer
is, or may be a sibling.
This is handy for #GtkCellArea subclasses when handling events, after determining the renderer at the event location it can then chose to activate the focus cell for which the event cell may have been a sibling.
the #GtkCellRenderer
Gets the focus sibling cell renderers for renderer
.
the #GtkCellRenderer expected to have focus
Gets the name of the buildable
object.
#GtkBuilder sets the name based on the
[GtkBuilder UI definition][BUILDER-UI]
used to construct the buildable
.
Retrieves the orientation of the orientable
.
Retrieves a cell area’s initial minimum and natural height.
area
will store some geometrical information in context
along the way;
when requesting sizes over an arbitrary number of rows, it’s not important
to check the minimum_height
and natural_height
of this call but rather to
consult gtk_cell_area_context_get_preferred_height() after a series of
requests.
the #GtkCellAreaContext to perform this request with
the #GtkWidget where area
will be rendering
Retrieves a cell area’s minimum and natural height if it would be given
the specified width
.
area
stores some geometrical information in context
along the way
while calling gtk_cell_area_get_preferred_width(). It’s important to
perform a series of gtk_cell_area_get_preferred_width() requests with
context
first and then call gtk_cell_area_get_preferred_height_for_width()
on each cell area individually to get the height for width of each
fully requested row.
If at some point, the width of a single row changes, it should be requested with gtk_cell_area_get_preferred_width() again and then the full width of the requested rows checked again with gtk_cell_area_context_get_preferred_width().
the #GtkCellAreaContext which has already been requested for widths.
the #GtkWidget where area
will be rendering
the width for which to check the height of this area
Retrieves a cell area’s initial minimum and natural width.
area
will store some geometrical information in context
along the way;
when requesting sizes over an arbitrary number of rows, it’s not important
to check the minimum_width
and natural_width
of this call but rather to
consult gtk_cell_area_context_get_preferred_width() after a series of
requests.
the #GtkCellAreaContext to perform this request with
the #GtkWidget where area
will be rendering
Retrieves a cell area’s minimum and natural width if it would be given
the specified height
.
area
stores some geometrical information in context
along the way
while calling gtk_cell_area_get_preferred_height(). It’s important to
perform a series of gtk_cell_area_get_preferred_height() requests with
context
first and then call gtk_cell_area_get_preferred_width_for_height()
on each cell area individually to get the height for width of each
fully requested row.
If at some point, the height of a single row changes, it should be requested with gtk_cell_area_get_preferred_height() again and then the full height of the requested rows checked again with gtk_cell_area_context_get_preferred_height().
the #GtkCellAreaContext which has already been requested for widths.
the #GtkWidget where area
will be rendering
the height for which to check the width of this area
Gets a property of an object.
The value
can be:
In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling g_value_unset().
Note that g_object_get_property() is really intended for language bindings, g_object_get() is much more convenient for C programming.
the name of the property to get
return location for the property value
This function gets back user data pointers stored via g_object_set_qdata().
A #GQuark, naming the user data pointer
Gets whether the area prefers a height-for-width layout or a width-for-height layout.
Gets the spacing added between cell renderers.
Gets n_properties
properties for an object
.
Obtained properties will be set to values
. All properties must be valid.
Warnings will be emitted and undefined behaviour may result if invalid
properties are passed in.
the names of each property to get
the values of each property to get
Checks if area
contains renderer
.
the #GtkCellRenderer to check
This is a convenience function for #GtkCellArea implementations to get the inner area where a given #GtkCellRenderer will be rendered. It removes any padding previously added by gtk_cell_area_request_renderer().
the #GtkWidget that area
is rendering onto
the widget
relative coordinates where one of area’
s cells is to be placed
Returns whether the area can do anything when activated,
after applying new attributes to area
.
Checks whether object
has a [floating][floating-ref] reference.
Returns whether sibling
is one of renderer’
s focus siblings
(see gtk_cell_area_add_focus_sibling()).
the #GtkCellRenderer expected to have focus
the #GtkCellRenderer to check against renderer’
s sibling list
Emits a "notify" signal for the property property_name
on object
.
When possible, eg. when signaling a property change from within the class that registered the property, you should use g_object_notify_by_pspec() instead.
Note that emission of the notify signal may be blocked with g_object_freeze_notify(). In this case, the signal emissions are queued and will be emitted (in reverse order) when g_object_thaw_notify() is called.
the name of a property installed on the class of object
.
Emits a "notify" signal for the property specified by pspec
on object
.
This function omits the property name lookup, hence it is faster than g_object_notify().
One way to avoid using g_object_notify() from within the class that registered the properties, and using g_object_notify_by_pspec() instead, is to store the GParamSpec used with g_object_class_install_property() inside a static array, e.g.:
enum
{
PROP_0,
PROP_FOO,
PROP_LAST
};
static GParamSpec *properties[PROP_LAST];
static void
my_object_class_init (MyObjectClass *klass)
{
properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
0, 100,
50,
G_PARAM_READWRITE);
g_object_class_install_property (gobject_class,
PROP_FOO,
properties[PROP_FOO]);
}
and then notify a change on the "foo" property with:
g_object_notify_by_pspec (self, properties[PROP_FOO]);
the #GParamSpec of a property installed on the class of object
.
Adds renderer
to box,
packed with reference to the end of box
.
The renderer
is packed after (away from end of) any other
#GtkCellRenderer packed with reference to the end of box
.
the #GtkCellRenderer to add
whether renderer
should receive extra space when the area receives more than its natural size
whether renderer
should be aligned in adjacent rows
whether renderer
should have the same size in all rows
Adds the cell
to the end of cell_layout
. If expand
is %FALSE, then the
cell
is allocated no more space than it needs. Any unused space is
divided evenly between cells for which expand
is %TRUE.
Note that reusing the same cell renderer is not supported.
a #GtkCellRenderer
%TRUE if cell
is to be given extra space allocated to cell_layout
Adds renderer
to box,
packed with reference to the start of box
.
The renderer
is packed after any other #GtkCellRenderer packed
with reference to the start of box
.
the #GtkCellRenderer to add
whether renderer
should receive extra space when the area receives more than its natural size
whether renderer
should be aligned in adjacent rows
whether renderer
should have the same size in all rows
Packs the cell
into the beginning of cell_layout
. If expand
is %FALSE,
then the cell
is allocated no more space than it needs. Any unused space
is divided evenly between cells for which expand
is %TRUE.
Note that reusing the same cell renderer is not supported.
a #GtkCellRenderer
%TRUE if cell
is to be given extra space allocated to cell_layout
Increase the reference count of object,
and possibly remove the
[floating][floating-ref] reference, if object
has a floating reference.
In other words, if the object is floating, then this call "assumes ownership" of the floating reference, converting it to a normal reference by clearing the floating flag while leaving the reference count unchanged. If the object is not floating, then this call adds a new normal reference increasing the reference count by one.
Since GLib 2.56, the type of object
will be propagated to the return type
under the same conditions as for g_object_ref().
Removes renderer
from area
.
the #GtkCellRenderer to remove from area
Removes sibling
from renderer’
s focus sibling list
(see gtk_cell_area_add_focus_sibling()).
the #GtkCellRenderer expected to have focus
the #GtkCellRenderer to remove from renderer’
s focus area
Renders area’
s cells according to area’
s layout onto widget
at
the given coordinates.
the #GtkCellAreaContext for this row of data.
the #GtkWidget that area
is rendering to
the #cairo_t to render with
the widget
relative coordinates for area’
s background
the widget
relative coordinates for area
the #GtkCellRendererState for area
in this row.
whether area
should paint focus on focused cells for focused rows or not.
Re-inserts cell
at position
.
Note that cell
has already to be packed into cell_layout
for this to function properly.
a #GtkCellRenderer to reorder
new position to insert cell
at
This is a convenience function for #GtkCellArea implementations to request size for cell renderers. It’s important to use this function to request size and then use gtk_cell_area_inner_cell_area() at render and event time since this function will add padding around the cell for focus painting.
the #GtkCellRenderer to request size for
the #GtkOrientation in which to request size
the #GtkWidget that area
is rendering onto
the allocation contextual size to request for, or -1 if the base request for the orientation is to be returned.
Releases all references to other objects. This can be used to break reference cycles.
This function should only be called from object system implementations.
Sets the #GtkCellLayoutDataFunc to use for cell_layout
.
This function is used instead of the standard attributes mapping
for setting the column value, and should set the value of cell_layout’
s
cell renderer(s) as appropriate.
func
may be %NULL to remove a previously set function.
a #GtkCellRenderer
the #GtkCellLayoutDataFunc to use, or %NULL
Each object carries around a table of associations from strings to pointers. This function lets you set an association.
If the object already had an association with that name, the old association will be destroyed.
Internally, the key
is converted to a #GQuark using g_quark_from_string().
This means a copy of key
is kept permanently (even after object
has been
finalized) — so it is recommended to only use a small, bounded set of values
for key
in your program, to avoid the #GQuark storage growing unbounded.
name of the key
data to associate with that key
Explicitly sets the currently focused cell to renderer
.
This is generally called by implementations of #GtkCellAreaClass.focus() or #GtkCellAreaClass.event(), however it can also be used to implement functions such as gtk_tree_view_set_cursor_on_cell().
the #GtkCellRenderer to give focus to
Sets the name of the buildable
object.
name to set
Sets the orientation of the orientable
.
the orientable’s new orientation.
Sets a property on an object.
the name of the property to set
the value
Sets the spacing to add between cell renderers in box
.
the space to add between #GtkCellRenderers
Remove a specified datum from the object's data associations, without invoking the association's destroy handler.
name of the key
This function gets back user data pointers stored via
g_object_set_qdata() and removes the data
from object
without invoking its destroy() function (if any was
set).
Usually, calling this function is only required to update
user data pointers with a destroy notifier, for example:
void
object_add_to_user_list (GObject *object,
const gchar *new_string)
{
// the quark, naming the object data
GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
// retrieve the old string list
GList *list = g_object_steal_qdata (object, quark_string_list);
// prepend new string
list = g_list_prepend (list, g_strdup (new_string));
// this changed 'list', so we need to set it again
g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
}
static void
free_string_list (gpointer data)
{
GList *node, *list = data;
for (node = list; node; node = node->next)
g_free (node->data);
g_list_free (list);
}
Using g_object_get_qdata() in the above example, instead of g_object_steal_qdata() would have left the destroy function set, and thus the partial string list would have been freed upon g_object_set_qdata_full().
A #GQuark, naming the user data pointer
Explicitly stops the editing of the currently edited cell.
If canceled
is %TRUE, the currently edited cell renderer
will emit the ::editing-canceled signal, otherwise the
the ::editing-done signal will be emitted on the current
edit widget.
See gtk_cell_area_get_edited_cell() and gtk_cell_area_get_edit_widget().
whether editing was canceled.
Reverts the effect of a previous call to
g_object_freeze_notify(). The freeze count is decreased on object
and when it reaches zero, queued "notify" signals are emitted.
Duplicate notifications for each property are squashed so that at most one #GObject::notify signal is emitted for each property, in the reverse order in which they have been queued.
It is an error to call this function when the freeze count is zero.
Decreases the reference count of object
. When its reference count
drops to 0, the object is finalized (i.e. its memory is freed).
If the pointer to the #GObject may be reused in future (for example, if it is an instance variable of another object), it is recommended to clear the pointer to %NULL rather than retain a dangling pointer to a potentially invalid #GObject instance. Use g_clear_object() for this.
This function essentially limits the life time of the closure
to
the life time of the object. That is, when the object is finalized,
the closure
is invalidated by calling g_closure_invalidate() on
it, in order to prevent invocations of the closure with a finalized
(nonexisting) object. Also, g_object_ref() and g_object_unref() are
added as marshal guards to the closure,
to ensure that an extra
reference count is held on object
during invocation of the
closure
. Usually, this function will be called on closures that
use this object
as closure data.
#GClosure to watch
Find the #GParamSpec with the given name for an
interface. Generally, the interface vtable passed in as g_iface
will be the default vtable from g_type_default_interface_ref(), or,
if you know the interface has already been loaded,
g_type_default_interface_peek().
any interface vtable for the interface, or the default vtable for the interface
name of a property to look up.
Add a property to an interface; this is only useful for interfaces that are added to GObject-derived types. Adding a property to an interface forces all objects classes with that interface to have a compatible property. The compatible property could be a newly created #GParamSpec, but normally g_object_class_override_property() will be used so that the object class only needs to provide an implementation and inherits the property description, default value, bounds, and so forth from the interface property.
This function is meant to be called from the interface's default
vtable initialization function (the class_init
member of
#GTypeInfo.) It must not be called after after class_init
has
been called for any object types implementing this interface.
If pspec
is a floating reference, it will be consumed.
any interface vtable for the interface, or the default vtable for the interface.
the #GParamSpec for the new property
Lists the properties of an interface.Generally, the interface
vtable passed in as g_iface
will be the default vtable from
g_type_default_interface_ref(), or, if you know the interface has
already been loaded, g_type_default_interface_peek().
any interface vtable for the interface, or the default vtable for the interface
Creates a new #GtkCellAreaBox.
Creates a new instance of a #GObject subtype and sets its properties.
Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY) which are not explicitly specified are set to their default values.
the type id of the #GObject subtype to instantiate
an array of #GParameter
The #GtkCellAreaBox renders cell renderers into a row or a column depending on its #GtkOrientation.
GtkCellAreaBox uses a notion of packing. Packing refers to adding cell renderers with reference to a particular position in a #GtkCellAreaBox. There are two reference positions: the start and the end of the box. When the #GtkCellAreaBox is oriented in the %GTK_ORIENTATION_VERTICAL orientation, the start is defined as the top of the box and the end is defined as the bottom. In the %GTK_ORIENTATION_HORIZONTAL orientation start is defined as the left side and the end is defined as the right side.
Alignments of #GtkCellRenderers rendered in adjacent rows can be configured by configuring the #GtkCellAreaBox align child cell property with gtk_cell_area_cell_set_property() or by specifying the "align" argument to gtk_cell_area_box_pack_start() and gtk_cell_area_box_pack_end().