|
| Binding (Binding&& src) noexcept |
|
Binding& | operator= (Binding&& src) noexcept |
|
| ~Binding () noexceptoverride |
|
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 Object instance used as the source of the binding. More...
|
|
Glib::RefPtr< const Glib::ObjectBase > | get_source () const |
| Retrieves the Object 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 Object instance used as the target of the binding. More...
|
|
Glib::RefPtr< const Glib::ObjectBase > | get_target () const |
| Retrieves the Object 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:
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:
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);
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().
A binding will be severed, and the resources it allocates freed, whenever either one of the Glib::ObjectBase instances it refers to is deleted, when unbind() is called, or when the Glib::Binding instance loses its last reference.
- Since glibmm 2.44: