www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/@mdevtestplan/datawizard.m
function [T,OK] = datawizard(T,hMainFig) %DATAWIZARD GUI wizard for setting up a data in testplan % % [T,OK] = DATAWIZARD(T) displays a wizard GUI for setting up options % and selecting data for the testplan. % Copyright 2000-2016 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin<2 hMainFig = []; end OldTP = T; if IsMatched(T) % copy old data oldTSSF = T.DataLink.info; else oldTSSF= []; end dataPointers = dataptrs( info(project(T)) ); if T.DataLink == 0 % try and select some data T= InitData(T); end % state for openning data editor % main data selection wizard LocalData.pointer = address(T); tpObj = createModelData(T); LocalData.ModelData = tpObj; % invoke wizard OK = xregwizard(hMainFig, 'Fit Models Wizard', {@DataCardOne},LocalData); % get update-to-date testplan object T = info(T); % don't delete data if it existed in datalist before starting wizard DO_DELETE = ~any(T.DataLink==dataPointers); if OK % setup test groups if required [T.DataLink.info,OK] = setupGroups(T,T.DataLink.info); end if OK % Process results from the wizard % check monitor plot variables T = checkMonitor(T); if tpObj.OpenDataEditor % open data editor and wait for data editor to close before % processing new data tpObj.FinalTestplan = info(T); sendToDataEditor(tpObj,T.DataLink,OldTP,oldTSSF,DO_DELETE); else % attachData requires pSSF~=T.DataLink; T.DataLink= xregpointer; xregpointer(T); try % process data immediately tpObj.FinalTestplan = info(T); fitmodels(tpObj); T = info(T); if isempty( info(DataLinkPtr(T)) ) % don't accept empty data. error(message('mbc:testplan:InvalidState')) end catch ME % restore data and display error message Restore(T, OldTP, oldTSSF,DO_DELETE); xregerror('Data Error',sprintf('Error updating test plan with new data: %s',ME.message)); OK = false; end end else % Cancel - restore data T = Restore(info(T),OldTP,oldTSSF,DO_DELETE); end function tpObj = createModelData(T) %createModelData create tpsetup.ModelData for use by wizard tpObj = tpsetup.ModelData(root(T)); tpObj.SelectedIndex = 3+childindex(T); tpObj.OpenDataEditor= false; tpObj.UseDataRange = false; pVal = getValDataPtr(T); if ~isempty(pVal) && ~isnull(pVal) && any(pVal==tpObj.pValidationSets) % select current validation data if possible tpObj.ValidationType = 'data'; tpObj.ValidationData = pVal; end dlist = tpObj.pDataList; if T.Matched tpObj.pData = T.DataLink; elseif ~isempty(dlist) tpObj.pData = dlist(1); end