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