gi-gobject-2.0.11: GObject bindings

CopyrightWill Thompson, Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria (garetxe@gmail.com)
Safe HaskellNone
LanguageHaskell2010

GI.GObject.Objects.Object

Contents

Description

All the fields in the GObject structure are private to the Object implementation and should never be accessed directly.

Synopsis

Exported types

newtype Object Source #

Constructors

Object (ManagedPtr Object) 

Instances

GObject Object Source # 

Methods

gobjectType :: Object -> IO GType #

IsObject Object Source # 
((~) * info (ResolveObjectMethod t Object), MethodInfo * info Object p) => IsLabel t (Object -> p) Source # 

Methods

fromLabel :: Proxy# Symbol t -> Object -> p #

((~) * info (ResolveObjectMethod t Object), MethodInfo * info Object p) => IsLabelProxy t (Object -> p) Source # 

Methods

fromLabelProxy :: Proxy Symbol t -> Object -> p #

HasAttributeList * Object Source # 
type AttributeList Object Source # 
type SignalList Object Source # 

Methods

Unsupported methods

bindProperty

objectBindProperty Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a, IsObject b) 
=> a

source: the source Object

-> Text

sourceProperty: the property on source to bind

-> b

target: the target Object

-> Text

targetProperty: the property on target to bind

-> [BindingFlags]

flags: flags to pass to Binding

-> m Binding

Returns: the Binding instance representing the binding between the two Object instances. The binding is released whenever the Binding reference count reaches zero.

Creates a binding between sourceProperty on source and targetProperty on target. Whenever the sourceProperty is changed the targetProperty 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 Object instance to be updated with the same value of the "active" property of the action Object instance.

If flags contains BindingFlagsBidirectional then the binding will be mutual: if targetProperty on target changes then the sourceProperty 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 objectUnref on the returned Binding instance.

A Object can have multiple bindings.

Since: 2.26

bindPropertyFull

objectBindPropertyFull Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a, IsObject b) 
=> a

source: the source Object

-> Text

sourceProperty: the property on source to bind

-> b

target: the target Object

-> Text

targetProperty: the property on target to bind

-> [BindingFlags]

flags: flags to pass to Binding

-> Closure

transformTo: a Closure wrapping the transformation function from the source to the target, or Nothing to use the default

-> Closure

transformFrom: a Closure wrapping the transformation function from the target to the source, or Nothing to use the default

-> m Binding

Returns: the Binding instance representing the binding between the two Object instances. The binding is released whenever the Binding reference count reaches zero.

Creates a binding between sourceProperty on source and targetProperty 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.

Since: 2.26

compatControl

objectCompatControl :: (HasCallStack, MonadIO m) => Word64 -> Ptr () -> m Word64 Source #

No description available in the introspection data.

forceFloating

objectForceFloating Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> m () 

This function is intended for Object 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 objectRefSink.

Since: 2.10

freezeNotify

data ObjectFreezeNotifyMethodInfo Source #

Instances

((~) * signature (m ()), MonadIO m, IsObject a) => MethodInfo * ObjectFreezeNotifyMethodInfo a signature Source # 

objectFreezeNotify Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> m () 

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 Object::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.

getData

data ObjectGetDataMethodInfo Source #

Instances

((~) * signature (Text -> m (Ptr ())), MonadIO m, IsObject a) => MethodInfo * ObjectGetDataMethodInfo a signature Source # 

objectGetData Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: Object containing the associations

-> Text

key: name of the key for that association

-> m (Ptr ())

Returns: the data if found, or Nothing if no such data exists.

Gets a named field from the objects table of associations (see objectSetData).

getProperty

data ObjectGetPropertyMethodInfo Source #

Instances

((~) * signature (Text -> GValue -> m ()), MonadIO m, IsObject a) => MethodInfo * ObjectGetPropertyMethodInfo a signature Source # 

objectGetProperty Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> Text

propertyName: the name of the property to get

-> GValue

value: return location for the property value

-> m () 

Gets a property of an object. value must have been initialized to the expected type of the property (or a type to which the expected type can be transformed) using valueInit.

In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling valueUnset.

Note that objectGetProperty is really intended for language bindings, g_object_get() is much more convenient for C programming.

getQdata

data ObjectGetQdataMethodInfo Source #

Instances

((~) * signature (Word32 -> m (Ptr ())), MonadIO m, IsObject a) => MethodInfo * ObjectGetQdataMethodInfo a signature Source # 

objectGetQdata Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: The GObject to get a stored user data pointer from

