📄 erp_plot_ui.m
字号:
return; % toggle_chan_name
%
%
%------------------------------------------------
function toggle_chan_axes
hm_chan_axes = getappdata(gcf,'hm_chan_axes');
hm_chan_tick = getappdata(gcf,'hm_chan_tick');
view_option = getappdata(gcf,'view_option');
datamat_file = getappdata(gcf,'datamat_file');
setting = getappdata(gcf,'setting');
chan_axes_status = get(hm_chan_axes,'userdata');
if ~chan_axes_status % was not checked
set(hm_chan_axes, 'userdata',1, 'check','on');
erp_plot_ui('display_chan_axes','on');
else
set(hm_chan_axes, 'userdata',0, 'check','off');
erp_plot_ui('display_chan_axes','off');
set(hm_chan_tick, 'userdata',0, 'check','off');
erp_plot_ui('display_chan_tick','off');
end
chan_axes_status = get(hm_chan_axes,'userdata');
chan_tick_status = get(hm_chan_tick,'userdata');
setting.chan_axes_status = chan_axes_status;
setting.chan_tick_status = chan_tick_status;
setappdata(gcf,'setting',setting);
try
switch view_option
case {1} % subj
setting1 = setting;
save(datamat_file, '-append', 'setting1');
case {2} % avg
setting2 = setting;
save(datamat_file, '-append', 'setting2');
case {3} % salience
setting3 = setting;
save(datamat_file, '-append', 'setting3');
case {4} % grp
setting4 = setting;
save(datamat_file, '-append', 'setting4');
case {5} % corr
setting5 = setting;
save(datamat_file, '-append', 'setting5');
end
catch
msg = 'Cannot save setting information';
msgbox(msg,'ERROR','modal');
return;
end;
return; % toggle_chan_axes
%
%
%------------------------------------------------
function toggle_chan_tick
hm_chan_tick = getappdata(gcf,'hm_chan_tick');
hm_chan_axes = getappdata(gcf,'hm_chan_axes');
view_option = getappdata(gcf,'view_option');
datamat_file = getappdata(gcf,'datamat_file');
setting = getappdata(gcf,'setting');
chan_tick_status = get(hm_chan_tick,'userdata');
chan_axes_status = get(hm_chan_axes,'userdata');
% if tick was not checked and axes was checked
% put check on tick menu
if ~chan_tick_status & chan_axes_status
set(hm_chan_tick, 'userdata',1, 'check','on');
erp_plot_ui('display_chan_tick','on');
else % take check out
set(hm_chan_tick, 'userdata',0, 'check','off');
erp_plot_ui('display_chan_tick','off');
end
chan_tick_status = get(hm_chan_tick,'userdata');
chan_axes_status = get(hm_chan_axes,'userdata');
setting.chan_axes_status = chan_axes_status;
setting.chan_tick_status = chan_tick_status;
setappdata(gcf,'setting',setting);
try
switch view_option
case {1} % subj
setting1 = setting;
save(datamat_file, '-append', 'setting1');
case {2} % avg
setting2 = setting;
save(datamat_file, '-append', 'setting2');
case {3} % salience
setting3 = setting;
save(datamat_file, '-append', 'setting3');
case {4} % grp
setting4 = setting;
save(datamat_file, '-append', 'setting4');
case {5} % corr
setting5 = setting;
save(datamat_file, '-append', 'setting5');
end
catch
msg = 'Cannot save setting information';
msgbox(msg,'ERROR','modal');
return;
end;
return; % toggle_chan_tick
%
%
%-----------------------------------------------------------
function select_wave()
% don't do anything if we're supposed to be zooming
tmp = zoom(gcf,'getmode');
if (isequal(tmp,'in') | isequal(tmp,'on')), return; end
view_option = getappdata(gcf,'view_option');
wave_hdl = getappdata(gcf,'wave_hdl');
selected_wave_idx = getappdata(gcf,'selected_wave_idx');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
for i=selected_chan_idx % deselect other wave
for j=selected_wave_idx
set(wave_hdl(i,j),'selected','off');
end
end
set(gco,'selected','on'); % select only this wave
wave_info = get(gcbo,'user'); % [wave#, channel#]
j = wave_info(1);
i = wave_info(2);
chan_name_hdl = getappdata(gcf,'chan_name_hdl');
chan_name = get(chan_name_hdl(i), 'string');
selected_wave_name = getappdata(gcf,'selected_wave_name');
init_option = getappdata(gcf,'init_option');
wave_name = selected_wave_name(j,:);
txtbox_hdl = rri_txtbox(gca, 'Channel Name', chan_name, ...
'Wave Name', wave_name);
setappdata(gcf, 'txtbox_hdl', txtbox_hdl);
return; % select_wave
%
%
%-----------------------------------------------------------
function fig_bt_dn()
wave_hdl = getappdata(gcf,'wave_hdl');
selected_wave_idx = getappdata(gcf,'selected_wave_idx');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
for i=selected_chan_idx
for j=selected_wave_idx
set(wave_hdl(i,j),'selected','off'); % remove selection
end
end
try
txtbox_hdl = getappdata(gcf,'txtbox_hdl');
delete(txtbox_hdl); % clear rri_txtbox
catch
end
return; % fig_bt_dn
%
%
%-----------------------------------------------------------
function select_chan_name()
% don't do anything during zooming
%
tmp = zoom(gcf,'getmode');
if (isequal(tmp,'in') | isequal(tmp,'on')), return; end
current_weight = get(gco,'fontweight');
if strcmp(current_weight, 'normal')
set(gco,'fontweight','bold');
else
set(gco,'fontweight','normal');
end
return; % select_chan_name
%
%
%----------------------------------------------------------
function select_rubber_chan()
set(gcf,'pointer','crosshair');
[ll ur] = rri_rubberband;
chan_name_hdl = getappdata(gcf,'chan_name_hdl');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
for i=selected_chan_idx
extent = get(chan_name_hdl(i),'extent');
x=extent(1); y=extent(2); w=extent(3); h=extent(4);
if x>=ll(1) & y>=ll(2) & x+w<=ur(1) & y+h<=ur(2)
set(chan_name_hdl(i),'fontweight','bold');
end
end
set(gcf,'pointer','arrow');
return;
%
%
%----------------------------------------------------------
function select_all_chan()
chan_name_hdl = getappdata(gcf,'chan_name_hdl');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
for i=selected_chan_idx
set(chan_name_hdl(i),'fontweight','bold'); % select all chan_name
end
return; % select_all_chan
%
%
%----------------------------------------------------------
function reset_all_chan()
chan_name_hdl = getappdata(gcf,'chan_name_hdl');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
for i=selected_chan_idx
set(chan_name_hdl(i),'fontweight','normal'); % clear all chan_name
end
return; % reset_all_chan
% Called by ERP_PLOT_UI, ERP_SHOWPLOT_UI
%
%------------------------------------------------
function display_chan_name(state)
chan_name_hdl = getappdata(gcf,'chan_name_hdl');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
if isempty(chan_name_hdl)
return;
end
for i=selected_chan_idx
set(chan_name_hdl(i), 'visible', state);
end
return; % display_chan_name
% Called by ERP_PLOT_UI, ERP_SHOWPLOT_UI
%
%------------------------------------------------
function display_chan_axes(state)
axis_hdl = getappdata(gcf,'axis_hdl');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
if isempty(axis_hdl)
return;
end
for i=selected_chan_idx
set(axis_hdl(:,i), 'visible', state);
end
return; % display_chan_axes
% Called by ERP_PLOT_UI, ERP_SHOWPLOT_UI
%
%------------------------------------------------
function display_chan_tick(state)
xtick_hdl = getappdata(gcf,'xtick_hdl');
ytick_hdl = getappdata(gcf,'ytick_hdl');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
if isempty(xtick_hdl) | isempty(ytick_hdl)
return;
end
for i=selected_chan_idx
set(xtick_hdl(:,i), 'visible', state);
end
for i=selected_chan_idx
set(ytick_hdl(:,i), 'visible', state);
end
return; % display_chan_tick
% Called by ERP_PLOT_UI, ERP_SHOWPLOT_UI
%
%------------------------------------------------
function display_legend(state)
legend_hdl = getappdata(gcf,'legend_hdl');
if ~isempty(legend_hdl) % legend was already created
set(legend_hdl{1}, 'visible', state);
num_obj = length(legend_hdl{2});
for i=1:num_obj
set(legend_hdl{2}(i),'visible',state);
end
return;
end
avg_wave_hdl = getappdata(gcf,'avg_wave_hdl');
wave_hdl = getappdata(gcf,'wave_hdl');
bs_wave_hdl = getappdata(gcf,'bs_wave_hdl');
selected_avg_idx = getappdata(gcf,'selected_avg_idx');
selected_wave_idx = getappdata(gcf,'selected_wave_idx');
selected_bs_idx = getappdata(gcf,'selected_bs_idx');
selected_avg_name = getappdata(gcf,'selected_avg_name');
selected_wave_name = getappdata(gcf,'selected_wave_name');
selected_bs_name = getappdata(gcf,'selected_bs_name');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
first_chan = selected_chan_idx(1); % first selected channel
% create a new legend, and save the handles
%
if ~isempty(avg_wave_hdl) & ~isempty(wave_hdl) % display both
[l_hdl, o_hdl] = legend([avg_wave_hdl(first_chan,selected_avg_idx), ...
wave_hdl(first_chan,selected_wave_idx)], ...
char([{selected_avg_name}; {selected_wave_name}]), 0);
legend_txt(o_hdl);
elseif isempty(avg_wave_hdl) & ~isempty(wave_hdl) % display subj
if ~isempty(bs_wave_hdl) % also display bootstrap
% first check is bs_wave_hdl a handle
%
for i = 1:size(bs_wave_hdl,1)
if ishandle(bs_wave_hdl(i,selected_bs_idx))
first_chan = i;
i = size(bs_wave_hdl,1);
end
end
[l_hdl, o_hdl] = legend([wave_hdl(first_chan,selected_wave_idx), ...
bs_wave_hdl(first_chan,selected_bs_idx)], ...
char([{selected_wave_name}; {selected_bs_name}]), 0);
legend_txt(o_hdl);
else
[l_hdl, o_hdl] = legend(wave_hdl(first_chan,selected_wave_idx), ...
selected_wave_name, 0);
legend_txt(o_hdl);
end
elseif ~isempty(avg_wave_hdl) & isempty(wave_hdl) % display avg
[l_hdl, o_hdl] = legend(avg_wave_hdl(first_chan,selected_avg_idx), ...
selected_avg_name, 0);
legend_txt(o_hdl);
end
set(l_hdl,'color',[0.9 1 0.9]);
setappdata(gcf,'legend_hdl',[{l_hdl} {o_hdl}]);
return; % display_legend
%
%
%--------------------------------------------------
function modify_datamat
h0 = gcf;
modify_fig_name = [];
try
modify_fig_name = get(getappdata(h0,'modify_fig'),'name');
catch
end
if ~isempty(modify_fig_name) & strcmp(modify_fig_name,'Modify Datamat')
msg = 'ERROR: Modify Datamat window has already been opened.';
msgbox(msg,'ERROR','modal');
return;
end
% Remove chosen channels from selected_channels list
%
chan_name_hdl = getappdata(gcf,'chan_name_hdl');
selected_channels = getappdata(gcf,'selected_channels');
selected_chan_idx = getappdata(gcf,'selected_chan_idx');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -