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