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 GtkCellArea
Context 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 GtkCellRenderer
State 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 GtkCellRenderer
State 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 property on cell
to be set from that 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.
In this context "attribute" and "property" are used interchangeably.
a GtkCellRenderer
a property 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 GtkCellArea
Context to copy
Creates a GtkCellArea
Context to be used with area
for
all purposes. GtkCellArea
Context 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 GtkCellArea
Context
which was used to request the size of those rows of data).
Delegates event handling to a GtkCellArea
.
the GtkCellArea
Context for this row of data.
the GtkWidget
that area
is rendering to
the GdkEvent
to handle
the widget
relative coordinates for area
the GtkCellRenderer
State 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 GtkCellArea
Context 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.
Gets the ID of the buildable
object.
GtkBuilder
sets the name based on the ID attribute
of the
Derives the allocation of renderer
inside area
if area
were to be renderered in cell_area
.
the GtkCellArea
Context 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 GtkCellArea
Context 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
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 GtkCellArea
Context 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 GtkCellArea
Context 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 GtkCellArea
Context 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 GtkCellArea
Context 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
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 GtkCellLayout
DataFunc 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 GtkCellLayout
DataFunc to use
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 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 GtkCellRenderer
s
Snapshots area’
s cells according to area’
s layout onto at
the given coordinates.
the GtkCellArea
Context for this row of data.
the GtkWidget
that area
is rendering to
the GtkSnapshot
to draw to
the widget
relative coordinates for area’
s background
the widget
relative coordinates for area
the GtkCellRenderer
State for area
in this row.
whether area
should paint focus on focused cells for focused rows or not.
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
A cell area that renders GtkCellRenderers into a row or a column
The
GtkCellAreaBox
renders cell renderers into a row or a column depending on itsGtkOrientation
.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 theGtkCellAreaBox
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
GtkCellRenderer
s rendered in adjacent rows can be configured by configuring theGtkCellAreaBox
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().