Commit 15cf93e8 authored by Jay Dubb's avatar Jay Dubb
Browse files

v1.26.2

-- Fix PlotProbeGUI doe not plot the stim condition selected in MainGUI. Fix is to change the calls to ChildGuiClass in MainGUI to allow passing of arguments, which allows passing of condition argument to PlotProbeGUI
-- Sync DataTree in Homer3 with DataTree in AtlasViewer so it's the same code
-- Fix small bug in StimEditGUI.m when user clicks on axes and current tree node does not have stims (like group or subject) we get error. We should just exit gracefully if we see that time vector is empty
parent b42f455e
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -33,12 +33,20 @@ if nargin==1
elseif nargin==2
    dirnameGroup = varargin{1};
    fmt = varargin{2};
elseif nargin==3
    dirnameGroup = varargin{1};
    fmt = varargin{2};
    options = varargin{3};
    if optionExists(options, 'oneformat')
        fmt = [fmt, 'only'];
    end
end

if ~exist('dirnameGroup','var') || isempty(dirnameGroup)
    dirnameGroup = pwd;
end


if ~exist('fmt','var') || isempty(fmt)
    if ~isempty(maingui) && isstruct(maingui) && isfield(maingui,'format')
        fmt = maingui.format;
@@ -72,6 +80,12 @@ while files.isempty()
                Nirs2Snirf(dirnameGroup);
                files = DataFilesClass(dirnameGroup, 'snirf');
            end
        case {'snirfonly'}
            files = DataFilesClass(dirnameGroup, 'snirf');
            if files.isempty()
                files = [];
                return;
            end
        case {'nirs','.nirs'}
            files = DataFilesClass(dirnameGroup, 'nirs');
        otherwise
@@ -90,7 +104,10 @@ while files.isempty()
                continue;
            end
    end
    
    if files.isempty()
        switch fmt
            case {'snirf','.snirf'}
        msg{1} = sprintf('Homer3 did not find any %s data files to load in the current group folder. ', fmt);        
        msg{2} = sprintf('Do you want to select another group folder?');
        q = MenuBox([msg{:}], {'YES','NO'});
@@ -103,6 +120,9 @@ while files.isempty()
            files = DataFilesClass();
            return;
                end
            case {'snirfonly'}
                files = [];
        end
    end
end

+20 −12
Original line number Diff line number Diff line
@@ -26,15 +26,10 @@ classdef DataTreeClass < handle
            obj.dirnameGroups       = {};
            obj.logger              = InitLogger(logger, 'DataTree');
            
            if isa(groupDirs, 'DataTreeClass')
                   obj.Copy(groupDirs);
                   return;
            end
            
            cfg = ConfigFileClass();
            obj.dataStorageScheme = cfg.GetValue('Data Storage Scheme');
            
            %%%% Parse args
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            % Parse args
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            
            % Arg 1: get folder of the group being loaded
            if ~exist('groupDirs','var') || isempty(groupDirs)
@@ -58,10 +53,23 @@ classdef DataTreeClass < handle
                options = '';
            end
            
            
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            % Now that we have all the arguments, ready to start
            % condtructing object
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            if isa(groupDirs, 'DataTreeClass')
               obj.Copy(groupDirs);
               return;
            end
            
            cfg = ConfigFileClass();
            obj.dataStorageScheme = cfg.GetValue('Data Storage Scheme');

            % Estimate amount of memory required and set the data storage scheme
            obj.SetDataStorageScheme(options);
            
            obj.FindAndLoadGroups(groupDirs, fmt, procStreamCfgFile);
            obj.FindAndLoadGroups(groupDirs, fmt, procStreamCfgFile, options);
            if obj.IsEmpty()
                return;
            end
@@ -198,7 +206,7 @@ classdef DataTreeClass < handle
        
        
        % --------------------------------------------------------------
        function FindAndLoadGroups(obj, groupDirs, fmt, procStreamCfgFile)
        function FindAndLoadGroups(obj, groupDirs, fmt, procStreamCfgFile, options)

            tic;            
            for kk = 1:length(groupDirs)
@@ -212,7 +220,7 @@ classdef DataTreeClass < handle
                    obj.files    = FileClass().empty();
                    obj.filesErr = FileClass().empty();
                    
                    dataInit = FindFiles(obj.dirnameGroups{kk}, fmt);
                    dataInit = FindFiles(obj.dirnameGroups{kk}, fmt, options);
                    if isempty(dataInit) || dataInit.isempty()
                        return;
                    end
