|
| Binding (Binding&& src) noexcept |
|
Binding& | operator= (Binding&& src) noexcept |
|
| ~Binding () noexcept override |
|
GBinding* | gobj () |
| Provides access to the underlying C GObject. More...
|
|
const GBinding* | gobj () const |
| Provides access to the underlying C GObject. More...
|
|
GBinding* | gobj_copy () |
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
|
|
Glib::RefPtr< Glib::ObjectBase > | get_source () |
| Retrieves the Glib::ObjectBase instance used as the source of the binding. More...
|
|
Glib::RefPtr< const Glib::ObjectBase > | get_source () const |
| Retrieves the Glib::ObjectBase instance used as the source of the binding. More...
|
|
Glib::ustring | get_source_property () const |
| Retrieves the name of the property of Binding::property_source() used as the source of the binding. More...
|
|
Glib::RefPtr< Glib::ObjectBase > | get_target () |
| Retrieves the Glib::ObjectBase instance used as the target of the binding. More...
|
|
Glib::RefPtr< const Glib::ObjectBase > | get_target () const |
| Retrieves the Glib::ObjectBase instance used as the target of the binding. More...
|
|
Glib::ustring | get_target_property () const |
| Retrieves the name of the property of Binding::property_target() used as the target of the binding. More...
|
|
BindingFlags | get_flags () const |
| Retrieves the flags passed when constructing the Binding. More...
|
|
void | unbind () |
| Explicitly releases the binding between the source and the target property expressed by this Binding instance. More...
|
|
Glib::PropertyProxy_ReadOnly< Glib::BindingFlags > | property_flags () const |
| Flags to be used to control the Binding. More...
|
|
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Glib::ObjectBase > > | property_source () const |
| The Object that should be used as the source of the binding. More...
|
|
Glib::PropertyProxy_ReadOnly< Glib::ustring > | property_source_property () const |
| The name of the property of Binding::property_source() that should be used as the source of the binding. More...
|
|
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Glib::ObjectBase > > | property_target () const |
| The Object that should be used as the target of the binding. More...
|
|
Glib::PropertyProxy_ReadOnly< Glib::ustring > | property_target_property () const |
| The name of the property of Binding::property_target() that should be used as the target of the binding. More...
|
|
| Object (const Object&)=delete |
|
Object& | operator= (const Object&)=delete |
|
| Object (Object&& src) noexcept |
|
Object& | operator= (Object&& src) noexcept |
|
void* | get_data (const QueryQuark& key) |
|
void | set_data (const Quark& key, void* data) |
|
void | set_data (const Quark& key, void* data, DestroyNotify notify) |
|
void | remove_data (const QueryQuark& quark) |
|
void* | steal_data (const QueryQuark& quark) |
|
| ObjectBase (const ObjectBase&)=delete |
|
ObjectBase& | operator= (const ObjectBase&)=delete |
|
void | set_property_value (const Glib::ustring& property_name, const Glib::ValueBase& value) |
| You probably want to use a specific property_*() accessor method instead. More...
|
|
void | get_property_value (const Glib::ustring& property_name, Glib::ValueBase& value) const |
| You probably want to use a specific property_*() accessor method instead. More...
|
|
template<class PropertyType > |
void | set_property (const Glib::ustring& property_name, const PropertyType& value) |
| You probably want to use a specific property_*() accessor method instead. More...
|
|
template<class PropertyType > |
void | get_property (const Glib::ustring& property_name, PropertyType& value) const |
| You probably want to use a specific property_*() accessor method instead. More...
|
|
void | connect_property_changed (const Glib::ustring& property_name, const sigc::slot< void >& slot) |
| You can use the signal_changed() signal of the property proxy instead. More...
|
|
void | connect_property_changed (const Glib::ustring& property_name, sigc::slot< void >&& slot) |
| You can use the signal_changed() signal of the property proxy instead. More...
|
|
sigc::connection | connect_property_changed_with_return (const Glib::ustring& property_name, const sigc::slot< void >& slot) |
| You can use the signal_changed() signal of the property proxy instead. More...
|
|
sigc::connection | connect_property_changed_with_return (const Glib::ustring& property_name, sigc::slot< void >&& slot) |
| You can use the signal_changed() signal of the property proxy instead. More...
|
|
void | freeze_notify () |
| Increases the freeze count on object. More...
|
|
void | thaw_notify () |
| Reverts the effect of a previous call to freeze_notify(). More...
|
|
virtual void | reference () const |
| Increment the reference count for this object. More...
|
|
virtual void | unreference () const |
| Decrement the reference count for this object. More...
|
|
GObject* | gobj () |
| Provides access to the underlying C GObject. More...
|
|
const GObject* | gobj () const |
| Provides access to the underlying C GObject. More...
|
|
GObject* | gobj_copy () const |
| Give a ref-ed copy to someone. Use for direct struct access. More...
|
|
| trackable () noexcept |
|
| trackable (const trackable &src) noexcept |
|
| trackable (trackable &&src) |
|
| ~trackable () |
|
void | add_destroy_notify_callback (void *data, func_destroy_notify func) const |
|
void | notify_callbacks () |
|
trackable & | operator= (const trackable &src) |
|
trackable & | operator= (trackable &&src) |
|
void | remove_destroy_notify_callback (void *data) const |
|
|
static GType | get_type () |
| Get the GType for this class, for use with the underlying GObject type system. More...
|
|
static Glib::RefPtr< Binding > | bind_property_value (const PropertyProxy_Base& source_property, const PropertyProxy_Base& target_property, BindingFlags flags=BINDING_DEFAULT, const SlotTransform& transform_to=SlotTransform(), const SlotTransform& transform_from=SlotTransform()) |
| Creates a binding between source_property and target_property, allowing you to set the transformation functions to be used by the binding. More...
|
|
static Glib::RefPtr< Binding > | bind_property (const PropertyProxy_Base& source_property, const PropertyProxy_Base& target_property, BindingFlags flags=BINDING_DEFAULT) |
| Creates a binding between source_property and target_property. More...
|
|
template<typename T_source , typename T_target , typename T_functor_to > |
static Glib::RefPtr< Binding > | bind_property (const PropertyProxy< T_source >& source_property, const PropertyProxy< T_target >& target_property, BindingFlags flags, const T_functor_to& transform_to) |
| Creates a binding between source_property and target_property, allowing you to set a transformation function to be used by the binding. More...
|
|
template<typename T_source , typename T_target , typename T_functor_to > |
static Glib::RefPtr< Binding > | bind_property (const PropertyProxy< T_source >& source_property, const PropertyProxy_WriteOnly< T_target >& target_property, BindingFlags flags, const T_functor_to& transform_to) |
| Creates a binding between source_property and target_property, allowing you to set a transformation function to be used by the binding. More...
|
|
template<typename T_source , typename T_target , typename T_functor_to > |
static Glib::RefPtr< Binding > | bind_property (const PropertyProxy_ReadOnly< T_source >& source_property, const PropertyProxy< T_target >& target_property, BindingFlags flags, const T_functor_to& transform_to) |
| Creates a binding between source_property and target_property, allowing you to set a transformation function to be used by the binding. More...
|
|
template<typename T_source , typename T_target , typename T_functor_to > |
static Glib::RefPtr< Binding > | bind_property (const PropertyProxy_ReadOnly< T_source >& source_property, const PropertyProxy_WriteOnly< T_target >& target_property, BindingFlags flags, const T_functor_to& transform_to) |
| Creates a binding between source_property and target_property, allowing you to set a transformation function to be used by the binding. More...
|
|
template<typename T_source , typename T_target , typename T_functor_to , typename T_functor_from > |
static Glib::RefPtr< Binding > | bind_property (const PropertyProxy< T_source >& source_property, const PropertyProxy< T_target >& target_property, BindingFlags flags, const T_functor_to& transform_to, const T_functor_from& transform_from) |
| Creates a binding between source_property and target_property, allowing you to set the transformation functions to be used by the binding. More...
|
|
Bind two object properties.
Glib::Binding is the representation of a binding between a property on a Glib::ObjectBase instance (or source) and another property on another Glib::ObjectBase instance (or target). Whenever the source property changes, the same value is applied to the target property; for instance, the following binding:
static Glib::RefPtr< Binding > bind_property(const PropertyProxy_Base &source_property, const PropertyProxy_Base &target_property, BindingFlags flags=BINDING_DEFAULT)
Creates a binding between source_property and target_property.
Definition: binding.h:355
will cause property_b() of object2 to be updated every time the value of property_a() of object1 changes.
It is possible to create a bidirectional binding between two properties of two Glib::ObjectBase instances, so that if either property changes, the other is updated as well, for instance:
@ BINDING_BIDIRECTIONAL
Bidirectional binding; if either the property of the source or the property of the target changes,...
Definition: binding.h:87
will keep the two properties in sync.
It is also possible to set a custom transformation function (in both directions, in case of a bidirectional binding) to apply a custom transformation from the source value to the target value before applying it; for instance, the following binding:
bool celsius_to_fahrenheit(const double& celsius, double& fahrenheit);
bool fahrenheit_to_celsius(const double& fahrenheit, double& celsius);
pointer_functor0< T_return > ptr_fun(T_return(*_A_func)())
will keep property_value() of the two adjustments in sync; the celsius_to_fahrenheit() function will be called whenever property_value() of adjustment1 changes and will transform the current value of the property before applying it to property_value() of adjustment2.
Vice versa, the fahrenheit_to_celsius() function will be called whenever property_value() of adjustment2 changes, and will transform the current value of the property before applying it to property_value() of adjustment1.
Note that Glib::Binding does not resolve cycles by itself; a cycle like
object1->property_A() -> object2->property_B()
object2->property_B() -> object3->property_C()
object3->property_C() -> object1->property_A()
might lead to an infinite loop. The loop, in this particular case, can be avoided if the objects emit the GObject::notify signal only if the value has effectively been changed. A binding is implemented using the GObject::notify signal, so it is susceptible to all the various ways of blocking a signal emission, like Glib::SignalProxyNormal::emission_stop() or g_signal_handler_block().
The binding between properties is broken, and its resources freed, when the Glib::Binding loses its last Glib::RefPtr (by default), the source or target object is deleted, or unbind() is called. If a Glib::RefPtr to the Glib::Binding remains after the binding is broken another way, get_source() and get_target() return an empty Glib::RefPtr. So, by default, you must keep a Glib::RefPtr to the Glib::Binding for as long as you want it to bind, but doing that does not guarantee the source/target are still alive or bound.
If it is not convenient to maintain a Glib::RefPtr to keep a Glib::Binding active, you can pass the Glib::Binding to Glib::manage() to specify that it should have its lifetime managed by the source/target objects and unbind() only. In that case, it will stay active as long as the source and target exist and unbind() is not called, even if no Glib::RefPtr to it is kept.
- Since glibmm 2.44: