view aim-mat/tools/@parameter/setas.asv @ 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 74dedb26614d
children
line wrap: on
line source
% method of class @parameter
%
% (c) 2003, University of Cambridge
% Stefan Bleeck (stefan@bleeck.de)
% http://www.mrc-cbu.cam.ac.uk/cnbh/aimmanual/tools/parameter
% $Date: 2006-01-10 14:50:30 +0000 (Tue, 10 Jan 2006) $
function param=setas(param,text,value,unit,inbox)
%% sets the parameter value in the parameter "text" in the panel "inbox" to
%% the value "value".
% param must be of type float or int

if nargin<5
    inbox='all';
end

% cont=param.entries;
nr=getentrynumberbytext(param,text,inbox);
if nr>0
    if isequal(value,'auto');
        param.entries{nr}.rawvalue=value;
        param.entries{nr}.stringvalue=value;    % set the string value
    else
        if ~ischar(value)
            unittype=param.entries{nr}.unittype;
            if ~isa(unittype,'unit_none')
                rawval=fromunits(unittype,value,unit);
            else
                rawval=value;
            end
            param.entries{nr}.rawvalue=rawval;    % set the value in the class structure with the raw value
            param.entries{nr}.stringvalue=num2str(rawval);    % set the string value
        else
            param.entries{nr}.stringvalue=value;    % set the string value
            param.entries{nr}.rawvalue=str2num(value);
        end
    end
    if isfield(param.entries{nr},'handle') && ishandle(param.entries{nr}.handle{1}) % and set in the gui as well
        if strcmp(type,'float')
            hand=param.entries{nr}.handle{1};
            if isequal(value,'auto');
                set(hand,'String',value);   % set the string as given
            else
                if ~ischar(value)
                    if length(value)==1
                        set(hand,'String',num2str(value));   % translate to string
                    else
                        set(hand,'String',param.entries{nr}.stringvalue);   % set the string as given
                    end
                    if ~isa(unittype,'unit_none')
                        unitnr=findunit(unittype,unit);
                        if length(param.entries{nr}.handle)>=2 && ishandle(param.entries{nr}.handle{2}) % and set in the gui as well
                            set(param.entries{nr}.handle{2},'value',unitnr);  % set the unit to the given one
                        end
                    end
                else % its a string format
                    set(hand,'String',value);   % set the string as given
                end
            end
        else
            sec=param.entries{nr}.slidereditcontrol;
            
        end
        return
    else
        error('setvalue::error, the entry does not exist');
    end