www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregGui/@dialog/dialog.m
function obj = dialog( varargin ) %xregGui.dialog Create a dialog with buttons and space for content. % % Example: % d = xregGui.dialog( 'Owner', pFig,... % 'Name', dialogTitle,... % 'Size', [200, 300],... % 'Buttons', 'OK_CANCEL_HELP',... % 'DefaultAction', 'OK',... % 'CloseAction', 'CANCEL' ); % % d.Content = iCreateLayout( d.Figure ); % % % Does the waitfor % closeMode = d.showDialog(); % % % The tag is set to either 'OK' or 'CANCEL' % switch closeMode % case 'OK' % ... % case 'CANCEL' % ... % end % % See also xregGui.dialog.showDialog. % Copyright 2007-2013 The MathWorks, Inc. % Is the first input argument a udd object derived from me? If it is then % we are being called as a super class constructor and don't have to % construct an object if nargin && isa(varargin{1}, 'xregGui.dialog') obj = varargin{1}; varargin(1) = []; else obj = xregGui.dialog; end % Create the Actions obj.Actions.OK = iMakeAction( obj, @(s,e)obj.closeDialog('OK'), 'OK' ); obj.Actions.CANCEL = iMakeAction( obj, @(s,e)obj.closeDialog('CANCEL'), 'Cancel' ); obj.Actions.CLOSE = iMakeAction( obj, @(s,e)obj.closeDialog('CLOSE'), 'Close' ); obj.Actions.HELP = iMakeAction( obj, @(s,e)iShowHelp( obj ), 'Help' ); obj.Figure = xregdialog(); obj.addListeners( handle.listener( obj, 'ObjectBeingDestroyed', @(s,e)iDeleteFigure(obj) ) ); set( obj, varargin{:} ); % add a close dialog property mbcgui.hgclassesutil.addprop(obj.Figure, 'CloseMode'); InfoProps = [obj.findprop('InfoTitle'), obj.findprop('InfoString'), obj.findprop('InfoHeight')]; obj.addListeners( handle.listener(obj, InfoProps, 'PropertyPostSet', @iUpdateInfo)); % Initialise dialog location here, before any contents are created. This % prevents a bug - ActiveX controls not appearing obj.pSetDialogLocation; function action = iMakeAction( dialog, callback, name ) action = xregGui.DialogAction( callback, name ); action.Dialog = dialog; function iDeleteFigure( obj ) if isgraphics( obj.Figure ) delete(obj.Figure) end function iShowHelp( obj ) mv_helptool( obj.HelpCode, obj.Figure ); function iUpdateInfo(src, evt) obj = evt.AffectedObject; PropName = src.Name; pUpdateInfo(obj, PropName);