glib- Binding to the GLIB library for Gtk2Hs.
Portabilityportable (depends on GHC)
Safe HaskellNone




The base object type for all glib objects



class GObjectClass o where Source


toGObject :: o -> GObject Source

Safe upcast.

unsafeCastGObject :: GObject -> o Source

Unchecked downcast.

castToGObject :: GObjectClass obj => obj -> obj Source

objectUnref :: FinalizerPtr a Source

Decrease the reference counter of an object

Low level binding functions

All these functions are internal and are only interesting to people writing bindings to GObject-style C libraries.

objectNew :: GType -> [(String, GValue)] -> IO (Ptr GObject) Source

Construct a new object (should rairly be used directly)

objectRef :: GObjectClass obj => Ptr obj -> IO () Source

Increase the reference counter of an object

objectRefSink :: GObjectClass obj => Ptr obj -> IO () Source

Reference and sink an object.

makeNewGObject Source


:: GObjectClass obj 
=> (ForeignPtr obj -> obj, FinalizerPtr obj)

constructor for the Haskell object and finalizer C function

-> IO (Ptr obj)

action which yields a pointer to the C object

-> IO obj 

This function wraps any object that does not derive from Object. It should be used whenever a function returns a pointer to an existing GObject (as opposed to a function that constructs a new object).

  • The first argument is the contructor of the specific object.

constructNewGObject :: GObjectClass obj => (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj Source

This function wraps any newly created objects that derives from GInitiallyUnowned also known as objects with "floating-references". The object will be refSink (for glib versions >= 2.10). On non-floating objects, this function behaves exactly the same as "makeNewGObject".

wrapNewGObject :: GObjectClass obj => (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj Source

This function wraps any newly created object that does not derived from GInitiallyUnowned (that is a GObject with no floating reference). Since newly created GObjects have a reference count of one, they don't need ref'ing.

GType queries

gTypeGObject :: GType Source

The type constant to check if an instance is of GObject type.

isA :: GObjectClass o => o -> GType -> Bool Source

Determine if this is an instance of a particular GTK type

Callback support

type DestroyNotify = FunPtr (Ptr () -> IO ()) Source

destroyFunPtr :: DestroyNotify Source

Many methods in classes derived from GObject take a callback function and a destructor function which is called to free that callback function when it is no longer required. This constants is an address of a functions in C land that will free a function pointer.

destroyStablePtr :: DestroyNotify Source

The address of a function freeing a StablePtr. See destroyFunPtr.

User-Defined Attributes

quarkFromString :: GlibString string => string -> IO Quark Source

Create a unique id based on the given string.

objectCreateAttribute :: GObjectClass o => IO (Attr o (Maybe a)) Source

Add an attribute to this object.

  • The function returns a new attribute that can be set or retrieved from any GObject. The attribute is wrapped in a Maybe type to reflect the circumstance when the attribute is not set or if it should be unset.

objectSetAttribute :: GObjectClass o => Quark -> o -> Maybe a -> IO () Source

Set the value of an association.

objectGetAttributeUnsafe :: GObjectClass o => Quark -> o -> IO (Maybe a) Source

Get the value of an association.

  • Note that this function may crash the Haskell run-time since the returned type can be forced to be anything. See objectCreateAttribute for a safe wrapper around this funciton.