function vis_show_gui_comp(h, indx, action,varargin) %VIS_SHOW_GUI_COMP is a subfunction of SOM_SHOW_GUI. % % vis_show_gui_comp(handle, indx, action, varargin) % % Input arguments: % handle (struct) % indx (scalar) % action (string) % varargin (varies) % % See also SOM_SHOW_GUI. % Copyright (c) 2000 by Roman Feldman and Juha Vesanto % Contributed to SOM Toolbox on August 22nd, 2000 % http://www.cis.hut.fi/projects/somtoolbox/ % Version 2.0beta roman 160800 juuso 220800 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MAIN % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% udata = get(h,'UserData'); plot_array = udata.plot_array; l = length(plot_array); %%%%%% % init %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%% if (strcmp(action,'init')) %--- color vars --- fig_color = [0.8 0.8 0.8]; bg_color1 = [0.701960784313725 0.701960784313725 0.701960784313725]; bg_color2 = [0.9 0.9 0.9]; %--- object position vars (in pixels) --- % calculations based on case 'comp' %% hint text hint_dist1 = 98.17-(61.27+36.9); % hint text lower edge and next lower frame upper edge hint_dist2 = 123-(98.17+18.45); % figure upper edge and hint text upper edge %% general dist1 = 67.42-61.27; % general distance between frame edge and object in frame %% frame + ok / cancel frames_dist = 61.27-(8.38+36.9); frames_dist2 = 8.38; f_fr = [7.9 8.38 216.2 36.9]; % final frame ok_pb = [17.1 15.76 75.9 22.14]; cancel_pb = [139 15.76 75.9 22.14]; %% objects hint_txt = [230 18.45]; % hint text width and height interp_cb = [98.9 24.6]; title_txt = [35 hint_txt(2)]; title_edit_h = 23.083; var_pop = interp_cb; list_lt = [130 130]; calc_txt = [list_lt(1) hint_txt(2)]; useall_pb = [50 interp_cb(2)]; if (length(indx) > 1) errordlg({'Same options for multiple subplots', ... 'not yet available'},'Error in SOM_VIS: options'); return; elseif (isempty(plot_array(1).args)) errordlg({'Try to select subplot first'}, ... 'Error in SOM_VIS: options'); return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 'comp' % elseif (strncmp('comp',plot_array(indx).args{1},4)) old_fig_n = watchon; W = 230; H = 123; units = get(h,'units'); set(h,'units','pixels'); fp = get(h,'Position'); fig_pos = [(fp(1)+fp(3)) ... (fp(2)+fp(2)+fp(4)/2-H/2) ... W ... H]; o1 = sum(f_fr([2 4]))+frames_dist; o2 = o1+dist1; o3 = 2*dist1+interp_cb(2); o4 = o1+o3+hint_dist1; hint_text_pos = [1 o4 hint_txt]; frame1_pos = [f_fr(1) o1 f_fr(3) o3]; interp_pos = [ok_pb(1) o2 interp_cb]; frame2_pos = f_fr; ok_pos = ok_pb; cancel_pos = cancel_pb; fig_h = figure( ... 'Units','pixels', ... 'Position', fig_pos, ... 'Color',fig_color, ... 'NumberTitle','off', ... 'Name','component', ... 'MenuBar','none', ... 'Visible','off'); set( ... uicontrol( ... %% hint 'Units','pixels', ... 'BackgroundColor',fig_color, ... 'HorizontalAlignment','center', ... 'Position',hint_text_pos, ... 'String','Options for component plane', ... 'Style','text'),'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame1_pos, ... 'Style','frame'),'units','normalized'); pr = udata.property{indx}; chkb_h = uicontrol( ... %% interpolated 'Units','pixels', ... 'HorizontalAlignment','center', ... 'Position',interp_pos, ... 'Style','checkbox', ... 'String','interpolated', ... 'Value',pr{1}); set(chkb_h,'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame2_pos, ... 'Style','frame'),'units','normalized'); s = ['vis_show_gui_comp(', ... mat2str(h), ',', mat2str(indx), ... ',''comp'',' mat2str(fig_h) ')']; set( ... uicontrol( ... %% OK 'Units','pixels', ... 'Position',ok_pos, ... 'String','OK', ... 'Callback',s),'units','normalized'); set( ... uicontrol( ... %% Cancel 'Units','pixels', ... 'Position',cancel_pos, ... 'String','Cancel', ... 'Callback',['close(' mat2str(fig_h) ')']),'units','normalized'); watchoff(old_fig_n); tmp_udata = [chkb_h]; set(fig_h,'units','normalized', ... 'Visible','on', ... 'UserData',tmp_udata, ... 'handlevisibility','off'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 'umat' % elseif (strncmp('umat',plot_array(indx).args{1},4)) old_fig_n = watchon; W = 230; H = 335.893; units = get(h,'units'); set(h,'units','pixels'); fp = get(h,'Position'); fig_pos = [(fp(1)+fp(3)) ... (fp(2)+fp(2)+fp(4)/2-H/2) ... W ... H]; o1 = sum(f_fr([2 4]))+frames_dist; o2 = o1+dist1; o3 = 2*dist1+list_lt(2)+calc_txt(2); o4 = o2+list_lt(2); o5 = sum(cancel_pb([1 3]))-useall_pb(1); o6 = o2+o3/2-useall_pb(2)/2; o7 = o1+o3+frames_dist2; o8 = 2*dist1+interp_cb(2); o9 = o7+dist1; o10 = o7+o8+frames_dist2;; o11 = 2*dist1+max(title_edit_h,title_txt(2)); o12 = W-(title_txt(1)+2*ok_pb(1)); o13 = o10+dist1+(title_edit_h-title_txt(2))/2; o14 = o10+dist1; if title_txt(2)>title_edit_h, o13 = o10+dist1; o14 = o13+(title_edit_h-title_txt(2))/2; end o15 = ok_pb(1)+title_txt(1); o16 = o10+o11+hint_dist1; hint_text_pos = [1 o16 hint_txt]; frame1_pos = [f_fr(1) o10 f_fr(3) o11]; title_text_pos = [ok_pb(1) o13 title_txt]; title_pos = [o15 o14 o12 title_edit_h]; frame2_pos = [f_fr(1) o7 f_fr(3) o8]; interp_pos = [ok_pb(1) o9 interp_cb]; frame3_pos = [f_fr(1) o1 f_fr(3) o3]; list_text_pos = [ok_pb(1) o4 calc_txt]; list_pos = [ok_pb(1) o2 list_lt]; use_all_pos = [o5 o6 useall_pb]; frame4_pos = f_fr; ok_pos = ok_pb; cancel_pos = cancel_pb; fig_h = figure( ... 'Units','pixels', ... 'Position', fig_pos, ... 'Color',fig_color, ... 'NumberTitle','off', ... 'Name','U-matrix', ... 'MenuBar','none', ... 'Visible','off'); set( ... uicontrol( ... %% hint 'Units','pixels', ... 'BackgroundColor',fig_color, ... 'HorizontalAlignment','center', ... 'Position',hint_text_pos, ... 'String','Options for U-matrix', ... 'Style','text'),'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame1_pos, ... 'Style','frame'),'units','normalized'); set( ... uicontrol( ... %% title 'Units','pixels', ... 'Position',title_text_pos, ... 'BackgroundColor',bg_color1, ... 'HorizontalAlignment','left', ... 'Style','text', ... 'String','Title'),'units','normalized'); pr = udata.property{indx}; ed_h = uicontrol( ... %% [edit] 'Units','pixels', ... 'Position',title_pos, ... 'FontSize',12, ... 'Style','edit', ... 'String',pr{2}, ... 'BackgroundColor',bg_color2); set(ed_h,'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame2_pos, ... 'Style','frame'),'units','normalized'); chkb_h = uicontrol( ... %% interpolated 'Units','pixels', ... 'Position',interp_pos, ... 'Style','checkbox', ... 'String','interpolated', ... 'Value',pr{1}); set(chkb_h,'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame3_pos, ... 'Style','frame'),'units','normalized'); set( ... uicontrol( ... %% calculated from 'Units','pixels', ... 'BackgroundColor',bg_color1, ... 'HorizontalAlignment','left', ... 'Position',list_text_pos, ... 'String','calculated from', ... 'Style','text'),'units','normalized'); list1_h = uicontrol( ... %% [listbox] 'Units','pixels', ... 'BackgroundColor',bg_color2, ... 'Position',list_pos, ... 'String',udata.sM.comp_names, ... 'Style','listbox', ... 'Max',2, ... 'Value',pr{3}); set(list1_h,'units','normalized'); s = ['tmp=get(' mat2str(fig_h) ',''userdata'');set(tmp(3),''value'',' ... mat2str(1:length(udata.sM.comp_names)) ');']; set( ... uicontrol( ... %% Use all 'Units','pixels', ... 'Position',use_all_pos, ... 'String','Use all', ... 'Callback',s),'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame4_pos, ... 'Style','frame'),'units','normalized'); s = ['vis_show_gui_comp(' ... mat2str(h) ',' mat2str(indx) ... ',''umat'',' mat2str(fig_h) ')']; set( ... uicontrol( ... %% OK 'Units','pixels', ... 'Position',ok_pos, ... 'String','OK', ... 'Callback',s),'units','normalized'); set( ... uicontrol( ... %% Cancel 'Units','pixels', ... 'Position',cancel_pos, ... 'String','Cancel', ... 'Callback',['close(' mat2str(fig_h) ')']),'units','normalized'); watchoff(old_fig_n); tmp_udata = [chkb_h ed_h list1_h]; set(fig_h,'units','normalized', ... 'Visible','on', ... 'UserData', tmp_udata, ... 'handlevisibility','off'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 'color' % elseif (strncmp('color',plot_array(indx).args{1},5)) old_fig_n = watchon; W = 230; H = 212.043; units = get(h,'units'); set(h,'units','pixels'); fp = get(h,'Position'); fig_pos = [(fp(1)+fp(3)) ... (fp(2)+fp(2)+fp(4)/2-H/2) ... W ... H]; o1 = sum(f_fr([2 4]))+frames_dist; o2 = o1+dist1; o3 = 2*dist1+var_pop(2); o4 = o1+o3+frames_dist2; o5 = o4+dist1; o6 = 2*dist1+interp_cb(2); o7 = o4+o6+frames_dist2; o8 = 2*dist1+max(title_edit_h,title_txt(2)); o9 = W-(title_txt(1)+2*ok_pb(1)); o10 = o7+dist1+(title_edit_h-title_txt(2))/2; o11 = o7+dist1; if title_txt(2)>title_edit_h, o10 = o7+dist1; o11 = o10+(title_edit_h-title_txt(2))/2; end o12 = ok_pb(1)+title_txt(1); o13 = o7+o8+hint_dist1; hint_text_pos = [1 o13 hint_txt]; frame1_pos = [f_fr(1) o7 f_fr(3) o8]; title_text_pos = [ok_pb(1) o10 title_txt]; title_pos = [o12 o11 o9 title_edit_h]; frame2_pos = [f_fr(1) o4 f_fr(3) o6]; interp_pos = [ok_pb(1) o5 interp_cb]; frame3_pos = [f_fr(1) o1 f_fr(3) o3]; popup_pos = [ok_pb(1) o2 var_pop]; frame4_pos = f_fr; ok_pos = ok_pb; cancel_pos = cancel_pb; fig_h = figure( ... 'Units','pixels', ... 'Position',fig_pos, ... 'Color',fig_color, ... 'NumberTitle','off', ... 'Name','color plane', ... 'MenuBar','none', ... 'Visible','off'); set( ... uicontrol( ... %% hint 'Units','pixels', ... 'BackgroundColor',fig_color, ... 'HorizontalAlignment','center', ... 'Position',hint_text_pos, ... 'String','Options for colorplane', ... 'Style','text'),'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame1_pos, ... 'Style','frame'),'units','normalized'); set( ... uicontrol( ... %% title 'Units','pixels', ... 'Position',title_text_pos, ... 'HorizontalAlignment','left', ... 'Style','text', ... 'String','Title'),'units','normalized'); pr = udata.property{indx}; ed_h = uicontrol( ... %% [edit] 'Units','pixels', ... 'Position',title_pos, ... 'FontSize',12, ... 'Style','edit', ... 'String',pr{2}, ... 'BackgroundColor',bg_color2); set(ed_h,'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame2_pos, ... 'Style','frame'),'units','normalized'); chkb_h = uicontrol( ... %% interpolated 'Units','pixels', ... 'Position',interp_pos, ... 'Style','checkbox', ... 'String','interpolated', ... 'Value',pr{1}); set(chkb_h,'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame3_pos, ... 'Style','frame'),'units','normalized'); popup1_h = uicontrol( ... %% [popup] 'Units','pixels', ... 'Max',2, ... 'Min',1, ... 'Position',popup_pos, ... 'String',pr{3}, ... 'Style','popupmenu', ... 'Value',pr{4}); s = ['tmp=get(' mat2str(fig_h) ',''userdata'');' ... 'vis_show_gui_tool([tmp(3) 6],''popup_select'');' ... 'u=get(' mat2str(h) ',''UserData'');' ... 'v=' mat2str(indx) ';' ... 'pr=u.property{v};' ... 'pr{3}=get(tmp(3),''string'');' ... 'pr{4}=get(tmp(3),''value'');' ... 'u.property{v}=pr;' ... 'set(' mat2str(h) ',''userdata'',u)']; set(popup1_h,'units','normalized', ... 'Callback',s); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame4_pos, ... 'Style','frame'),'units','normalized'); s = ['vis_show_gui_comp(', ... mat2str(h), ',', mat2str(indx), ... ',''color'',' mat2str(fig_h) ')']; set( ... uicontrol( ... %% OK 'Units','pixels', ... 'Position',ok_pos, ... 'String','OK', ... 'Callback',s),'units','normalized'); set( ... uicontrol( ... %% Cancel 'Units','pixels', ... 'Position',cancel_pos, ... 'String','Cancel', ... 'Callback',['close(' mat2str(fig_h) ')']),'units','normalized'); watchoff(old_fig_n); tmp_udata = [chkb_h ed_h popup1_h]; set(fig_h,'units','normalized', ... 'Visible','on', ... 'UserData', tmp_udata, ... 'handlevisibility','off'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 'empty' % elseif (strncmp('empty',plot_array(indx).args{1},5)) old_fig_n = watchon; W = 230; H = 121.483; units = get(h,'units'); set(h,'units','pixels'); fp = get(h,'Position'); fig_pos = [(fp(1)+fp(3)) ... (fp(2)+fp(2)+fp(4)/2-H/2) ... W ... H]; o1 = sum(f_fr([2 4]))+frames_dist; o2 = 2*dist1+max(title_edit_h,title_txt(2)); o3 = 2*dist1+interp_cb(2); o4 = W-(title_txt(1)+2*ok_pb(1)); o5 = o1+dist1+(title_edit_h-title_txt(2))/2; o6 = o1+dist1; if title_txt(2)>title_edit_h, o5 = o1+dist1; o6 = o5+(title_edit_h-title_txt(2))/2; end o7 = ok_pb(1)+title_txt(1); o8 = o1+o2+hint_dist1; hint_text_pos = [1 o8 hint_txt]; frame1_pos = [f_fr(1) o1 f_fr(3) o3]; title_text_pos = [ok_pb(1) o5 title_txt]; title_pos = [o7 o6 o4 title_edit_h]; frame2_pos = f_fr; ok_pos = ok_pb; cancel_pos = cancel_pb; fig_h = figure( ... 'Units','pixels', ... 'Position', fig_pos, ... 'Color',fig_color, ... 'NumberTitle','off', ... 'Name','empty plane', ... 'MenuBar','none', ... 'Visible','off'); set( ... uicontrol( ... %% hint 'Units','pixels', ... 'BackgroundColor',fig_color, ... 'HorizontalAlignment','center', ... 'Position',hint_text_pos, ... 'String','Options for empty plane', ... 'Style','text'),'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame1_pos, ... 'Style','frame'),'units','normalized'); set( ... uicontrol( ... %% title 'Units','pixels', ... 'Position',title_text_pos, ... 'HorizontalAlignment','left', ... 'Style','text', ... 'String','Title'),'units','normalized'); pr = udata.property{indx}; ed_h = uicontrol( ... %% [edit] 'Units','pixels', ... 'Position',title_pos, ... 'Style','edit', ... 'FontSize',12, ... 'String',pr{1}, ... 'BackgroundColor',bg_color2); set(ed_h,'units','normalized'); set( ... uicontrol( ... %% [frame] 'Units','pixels', ... 'Position',frame2_pos, ... 'Style','frame'),'units','normalized'); s = ['vis_show_gui_comp(', ... mat2str(h) ',' mat2str(indx), ... ',''empty'',' mat2str(fig_h) ')']; set( ... uicontrol( ... %% OK 'Units','pixels', ... 'Position',ok_pos, ... 'String','OK', ... 'Callback',s),'units','normalized'); set( ... uicontrol( ... %% Cancel 'Units','pixels', ... 'Position',cancel_pos, ... 'String','Cancel', ... 'Callback',['close(' mat2str(fig_h) ')']),'units','normalized'); watchoff(old_fig_n); tmp_udata = [ed_h]; set(fig_h,'units','normalized', ... 'Visible','on', ... 'UserData', tmp_udata, ... 'handlevisibility','off'); end %%%%%% % comp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%% elseif (strcmp(action,'comp')) tmp_h = get(varargin{1},'UserData'); v = get(tmp_h,'Value'); pr = udata.property{indx}; if (v) v = 'compi'; pr{1} = 1; else v = 'comp'; pr{1} = 0; end plot_array(indx).args{1} = v; udata.plot_array = plot_array; udata.property{indx} = pr; set(h,'UserData',udata); close(varargin{1}); %%%%%% % umat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%% elseif (strcmp(action,'umat')) tmp_h = get(varargin{1},'UserData'); v = get(tmp_h(1),'Value'); pr = udata.property{indx}; if (v) v = 'umati'; pr{1} = 1; else v = 'umat'; pr{1} = 0; end plot_array(indx).args{1} = v; s = get(tmp_h(2),'String'); v = get(tmp_h(3),'Value'); % userdata plot_array(indx).string = s; if strcmp(s,'U-matrix') plot_array(indx).args{2} = v; else plot_array(indx).args{2} = {v s}; end pr{2} = s; pr{3} = v; udata.plot_array = plot_array; udata.property{indx} = pr; set(h,'UserData',udata); set(udata.h(1),'String',{plot_array(:).string}); close(varargin{1}); %%%%%%% % color %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% elseif (strcmp(action,'color')) tmp_h = get(varargin{1},'UserData'); % tmp_h = [chkb_h ed_h popup1_h]; v = get(tmp_h(1),'Value'); pr = udata.property{indx}; if (v) v = 'colori'; pr{1} = 1; else v = 'color'; pr{1} = 0; end plot_array(indx).args{1} = v; v = get(tmp_h(3),'Value'); s = get(tmp_h(3),'string'); if v>5 & ~strcmp(s{v},'-variable-'), m = evalin('base',s{v}); elseif ~strcmp(s{v},'-variable-'), m = som_colorcode(udata.sM,s{v}); end plot_array(indx).args{2} = m; pr{3} = s; s = get(tmp_h(2),'String'); plot_array(indx).string = s; if ~strcmp(s,'Color code') plot_array(indx).args{2} = ... {plot_array(indx).args{2} s}; end pr{2} = s; pr{4} = v; udata.plot_array = plot_array; udata.property{indx} = pr; set(h,'UserData',udata); set(udata.h(1),'String',{plot_array(:).string}); close(varargin{1}); %%%%%%% % empty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% elseif (strcmp(action,'empty')) pr = udata.property{indx}; tmp_h = get(varargin{1},'UserData'); s = get(tmp_h,'String'); pr{1} = s; plot_array(indx).string = s; plot_array(indx).args{2} = s; udata.plot_array = plot_array; udata.property{indx} = pr; set(h,'UserData',udata); set(udata.h(1),'String',{plot_array(:).string}); close(varargin{1}); else end