www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@multiinput/multiinput.m

    function out = multiinput(figH,types,strings,values,callbacks,varargin)
%function obj = MultiInput(FigureHandle , inputtypes , inputstrings , inputvalues , callbacks)
%function obj = MultiInput(FigureHandle , controls)
%
%A vector input control which will sit inside a thingy.

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




if ~isgraphics(figH, 'figure')
   error(message('mbc:multiinput:InvalidArgument'));
end

obj = struct('objects' , [] ,...
    'colsizes',[]);

if length(types)>1 && ~ischar(types{1})
    controls = types;
else
controls = {};
for i = 1:length(types)
    switch lower(types{i})
    case 'textinput'
        controls{i} = xregtextinput(figH, 'varname' , strings{i});
        if ~isempty(values{i})
            set(controls{i},'BackgroundColor',values{i});
        end
    case 'stepinput'
        controls{i} = xregstepinput(figH, strings{i}, values{i}{1}, values{i}{2} , callbacks{i});
    case 'popupinput'
        controls{i} = popupinput(figH, strings{i}, values{i}, callbacks{i});
    case 'popupnotext'
        controls{i} = popupinput(figH, '', values{i}, callbacks{i},'split',0);
    case 'vectorinput'
        controls{i} = xregvectorinput(figH, strings{i}, values{i}, callbacks{i});
    case 'editinput'
        controls{i} = xregvectorinput(figH, '', values{i}, callbacks{i}, 'visible','edit','split',0);
    case 'pushbutton'
        controls{i} = uicontrol('Style' , 'pushbutton' , ...
            'Parent' , figH , ...
            'Position', [0 0 20 20],...
            'Visible','off',...
            'TooltipString' , strings{i} , ...
            'Callback' , callbacks{i});
        if isnumeric(values{i})
            set(controls{i},'CData' , values{i});
        elseif ischar(values{i})
            set(controls{i},'String',values{i});
        end

    case 'checkbox'
        if iscell(values{i})
            val = values{i}{1};
            if values{i}{2}
                enable = 'on';
            else 
                enable = 'off';
            end
        else
            val = values{i};
            enable = 'on';
        end
        controls{i} = uicontrol('Style' , 'checkbox' , ...
            'Parent' , figH , ...
            'Position', [0 0 20 20],...
            'Visible','off',...
            'Value' , val, ...
            'Enable',enable,...
            'String' , strings{i} , ...
            'Callback' , callbacks{i});
    case ''
        controls{i} = [];
    otherwise
        error(message('mbc:multiinput:InvalidArgument1'));
    end
end
end

obj.objects = controls;
obj.colsize = repmat(-1,1,length(types));
obj.gapx = 5;

out = class(obj , 'multiinput');

if nargin > 5
   out = set(out , varargin{:});
end