KiCad PCB EDA Suite
Loading...
Searching...
No Matches
API_PLUGIN_MANAGER Class Reference

Responsible for loading plugin definitions for API-based plugins (ones that do not run inside KiCad itself, but instead are launched as external processes by KiCad) More...

#include <api_plugin_manager.h>

Inheritance diagram for API_PLUGIN_MANAGER:

Classes

struct  JOB
 

Public Member Functions

 API_PLUGIN_MANAGER (wxEvtHandler *aParent)
 
void ReloadPlugins (std::optional< wxString > aDirectoryToScan=std::nullopt)
 Clears the loaded plugins and actions and re-scans the filesystem to register new ones.
 
void RecreatePluginEnvironment (const wxString &aIdentifier)
 
void InvokeAction (const wxString &aIdentifier)
 
int InvokeActionSync (const wxString &aIdentifier, std::vector< wxString > aExtraArgs, wxString *aStdout=nullptr, wxString *aStderr=nullptr)
 Invokes an action synchronously, capturing its output.
 
bool Busy () const
 
std::optional< const PLUGIN_ACTION * > GetAction (const wxString &aIdentifier)
 
std::vector< const PLUGIN_ACTION * > GetActionsForScope (PLUGIN_ACTION_SCOPE aScope)
 
std::map< int, wxString > & ButtonBindings ()
 
std::map< int, wxString > & MenuBindings ()
 

Private Types

enum class  JOB_TYPE { CREATE_ENV , SETUP_ENV , INSTALL_REQUIREMENTS }
 

Private Member Functions

void processPluginDependencies ()
 
void processNextJob (wxCommandEvent &aEvent)
 
int doInvokeAction (const wxString &aIdentifier, std::vector< wxString > aExtraArgs, bool aSync=false, wxString *aStdout=nullptr, wxString *aStderr=nullptr)
 

Private Attributes

wxEvtHandler * m_parent
 
std::set< std::unique_ptr< API_PLUGIN >, CompareApiPluginIdentifiersm_plugins
 
std::map< wxString, const API_PLUGIN * > m_pluginsCache
 
std::map< wxString, const PLUGIN_ACTION * > m_actionsCache
 
std::map< wxString, wxString > m_environmentCache
 Map of plugin identifier to a path for the plugin's virtual environment, if it has one.
 
std::map< int, wxString > m_buttonBindings
 Map of button wx item id to action identifier.
 
std::map< int, wxString > m_menuBindings
 Map of menu wx item id to action identifier.
 
std::set< wxString > m_readyPlugins
 
std::set< wxString > m_busyPlugins
 
std::deque< JOBm_jobs
 
std::unique_ptr< JSON_SCHEMA_VALIDATORm_schema_validator
 
long m_lastPid
 
wxTimer * m_raiseTimer
 

Detailed Description

Responsible for loading plugin definitions for API-based plugins (ones that do not run inside KiCad itself, but instead are launched as external processes by KiCad)

Definition at line 43 of file api_plugin_manager.h.

Member Enumeration Documentation

◆ JOB_TYPE

enum class API_PLUGIN_MANAGER::JOB_TYPE
strongprivate
Enumerator
CREATE_ENV 
SETUP_ENV 
INSTALL_REQUIREMENTS 

Definition at line 112 of file api_plugin_manager.h.

Constructor & Destructor Documentation

◆ API_PLUGIN_MANAGER()

API_PLUGIN_MANAGER::API_PLUGIN_MANAGER ( wxEvtHandler * aParent)

Member Function Documentation

◆ Busy()

bool API_PLUGIN_MANAGER::Busy ( ) const

Definition at line 752 of file api_plugin_manager.cpp.

References m_busyPlugins, and m_jobs.

◆ ButtonBindings()

std::map< int, wxString > & API_PLUGIN_MANAGER::ButtonBindings ( )
inline

◆ doInvokeAction()

int API_PLUGIN_MANAGER::doInvokeAction ( const wxString & aIdentifier,
std::vector< wxString > aExtraArgs,
bool aSync = false,
wxString * aStdout = nullptr,
wxString * aStderr = nullptr )
private

◆ GetAction()

std::optional< const PLUGIN_ACTION * > API_PLUGIN_MANAGER::GetAction ( const wxString & aIdentifier)

◆ GetActionsForScope()

std::vector< const PLUGIN_ACTION * > API_PLUGIN_MANAGER::GetActionsForScope ( PLUGIN_ACTION_SCOPE aScope)

◆ InvokeAction()

void API_PLUGIN_MANAGER::InvokeAction ( const wxString & aIdentifier)

Definition at line 435 of file api_plugin_manager.cpp.

References doInvokeAction().

Referenced by EDA_DRAW_FRAME::OnApiPluginInvoke().

◆ InvokeActionSync()

int API_PLUGIN_MANAGER::InvokeActionSync ( const wxString & aIdentifier,
std::vector< wxString > aExtraArgs,
wxString * aStdout = nullptr,
wxString * aStderr = nullptr )

Invokes an action synchronously, capturing its output.

Mainly used for things like wizards that have actions that return quickly and pass data to KiCad via stdout.

