www.gusucode.com > mbcdesign 工具箱 matlab 源码程序 > mbcdesign/@cset_boxb/propertypage.m

    function out=propertypage(obj,action,varargin)
% PROPERTYPAGE  Create a property gui for CandidateSet
%
%
%   This should be overloaded by child classes
%
%   Interface:  Lyt=propertypage(cs,'layout',fig);
%               Lyt=propertypage(cs,'update',lyt,p_cs,model);
%               Lyt=propertypage(cs,'enable',lyt,enstate);

%  Copyright 2000-2015 The MathWorks, Inc. and Ford Global Technologies, Inc.


switch lower(action)
    case 'layout'
        out=i_createlyt(obj, varargin{:});
    case 'update'
        out=i_update(varargin{:});
    case 'enable'
        out=i_setenable(varargin{:});
end



function lyt=i_createlyt(obj, figh, varargin)

% create new layout in figure
pUD = xregGui.RunTimePointer;
ud.pointer = [];
ud.figure = figh;
ud.model = [];
ud.callback = '';
for n=1:2:length(varargin)
    switch lower(varargin{n})
        case 'callback'
            ud.callback = varargin{n+1};
    end
end

ud.cpedt = mbcgui.widget.Spinner('Parent', figh,...
    'Min',0,...
    'Max',20,...
    'ClickIncrement',1,...
    'Rule','int', ...
    'Callback',{@i_cpchng,pUD});
ud.cptxt=xregGui.labelcontrol('parent',figh,...
    'LabelSizeMode','absolute',...
    'LabelSize',130,...
    'ControlSizeMode','absolute',...
    'ControlSize',70,...
    'gap',5,...
    'string','Number of center points:',...
    'Control',ud.cpedt);
[ud.RangeTable, ud.RangeTableUpdate] = pRangeEditor(obj, figh, ...
    ud.pointer, ud.model, ud.callback);
ud.RangeLabel = uicontrol('Parent',figh, ...
    'Style', 'text', ...
    'HorizontalAlignment', 'left', ...
    'String', 'Range of values:');

lyt = xreggridbaglayout(figh, ...
    'userdata', pUD, ...
    'dimension', [4 1], ...
    'rowsizes', [20 10 15 -1], ...
    'elements', {ud.cptxt, [], ud.RangeLabel, ud.RangeTable});

ud.layout=lyt;
pUD.info = ud;


% External update function.
function lyt=i_update(lyt,p,m)
% update current layout
pUD = get(lyt,'UserData');
ud = pUD.info;
ud.pointer = p;
ud.model = m;
ud = i_setvalues(ud);
pUD.info = ud;


function ud=i_setvalues(ud)
cs = ud.pointer.info;
set(ud.cpedt,'Value',get(cs,'numcenter'));

% Set up the range table
ud.RangeTableUpdate(ud.pointer, ud.model);


function lyt=i_setenable(lyt,state)
pUD = get(lyt,'UserData');
ud = pUD.info;
set(ud.cptxt,'Enable',state);
set(ud.RangeTable, 'Enable', state);


function i_cpchng(obj,nul,pUD)
ud = pUD.info;
val = get(ud.cpedt,'Value');
ud.pointer.info = set(ud.pointer.info,'numcenter',val);
pUD.info = ud;
i_firecb(ud);


function i_firecb(ud)
xregcallback(ud.callback,ud.layout,[]);