diff --git a/bin/R2020a/brainstorm3.jar b/bin/R2020a/brainstorm3.jar
index efd8d3cff..2e512bbcc 100644
Binary files a/bin/R2020a/brainstorm3.jar and b/bin/R2020a/brainstorm3.jar differ
diff --git a/deploy/bst_deploy_java.m b/deploy/bst_deploy_java.m
index 41d6bfc79..c96d61b7b 100644
--- a/deploy/bst_deploy_java.m
+++ b/deploy/bst_deploy_java.m
@@ -265,6 +265,7 @@ function bst_deploy_java(IS_BIN)
disp(['WARNING: Plugin ' PlugDesc(iPlug).Name ' is not installed.']);
else
strOpt = [strOpt ' ' bst_fullfile(PlugInst.Path, PlugInst.SubFolder) '' 10];
+ strOpt = [strOpt ' ' bst_fullfile(PlugInst.Path, 'plugin.mat') '' 10];
end
end
end
diff --git a/doc/license.html b/doc/license.html
index 752d4212b..dd7ff3c4c 100644
--- a/doc/license.html
+++ b/doc/license.html
@@ -5,7 +5,7 @@
THERE IS NO UNDO BUTTON - SET UP A BACKUP OF YOUR DATABASE
-Version: 3.210414 (14-Apr-2021)
+Version: 3.210416 (16-Apr-2021)
COPYRIGHT © 2000-2020
USC & McGill University.
diff --git a/doc/version.txt b/doc/version.txt
index 46f32988e..709dba1f5 100644
--- a/doc/version.txt
+++ b/doc/version.txt
@@ -1,2 +1,2 @@
% Brainstorm
-% v. 3.210414 (14-Apr-2021)
\ No newline at end of file
+% v. 3.210416 (16-Apr-2021)
\ No newline at end of file
diff --git a/toolbox/core/bst_figures.m b/toolbox/core/bst_figures.m
index b97146b6a..bba67ffe2 100644
--- a/toolbox/core/bst_figures.m
+++ b/toolbox/core/bst_figures.m
@@ -7,7 +7,6 @@
% [hFigs,iFigs,iDSs] = bst_figures('GetFigure', iDS, FigureId)
% [hFigs,iFigs,iDSs] = bst_figures('GetFigure', DataFile, FigureId)
% [hFigs,iFigs,iDSs] = bst_figures('GetFigure', hFigure)
-
% [hFigs] = bst_figures('GetAllFigures')
% [hFigs,iFigs,iDSs,iSurfs] = bst_figures('GetFigureWithSurface', SurfFile)
% [hFigs,iFigs,iDSs,iSurfs] = bst_figures('GetFigureWithSurface', SurfFile, DataFile, FigType, Modality)
@@ -54,7 +53,7 @@
% For more information type "brainstorm license" at command prompt.
% =============================================================================@
%
-% Authors: Francois Tadel, 2008-2019
+% Authors: Francois Tadel, 2008-2021
% Martin Cousineau, 2017
eval(macro_method);
diff --git a/toolbox/core/bst_get.m b/toolbox/core/bst_get.m
index 65e2be6a6..25309b807 100644
--- a/toolbox/core/bst_get.m
+++ b/toolbox/core/bst_get.m
@@ -16,6 +16,7 @@
% - bst_get('UserMexDir') : User temporary directory (/.brainstorm/mex/)
% - bst_get('UserProcessDir') : User custom processes directory (/.brainstorm/process/)
% - bst_get('UserDefaultsDir') : User defaults directory (/.brainstorm/defaults/)
+% - bst_get('UserPluginsDir') : User plugins directory (/.brainstorm/plugins/)
% - bst_get('BrainstormDbFile') : User brainstorm.mat file (/.brainstorm/brainstorm.mat)
% - bst_get('BrainstormDbDir') : User database directory (contains all the brainstorm protocols)
% - bst_get('DirDefaultSubject') : Directory name of the default subject
diff --git a/toolbox/core/bst_plugin.m b/toolbox/core/bst_plugin.m
index 13dfb61a6..53ae561d0 100644
--- a/toolbox/core/bst_plugin.m
+++ b/toolbox/core/bst_plugin.m
@@ -595,6 +595,11 @@ function Configure(PlugDesc)
% Check if the file is inside the Brainstorm user folder (where it is supposed to be) => Managed plugin
if ~isempty(strfind(TestFilePath, PlugPath))
PlugDesc(iPlug).isManaged = 1;
+ % Process compiled together with Brainstorm
+ elseif isCompiled && ~isempty(strfind(TestFilePath, ['.brainstorm' filesep 'plugins' filesep PlugName]))
+ compiledDir = ['.brainstorm' filesep 'plugins' filesep PlugName];
+ iPath = strfind(TestFilePath, compiledDir);
+ PlugPath = [TestFilePath(1:iPath-2), filesep, compiledDir];
% Otherwise: Custom installation
else
% If the test file was found in a defined subfolder: remove the subfolder from the plugin path
diff --git a/toolbox/process/panel_process_select.m b/toolbox/process/panel_process_select.m
index 72a00dbe0..dd08108d5 100644
--- a/toolbox/process/panel_process_select.m
+++ b/toolbox/process/panel_process_select.m
@@ -2640,7 +2640,7 @@ function ParseProcessFolder(isForced) %#ok
% Get description for each file
for iFile = 1:length(bstFunc)
% Skip python support functions
- if length(bstFunc{iFile} > 5) && strcmp(bstFunc{iFile}(end-4:end), '_py.m')
+ if (length(bstFunc{iFile}) > 5) && strcmp(bstFunc{iFile}(end-4:end), '_py.m')
continue;
end
% Split function names: regular process=only function name; plugin process=full path