line source
+ − function g_AnnotationUpdate(paramlist,varargin)
+ − % Update the block annotation (the text below the block) with all the
+ − % current parameters
+ −
+ − global selBlocks paramEnabled
+ −
+ − annotation = '';
+ − numparams = nparams(paramlist);
+ − firstpar = 1;
+ −
+ − if strcmpi(get_param(gcbh,'Tag'),'arithmetic')
+ − eq = get(findobj('Tag','equationField'),'String');
+ − if ~isempty(eq)
+ − if numel(eq)>40, eq(1:end-25) = []; eq = ['...',eq]; end
+ − for nn=1:length(selBlocks)
+ − set_param(selBlocks(nn),'AttributesFormatString',eq);
+ − end
+ − end
+ − return
+ − end
+ −
+ − for kk=1:numparams
+ − if paramEnabled(kk)
+ − paramkey = paramlist.params(kk).key;
+ − try %#ok<ALIGN>
+ − if strcmpi(paramkey(1:7),'addPar_'), paramkey(1:7)=[]; end
+ − catch, end
+ − paramval = paramlist.params(kk).val;
+ − switch class(paramval)
+ − case 'specwin'
+ − windowName = paramval.type;
+ − windowlength = size(paramval.win,2);
+ − if firstpar==1 % it's the first parameter
+ − annotation = ['(specwin) ',windowName,',',num2str(windowlength)];
+ − firstpar=2;
+ − else % it's not the first parameter
+ − annotation = [annotation,'\n','(specwin) ',windowName,',',num2str(windowlength)];
+ − end
+ − if strcmp(windowName,'Kaiser')
+ − windowPsll = paramval.psll;
+ − annotation = [annotation,',',num2str(windowPsll)];
+ − end
+ − case 'double'
+ − paramval = mat2str(paramval);
+ − if numel(paramval)>25, paramval=['...',paramval(end-25:end)]; end
+ − if firstpar==1, annotation=[lower(paramkey),' ',paramval]; firstpar=2;
+ − else annotation = [annotation,'\n',lower(paramkey),' ',num2str(paramval)];
+ − end
+ − case 'char'
+ − if numel(paramval)>25, paramval=['...',paramval(end-25:end)]; end
+ − paramval = strrep(paramval,'''''','''');
+ − if firstpar==1, annotation=[lower(paramkey),' ',paramval]; firstpar=2;
+ − else annotation = [annotation,'\n',lower(paramkey),' ',paramval];
+ − end
+ − case 'logical'
+ − if paramval, paramval = 'true'; else paramval = 'false'; end
+ − if firstpar==1, annotation=[lower(paramkey),' ',paramval]; firstpar=2;
+ − else annotation = [annotation,'\n',lower(paramkey),' ',paramval];
+ − end
+ − case 'pzmodel'
+ − if firstpar==1, annotation='(pzmodel)'; firstpar=2;
+ − else annotation = [annotation,'\n','(pzmodel)'];
+ − end
+ − case 'cell'
+ − if isa(paramval{1},'char') && strcmp(paramval{1},'(-->)'), strParKey = '(-->)';
+ − else strParKey = utils.prog.cell2str(paramval);
+ − end
+ − if firstpar==1
+ − annotation = [lower(paramkey),' ',strParKey]; firstpar=2;
+ − else annotation = [annotation,'\n',lower(paramkey),' ',strParKey];
+ − end
+ − case 'pz'
+ − for mm=1:numel(paramval)
+ − poleFreqs(mm,1) = paramval(mm).f;
+ − poleQs(mm,1) = paramval(mm).q;
+ − if ~isnan(poleQs(mm,1))
+ − poleFQs{mm,1}=strcat(num2str(poleFreqs(mm,1)),',',num2str(poleQs(mm,1)));
+ − else
+ − poleFQs{mm,1}=num2str(poleFreqs(mm,1));
+ − end
+ − end
+ − poleFQs=char(poleFQs);
+ − if firstpar==1
+ − annotation = ['pz ',poleFQs(1,:)]; firstpar=2;
+ − for j=2:size(poleFQs,1), annotation = [annotation,'\n','(pz) ',poleFQs(j,:)]; end
+ − else
+ − annotation = [annotation,'\n','pole ',poleFQs(1,:)];
+ − for j=2:size(poleFQs,1), annotation = [annotation,'\n','(pz) ',poleFQs(j,:)]; end
+ − end
+ − end
+ − end
+ − end
+ − % Finally set the block annotation:
+ − for nn=1:length(selBlocks), set_param(selBlocks(nn),'AttributesFormatString',annotation); end
+ − end