Heraia  0.1.8
plugin.c File Reference

This file contains all the stuff that is dedicated to plugins (loading, instanciating, initializing and so on) More...

#include <libheraia.h>
Include dependency graph for plugin.c:

Go to the source code of this file.

Functions

static heraia_plugin_tget_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. More...
 
static heraia_plugin_tget_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) More...
 
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 More...
 
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 !) More...
 
gboolean plugin_capable (void)
 Says whether the system can handle plugins (or not) More...
 
heraia_plugin_tnew_plugin (void)
 Creates a new empty plugin it may be initialised by the plugin itself ! More...
 
void free_plugin (heraia_plugin_t *plugin)
 free an unused plugin use with caution More...
 
void load_plugins (heraia_struct_t *main_struct)
 looks at the plugins dir(s) and loads the needed plugins (all ;-) (one at a time !!) More...
 
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 More...
 
heraia_plugin_tfind_plugin_by_name (GList *plugins_list, gchar *name)
 Finds the desired plugin by its name and return the plugin structure or NULL. More...
 
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. More...
 
void refresh_all_plugins (heraia_struct_t *main_struct)
 To help the main program to send events to the plugins. More...
 

Detailed Description

This file contains all the stuff that is dedicated to plugins (loading, instanciating, initializing and so on)

Definition in file plugin.c.

Function Documentation

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

Parameters
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().

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Parameters
plugins_list: list of all available plugins
name: plugin's name we're looking for
Returns
Returns a heraia_plugin_t that correspond to the plugin or NULL if no plugin was found with that name

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().

Here is the caller graph for this function:

void free_plugin ( heraia_plugin_t plugin)
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.

Parameters
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)
Returns
Returns the modified plugin structure eventually with a handle !

Definition at line 135 of file plugin.c.

References heraia_plugin_t::handle, and log_message().

Referenced by load_one_plugin().

Here is the call graph for this function:

Here is the caller graph for this function:

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)

Parameters
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().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Parameters
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().

Here is the call graph for this function:

Here is the caller graph for this function:

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 !)

Parameters
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().

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Parameters
main_struct: main structure
plugin: plugin for whom we want to load it's GtkBuilder XML definition file
Returns
Returns TRUE if everything went ok, FALSE otherwise

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().

Here is the call graph for this function:

Here is the caller graph for this function:

void load_plugins ( heraia_struct_t main_struct)

looks at the plugins dir(s) and loads the needed plugins (all ;-) (one at a time !!)

Parameters
main_struct: main structure
Todo:
Register all shared plugins (plugins_dir) (-DPLUGINS_DIR) This may be a config file option later ...

Definition at line 258 of file plugin.c.

References load_one_plugin(), and log_message().

Referenced by init_heraia_plugin_system().

Here is the call graph for this function:

Here is the caller graph for this function:

heraia_plugin_t* new_plugin ( void  )

Creates a new empty plugin it may be initialised by the plugin itself !

Returns
Returns a newly created heraia_plugin_t plugin structure

Definition at line 56 of file plugin.c.

References PLUGIN_STATE_NEW, and heraia_plugin_t::state.

Referenced by load_one_plugin().

Here is the caller graph for this function:

gboolean plugin_capable ( void  )

Says whether the system can handle plugins (or not)

Returns
Returns TRUE if the system is able to handle plugins, FALSE otherwise

Definition at line 43 of file plugin.c.

Referenced by init_heraia_plugin_system().

Here is the caller graph for this function:

void refresh_all_plugins ( heraia_struct_t main_struct)

To help the main program to send events to the plugins.

Parameters
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().

Here is the caller graph for this function: