Ac9cal.m

From Pnb
Jump to navigation Jump to search
% Title:        AC9CAL.M
% Date:         
% Author:       srw
% Input:        ['par_name','par_value', etc]
% Output:       
% Files:        ac9cal_cb.m,ac9cal_gui.mat
% Assumes:      
% Purpose:      View and process ac9 calibration data
% Calls:        ac9cal_cb,
% Uses:         
% Example:      ac9cal or ac9cal('list_file','foo.txt')
% NOTES:        comments and caveats
%
% ac9cal returns the figure number of the ac9cal gui and the 
% structure stored in the ac9calFig userdata,
%   ac9.par field initially contains acrcal_def.par values and is then
%      updated according to arguments passed to this function.
%   ac9.other fields are for each object in ac9calFig and contain a value
%      and a string field.
% Creates/raises ac9cal figure, initializes/gets ac9 structure.
% Assigns parameters passed through function call to ac9.par fields,
%   no need for define/default values here as there are taken care of
%   in ac9cal_cb('init').
% Updates userdata in ac9calFig.
% Raises QcaledFig1, if open, gets filename and properties from QcaledFig1.
% Good for finding ac9cal window from matlab prompt. 
% Updates ac9calFig objects and userdata in ac9calFig.
% 
% NOTE: Values in the userdata structure do reflect changes on the
% gui until an ac9cal_cb('par_update') is given. 

function [ac9calfig,ac9]=ac9cal(varargin)
  if nargin==1 & strcmp(varargin{1},'quit'),
    file_gui_cb('CloseAll');
    return
  end
  %Create/raise ac9cal figure
  ac9calfig=findall(0,'Tag','ac9calFig');
  if isempty(ac9calfig),
    ac9.par=ac9cal_cb('init');
    ac9calfig=ac9cal_cb('ac9cal_gui','par',ac9.par);
  else
    figure(ac9calfig);
    ac9=get(ac9calfig,'User');
  end
  ac9cal_cb('reset');
  %Update ac9.par fields with pairs passed to this function
  narg=length(varargin);
  nrow=narg/2;
  if nrow==round(nrow),
    for iarg=1:2:length(varargin),
      eval(['ac9.par.' varargin{iarg} '= varargin{iarg+1}']);
    end
  else
    display('ac9cal_cb: command line pairs not correctly formed');
    return
  end
  %Store in ac9calfig userdata
  set(ac9calfig,'User',ac9);
  %
  filename=ac9.par.list_file;
  %assign list_file in QcaledFig, the list_file editor, if there
  fig=findobj('Tag','QcaledFig1');
  if ~isempty(fig),
    get(findobj(fig,'Tag','list_file'),'String');
    if ~isempty(ans),
      filename=ans;
    end
    str=strvcat('prop','abs','fluid','air');
    %Update ac9calfig objects with values from QcaledFig1
    for ip=1:4,
      get(findobj(fig,'Tag',deblank(str(ip,:))),'Value');
      set(findobj(ac9calfig,'Tag',deblank(str(ip,:))),'Value',ans);
    end
  end
  set(findobj(ac9calfig,'Tag','list_file'),'String',filename);
  %Poll and parse all objects for sting and value, put into ac9
  ac9=ac9cal_cb('par_update');
  %Store in ac9calfig userdata  
  set(ac9calfig,'User',ac9);
  return

ac9cal