function SaveParams(filename)
%% Add all parameters to current workspace and save all necessary input data to file
    
    global params
    
    output = {};
    
    % Loop by panels
    for panIdx_ = 1 : length(params)
        
        % Loop by all parameters of this panel
        for parIdx = 1 : length(params{panIdx_})
            
            varName = params{panIdx_}{parIdx}.name;
            handlers = params{panIdx_}{parIdx}.handlers;
            
            h2 = handlers(2);
            [value, style, ~] = GetUIControlValue(h2); %#ok<ASGLU>
            
            switch style
                case 'checkbox'
                    cmd = sprintf('%s = logical(value);', varName);
                case 'popupmenu'
                    cmd = sprintf('%s = int32(value);', varName);
                case 'pushbutton'
                    continue
                otherwise
                    cmd = sprintf('%s = value;', varName);
            end
            
            eval(cmd);
    
            output = [output; varName];
        end
    end
    
    save(filename, output{:});

end
