= Plugins = ''Authors: Francois Tadel'' Brainstorm connects with features from many third-party libraries of methods. The external software can be downloaded or updated automatically by Brainstorm when needed. This tutorial presents the API to register and manage plugins. == Interactive management == The Brainstorm interface offers menus to Install/Update/Uninstall plugins. {{attachment:example1.gif}} * '''Install''': The package is downloaded in the Brainstorm user folder:''' $HOME/.brainstorm/plugins/''' * '''Uninstall''': Delete the plugin folder and all its subfolders. * '''Load''': Adds all the subfolders needed by the plugin to the Matlab path, plus other optional taks. * '''Unload''': Removes all the plugin folders from the Matlab path. * '''Update''': Some plugins are designed to update themselves automatically whenever a new version is available online, or requested by Brainstorm. Others plugins must be updated manually. * '''Manual install''': If you already have a given plugin installed on your computer (eg. FieldTrip, SPM12) and don't want Brainstorm to manage the download/update or the Matlab path for you, reference it with the menu: '''Custom install''' > Set installation folder. * '''List''': You can list all the installed plugins with the menu List:<
><
> {{attachment:list.gif||width="544",height="156"}} == Command-line management == The calls to install or manage plugins are all documented in the header of '''bst_plugin.m''': <)>><><)>> == Plugin definition == The plugins registered in Brainstorm are listed in '''bst_plugin.m''' / '''GetSupported'''. Each one is an entry in the PlugDesc array, following the structure defined in '''db_template('plugdesc')'''. The fields allowed are described below. Mandatory fields: * '''Name''': String, Plugin name = subfolder in the Brainstorm user folder * '''Version''': String, version of the plugin (eg. '1.2', '21a', 'github-master', 'latest') * '''URLzip''': Download URL (zip file accessible over HTTP/HTTPS/FTP) * '''URLinfo''': Information URL: Software website Optional fields: * '''Category''': String, sub-menu in which the plugin is listed * '''AutoUpdate''': If 1, plugin is updated automatically when there is a new version available * '''ExtraMenus''': Cell matrix {Nx2} with list of entries to add to the plugins menu, eg. {'Download page', 'web(''http://...'')'; 'Tutorial', 'web(''http://...'')'} '' * '''''TestFile''': Function/file name to check the existence of the plugin outside of the Brainstorm user folder '' * '''''ReadmeFile''': Text filename (relative to the plugin path) - If empty, try using brainstorm3/doc/plugin/_readme.txt '' * '''''LogoFile''': Logo filename (relative to the plugin path) - If empty, try using brainstorm3/doc/plugin/_logo.[gif|png] '' * '''''MinMatlabVer''': Minimum Matlab version, as returned by bst_get('MatlabVersion') '' * '''''RequiredPlugs''': Cell-array of required plugin names, to install/load before this one: {Nx2}=>{'plugname','version';...} or {Nx1}=>{'plugname';...} '' * '''''UnloadPlugs''': Cell-array of incompatible plugin names, to remove from path before adding '' * '''''LoadFolders''': Cell-array of subfolders to add to the path when setting the plugin up (use {'*'} to load all subfolders) '' * '''''GetVersionFcn''': String to eval to get the version (after installation) '' * '''''InstalledFcn''': String to eval or function handle to call after installing the plugin '' * '''''UninstalledFcn''': String to eval or function handle to call after uninstalling the plugin '' * '''''LoadedFcn''': String to eval or function handle to call after loading the plugin '' * '''''UnloadedFcn''': String to eval or function handle to call after unloading the plugin '' ''Fields set when installing or loading the plugin: '' * '''''SubFolder''': If all the code is in a subfolder: detect this at installation time '' * '''''Path''': Set at runtime: Installation path for this plugin '' * '''''Processes''': List of process functions to be added to the pipeline manager '' * '''''isLoaded''': Set at runtime: 0=Not loaded, 1=Loaded (folder and specific subfolders added to Matlab path) '' * '''''isManaged''': Set at runtime: 0=Installed by the user, 1=Installed automatically by Brainstorm ''