## UI plugins

UI plugins — Plugin to customize dana entry widgets and call renderers in tree views

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    GdauiDataEntry *    (*GdauiEntryCreateFunc)             (GdaDataHandler *handler,
                                                             GType type,
                                                             const gchar *options);
    GtkCellRenderer *   (*GdauiCellCreateFunc)              (GdaDataHandler *handler,
                                                             GType type,
                                                             const gchar *options);
                        GdauiPlugin;
    void                gdaui_plugin_declare                (const GdauiPlugin *plugin);

## Description

This section describes the functions used to declare UI plugins: data entry and cell renderers.

## Details

### GdauiEntryCreateFunc ()

    GdauiDataEntry *    (*GdauiEntryCreateFunc)             (GdaDataHandler *handler,
                                                             GType type,
                                                             const gchar *options);

Defines a function which creates a GdauiDataEntry widget

`handler` : | a GdaDataHandler
`type` : | a GType
`options` : | options, or `NULL`. [allow-none]
Returns : | a new GdauiDataEntry

### GdauiCellCreateFunc ()

    GtkCellRenderer *   (*GdauiCellCreateFunc)              (GdaDataHandler *handler,
                                                             GType type,
                                                             const gchar *options);

Defines a function which creates a GtkCellRenderer object

`handler` : | a GdaDataHandler
`type` : | a GType
`options` : | options, or `NULL`. [allow-none]
Returns : | a new GtkCellRenderer

### GdauiPlugin

    typedef struct {
    	gchar                  *plugin_name;
    	gchar                  *plugin_descr;
    	gchar                  *plugin_file;

    	guint                   nb_g_types; /* 0 if all types are accepted */
            GType                  *valid_g_types; /* not NULL if @nb_g_types is not 0 */

    	gchar                  *options_xml_spec; /* NULL if no option possible */

    	GdauiEntryCreateFunc    entry_create_func;
    	GdauiCellCreateFunc     cell_create_func;
    } GdauiPlugin;

Structure representing a plugin.

Note: `entry_create_func` and `cell_create_func` can't be `NULL` at the same time

gchar *`plugin_name`; | the name of the plugin
gchar *`plugin_descr`; | a description for the plugin, or `NULL`. [allow-none]
gchar *`plugin_file`; | the shared object implementing the plugin, can be `NULL` for internal plugins. [allow-none]
guint `nb_g_types`; | number of types the plugin can handle, or `0` for any type
GType *`valid_g_types`; | an array of GType, containing the accepted types, its size is `nb_g_types`, or `NULL` if `nb_g_types` is `0`. [allow-none]
gchar *`options_xml_spec`; | a string describing the plugin's options, or `NULL`. [allow-none]
GdauiEntryCreateFunc `entry_create_func`; | the function called to create a GdauiDataEntry, or `NULL`. [allow-none]
GdauiCellCreateFunc `cell_create_func`; | the function called to create a GtkCellRenderer, or `NULL`. [allow-none]

### gdaui_plugin_declare ()

    void                gdaui_plugin_declare                (const GdauiPlugin *plugin);

Adds a new plugin which will be used by the forms and grids. The new plugin, as described by `plugin` can declare a custom widget to be used for forms, grids, or both.

If a plugin is already declared with the same name as the requested name, then a warning is issued and the operation fails.

`plugin` : | a pointer to a structure filled to describe the new plugin. All the contained information is copied.