## visu_plugins visu_plugins — Introduces the basic handling of plug-ins. |

## Synopsis

    gboolean            (*VisuPluginInitFunc)               (void);
    const gchar *       (*VisuPluginInfoFunc)               (void);
                        VisuPlugin;
    void                visu_plugins_init                   ();
    GList*              visu_plugins_getListLoaded          ();
    const gchar*        visu_plugin_getName                 (VisuPlugin *plug);
    const gchar*        visu_plugin_getDescription          (VisuPlugin *plug);
    const gchar*        visu_plugin_getIconPath             (VisuPlugin *plug);
    const gchar*        visu_plugin_getAuthors              (VisuPlugin *plug);
    void                visu_plugin_initGtk                 (VisuPlugin *plug);

## Description

Plug-ins are made of shared library presenting some common routines. These routines are of kind:

- `pluginsInitFunc()`, such a routine is called at V_Sim startup. It should initialise all things required by the module. For instance, if the module is used to add a load method for atomic rendering, it should call `visu_rendering_addFileFormat()` to declare itself to V_Sim.

- `pluginsDescriptionFunc()`, is used to get a short description of the plug-in.

- `pluginsAuthorsFunc()`, gives a list of authors for the plug-in.

- `pluginsIconFunc()`, returns a path where a small icon representing the plug-in can be found.

All these routines must be named using the name of the module. When the module is loaded into memory, V_Sim will try to find these methods and will store them into the VisuPlugin structure for future calls.

At the present time, only the Unix version is functional. Moreover, currently, no stable API is available from the main program. This should be corrected quickly.

## Details

### VisuPluginInitFunc ()

    gboolean            (*VisuPluginInitFunc)               (void);

This kind of method should exist in all plugins with the name '{module_name}Init'. It is called by V_Sim when the module is loaded.

Returns : | TRUE if it loads correctly.

### VisuPluginInfoFunc ()

    const gchar *       (*VisuPluginInfoFunc)               (void);

This kind of method should exist in all plugins it give a description of what the plugin does. It must be named '{module_name}Get_description'.

Returns : | a string in UTF-8 owned by the plugin.

### VisuPlugin

    typedef struct _VisuPlugin VisuPlugin;

Short way to address _VisuPlugin objects.

### visu_plugins_init ()

    void                visu_plugins_init                   ();

Initialise this part of code. Should not be called (called once by V_Sim on startup only). It try to load all plugins found in the installation directory and in the user directory.

### visu_plugins_getListLoaded ()

    GList*              visu_plugins_getListLoaded          ();

On startup, plugins are loaded according to a list present in the configuration file. It is possible to access the list of all loaded plugins with this method.

Returns : | a GList owned by V_Sim of VisuPlugin objects.. element-type VisuPlugin. transfer none VisuPlugin.

### visu_plugin_getName ()

    const gchar*        visu_plugin_getName                 (VisuPlugin *plug);

Return a string with the name.

`plug` : | a VisuPlugin object.
Returns : | a private string.

Since 3.6

### visu_plugin_getDescription ()

    const gchar*        visu_plugin_getDescription          (VisuPlugin *plug);

Return a string with the description of the plugin.

`plug` : | a VisuPlugin object.
Returns : | a private string.

Since 3.6

### visu_plugin_getIconPath ()

    const gchar*        visu_plugin_getIconPath             (VisuPlugin *plug);

Return a string with the path to find an icon representing the plugin.

`plug` : | a VisuPlugin object.
Returns : | a private string.

Since 3.6

### visu_plugin_getAuthors ()

    const gchar*        visu_plugin_getAuthors              (VisuPlugin *plug);

Return a string with the list of authors.

`plug` : | a VisuPlugin object.
Returns : | a private string.

Since 3.6

### visu_plugin_initGtk ()

    void                visu_plugin_initGtk                 (VisuPlugin *plug);

Run the `initGtk()` method of the plugin, if it exists.

`plug` : | a VisuPlugin object.

Since 3.6