Parameters
aIdentifieris the plugin action to invoke
aExtraArgsare extra arguments to pass to the action beyond the ones specified in the plugin configuration file
aStdoutis a pointer to a string to fill with the stdout output of the action
aStderris a pointer to a string to fill with the stderr output of the action
Returns
the exit code from the action process

Definition at line 441 of file api_plugin_manager.cpp.

References doInvokeAction().

Referenced by FOOTPRINT_WIZARD_MANAGER::Generate(), and FOOTPRINT_WIZARD_MANAGER::RefreshInfo().

◆ MenuBindings()

std::map< int, wxString > & API_PLUGIN_MANAGER::MenuBindings ( )
inline

Definition at line 80 of file api_plugin_manager.h.

References m_menuBindings.

◆ processNextJob()

◆ processPluginDependencies()

◆ RecreatePluginEnvironment()

◆ ReloadPlugins()

void API_PLUGIN_MANAGER::ReloadPlugins ( std::optional< wxString > aDirectoryToScan = std::nullopt)

Clears the loaded plugins and actions and re-scans the filesystem to register new ones.

Parameters
aDirectoryToScancan be provided to scan an arbitrary directory instead of the stock paths; provided for QA testing.

Definition at line 90 of file api_plugin_manager.cpp.

References EDA_EVT_PLUGIN_AVAILABILITY_CHANGED, PATHS::GetDefault3rdPartyPath(), PGM_BASE::GetLocalEnvVariables(), PATHS::GetStockPluginsPath(), PATHS::GetUserPluginsPath(), ENV_VAR::GetVersionedEnvVarValue(), m_actionsCache, m_buttonBindings, m_environmentCache, m_menuBindings, m_parent, m_plugins, m_pluginsCache, m_readyPlugins, m_schema_validator, Pgm(), processPluginDependencies(), and traceApi.

Referenced by PANEL_PCBNEW_ACTION_PLUGINS::OnReloadButtonClick().

Member Data Documentation

◆ m_actionsCache

std::map<wxString, const PLUGIN_ACTION*> API_PLUGIN_MANAGER::m_actionsCache
private

Definition at line 97 of file api_plugin_manager.h.

Referenced by doInvokeAction(), GetAction(), GetActionsForScope(), and ReloadPlugins().

◆ m_busyPlugins

std::set<wxString> API_PLUGIN_MANAGER::m_busyPlugins
private

Definition at line 110 of file api_plugin_manager.h.

Referenced by Busy(), processNextJob(), and processPluginDependencies().

◆ m_buttonBindings

std::map<int, wxString> API_PLUGIN_MANAGER::m_buttonBindings
private

Map of button wx item id to action identifier.

Definition at line 103 of file api_plugin_manager.h.

Referenced by ButtonBindings(), and ReloadPlugins().

◆ m_environmentCache

std::map<wxString, wxString> API_PLUGIN_MANAGER::m_environmentCache
private

Map of plugin identifier to a path for the plugin's virtual environment, if it has one.

Definition at line 100 of file api_plugin_manager.h.

Referenced by processPluginDependencies(), and ReloadPlugins().

◆ m_jobs

std::deque<JOB> API_PLUGIN_MANAGER::m_jobs
private

◆ m_lastPid

long API_PLUGIN_MANAGER::m_lastPid
private

Definition at line 131 of file api_plugin_manager.h.

Referenced by API_PLUGIN_MANAGER(), and doInvokeAction().

◆ m_menuBindings

std::map<int, wxString> API_PLUGIN_MANAGER::m_menuBindings
private

Map of menu wx item id to action identifier.

Definition at line 106 of file api_plugin_manager.h.

Referenced by MenuBindings(), and ReloadPlugins().

◆ m_parent

wxEvtHandler* API_PLUGIN_MANAGER::m_parent
private

Definition at line 91 of file api_plugin_manager.h.

Referenced by API_PLUGIN_MANAGER(), and ReloadPlugins().

◆ m_plugins

std::set<std::unique_ptr<API_PLUGIN>, CompareApiPluginIdentifiers> API_PLUGIN_MANAGER::m_plugins
private

Definition at line 93 of file api_plugin_manager.h.

Referenced by processPluginDependencies(), and ReloadPlugins().

◆ m_pluginsCache

std::map<wxString, const API_PLUGIN*> API_PLUGIN_MANAGER::m_pluginsCache
private

Definition at line 95 of file api_plugin_manager.h.

Referenced by RecreatePluginEnvironment(), and ReloadPlugins().

◆ m_raiseTimer

wxTimer* API_PLUGIN_MANAGER::m_raiseTimer
private

Definition at line 132 of file api_plugin_manager.h.

Referenced by API_PLUGIN_MANAGER(), and doInvokeAction().

◆ m_readyPlugins

std::set<wxString> API_PLUGIN_MANAGER::m_readyPlugins
private

◆ m_schema_validator

std::unique_ptr<JSON_SCHEMA_VALIDATOR> API_PLUGIN_MANAGER::m_schema_validator
private

Definition at line 129 of file api_plugin_manager.h.

Referenced by API_PLUGIN_MANAGER(), and ReloadPlugins().


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