📄 erp_getsubject_ui.m
字号:
function [selected_profiles] = erp_getsubject_ui(varargin)
%
% USAGE: [selected_profiles] = erp_getsubject_ui(dirname,selected_files)
%
% Allow user to select a set of session profiles
%
% Example:
%
% selected_profiles = erp_getsubject_ui('/home/wilkin/');
%
%
% -- Created July 2001 by Wilkin Chau, Rotman Research Institute
%
if nargin == 0 | ischar(varargin{1}) % create figure
dir_name = '';
tit_nam = get(gcbf,'name');
if findstr('Block', tit_nam)
filter_pattern = '*_BfMRIsession.mat';
else
filter_pattern = '*_fMRIsession.mat';
end
filter_pattern = '*.*';
selected_files = [];
tit = 'Select Subjects';
if (nargin >= 1), tit = varargin{1}; end;
if (nargin >= 2), dir_name = varargin{2}; end;
if (nargin >= 3), selected_files = varargin{3}; end;
init(dir_name,filter_pattern,selected_files,tit);
uiwait; % wait for user finish
selected_profiles = getappdata(gcf,'SelectedProfiles');
start_dir = getappdata(gcf,'StartDirectory');
if ~isempty(start_dir)
cd (start_dir);
end
close(gcf);
return;
end;
% clear the message line,
%
h = findobj(gcf,'Tag','MessageLine');
set(h,'String','');
action = upper(varargin{1}{1});
if strcmp(action,'CREATE_EDIT_FILTER'),
filter_pattern = getappdata(gcf,'FilterPattern');
dir_name = pwd;
if isempty(dir_name),
dir_name = filesep;
end;
set(gcbo,'String',fullfile(dir_name, filter_pattern));
elseif strcmp(action,'UPDATE_DIRECTORY_LIST'),
UpdateDirectoryList;
elseif strcmp(action,'EDIT_FILTER'),
EditFilter;
elseif strcmp(action,'RESIZE_FIGURE'),
SetObjectPositions;
elseif strcmp(action,'ADD_SESSION_PROFILE'),
AddSessionProfile;
elseif strcmp(action,'REMOVE_SESSION_PROFILE'),
RemoveSessionProfile;
elseif strcmp(action,'MOVE_UP_PROFILE'),
MoveUpSessionProfile;
elseif strcmp(action,'MOVE_DOWN_PROFILE'),
MoveDownSessionProfile;
elseif strcmp(action,'TOGGLE_FULL_PATH'),
SwitchFullPath;
elseif strcmp(action,'DELETE_FIG')
delete_fig;
elseif strcmp(action,'LOAD_TXT')
load_txt;
elseif strcmp(action,'SAVE_TXT')
save_txt;
elseif strcmp(action,'DONE_BUTTON_PRESSED'),
profiles = get(findobj(gcf,'Tag','SessionProfileList'),'Userdata');
setappdata(gcf,'SelectedProfiles',profiles);
uiresume;
elseif strcmp(action,'CANCEL_BUTTON_PRESSED'),
setappdata(gcf,'SelectedProfiles',[]);
uiresume;
end;
return;
% --------------------------------------------------------------------
function init(dir_name,filter_pattern,selected_files,tit),
StartDirectory = pwd;
if isempty(StartDirectory),
StartDirectory = filesep;
end;
save_setting_status = 'on';
fmri_select_profiles_pos = [];
try
load('pls_profile');
catch
end
if ~isempty(fmri_select_profiles_pos) & strcmp(save_setting_status,'on')
pos = fmri_select_profiles_pos;
else
w = 0.7;
h = 0.7;
x = (1-w)/2;
y = (1-h)/2;
pos = [x y w h];
end
h0 = figure('Color',[0.8 0.8 0.8], ...
'Units','normal', ...
'Name',tit, ...
'NumberTitle','off', ...
'MenuBar','none', ...
'Position',pos, ...
'DeleteFcn','erp_getsubject_ui({''DELETE_FIG''});', ...
'WindowStyle', 'normal', ...
'Tag','GetFilesFigure', ...
'ToolBar','none');
left_margin = .05;
text_height = .05;
x = left_margin;
y = .9;
w = 1-2*left_margin;
h = text_height;
pos = [x y w h];
fnt = 0.5;
h1 = uicontrol('Parent',h0, ... % Filter Label
'Style','text', ...
'Units','normal', ...
'BackgroundColor',[0.8 0.8 0.8], ...
'fontunit','normal', ...
'FontSize',fnt, ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'String','Filter', ...
'Tag','FilterLabel');
y = y-h;
pos = [x y w h];
e_h = uicontrol('Parent',h0, ... % Filter Edit
'Style','edit', ...
'Units','normal', ...
'BackgroundColor',[1 1 1], ...
'fontunit','normal', ...
'FontSize',fnt, ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'String', '', ...
'CreateFcn','erp_getsubject_ui({''CREATE_EDIT_FILTER''});', ...
'Callback','erp_getsubject_ui({''EDIT_FILTER''});', ...
'Tag','FilterEdit');
y = y-2*h;
w = .34;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % File/Directory Label
'Style','text', ...
'Units','normal', ...
'BackgroundColor',[0.8 0.8 0.8], ...
'fontunit','normal', ...
'FontSize',fnt, ...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',pos, ...
'String','Files:', ...
'Tag','File/DirectoryLabel');
x = left_margin+.44;
w = 1;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % Session Profile Label
'Style','text', ...
'Units','normal', ...
'BackgroundColor',[0.8 0.8 0.8], ...
'fontunit','normal', ...
'FontSize',fnt, ...
'HorizontalAlignment','left', ...
'ListboxTop',0, ...
'Position',pos, ...
'String','Selected subject files in the same order as conditions:', ...
'Tag','SessionProfileLabel');
h = y - 0.18;
x = left_margin;
y = 0.18;
w = .34;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % File/Directory Listbox
'Style','listbox', ...
'Units','normal', ...
'fontunit','normal', ...
'FontSize',0.05, ...
'BackgroundColor',[1 1 1], ...
'HorizontalAlignment','left', ...
'Interruptible', 'off', ...
'Min',1, ...
'Max',10, ...
'ListboxTop',1, ...
'Position',pos, ...
'String', '', ...
'Callback','erp_getsubject_ui({''UPDATE_DIRECTORY_LIST''});', ...
'Tag','File/DirectoryList');
x = left_margin+.44;
w = .34;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % Session Profile Listbox
'Style','listbox', ...
'Units','normal', ...
'fontunit','normal', ...
'FontSize',0.05, ...
'BackgroundColor',[1 1 1], ...
'HorizontalAlignment','left', ...
'ListboxTop',1, ...
'Position',pos, ...
'String', '', ...
'Tag','SessionProfileList');
x = left_margin + .34 + .01;
y = .5;
w = .08;
h = text_height;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % ">>" Button
'Units','normal', ...
'fontunit','normal', ...
'FontSize',fnt, ...
'ListboxTop',0, ...
'Position',pos, ...
'HorizontalAlignment','center', ...
'String','>>', ...
'Callback','erp_getsubject_ui({''ADD_SESSION_PROFILE''});', ...
'Tag','>>Button');
x = left_margin + .78 + .01;
y = .65;
w = 1-left_margin-x;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % UP Button
'Units','normal', ...
'fontunit','normal', ...
'FontSize',fnt, ...
'ListboxTop',0, ...
'Position',pos, ...
'HorizontalAlignment','center', ...
'String','UP', ...
'Callback','erp_getsubject_ui({''MOVE_UP_PROFILE''});', ...
'Tag','UPButton');
y = y - h;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % DOWN Button
'Units','normal', ...
'fontunit','normal', ...
'FontSize',fnt, ...
'ListboxTop',0, ...
'Position',pos, ...
'HorizontalAlignment','center', ...
'String','DOWN', ...
'Callback','erp_getsubject_ui({''MOVE_DOWN_PROFILE''});', ...
'Tag','DOWNButton');
y = .3;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % REMOVE Button
'Units','normal', ...
'fontunit','normal', ...
'FontSize',fnt, ...
'ListboxTop',0, ...
'Position',pos, ...
'HorizontalAlignment','center', ...
'String','REMOVE', ...
'Callback','erp_getsubject_ui({''REMOVE_SESSION_PROFILE''});', ...
'Tag','REMOVEButton');
x = left_margin;
y = .08;
w = .12;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % DONE
'Units','normal', ...
'fontunit','normal', ...
'FontSize',fnt, ...
'ListboxTop',0, ...
'Position',pos, ...
'HorizontalAlignment','center', ...
'String','DONE', ...
'Callback','erp_getsubject_ui({''DONE_BUTTON_PRESSED''});', ...
'Tag','DONEButton');
x = left_margin+.34-w;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % CANCEL
'Units','normal', ...
'fontunit','normal', ...
'FontSize',fnt, ...
'ListboxTop',0, ...
'Position',pos, ...
'HorizontalAlignment','center', ...
'String','CANCEL', ...
'Callback','erp_getsubject_ui({''CANCEL_BUTTON_PRESSED''});', ...
'Tag','CANCELButton');
x = left_margin+.44;
w = 1-left_margin-x;
pos = [x y w h];
h1 = uicontrol('Parent',h0, ... % Full Path Checkbox
'Style','checkbox', ...
'Units','normal', ...
'BackgroundColor',[0.8 0.8 0.8], ...
'fontunit','normal', ...
'FontSize',fnt, ...
'ListboxTop',0, ...
'Value', 0, ...
'Position',pos, ...
'HorizontalAlignment','left', ...
'String','Show full path for the selected profiles', ...
'Callback','erp_getsubject_ui({''TOGGLE_FULL_PATH''});', ...
'Tag','FullPathChkbox');
x = .01;
y = 0;
w = 1;
pos = [x y w h];
c = uicontrol('Parent',h0, ... % Message Line
'Style','text', ...
'Units','normal', ...
'BackgroundColor',[0.8 0.8 0.8], ...
'ForegroundColor',[0.8 0.0 0.0], ...
'fontunit','normal', ...
'FontSize',fnt, ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'String','', ...
'Tag','MessageLine');
%--------------------------- menu ----------------------
% file
%
h_file = uimenu('parent',h0, ...
'label','&File', ...
'visible', 'off', ...
'tag','menu_file');
h2 = uimenu('parent', h_file, ...
'callback','erp_getsubject_ui({''LOAD_TXT''});', ...
'label','&Load from a text file', ...
'tag', 'menu_load');
h2 = uimenu('parent', h_file, ...
'callback','erp_getsubject_ui({''SAVE_TXT''});', ...
'label','&Save to a text file', ...
'tag', 'menu_save');
h2 = uimenu('parent', h_file, ...
'callback','close(gcbf);', ...
'label','&Close', ...
'tag', 'menu_close');
pause(0.01)
setappdata(gcf,'FilterPattern',filter_pattern);
setappdata(gcf,'StartDirectory',StartDirectory);
if ~isempty(dir_name),
try
cd(dir_name);
catch
msg = 'ERROR: Invalid directory. Use current directory to start';
set(findobj(gcf,'Tag','MessageLine'),'String',msg);
end;
end;
dir_name = pwd;
if isempty(dir_name)
dir_name = filesep;
end;
set(e_h,'String',fullfile(dir_name, filter_pattern));
update_dirlist(dir_name);
if ~isempty(selected_files)
init_selection(selected_files);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -