view m-toolbox/m/gui/gltpda/g_AnnotationUpdate.m @ 30:317b5f447f3e database-connection-manager

Update workspaceBrowser
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Mon, 05 Dec 2011 16:20:06 +0100
parents f0afece42f48
children
line wrap: on
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