www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+mbcmodelview/Description.m
classdef Description < mbcgui.multiview.View %Description description panel for model views % Copyright 2015-2015 The MathWorks, Inc. and Ford Global Technologies, Inc. properties (SetAccess=private) MdlString TransString AllModelText end methods function obj = Description(varargin) %Description constuctor obj@mbcgui.multiview.View(varargin{:}); create(obj); addMessageServiceListener(obj, 'NodeUpdated',@obj.onNodeUpdated) end function update(obj) %update update description view ms = obj.MessageService; if ms.Status m = ms.Model; set(obj.MdlString,'string',['\fontsize{10}{\bfModel type:} ', str_func(m,1)],... 'shortstring',['\fontsize{10}{\bfModel type:} ',name(m)],... 'verticalalignment','bottom',... 'fontname',get(0,'DefaultUicontrolFontName'),... 'fontsize',get(0,'DefaultUicontrolFontSize')); [mainString,shortString]= transformStrings(ms); set(obj.TransString,'string',mainString,'shortstring',shortString); else if isDeferred(ms.ModelDev) % model fit is deferred for two-stage msg = '\fontsize{10}{\bfModel fit deferred: update fit required.}'; elseif any(strcmp(guid(ms.ModelDev),{'local','ptbypt'})) && size( getdata(ms.ModelDev),1)==ms.NumTests % local or point-by-point model with 1 record in test. Most % likely, this is caused by not defining test grouping correctly. msg = '\fontsize{10}{\bfNot enough data to fit model: 1 point in test. Define test groupings.}'; elseif numParams(ms.Model)>nnz(ms.DataOK) % data set after outliers removed: you could restore data msg = '\fontsize{10}{\bfNot enough data to fit model: more model parameters than data points.}'; else % other reason for a model not fitted msg = '\fontsize{10}{\bfModel not fitted.}'; end set(obj.MdlString,'String',msg,'ShortString',''); set(obj.TransString,'String',''); set(obj.AllModelText,'colsizes',[-1,1]); end end end methods (Access=private) function create(obj) %create create layouts viewModelFrame = mbcgui.container.layoutpanel(... 'Parent', obj.Parent, ... 'BorderType', 'etchedin',... 'LayoutBorder',[5 10 5 5], ... 'Visible', 'off'); obj.MdlString= axestext(viewModelFrame,... 'fontsize',10,... 'clipping','on',... 'verticalalignment','middle'); obj.TransString= axestext(viewModelFrame,... 'fontsize',10,... 'clipping','on',... 'Interpreter','None',... 'verticalalignment','middle',... 'horizontalalignment','right'); % model string for inside the panel layout obj.AllModelText = xreggridlayout(viewModelFrame,... 'dimension',[1,2],... 'gapy',20,... 'correctalg','on',... 'colsizes',[-1, 50],... 'elements',{obj.MdlString,obj.TransString}); set(viewModelFrame, 'LayoutComponent', {obj.AllModelText}); attachContentHandle(obj,viewModelFrame); end function onNodeUpdated(obj,~,~) update(obj) end end end