www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@popupinput/set.m
function varargout = set(obj , varargin) %SET % Copyright 2000-2013 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin==1 varargout{1} = i_ShowFields; else for i = 1:2:length(varargin) property = lower(varargin{i}); new_value = varargin{i+1}; switch property case 'position' iSetPosition(new_value,obj); case 'visible' iSetVisible(new_value,obj); case 'parent' iSetParent(obj,new_value); case 'split' iSetSplit(new_value,obj); case 'userdata' d=get(obj.popup , 'UserData'); d.UserData = new_value; set(obj.popup , 'UserData' , d); case 'callback' d=get(obj.popup , 'UserData'); d.callback = new_value; set(obj.popup , 'UserData' , d); case 'string' d=get(obj.popup , 'UserData'); d.string = new_value; set(obj.popup , 'String' , new_value , 'UserData' , d); case 'value' set(obj.popup , 'Value' , new_value ); end end if nargout > 0 varargout{1} = obj; elseif ~isempty(inputname(1)) assignin('caller' , inputname(1) , obj); end end function out = i_ShowFields out.Position = '[1x4] Position Array.'; out.Visible = '{on|off}'; out.Parent = '[1x1] Figure Handle'; out.Callback = 'String'; out.UserData = 'Anything.'; function iSetPosition(new_value,obj) if ~isnumeric(new_value) || length(new_value) ~= 4 error(message('mbc:popupinput:InvalidPropertyValue')); end d = get(obj.popup , 'UserData'); s = d.split; s2 = 1-s; Pos1 = [new_value(1) new_value(2) s*new_value(3) new_value(4)]; Pos2 = [new_value(1)+s*new_value(3) new_value(2) s2*new_value(3) new_value(4)]; if Pos1(3) < 1; Pos1(3) = 1; end; if Pos1(4) < 1; Pos1(4) = 1; end; if Pos2(3) < 1; Pos2(3) = 1; end; if Pos2(4) < 1; Pos2(4) = 1; end; set(obj.text , 'Position' , Pos1); set(obj.popup , 'Position' , Pos2); function iSetVisible(new_value,obj) switch upper(new_value) case 'ON' set([obj.text obj.popup] , 'Visible' , 'on'); case 'OFF' set([obj.text obj.popup] , 'Visible' , 'off'); end function iSetParent(obj,new_value) if ~isgraphics(new_value, 'figure') error(message('mbc:popupinput:InvalidPropertyValue1')); end set([obj.text obj.popup] , 'Parent' , new_value); set(obj.text , 'BackgroundColor' , get(new_value , 'Color')); function iSetSplit(new_value,obj) if ~isnumeric(new_value) || isscalar(new_value) || new_value<0 || new_value>1 error(message('mbc:popupinput:InvalidPropertyValue2')); end d=get(obj.popup , 'UserData'); d.split = new_value; set(obj.popup , 'UserData' , d); p1 = get(obj.text, 'Position'); p2 = get(obj.popup, 'Position'); pos = [p1(1) p1(2) p1(3)+p2(3) p1(4)]; set(obj, 'Position',pos);