0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 function paramcommand = g_RetrievePlist(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2 % Retrieve the name of the function from the block, then asks for
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3 % parameters.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 global params paramEnabled paramSets
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 try functionname = varargin{1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 catch
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 childpath = find_system(gcbh,'LookUnderMasks','all','BlockType','M-S-Function');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10 functionname = get_param(childpath,'Tag');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 if isempty(functionname)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 description = get_param(gcbh,'Description');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 funcname = findstr('functionName=',description);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 if funcname
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 i = funcname+14;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 while ~strcmp(description(i),';'), i=i+1; end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 functionname = description(funcname+14:i-2);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 if isempty(functionname)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 functionname = g_setmethod();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 setappdata(0,'ltpda_currFunctionName',functionname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 try
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 switch functionname
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31 case 'generic'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 paramcommand = 'functionName=''generic'';params=plist();paramEnabled=[];';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33 return
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 case 'arithmetic'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 paramcommand = 'functionName=''arithmetic'';params=plist(''alpha'',''-->'',''beta'',''-->'');';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36 return
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 [func,currClass] = strtok(get(gcbh,'Tag'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 currClass(1)=[];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40 infoObj = eval([currClass,'.getInfo(''',functionname,''')']);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 if numel(infoObj.sets) > 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 paramSets = plist('sets',infoObj.sets,'currSet',1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 paramcommand = ['paramSets=',string(paramSets),';','params=plist();'];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 elseif numel(infoObj.sets) == 1 && nparams(infoObj.plists)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 paramEnabled = zeros(1,nparams(infoObj.plists));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 paramcommand = ['params=',string(infoObj.plists),'; paramEnabled=',mat2str(paramEnabled),';'];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 paramcommand = 'params=plist();';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 catch ME
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 disp(sprintf('Error: unable to retrieve the parameters required by the function "%s". Maybe it''s not supported yet?',functionname));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 ErrorFuncNotSupported();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 rethrow(ME)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 function ErrorFuncNotSupported(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63 % Recalled whenever the parameters call fails
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 % Text: '[...] Maybe it''s not supported yet?'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 uicontrol('Parent',currPanel,'BackgroundColor',backColor,'Units','pixels','HorizontalAlignment','center','Position',[(panelDimens(4)-300)/2 panelDimens(4)-100-100 300 30],'String','Error: unable to retrieve the parameters required by this function. Maybe it''s not supported yet?','Visible','on','Style','text');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 end