Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
All the fields in the GObject structure are private
to the Object
implementation and should never be accessed directly.
Synopsis
- newtype Object = Object (ManagedPtr Object)
- class (GObject o, IsDescendantOf Object o) => IsObject o
- toObject :: (MonadIO m, IsObject o) => o -> m Object
- objectBindProperty :: (HasCallStack, MonadIO m, IsObject a, IsObject b) => a -> Text -> b -> Text -> [BindingFlags] -> m Binding
- objectBindPropertyFull :: (HasCallStack, MonadIO m, IsObject a, IsObject b) => a -> Text -> b -> Text -> [BindingFlags] -> GClosure c -> GClosure d -> m Binding
- objectCompatControl :: (HasCallStack, MonadIO m) => Word64 -> Ptr () -> m Word64
- objectForceFloating :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()
- objectFreezeNotify :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()
- objectGetData :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> m (Ptr ())
- objectGetProperty :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> GValue -> m ()
- objectGetQdata :: (HasCallStack, MonadIO m, IsObject a) => a -> Word32 -> m (Ptr ())
- objectGetv :: (HasCallStack, MonadIO m, IsObject a) => a -> [Text] -> [GValue] -> m ()
- objectInterfaceFindProperty :: (HasCallStack, MonadIO m) => TypeInterface -> Text -> m GParamSpec
- objectInterfaceInstallProperty :: (HasCallStack, MonadIO m) => TypeInterface -> GParamSpec -> m ()
- objectIsFloating :: (HasCallStack, MonadIO m, IsObject a) => a -> m Bool
- objectNewv :: (HasCallStack, MonadIO m) => GType -> [Parameter] -> m Object
- objectNotify :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> m ()
- objectNotifyByPspec :: (HasCallStack, MonadIO m, IsObject a) => a -> GParamSpec -> m ()
- objectRef :: (HasCallStack, MonadIO m, IsObject a) => a -> m Object
- objectRefSink :: (HasCallStack, MonadIO m, IsObject a) => a -> m Object
- objectRunDispose :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()
- objectSetData :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> Ptr () -> m ()
- objectSetDataFull :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> Ptr () -> Maybe DestroyNotify -> m ()
- objectSetProperty :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> GValue -> m ()
- objectStealData :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> m (Ptr ())
- objectStealQdata :: (HasCallStack, MonadIO m, IsObject a) => a -> Word32 -> m (Ptr ())
- objectThawNotify :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()
- objectUnref :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()
- objectWatchClosure :: (HasCallStack, MonadIO m, IsObject a) => a -> GClosure b -> m ()
- type C_ObjectNotifyCallback = Ptr () -> Ptr GParamSpec -> Ptr () -> IO ()
- type ObjectNotifyCallback = GParamSpec -> IO ()
- afterObjectNotify :: (IsObject a, MonadIO m) => a -> Maybe Text -> ObjectNotifyCallback -> m SignalHandlerId
- genClosure_ObjectNotify :: MonadIO m => ObjectNotifyCallback -> m (GClosure C_ObjectNotifyCallback)
- mk_ObjectNotifyCallback :: C_ObjectNotifyCallback -> IO (FunPtr C_ObjectNotifyCallback)
- noObjectNotifyCallback :: Maybe ObjectNotifyCallback
- onObjectNotify :: (IsObject a, MonadIO m) => a -> Maybe Text -> ObjectNotifyCallback -> m SignalHandlerId
- wrap_ObjectNotifyCallback :: ObjectNotifyCallback -> C_ObjectNotifyCallback
Exported types
Memory-managed wrapper type.
Instances
Eq Object Source # | |
GObject Object Source # | |
Defined in GI.GObject.Objects.Object | |
ManagedPtrNewtype Object Source # | |
Defined in GI.GObject.Objects.Object toManagedPtr :: Object -> ManagedPtr Object | |
TypedObject Object Source # | |
Defined in GI.GObject.Objects.Object | |
HasParentTypes Object Source # | |
Defined in GI.GObject.Objects.Object | |
IsGValue (Maybe Object) Source # | Convert |
Defined in GI.GObject.Objects.Object gvalueGType_ :: IO GType gvalueSet_ :: Ptr GValue -> Maybe Object -> IO () gvalueGet_ :: Ptr GValue -> IO (Maybe Object) | |
type ParentTypes Object Source # | |
Defined in GI.GObject.Objects.Object |
class (GObject o, IsDescendantOf Object o) => IsObject o Source #
Instances
(GObject o, IsDescendantOf Object o) => IsObject o Source # | |
Defined in GI.GObject.Objects.Object |
Methods
Click to display all available methods, including inherited ones
Methods
bindProperty, bindPropertyFull, forceFloating, freezeNotify, getv, isFloating, notify, notifyByPspec, ref, refSink, runDispose, stealData, stealQdata, thawNotify, unref, watchClosure.
Getters
getData, getProperty, getQdata.
Setters
bindProperty
:: (HasCallStack, MonadIO m, IsObject a, IsObject b) | |
=> a |
|
-> Text |
|
-> b |
|
-> Text |
|
-> [BindingFlags] |
|
-> m Binding | Returns: the |
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 #
:: (HasCallStack, MonadIO m, IsObject a, IsObject b) | |
=> a |
|
-> Text |
|
-> b |
|
-> Text |
|
-> [BindingFlags] |
|
-> GClosure c |
|
-> GClosure d |
|
-> m Binding | Returns: the |
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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> 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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> 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
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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Text |
|
-> m (Ptr ()) | Returns: the data if found,
or |
Gets a named field from the objects table of associations (see objectSetData
).
getProperty
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Text |
|
-> GValue |
|
-> m () |
Gets a property of an object.
The value
can be:
- an empty
Value
initialized byG_VALUE_INIT
, which will be automatically initialized with the expected type of the property (since GLib 2.60) - a
Value
initialized with the expected type of the property - a
Value
initialized with a type to which the expected type of the property can be transformed
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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Word32 |
|
-> m (Ptr ()) | Returns: The user data pointer set, or |
This function gets back user data pointers stored via
g_object_set_qdata()
.
getv
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> [Text] |
|
-> [GValue] |
|
-> m () |
Gets nProperties
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.
Since: 2.54
interfaceFindProperty
objectInterfaceFindProperty Source #
:: (HasCallStack, MonadIO m) | |
=> TypeInterface |
|
-> Text |
|
-> m GParamSpec | Returns: the |
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 #
:: (HasCallStack, MonadIO m) | |
=> TypeInterface |
|
-> GParamSpec |
|
-> 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.
If pspec
is a floating reference, it will be consumed.
Since: 2.4
isFloating
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> m Bool | Returns: |
Checks whether object
has a [floating][floating-ref] reference.
Since: 2.10
newv
:: (HasCallStack, MonadIO m) | |
=> GType |
|
-> [Parameter] |
|
-> m Object | Returns: a new instance of
|
Deprecated: (Since version 2.54)Use g_object_new_with_properties()
instead.deprecated. See Parameter
for more information.
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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Text |
|
-> 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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> GParamSpec |
|
-> 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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> m Object | Returns: the same |
Increases the reference count of object
.
Since GLib 2.56, if GLIB_VERSION_MAX_ALLOWED
is 2.56 or greater, the type
of object
will be propagated to the return type (using the GCC typeof()
extension), so any casting the caller needs to do on the return type must be
explicit.
refSink
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> m Object | Returns: |
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 objectRef
.
Since: 2.10
runDispose
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> 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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Text |
|
-> Ptr () |
|
-> 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.
Internally, the key
is converted to a GQuark
using quarkFromString
.
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.
setDataFull
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Text |
|
-> Ptr () |
|
-> Maybe DestroyNotify |
|
-> m () |
Like objectSetData
except it adds notification
for when the association is destroyed, either by setting it
to a different value or when the object is destroyed.
Note that the destroy
callback is not called if data
is Nothing
.
setProperty
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Text |
|
-> GValue |
|
-> m () |
Sets a property on an object.
stealData
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Text |
|
-> m (Ptr ()) | Returns: the data if found, or |
Remove a specified datum from the object's data associations, without invoking the association's destroy handler.
stealQdata
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> Word32 |
|
-> m (Ptr ()) | Returns: The user data pointer set, or |
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"); // 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 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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> 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 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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> 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
:: (HasCallStack, MonadIO m, IsObject a) | |
=> a |
|
-> GClosure b |
|
-> 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
type C_ObjectNotifyCallback = Ptr () -> Ptr GParamSpec -> Ptr () -> IO () Source #
Type for the callback on the (unwrapped) C side.
type ObjectNotifyCallback Source #
The notify signal is emitted on an object when one of its properties has
its value set through objectSetProperty
, g_object_set()
, et al.
Note that getting this signal doesn’t itself guarantee that the value of
the property has actually changed. When it is emitted is determined by the
derived GObject class. If the implementor did not create the property with
ParamFlagsExplicitNotify
, then any call to objectSetProperty
results
in notify being emitted, even if the new value is the same as the old.
If they did pass ParamFlagsExplicitNotify
, then this signal is emitted only
when they explicitly call objectNotify
or objectNotifyByPspec
,
and common practice is to do that only when the value has actually changed.
This signal is typically used to obtain change notification for a
single property, by specifying the property name as a detail in the
g_signal_connect()
call, like this:
C code
g_signal_connect (text_view->buffer, "notify::paste-target-list", G_CALLBACK (gtk_text_view_target_list_notify), text_view)
It is important to note that you must use [canonical parameter names][canonical-parameter-names] as detail strings for the notify signal.
afterObjectNotify :: (IsObject a, MonadIO m) => a -> Maybe Text -> ObjectNotifyCallback -> m SignalHandlerId Source #
Connect a signal handler for the notify signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after
object #notify callback
This signal admits a optional parameter detail
.
If it's not Nothing
, we will connect to “notify::detail
” instead.
genClosure_ObjectNotify :: MonadIO m => ObjectNotifyCallback -> m (GClosure C_ObjectNotifyCallback) Source #
Wrap the callback into a GClosure
.
mk_ObjectNotifyCallback :: C_ObjectNotifyCallback -> IO (FunPtr C_ObjectNotifyCallback) Source #
Generate a function pointer callable from C code, from a C_ObjectNotifyCallback
.
noObjectNotifyCallback :: Maybe ObjectNotifyCallback Source #
A convenience synonym for
.Nothing
:: Maybe
ObjectNotifyCallback
onObjectNotify :: (IsObject a, MonadIO m) => a -> Maybe Text -> ObjectNotifyCallback -> m SignalHandlerId Source #
Connect a signal handler for the notify signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on
object #notify callback
This signal admits a optional parameter detail
.
If it's not Nothing
, we will connect to “notify::detail
” instead.