view aim-mat/tools/@parameter/get.m @ 4:537f939baef0 tip

various bug fixes and changed copyright message
author Stefan Bleeck <bleeck@gmail.com>
date Tue, 16 Aug 2011 14:37:17 +0100
parents 20ada0af3d7d
children
line wrap: on
line source
% method of class @parameter
%
% (c) 2011, University of Southampton
% Maintained by Stefan Bleeck (bleeck@gmail.com)
% download of current version is on the soundsoftware site: 
% http://code.soundsoftware.ac.uk/projects/aimmat
% documentation and everything is on http://www.acousticscale.org
function val=get(param,text,panel)
% returns the current value of the parameter

cont=param.entries;
nrent=length(cont);

if nargin <2 % in case we want the whole stucture
    val=cont;
    return
end

if nargin<3 % search in all subsections
    panel='all';
end


nr=getentrynumberbytext(param,text,panel);

if nr>0
    type=cont{nr}.type;

    handleb=gethandle(param,text,panel,1);
    if ~isequal(handleb,0) && ishandle(handleb) % yes, there is a screen representation
        if strcmp(get(handleb,'type'),'uipanel') && strcmp(type,'panel')
            val=getradiobutton(param,text);
        else
            strval=get(handleb,'string');
            if strcmp(type,'pop-up menu')
                nrsel=get(handleb,'value');
                val=strval{nrsel};
            elseif strcmp(type,'radiobutton')
                val=get(handleb,'value');
            elseif strcmp(type,'bool')
                val=get(handleb,'value');
            elseif strcmp(type,'int')
                if strcmp(strval,'auto');
                    val=strval;
                else
                    val=str2num(strval);
                end
            elseif strcmp(type,'float')
                unit=cont{nr}.orgunit;
                val=getas(param,text,unit,panel);  %call new with unit
            else
                val=strval;
            end
            return
        end
    else  % no screen representation
        if strcmp(type,'float')
            unit=cont{nr}.orgunit;
            val=getas(param,text,unit,panel);  %call new with unit
            return
        elseif strcmp(type,'int')
            valf=cont{nr}.value;
            if ischar(valf)
                if strcmp(valf,'auto');
                    val=valf;
                else
                    val=str2num(valf);
                end
            else
                val=valf;
            end
        elseif strcmp(type,'panel')
            val=getradiobutton(param,text);
        else
            val=cont{nr}.value;
            return
        end
    end
else
    error('error, the entry does not exist');
    %     val=0;  % we must return a logical value otherwise it can generate difficult errors
end