## XplayerPlugin XplayerPlugin — base plugin class and loading/unloading functions |

## Stability Level

Unstable, unless otherwise indicated

## Functions

#define | XPLAYER_PLUGIN_REGISTER()
#define | XPLAYER_PLUGIN_REGISTER_CONFIGURABLE()
char * | xplayer_plugin_find_file ()
GtkBuilder * | xplayer_plugin_load_interface ()
char ** | xplayer_get_plugin_paths ()

## Includes

    #include <xplayer-dirs.h>

## Description

libpeas is used as a general-purpose architecture for adding plugins to Xplayer, with derived support for different programming languages.

The functions in xplayer-dirs.h are used to allow plugins to find and load files installed alongside the plugins, such as UI files.

## Functions

### XPLAYER_PLUGIN_REGISTER()

    #define             XPLAYER_PLUGIN_REGISTER(TYPE_NAME, TypeName, type_name)

Registers a plugin with the Xplayer plugin system, including registering the type specified in the parameters and declaring its activate and deactivate functions.

#### Parameters

TYPE_NAME | the name of the plugin type, in UPPER_CASE |
TypeName | the name of the plugin type, in CamelCase |
type_name | the name of the plugin type, in lower_case |

### XPLAYER_PLUGIN_REGISTER_CONFIGURABLE()

    #define             XPLAYER_PLUGIN_REGISTER_CONFIGURABLE(TYPE_NAME, TypeName, type_name)

Registers a configurable plugin with the Xplayer plugin system, including registering the type specified in the parameters and declaring its activate and deactivate and widget creation functions.

#### Parameters

TYPE_NAME | the name of the plugin type, in UPPER_CASE |
TypeName | the name of the plugin type, in CamelCase |
type_name | the name of the plugin type, in lower_case |

### xplayer_plugin_find_file ()

    char *
    xplayer_plugin_find_file (const char *plugin_name,
                              const char *file);

Finds the specified `file` by looking in the plugin paths listed by `xplayer_get_plugin_paths()` and then in the system Xplayer data directory.

This should be used by plugins to find plugin-specific resource files.

#### Parameters

plugin_name | the plugin name |
file | the file to find |

#### Returns

a newly-allocated absolute path for the file, or `NULL`

### xplayer_plugin_load_interface ()

    GtkBuilder *
    xplayer_plugin_load_interface (const char *plugin_name,
                                   const char *name,
                                   gboolean fatal,
                                   GtkWindow *parent,
                                   gpointer user_data);

Loads an interface file (GtkBuilder UI file) for a plugin, given its filename and assuming it's installed in the plugin's data directory.

This should be used instead of attempting to load interfaces manually in plugins.

#### Parameters

plugin_name | the plugin name |
name | interface filename |
fatal | `TRUE` if it's a fatal error if the interface can't be loaded |
parent | the interface's parent GtkWindow. | [allow-none]
user_data | a pointer to be passed to each signal handler in the interface when they're called. | [allow-none]

#### Returns

the GtkBuilder instance for the interface.

[transfer full]

### xplayer_get_plugin_paths ()

    char **
    xplayer_get_plugin_paths (void);

Return a `NULL`-terminated array of paths to directories which can contain Xplayer plugins. This respects the GSettings disable_user_plugins setting.

#### Returns

a `NULL`-terminated array of paths to plugin directories.

[transfer full]

Since: 2.90.0

## Types and Values