www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/@mdevtestplan/EXMdialog.m
function OK = EXMdialog(~, models,hMainFig) %MDEVTESTPLAN/EXMdialog Export child models to CAGE % OK = EXMdialog(mdtp, ExtraInfo,DoConstraints) % Copyright 2000-2015 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin<3 hMainFig = []; end OK = false; % stop now if no models can be exported if isempty(models) errordlg('No valid models available to export','No Valid Models'); return; end % Get the current CAGE project, opening the CAGE browser if necessary. cgb = cgbrowser; proj = cgb.RootNode; if isempty(proj) answer = questdlg(['The CAGE browser is not open. It must be open before you can '... 'export a model to it. Open the CAGE browser now?'], 'Open CAGE Browser',... 'Yes','No','Cancel','Yes'); if strcmp(answer,'Yes') cage; cgb = cgbrowser; proj = cgb.RootNode; end if isempty(proj) % No, Cancel, failure to start CAGE browser return; end end dlg = mbcgui.container.Dialog('Name','Export to CAGE',... 'Owner',hMainFig,... 'Buttons','OK_CANCEL',... 'Size',[400 300] ); f = dlg.Figure; allowskippingtransfer = true; ttable = xregtools.modeltransfertable( allowskippingtransfer,... 'Parent', f,... 'CageProject', proj ); names= cellfun(@getname,models,'UniformOutput',false); icons = cellfun(@(m) cgrespath(iconfile(m)),models,'UniformOutput',false); ttable.setListData( models ,names,icons); h = handle.listener(ttable, ttable.findprop('Valid'), 'PropertyPostSet', {@iTransferValidTest, dlg}); %#ok<NASGU> dlg.Content = ttable; closeMode = dlg.showDialog(); if strcmp(closeMode,'OK') msg = []; refresh = false; skip = ttable.TransferAction<0; replace = ttable.TransferAction>0; pNode = mbcpointer(1,0); for i=1:length(models) if ~skip(i) try OK = true; % ReplaceNames{i} is a cell array of strings - the names of % models we want to replace. newnames = ttable.ReplaceNames{i}; for j = 1:length( newnames ) pNode(end+1) = ImportMBCModel( info(proj),models{i},newnames{j},replace(i),false); end refresh = true; catch ME OK = false; msg = sprintf([ msg '\n ' ttable.Names{i} ': ' ME.message]); refresh = false; end end end % Report an error if any failed if ~isempty(msg) errordlg(['Export failed for the following models: ' msg],... 'Export Error'); end % Refresh if any succeeded if refresh ch = cgbrowser; ch.doDrawList; ch.doDrawTree; if ~isempty(pNode) ch.gotonode(pNode(1)); end end end delete(f) %%%%%%%%%%%%%%%%%%%%%% function iTransferValidTest(~,evt,dlg) if evt.NewValue dlg.enableButtons('OK') else dlg.disableButtons('OK') end