OpenCPN Partial API docs
PluginLoader Class Reference

PluginLoader is a backend module without any direct GUI functionality. More...

#include <plugin_loader.h>

Public Member Functions

bool LoadAllPlugIns (bool enabled_plugins, bool keep_orphans=false)
 Update catalog with imported metadata and load all plugin library files. More...
 
const wxBitmap * GetPluginDefaultIcon ()
 
void SetPluginDefaultIcon (const wxBitmap *bitmap)
 
void SetOnDeactivateCb (std::function< void(const PlugInContainer *)> cb)
 Callback invoked in late stage on deactivating a plugin.
 
void ShowPreferencesDialog (const PlugInData &pd, wxWindow *parent)
 Display the preferences dialog for a plugin.
 
void NotifySetupOptionsPlugin (const PlugInData *pic)
 
void RemovePlugin (const PlugInData &pd)
 Remove a plugin from *GetPluginArray(). More...
 
void SortPlugins (int(*cmp_func)(PlugInContainer **, PlugInContainer **))
 Sort GetPluginArray().
 
bool UnLoadPlugIn (size_t ix)
 Unload, delete and remove item ix in GetPlugInArray().
 
bool UnLoadAllPlugIns ()
 
bool DeactivateAllPlugIns ()
 
bool DeactivatePlugIn (PlugInContainer *pic)
 
bool DeactivatePlugIn (const PlugInData &pic)
 
bool UpdatePlugIns ()
 
void UpdateManagedPlugins (bool keep_orphans)
 
PlugInContainerLoadPlugIn (const wxString &plugin_file)
 
PlugInContainerLoadPlugIn (const wxString &plugin_file, PlugInContainer *pic)
 
const ArrayOfPlugIns * GetPlugInArray ()
 
bool IsPlugInAvailable (const wxString &commonName)
 
bool CheckPluginCompatibility (const wxString &plugin_file)
 
void SetEnabled (const wxString &common_name, bool enabled)
 Update enabled/disabled state for plugin with given name.
 
void SetToolboxPanel (const wxString &common_name, bool value)
 Update m_toolbox_panel state for plugin with given name.
 

Static Public Member Functions

static PluginLoadergetInstance ()
 
static void UpdatePlugin (PlugInContainer *plugin, const PluginMetadata &md)
 Update PlugInContainer status using data from PluginMetadata and manifest. More...
 
static std::string GetPluginVersion (const PlugInData pd, std::function< const PluginMetadata(const std::string &)> get_metadata)
 Return version string for a plugin, possibly with an "Imported" suffix.
 
static PluginMetadata MetadataByName (const std::string &name)
 Find metadata for given plugin.
 

Public Attributes

EventVar evt_blacklisted_plugin
 
EventVar evt_load_directory
 
EventVar evt_load_plugin
 
EventVar evt_plugin_unload
 
EventVar evt_pluglist_change
 
EventVar evt_unreadable_plugin
 
EventVar evt_deactivate_plugin
 Carries a malloc'ed read-only copy of a PlugInContainer owned by listener.
 
EventVar evt_update_chart_types
 
EventVar evt_plugin_loadall_finalize
 Emitted after all plugins are loaded. More...
 
EventVar evt_version_incompatible_plugin
 

Detailed Description

PluginLoader is a backend module without any direct GUI functionality.

Instead, it generates events listed here. Each event is mirrored by a public variable, by convention having the same name in lower case.

The general usage pattern to process events, here using EVT_LOAD_PLUGIN:

PluginLoader::getInstance()->evt_load_plugin.listen(this, EVT_LOAD_PLUGIN) Bind(EVT_LOAD_PLUGIN, [&](ObservedEvt ev) { code to run on event... });

The code in plugin_loader uses evt_load_plugin.Notify() to trigger the event. Notify() might have a string or void* argument; these are available as ev.GetString() or ev.GetClientData() in the Bind() lambda function. There is a also a generic std::shared_ptr available as using GetSharedPtr();

Examples: PlugInManager::PlugInManager() in pluginmanager.cpp

Definition at line 154 of file plugin_loader.h.

Member Function Documentation

◆ LoadAllPlugIns()

bool PluginLoader::LoadAllPlugIns ( bool  enabled_plugins,
bool  keep_orphans = false 
)

Update catalog with imported metadata and load all plugin library files.

Parameters
enabled_pluginsIf true, only load enabled plugins
keep_orphansIf true, don't scrub plugins not available in the catalog.
Returns
false on load errors, else true.

Definition at line 415 of file plugin_loader.cpp.

◆ RemovePlugin()

void PluginLoader::RemovePlugin ( const PlugInData pd)

Remove a plugin from *GetPluginArray().


Definition at line 396 of file plugin_loader.cpp.

◆ UpdatePlugin()

void PluginLoader::UpdatePlugin ( PlugInContainer plugin,
const PluginMetadata md 
)
static

Update PlugInContainer status using data from PluginMetadata and manifest.

Update PlugInContainer using data from PluginMetadata and manifest.

Definition at line 866 of file plugin_loader.cpp.

Member Data Documentation

◆ evt_plugin_loadall_finalize

EventVar PluginLoader::evt_plugin_loadall_finalize

Emitted after all plugins are loaded.

Event carries a std::vector<LoadError> available though GetSharedPtr()

Definition at line 190 of file plugin_loader.h.


The documentation for this class was generated from the following files: