function [theResult, theEvent] = handler(self, varargin) % ps/handler -- Register a "ps" event-handler. % handler(self, 'theEvent', 'theHandler') registers 'theEvent' % and 'theHandler' on behalf of self, a "ps" object. % Additional event/handler pairs can be given in the % argument-list. % handler(self, 'theEvent') returns the handler for theEvent, % or [] is no such handler has been registered. % Copyright (C) 1999 Dr. Charles R. Denham, ZYDECO. % All Rights Reserved. % Disclosure without explicit written consent from the % copyright owner does not constitute publication. % Version of 05-Nov-1999 00:21:39. % Updated 05-Nov-1999 00:21:39. if nargout > 0, theResult = []; end if nargin < 1, help(mfilename), return, end theHandlers = psget(self, 'itsHandlers'); % Get all the handlers. if nargin < 2 if nargout > 0 theResult = theHandlers; else assignin('caller', 'ans', theHandlers) disp(theHandlers) end return end % Clean-up the event string. for k = 1:2:length(varargin) varargin{k} = translate(self, varargin{k}); end % Return the handler for the event. if nargin < 3 theEvent = varargin{1}; theHandler = []; if ~isempty(theHandlers) if isfield(theHandlers, theEvent) theHandler = getfield(theHandlers, theEvent); end end if nargout > 0 theResult = theHandler; else assignin('caller', 'ans', theHandler) disp(theHandler) end return end % Register the events and handlers. for k = 1:2:length(varargin) theEvent = varargin{k}; theHandler = varargin{k+1}; theHandlers = setfield(theHandlers, theEvent, theHandler); end self = psset(self, 'itsHandlers', theHandlers); if nargout > 0 theResult = self; else assignin('caller', 'ans', self) end