IOExtensionPoint#
- class IOExtensionPoint(*args, **kwargs)#
GIOExtensionPoint provides a mechanism for modules to extend the
functionality of the library or application that loaded it in an
organized fashion.
An extension point is identified by a name, and it may optionally
require that any implementation must be of a certain type (or derived
thereof). Use register to register an
extension point, and set_required_type to
set a required type.
A module can implement an extension point by specifying the
Type that implements the functionality. Additionally, each
implementation of an extension point has a name, and a priority. Use
implement to implement an extension point.
GIOExtensionPoint *ep;
// Register an extension point
ep = g_io_extension_point_register ("my-extension-point");
g_io_extension_point_set_required_type (ep, MY_TYPE_EXAMPLE);
// Implement an extension point
G_DEFINE_TYPE (MyExampleImpl, my_example_impl, MY_TYPE_EXAMPLE)
g_io_extension_point_implement ("my-extension-point",
my_example_impl_get_type (),
"my-example",
10);
- It is up to the code that registered the extension point how
it uses the implementations that have been associated with it. Depending on the use case, it may use all implementations, or only the one with the highest priority, or pick a specific one by name.
- To avoid opening all modules just to find out what extension
points they implement, GIO makes use of a caching mechanism, see gio-querymodules. You are expected to run this command after installing a GIO module.
- The
GIO_EXTRA_MODULESenvironment variable can be used to specify additional directories to automatically load modules from. This environment variable has the same syntax as the
PATH. If two modules have the same base name in different directories, then the latter one will be ignored. If additional directories are specified GIO will load modules from the built-in directory last.
Methods#
- class IOExtensionPoint
- get_extension_by_name(name: str) IOExtension#
Finds a
IOExtensionfor an extension point by name.- Parameters:
name – the name of the extension to get
- get_extensions() list[IOExtension]#
Gets a list of all extensions that implement this extension point. The list is sorted by priority, beginning with the highest priority.
- get_required_type() GType#
Gets the required type for
extension_point.
- classmethod implement(type: GType, extension_name: str, priority: int) IOExtension#
Registers
typeas extension for the extension point with nameextension_point_name.If
typehas already been registered as an extension for this extension point, the existingIOExtensionobject is returned.- Parameters:
type – the
Typeto register as extensionextension_name – the name for the extension
priority – the priority for the extension
- classmethod lookup() IOExtensionPoint#
Looks up an existing extension point.
- classmethod register() IOExtensionPoint#
Registers an extension point.