+6 −0
Original line number Diff line number Diff line
@@ -162,7 +162,13 @@ classdef ProcResultClass < handle
            end
            [pname, fname] = fileparts(filename);
            if isempty(pname)
                if exist(['./', fname, '.mat'], 'file')==2
                    pname = '.';
                elseif exist(['../', fname, '.mat'], 'file')==2
                    pname = '..';
                else
                pname = '.';
            end
            end
            obj.filename = [pname, '/', fname, '.mat'];
        end
+26 −29
Original line number Diff line number Diff line
@@ -63,28 +63,6 @@ set(handles.togglebuttonMinimizeGUI, 'tooltipstring','Minimize GUI Window')
cfg = ConfigFileClass();
handles.menuItemUpdateCheck.Checked = cfg.GetValue('Check For Updates');

% Get rid of the useless "might be unsused" warnings for GUI callbacks
checkboxPlotHRF_Callback([]);
checkboxApplyProcStreamEditToAll_Callback([]);
pushbuttonCalcProcStream_Callback([]);
listboxFilesErr_Callback([]);
uipanelPlot_SelectionChangeFcn([]);
menuItemProcStreamEditGUI_Callback([]);
menuItemPlotProbeGUI_Callback([]);
menuItemSaveGroup_Callback([]);
menuItemViewHRFStdErr_Callback([]);
menuItemStimEditGUI_Callback([]);
pushbuttonProcStreamOptionsGUI_Callback([]);
guiControls_ButtonDownFcn([]);
axesSDG_ButtonDownFcn([]);
popupmenuConditions_Callback([]);
listboxPlotWavelength_Callback([]);
listboxPlotConc_Callback([]);
menuItemChangeGroup_Callback([]);
menuItemExit_Callback([]);
menuItemReset_Callback([]);
menuCopyCurrentPlot_Callback([]);
uipanelProcessingType_SelectionChangeFcn([]);


% ---------------------------------------------------------------------
@@ -358,7 +336,7 @@ listboxGroupTree_Callback([], [1,1,1], handles)


% --------------------------------------------------------------------
function eventdata = uipanelProcessingType_SelectionChangeFcn(hObject, eventdata, handles)
function eventdata = uipanelProcessingType_SelectionChangeFcn(hObject, eventdata, handles)  %#ok<DEFNU>
global maingui

if isempty(hObject)
@@ -443,7 +421,7 @@ Display(handles, hObject0);


% --------------------------------------------------------------------
function [eventdata, handles] = pushbuttonCalcProcStream_Callback(hObject, eventdata, handles)
function [eventdata, handles] = pushbuttonCalcProcStream_Callback(hObject, eventdata, handles) %#ok<DEFNU>
global maingui
if ~ishandles(hObject)
    return;
@@ -704,16 +682,34 @@ end


% --------------------------------------------------------------------
function LaunchChildGuiFromMenu(guiname, h)
function LaunchChildGuiFromMenu(guiname, h, varargin)
global maingui
if ~ishandles(h)
    return;
end
if ~exist('varargin','var')
    varargin = {};
end
idx = FindChildGuiIdx(guiname);
checked = get(h,'checked');
if strcmp(checked, 'off')
    set(h, 'checked', 'on');
    
    % Allow up to 5 parameters to be passed
    switch(length(varargin))
        case 0
            maingui.childguis(idx).Launch();
        case 1
            maingui.childguis(idx).Launch(varargin{1});
        case 2
            maingui.childguis(idx).Launch(varargin{1}, varargin{2});
        case 3
            maingui.childguis(idx).Launch(varargin{1}, varargin{2}, varargin{3});
        case 4
            maingui.childguis(idx).Launch(varargin{1}, varargin{2}, varargin{3}, varargin{4});
        case 5
            maingui.childguis(idx).Launch(varargin{1}, varargin{2}, varargin{3}, varargin{4}, varargin{5});
    end
elseif strcmp(checked, 'on')
    set(h, 'checked', 'off');
    maingui.childguis(idx).Close();
@@ -722,13 +718,14 @@ end


% --------------------------------------------------------------------
function menuItemPlotProbeGUI_Callback(hObject, eventdata, handles)
LaunchChildGuiFromMenu('PlotProbeGUI', hObject);
function menuItemPlotProbeGUI_Callback(hObject, eventdata, handles) %#ok<DEFNU>
global maingui
LaunchChildGuiFromMenu('PlotProbeGUI', hObject, GetDatatype(handles), maingui.condition);



% -------------------------------------------------------------------
function [eventdata, handles] = menuItemStimEditGUI_Callback(hObject, eventdata, handles)
function [eventdata, handles] = menuItemStimEditGUI_Callback(hObject, eventdata, handles) %#ok<DEFNU>
LaunchChildGuiFromMenu('StimEditGUI', hObject);


+955 B (48.7 KiB)

File changed.

No diff preview for this file type.

Loading