| Evolution-Data-Server Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
#include <libebackend/libebackend.h> struct EExtensibleInterface; void e_extensible_load_extensions (EExtensible *extensible); GList * e_extensible_list_extensions (EExtensible *extensible,GType extension_type);
EExtension objects can be tacked on to any GObject instance that implements the EExtensible interface. A GObject type can be made extensible in two steps:
1. Add the EExtensible interface when registering the GType. There are no methods to implement.
1 2 3 4 5 |
#include <libebackend/libebackend.h> G_DEFINE_TYPE_WITH_CODE ( ECustomWidget, e_custom_widget, GTK_TYPE_WIDGET, G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL)) |
2. Load extensions for the class at some point during GObject initialization. Generally this should be done toward the end of the initialization code, so extensions get a fully initialized object to work with.
1 2 3 4 5 6 7 |
static void e_custom_widget_constructed (ECustomWidget *widget) { Construction code goes here, same as call to parent's 'constructed'... e_extensible_load_extensions (E_EXTENSIBLE (widget)); } |
void e_extensible_load_extensions (EExtensible *extensible);
Creates an instance of all instantiable subtypes of EExtension which
target the class of extensible. The lifetimes of these newly created
EExtension objects are bound to extensible such that they are finalized
when extensible is finalized.
|
an EExtensible |
Since 3.4
GList * e_extensible_list_extensions (EExtensible *extensible,GType extension_type);
Returns a list of EExtension objects bound to extensible whose
types are ancestors of extension_type. For a complete list of
extension objects bound to extensible, pass E_TYPE_EXTENSION.
The list itself should be freed with g_list_free(). The extension
objects are owned by extensible and should not be unreferenced.
|
an EExtensible |
|
the type of extensions to list |
Returns : |
a list of extension objects derived from extension_type
|
Since 3.4