Mercurial > hg > camir-aes2014
diff toolboxes/MIRtoolbox1.3.2/somtoolbox/vis_show_gui_comp.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/MIRtoolbox1.3.2/somtoolbox/vis_show_gui_comp.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,702 @@ +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 + + +