www.gusucode.com > mbcdesign 工具箱 matlab 源码程序 > mbcdesign/@contwostage/guiTypeLayout.m
function lyt = guiTypeLayout(con, figh,p,TypeString) %GUITYPELAYOUT % % [lyt, udp] = guiTypeLayout(con, figh,p) % Copyright 2008-2010 The MathWorks, Inc. and Ford Global Technologies, Inc. if isa(figh,'xregcontainer') lyt = figh; udp = get(lyt,'UserData'); else udp = xregGui.RunTimePointer; udp.LinkToObject( figh ); ud.popupLocal = uicontrol( 'Parent', figh,... 'Style','popupmenu',... 'Callback',{@i_local,udp},... 'Visible','off',... 'Interruptible','off',... 'HorizontalAlignment','left',... 'BackgroundColor','w'); ud.lctrlLocal = i_labelcontrol( figh, 'Local boundary:', ud.popupLocal ); ud.fitOptsButton = xregGui.iconuicontrol( ... 'Parent', figh, ... 'Visible', 'off', ... 'Style', 'pushbutton', ... 'String','Fit Options...',... 'callback',{@i_setFitOptions,udp}); ud.popupGlobal = uicontrol( 'Parent', figh,... 'Style','popupmenu',... 'Callback',{@i_global,udp},... 'Visible','off',... 'Interruptible','off',... 'HorizontalAlignment','left',... 'BackgroundColor','w'); ud.lctrlGlobal = i_labelcontrol( figh, 'Global model:', ud.popupGlobal ); ud.btnGlobal = uicontrol(... 'Parent', figh,... 'Style', 'pushbutton',... 'String', 'Set up...',... 'Interruptible','off',... 'Callback',{@i_setup,udp}); lyt = xreggridbaglayout(figh,... 'dimension',[4, 3],... 'rowsizes',[20, 20, 25, -1],... 'colsizes',[220, 10 80],... 'gapy',5, 'gapx',7,... 'border',[0 0 0 0],... 'elements',{... ... ud.lctrlLocal, [],ud.fitOptsButton; ... ud.lctrlGlobal, [],ud.btnGlobal; ... [], [],[]; ... [], [],[] } ); ud.Changed = false; ud.pointer = p; ud.pointer.info.constraint = con; udp.info = ud; set(lyt,'UserData',udp); end iSetValues(con,udp) function iSetValues(con,udp) ud =udp.info; local_list = localclasses( con ); lval = find( strcmpi( class( con.Local ), {local_list.Class} ) ); set(ud.popupLocal,'String',{local_list.Name},'Value',lval); global_list = globalclasses( con ); gval = find( strcmpi( class( con.Global{1} ), {global_list.Class} ) ); set(ud.popupGlobal,'String',{global_list.Name},'Value',gval); fitOptions = ud.pointer.info.fitOptions; if isnull(fitOptions) set(ud.fitOptsButton,'Enable','off'); else set(ud.fitOptsButton,'Enable','on'); end %------------------------------------------------------------------------------| function lctrl = i_labelcontrol( figh, string, control ) lctrl = xregGui.labelcontrol( ... 'parent',figh,... 'Control', control,... 'String',string,... 'Enable','on', ... 'ControlSize', 120, ... 'ControlSizeMode', 'absolute',... 'LabelSize', 90, ... 'LabelSizeMode', 'absolute'); %------------------------------------------------------------------------------| function i_local( h, evt, udp ) ud = udp.info; T = ud.pointer.info; con = T.constraint; local_list = localclasses( con ); value = get( ud.popupLocal, 'Value' ); if ~isa( con.Local, local_list(value).Class ), cif = getlocalfactors( con ); con.Local = feval( local_list(value).Class, cif ); % ensure that the number of global models is correct. gm = con.Global{1}; con.Global = cell( 1, nFeatures( con.Local ) ); [con.Global{:}] = deal( gm ); con.LocalFriend = []; T.constraint = con; T.fitOptions = getFitOptions(con,'all'); if isnull(T.fitOptions) set(ud.fitOptsButton,'Enable','off'); else set(ud.fitOptsButton,'Enable','on'); end ud.pointer.info = T; ud.Changed = true; udp.info = ud; end iSetValues(con,udp); function i_setFitOptions(h, evt, udp) ud = udp.info; T = ud.pointer.info; con = T.constraint; fitOptions = T.fitOptions; [obj, ok,opts] = guiSetFitOptions(con, 'all',fitOptions); if ok fitOptions = opts; T.fitOptions = fitOptions; ud.pointer.info = T; end %------------------------------------------------------------------------------| function i_global( h, evt, udp ) ud = udp.info; con = ud.pointer.info.constraint; global_list = globalclasses( con ); value = get( ud.popupGlobal, 'Value' ); if ~isa( con.Global{1}, global_list(value).Class ), nf = nfactors( con.Global{1} ); [con.Global{:}] = deal( feval( global_list(value).Class, nf ) ); con.LocalFriend = []; ud.pointer.info.constraint = con; ud.Changed = true; udp.info = ud; end %------------------------------------------------------------------------------| function i_setup( h, evt, udp ) ud = udp.info; con = ud.pointer.info.constraint; [new, ok] = gui_globalmodsetup( con.Global{1} ); if ok, [con.Global{:}] = deal( new ); con.LocalFriend = []; ud.pointer.info.constraint = con; ud.Changed = true; udp.info = ud; end %------------------------------------------------------------------------------| % EOF %------------------------------------------------------------------------------|