www.gusucode.com > mbcview 工具箱matlab源码程序 > mbcview/@cgtools/@cgbrowser/cgbrowser.m
function h = cgbrowser %CGBROWSER Create a new handle for a cgbrowser % % CGB = CGBROWSER constructs a new browser handle. Note that his does not % construct the actual GUI. % % See also CGBROWSER/SHOW % Copyright 2000-2016 The MathWorks, Inc. and Ford Global Technologies, Inc. h = cgtools.cgbrowser; p = h.findprop('GUILocked'); List = struct( ... 'lockL', handle.listener(h, p, 'PropertyPostSet', {@i_setlocktime}), ... 'GetLockL', handle.listener(h, p, 'PropertyPreGet', {@i_checklock}), ... 'typeL', handle.listener(h, h.findprop('CurrentType'), 'PropertyPostSet', {@i_typeset}), ... 'rootL', handle.listener(h, h.findprop('RootNode'), 'PropertyPostSet', {@i_rootset}), ... 'TreeL', handle.listener(h, h.findprop('TreeOn'), 'PropertyPostSet', {@i_treeset}), ... 'ListL', handle.listener(h, h.findprop('ListOn'), 'PropertyPostSet', {@i_listset}) ... ); h.Listeners = List; function i_setlocktime(~, evt) obj = evt.AffectedObject; val = evt.NewValue; if val % update time obj.GUILockTime = now; end function i_checklock(~, evt) % Prevent permanent locks by making them expire after about a minute. obj = evt.AffectedObject; if obj.GUILocked if (now-obj.GUILockTime)>7e-4 % about 1 minute obj.GUILocked = false; end end function i_typeset(~,evt) evt.AffectedObject.doSelectType; function i_rootset(~,evt) obj = evt.AffectedObject; obj.doGetDD; cgp = obj.RootNode; if ~isnull(cgp) % select last node LastNode = obj.RootNode.getLastNode; if ~isempty(LastNode) && ~isnull(LastNode(1)) && cgp~=LastNode(1) p = LastNode(1); p_sub = LastNode(2); obj.gotonode(p,p_sub,true); else obj.doDrawTree; obj.doDrawList; obj.doFindFirstType; obj.doFindFirstNode; end else obj.doFindFirstType; obj.doFindFirstNode; end function i_listset(~,evt) evt.AffectedObject.doSwitchList; function i_treeset(~,evt) evt.AffectedObject.doSwitchTree;