This file contains all the stuff that is dedicated to plugins (loading, instanciating, initializing and so on). More...
#include <libheraia.h>
Go to the source code of this file.
Functions | |
static heraia_plugin_t * | get_plugin_handle (heraia_struct_t *main_struct, heraia_plugin_t *plugin, const gchar *full_filename, const gchar *filename) |
Here we try to get a handle for the Gmodule referenced by full_filename. | |
static heraia_plugin_t * | get_plugin_init_symbol (heraia_struct_t *main_struct, heraia_plugin_t *plugin) |
If the handle is ok, we want to have the heraia_plugin_init function (to call it) in order to init the plugin (by itself). | |
static void | init_plugin (heraia_struct_t *main_struct, heraia_plugin_t *plugin, const gchar *filename, guint plugins_nb) |
finalising initialisation : if everything went fine, the plugin is added to the plugin list and a menu entry is created in the Plugins menu | |
static void | load_one_plugin (heraia_struct_t *main_struct, const gchar *filename, guint plugins_nb) |
Here we manage to load one plugin at a time (and this is really enough !). | |
gboolean | plugin_capable (void) |
Says whether the system can handle plugins (or not). | |
heraia_plugin_t * | new_plugin (void) |
Creates a new empty plugin it may be initialised by the plugin itself ! | |
void | free_plugin (heraia_plugin_t *plugin) |
free an unused plugin use with caution | |
void | load_plugins (heraia_struct_t *main_struct) |
looks at the plugins dir(s) and loads the needed plugins (all ;-) (one at a time !!) | |
void | add_entry_to_plugins_menu (heraia_struct_t *main_struct, heraia_plugin_t *plugin) |
adds a menu entry to the plugin menu adds a signal handler when the menu is toggled | |
heraia_plugin_t * | find_plugin_by_name (GList *plugins_list, gchar *name) |
Finds the desired plugin by its name and return the plugin structure or NULL. | |
gboolean | load_plugin_xml (heraia_struct_t *main_struct, heraia_plugin_t *plugin) |
Loads the xml's definition file that describes the plugin (.gtkbuilder suffix) tries the paths found in the location_list. | |
void | refresh_all_plugins (heraia_struct_t *main_struct) |
To help the main program to send events to the plugins. |
This file contains all the stuff that is dedicated to plugins (loading, instanciating, initializing and so on).
Definition in file plugin.c.
void add_entry_to_plugins_menu | ( | heraia_struct_t * | main_struct, | |
heraia_plugin_t * | plugin | |||
) |
adds a menu entry to the plugin menu adds a signal handler when the menu is toggled
main_struct | : main structure | |
plugin | : a plugin to add to the plugin's menu |
Definition at line 296 of file plugin.c.
References heraia_plugin_t::cmi_entry, heraia_get_widget(), heraia_plugin_t::info, xml_t::main, plugin_info_t::name, heraia_plugin_t::run_proc, and heraia_struct_t::xmls.
Referenced by init_plugin().
heraia_plugin_t* find_plugin_by_name | ( | GList * | plugins_list, | |
gchar * | name | |||
) |
Finds the desired plugin by its name and return the plugin structure or NULL.
plugins_list | : list of all available plugins | |
name | : plugin's name we're looking for |
Definition at line 323 of file plugin.c.
References heraia_plugin_t::info, and plugin_info_t::name.
Referenced by init(), pn_treeview_double_click(), pn_treeview_selection_changed_cb(), and run().
void free_plugin | ( | heraia_plugin_t * | plugin | ) |
free an unused plugin use with caution
plugin | : A created a malloc'ed plugin |
Definition at line 88 of file plugin.c.
References plugin_info_t::author, plugin_info_t::description, heraia_plugin_t::error, plugin_filter_t::extensions, heraia_plugin_t::extra, heraia_plugin_t::filename, heraia_plugin_t::filter, heraia_plugin_t::handle, plugin_info_t::homepage, heraia_plugin_t::info, plugin_info_t::name, heraia_plugin_t::path, plugin_info_t::summary, and plugin_info_t::version.
Referenced by get_plugin_init_symbol().
static heraia_plugin_t * get_plugin_handle | ( | heraia_struct_t * | main_struct, | |
heraia_plugin_t * | plugin, | |||
const gchar * | full_filename, | |||
const gchar * | filename | |||
) | [static] |
Here we try to get a handle for the Gmodule referenced by full_filename.
main_struct | : main structure | |
plugin | : the plugin we try to get a handle for | |
full_filename | : the full filename (includes path) to the compiled plugin | |
filename | : the filename (without the path -> used for fancy log reporting) |
Definition at line 135 of file plugin.c.
References heraia_plugin_t::handle, and log_message().
Referenced by load_one_plugin().
static heraia_plugin_t * get_plugin_init_symbol | ( | heraia_struct_t * | main_struct, | |
heraia_plugin_t * | plugin | |||
) | [static] |
If the handle is ok, we want to have the heraia_plugin_init function (to call it) in order to init the plugin (by itself).
main_struct | : main structure | |
plugin | : the plugin to look for its init function |
Definition at line 160 of file plugin.c.
References free_plugin(), heraia_plugin_t::handle, heraia_plugin_init(), and log_message().
Referenced by load_one_plugin().
static void init_plugin | ( | heraia_struct_t * | main_struct, | |
heraia_plugin_t * | plugin, | |||
const gchar * | filename, | |||
guint | plugins_nb | |||
) | [static] |
finalising initialisation : if everything went fine, the plugin is added to the plugin list and a menu entry is created in the Plugins menu
main_struct | : main structure | |
plugin | : the plugin that was initialized | |
filename | : filename of the plugin itself | |
plugins_nb | : a number that will become the id of that plugin |
Definition at line 199 of file plugin.c.
References add_entry_to_plugins_menu(), HERAIA_PLUGIN_ACTION, plugin_info_t::id, heraia_plugin_t::info, heraia_plugin_t::init_proc, log_message(), heraia_struct_t::plugins_list, and plugin_info_t::type.
Referenced by load_one_plugin().
static void load_one_plugin | ( | heraia_struct_t * | main_struct, | |
const gchar * | filename, | |||
guint | plugins_nb | |||
) | [static] |
Here we manage to load one plugin at a time (and this is really enough !).
main_struct | : main structure | |
filename | : filename of the plugin that we want to load | |
plugins_nb | : a number that will be the id of that plugin |
Definition at line 225 of file plugin.c.
References heraia_plugin_t::filename, get_plugin_handle(), get_plugin_init_symbol(), init_plugin(), log_message(), new_plugin(), and heraia_plugin_t::path.
Referenced by load_plugins().
gboolean load_plugin_xml | ( | heraia_struct_t * | main_struct, | |
heraia_plugin_t * | plugin | |||
) |
Loads the xml's definition file that describes the plugin (.gtkbuilder suffix) tries the paths found in the location_list.
main_struct | : main structure | |
plugin | : plugin for whom we want to load it's GtkBuilder XML definition file |
Definition at line 356 of file plugin.c.
References heraia_plugin_t::info, load_xml_file(), heraia_struct_t::location_list, plugin_info_t::name, and heraia_plugin_t::xml.
Referenced by init().
void load_plugins | ( | heraia_struct_t * | main_struct | ) |
looks at the plugins dir(s) and loads the needed plugins (all ;-) (one at a time !!)
main_struct | : main structure |
Definition at line 258 of file plugin.c.
References load_one_plugin(), and log_message().
Referenced by init_heraia_plugin_system().
heraia_plugin_t* new_plugin | ( | void | ) |
Creates a new empty plugin it may be initialised by the plugin itself !
Definition at line 56 of file plugin.c.
References PLUGIN_STATE_NEW, and heraia_plugin_t::state.
Referenced by load_one_plugin().
gboolean plugin_capable | ( | void | ) |
Says whether the system can handle plugins (or not).
Definition at line 43 of file plugin.c.
Referenced by init_heraia_plugin_system().
void refresh_all_plugins | ( | heraia_struct_t * | main_struct | ) |
To help the main program to send events to the plugins.
main_struct | : main structure |
Definition at line 378 of file plugin.c.
References heraia_struct_t::plugins_list, and heraia_plugin_t::refresh_proc.
Referenced by refresh_event_handler().