www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@seltext/set.m
function varargout=set(varargin) %SELTEXT/SET Set interface for the seltext object % Classic set function for the seltext object % properties are: % % Position : 4-element position vector % Visible : 'on'/'off' % Backgroundcolor: color vector % Selectedcolor : color vector % Selected : 'on'/'off' % Callback : String % Interruptible : 'on'/'off' % Userdata % % All other properties are passed through to the axestext control. % Copyright 2000-2011 The MathWorks, Inc. and Ford Global Technologies, Inc. % Created 6/10/00 % Bail if we've not been given a seltext object objfind=1; while objfind if strcmp(class(varargin{objfind}),'seltext') obj(objfind)=varargin(objfind); objfind=objfind+1; else varargin=varargin(objfind:end); objfind=0; end end if ~iscell(obj) obj={obj}; end for k=1:length(obj) wrkobj=obj{k}; % loop over varargin for n=1:2:(nargin-2) switch lower(varargin{n}) case 'position' i_drawtext(wrkobj,varargin{n+1}); ud=get(wrkobj.back,'UserData'); ud.position=varargin{n+1}; set(wrkobj.back,'UserData',ud); case 'visible' set(wrkobj.axestext,'Visible',varargin{n+1}); case 'backgroundcolor' ud=get(wrkobj.back,'UserData'); ud.bgcolor=varargin{n+1}; set(wrkobj.back,'UserData',ud); if ~ud.selected set(wrkobj.back,'FaceColor',varargin{n+1}); end case 'selectedcolor' ud=get(wrkobj.back,'UserData'); ud.selcolor=varargin{n+1}; set(wrkobj.back,'UserData',ud); if ud.selected set(wrkobj.back,'FaceColor',varargin{n+1}); end case 'selected' ud=get(wrkobj.back,'UserData'); sel=find( strncmp( varargin{ n + 1 },{ 'off'; 'on'},length(varargin{ n + 1 }) ) )-1; if sel~=ud.selected ud.selected=sel; set(wrkobj.back,'UserData',ud); if sel set(wrkobj.back,'FaceColor',ud.selcolor); else set(wrkobj.back,'FaceColor',ud.bgcolor); end set(wrkobj.axestext,'Color',1-get(wrkobj.axestext,'Color')); end case 'callback' ud=get(wrkobj.back,'UserData'); ud.callback=varargin{n+1}; set(wrkobj.back,'UserData',ud); if ud.enable set(wrkobj.back,'ButtonDownFcn',varargin{n+1}); end case 'interruptible' set(wrkobj.back,'Interruptible',varargin{n+1}); case 'enable' ud=get(wrkobj.back,'UserData'); val=find( strcmpi( varargin{ n + 1 },{ 'off'; 'on' } ) )-1; if val~=ud.enable ud.enable=val; if val % re-enable set(wrkobj.back,'ButtonDownFcn',ud.callback); if ud.selected set(wrkobj.axestext,'Color',1-ud.fgcolor); else set(wrkobj.axestext,'Color',ud.fgcolor); end else set(wrkobj.back,'ButtonDownFcn',''); set(wrkobj.axestext,'Color',[.5 .5 .5]); end set(wrkobj.back,'UserData',ud); end case 'color' ud=get(wrkobj.back,'UserData'); ud.fgcolor=varargin{n+1}; set(wrkobj.axestext,'Color',varargin{n+1}); set(wrkobj.back,'UserData',ud); case 'value' case 'userdata' ud=get(wrkobj.back,'UserData'); ud.userdata=varargin{n+1}; set(wrkobj.back,'UserData',ud); otherwise set(wrkobj.axestext,varargin{n},varargin{n+1}); end end obj{k}=wrkobj; end % resurrect outputs varargout=obj; return function i_drawtext(obj,pos) set(obj.axestext,'Position',pos+[1 0 -1 0]); return