-> Word32

quark: A GQuark, naming the user data pointer

-> m (Ptr ())

Returns: The user data pointer set, or Nothing

This function gets back user data pointers stored via g_object_set_qdata().

interfaceFindProperty

objectInterfaceFindProperty Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> TypeInterface

gIface: any interface vtable for the interface, or the default vtable for the interface

-> Text

propertyName: name of a property to lookup.

-> m GParamSpec

Returns: the ParamSpec for the property of the interface with the name propertyName, or Nothing if no such property exists.

Find the ParamSpec with the given name for an interface. Generally, the interface vtable passed in as gIface will be the default vtable from typeDefaultInterfaceRef, or, if you know the interface has already been loaded, typeDefaultInterfacePeek.

Since: 2.4

interfaceInstallProperty

objectInterfaceInstallProperty Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> TypeInterface

gIface: any interface vtable for the interface, or the default vtable for the interface.

-> GParamSpec

pspec: the ParamSpec for the new property

-> m () 

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 ParamSpec, but normally objectClassOverrideProperty 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 classInit member of TypeInfo.) It must not be called after after classInit has been called for any object types implementing this interface.

Since: 2.4

isFloating

data ObjectIsFloatingMethodInfo Source #

Instances

((~) * signature (m Bool), MonadIO m, IsObject a) => MethodInfo * ObjectIsFloatingMethodInfo a signature Source # 

objectIsFloating Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> m Bool

Returns: True if object has a floating reference

Checks whether object has a [floating][floating-ref] reference.

Since: 2.10

new

objectNew Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> GType

objectType: the type id of the Object subtype to instantiate

-> [Parameter]

parameters: an array of Parameter

-> m Object

Returns: a new instance of objectType

Creates a new instance of a Object 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.

notify

data ObjectNotifyMethodInfo Source #

Instances

((~) * signature (Text -> m ()), MonadIO m, IsObject a) => MethodInfo * ObjectNotifyMethodInfo a signature Source # 

objectNotify Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> Text

propertyName: the name of a property installed on the class of object.

-> m () 

Emits a "notify" signal for the property propertyName on object.

When possible, eg. when signaling a property change from within the class that registered the property, you should use objectNotifyByPspec instead.

Note that emission of the notify signal may be blocked with objectFreezeNotify. In this case, the signal emissions are queued and will be emitted (in reverse order) when objectThawNotify is called.

notifyByPspec

objectNotifyByPspec Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> GParamSpec

pspec: the ParamSpec of a property installed on the class of object.

-> m () 

Emits a "notify" signal for the property specified by pspec on object.

This function omits the property name lookup, hence it is faster than objectNotify.

One way to avoid using objectNotify from within the class that registered the properties, and using objectNotifyByPspec instead, is to store the GParamSpec used with objectClassInstallProperty inside a static array, e.g.:

C code

 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:

C code

 g_object_notify_by_pspec (self, properties[PROP_FOO]);

Since: 2.26

ref

data ObjectRefMethodInfo Source #

Instances

((~) * signature (m Object), MonadIO m, IsObject a) => MethodInfo * ObjectRefMethodInfo a signature Source # 

Methods

overloadedMethod :: MethodProxy ObjectRefMethodInfo a -> signature -> s #

objectRef Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> m Object

Returns: the same object

Increases the reference count of object.

refSink

data ObjectRefSinkMethodInfo Source #

Instances

((~) * signature (m Object), MonadIO m, IsObject a) => MethodInfo * ObjectRefSinkMethodInfo a signature Source # 

objectRefSink Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> m Object

Returns: object

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: 2.10

replaceData

objectReplaceData Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: the Object to store user data on

-> Text

key: a string, naming the user data pointer

-> Ptr ()

oldval: the old value to compare against

-> Ptr ()

newval: the new value

-> Maybe DestroyNotify

destroy: a destroy notify for the new value

-> Maybe DestroyNotify

oldDestroy: destroy notify for the existing value

-> m Bool

Returns: True if the existing value for key was replaced by newval, False otherwise.

Compares the user data for the key key on object with oldval, and if they are the same, replaces oldval with newval.

This is like a typical atomic compare-and-exchange operation, for user data on an object.

If the previous value was replaced then ownership of the old value (oldval) is passed to the caller, including the registered destroy notify for it (passed out in oldDestroy). Its up to the caller to free this as he wishes, which may or may not include using oldDestroy as sometimes replacement should not destroy the object in the normal way.

Since: 2.34

replaceQdata

objectReplaceQdata Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: the Object to store user data on

-> Word32

quark: a GQuark, naming the user data pointer

-> Ptr ()

oldval: the old value to compare against

-> Ptr ()

newval: the new value

-> Maybe DestroyNotify

destroy: a destroy notify for the new value

-> Maybe DestroyNotify

oldDestroy: destroy notify for the existing value

-> m Bool

Returns: True if the existing value for quark was replaced by newval, False otherwise.

Compares the user data for the key quark on object with oldval, and if they are the same, replaces oldval with newval.

This is like a typical atomic compare-and-exchange operation, for user data on an object.

If the previous value was replaced then ownership of the old value (oldval) is passed to the caller, including the registered destroy notify for it (passed out in oldDestroy). Its up to the caller to free this as he wishes, which may or may not include using oldDestroy as sometimes replacement should not destroy the object in the normal way.

Since: 2.34

runDispose

data ObjectRunDisposeMethodInfo Source #

Instances

((~) * signature (m ()), MonadIO m, IsObject a) => MethodInfo * ObjectRunDisposeMethodInfo a signature Source # 

objectRunDispose Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> m () 

Releases all references to other objects. This can be used to break reference cycles.

This function should only be called from object system implementations.

setData

data ObjectSetDataMethodInfo Source #

Instances

((~) * signature (Text -> Ptr () -> m ()), MonadIO m, IsObject a) => MethodInfo * ObjectSetDataMethodInfo a signature Source # 

objectSetData Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: Object containing the associations.

-> Text

key: name of the key

-> Ptr ()

data: data to associate with that key

-> m () 

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.

setProperty

data ObjectSetPropertyMethodInfo Source #

Instances

((~) * signature (Text -> GValue -> m ()), MonadIO m, IsObject a) => MethodInfo * ObjectSetPropertyMethodInfo a signature Source # 

objectSetProperty Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> Text

propertyName: the name of the property to set

-> GValue

value: the value

-> m () 

Sets a property on an object.

stealData

data ObjectStealDataMethodInfo Source #

Instances

((~) * signature (Text -> m (Ptr ())), MonadIO m, IsObject a) => MethodInfo * ObjectStealDataMethodInfo a signature Source # 

objectStealData Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: Object containing the associations

-> Text

key: name of the key

-> m (Ptr ())

Returns: the data if found, or Nothing if no such data exists.

Remove a specified datum from the object's data associations, without invoking the association's destroy handler.

stealQdata

data ObjectStealQdataMethodInfo Source #

Instances

((~) * signature (Word32 -> m (Ptr ())), MonadIO m, IsObject a) => MethodInfo * ObjectStealQdataMethodInfo a signature Source # 

objectStealQdata Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: The GObject to get a stored user data pointer from

-> Word32

quark: A GQuark, naming the user data pointer

-> m (Ptr ())

Returns: The user data pointer set, or Nothing

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:

C code

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");
  // retrive 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 objectGetQdata in the above example, instead of objectStealQdata would have left the destroy function set, and thus the partial string list would have been freed upon g_object_set_qdata_full().

thawNotify

data ObjectThawNotifyMethodInfo Source #

Instances

((~) * signature (m ()), MonadIO m, IsObject a) => MethodInfo * ObjectThawNotifyMethodInfo a signature Source # 

objectThawNotify Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> m () 

Reverts the effect of a previous call to objectFreezeNotify. 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 Object::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.

unref

data ObjectUnrefMethodInfo Source #

Instances

((~) * signature (m ()), MonadIO m, IsObject a) => MethodInfo * ObjectUnrefMethodInfo a signature Source # 

Methods

overloadedMethod :: MethodProxy ObjectUnrefMethodInfo a -> signature -> s #

objectUnref Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: a Object

-> m () 

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 Object may be reused in future (for example, if it is an instance variable of another object), it is recommended to clear the pointer to Nothing rather than retain a dangling pointer to a potentially invalid Object instance. Use g_clear_object() for this.

watchClosure

data ObjectWatchClosureMethodInfo Source #

Instances

((~) * signature (Closure -> m ()), MonadIO m, IsObject a) => MethodInfo * ObjectWatchClosureMethodInfo a signature Source # 

objectWatchClosure Source #

Arguments

:: (HasCallStack, MonadIO m, IsObject a) 
=> a

object: GObject restricting lifetime of closure

-> Closure

closure: GClosure to watch

-> m () 

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 closureInvalidate on it, in order to prevent invocations of the closure with a finalized (nonexisting) object. Also, objectRef and objectUnref 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.

Signals

notify