Code covered by the BSD License  

Highlights from
spec file reader

image thumbnail
from spec file reader by Zhang Jiang
Monitor, read, save scans from SPEC files and calculate true reflectivity.

specrsetting(varargin)
function specrsetting(varargin)
% GUI for specr settings 

hFigSpecr = findall(0,'Tag','specr_Fig');    % handle of the mother figure (specr)
settings = getappdata(hFigSpecr,'settings');
icons = load('icons.mat');

% --- figure layout
p0      = get(hFigSpecr,'position');    % main figure position
p1(3)   = 480;              % p1 is the setting figure position
p1(4)   = 275;
p1(1)   = p0(1)+p0(3)/2-p1(3)/2;
p1(2)   = p0(2)+p0(4)/2-p1(4)/2;
h = figure(...
    'Units','pixels',...
    'MenuBar','none',...
    'Units','pixels',...
    'Name','Spec Reader Settings',...
    'NumberTitle','off',...
    'IntegerHandle','off',...
    'Position',p1,...
    'HandleVisibility','callback',...
    'Tag','figSpecrSettings',...
    'Resize','off',...
    'WindowStyle','modal',...
    'UserData',[]);
panelSize = [10 60 p1(3)-20 p1(4)-70];
hPanel1 = uipanel(...
    'Parent',h,...
    'BackgroundColor',get(h,'Color'),...
    'Title','Settings',...
    'Units','pixels',...
    'Position',panelSize);
hText1 = uicontrol(...
    'Parent',hPanel1,...
    'Style','text',...
    'HorizontalAlignment','left',...
    'BackgroundColor',get(h,'Color'),...
    'Position',[10 panelSize(4)-35 panelSize(3)*2/3-10 15],...
    'String','Wavelength: (Angstrom)');
hEdit1 = uicontrol(...
    'Parent',hPanel1,...
    'Style','edit',...
    'BackgroundColor','w',...
    'Position',[panelSize(3)*2/3 panelSize(4)-35 panelSize(3)/3-27 20],...
    'String',num2str(settings.wavelength,15),...
    'HorizontalAlignment','left');
hPushbutton1 = uicontrol(...
    'Parent',hPanel1,...
    'Style','pushbutton',...
    'CDATA',icons.calculator,...
    'Position',[panelSize(3)-24 panelSize(4)-35 14 18],...
    'callback','engwav');
hText2 = uicontrol(...
    'Parent',hPanel1,...
    'Style','text',...
    'HorizontalAlignment','left',...
    'BackgroundColor',get(h,'Color'),...
    'Position',[10 panelSize(4)-58 panelSize(3)*2/3-10 15],...
    'String','Footprint angle on incident side: (degree)');
hEdit2 = uicontrol(...
    'Parent',hPanel1,...
    'Style','edit',...
    'BackgroundColor','w',...
    'Position',[panelSize(3)*2/3 panelSize(4)-58 panelSize(3)/3-10 20],...
    'String',num2str(settings.footprintAngle,15),...
    'HorizontalAlignment','left');
hText3 = uicontrol(...
    'Parent',hPanel1,...
    'Style','text',...
    'HorizontalAlignment','left',...
    'BackgroundColor',get(h,'Color'),...
    'Position',[10 panelSize(4)-81 panelSize(3)*2/3-10 15],...
    'String','Scan merging settings:');
hText3a = uicontrol(...
    'Parent',hPanel1,...
    'Style','text',...
    'HorizontalAlignment','left',...
    'BackgroundColor',get(h,'Color'),...
    'Position',[20 panelSize(4)-104 panelSize(3)*2/3-20 15],...
    'String','Discarding mode (for overlapped region)');
hPopupmenu3a = uicontrol(...
    'Parent',hPanel1,...
    'Style','popupmenu',...
    'HorizontalAlignment','left',...
    'BackgroundColor','w',...
    'Position',[panelSize(3)*2/3 panelSize(4)-104 panelSize(3)/3-10 20],...
    'String','Intensity priority|Number-of-point priority (default)',...
    'Value',settings.merge.mode);
hText3b = uicontrol(...
    'Parent',hPanel1,...
    'Style','text',...
    'HorizontalAlignment','left',...
    'BackgroundColor',get(h,'Color'),...
    'Position',[20 panelSize(4)-127 panelSize(3)*2/3-20 15],...
    'String','Interpolation method (for merging factors)');
hPopupmenu3b = uicontrol(...
    'Parent',hPanel1,...
    'Style','popupmenu',...
    'HorizontalAlignment','left',...
    'BackgroundColor','w',...
    'Position',[panelSize(3)*2/3 panelSize(4)-127 panelSize(3)/3-10 20],...
    'String','spline (default)|linear|nearest|cubic',...
    'Value',settings.merge.interpMethod);
hText4 = uicontrol(...
    'Parent',hPanel1,...
    'Style','text',...
    'HorizontalAlignment','left',...
    'BackgroundColor',get(h,'Color'),...
    'Position',[10 panelSize(4)-150 panelSize(3)*2/3-10 15],...
    'String','Scan monitor settings:');
hText4a = uicontrol(...
    'Parent',hPanel1,...
    'Style','text',...
    'HorizontalAlignment','left',...
    'BackgroundColor',get(h,'Color'),...
    'Position',[20 panelSize(4)-173 panelSize(3)*2/3-10 15],...
    'String','Checking period (sec)');
hEdit4a = uicontrol(...
    'Parent',hPanel1,...
    'Style','edit',...
    'BackgroundColor','w',...
    'Position',[panelSize(3)*2/3 panelSize(4)-173 panelSize(3)/3-10 20],...
    'String',num2str(settings.monitorPeriod,15),...
    'HorizontalAlignment','left');
hText4b = uicontrol(...
    'Parent',hPanel1,...
    'Style','text',...
    'HorizontalAlignment','left',...
    'BackgroundColor',get(h,'Color'),...
    'Position',[20 panelSize(4)-196 panelSize(3)*2/3-10 15],...
    'String','Automatically ajusting checking period (for large scans)');
hPopupmenu4b = uicontrol(...
    'Parent',hPanel1,...
    'Style','popupmenu',...
    'HorizontalAlignment','left',...
    'BackgroundColor','w',...
    'Position',[panelSize(3)*2/3 panelSize(4)-196 panelSize(3)/3-10 20],...
    'String','on (default)|off',...
    'Value',settings.monitorAutoPeriodMode);

hPushbuttonOK = uicontrol(...
    'Parent',h,...
    'Style','pushbutton',...
    'String','OK',...
    'Position',[p1(3)-180 20 80 25],...
    'callback',{@specrsettings_OKRequestFcn,hFigSpecr,h,hEdit1,hEdit2,hPopupmenu3a,hPopupmenu3b,hEdit4a,hPopupmenu4b});
hPushbuttonCancel = uicontrol(...
    'Parent',h,...
    'Style','pushbutton',...
    'String','Cancel',...
    'Position',[p1(3)-90 20 80 25],...
    'Callback',@specrsettings_CloseRequestFcn);


%================================================================
% --- specrsettings close function
%================================================================
function specrsettings_CloseRequestFcn(hObject,eventdata)
delete(gcf);
return;


%================================================================
% --- specrsettings close function
%================================================================
function specrsettings_OKRequestFcn(hObject,eventdata,hFigSpecr,h,hEdit1,hEdit2,hPopupmenu3a,hPopupmenu3b,hEdit4a,hPopupmenu4b)
settings = getappdata(hFigSpecr,'settings');
wavelength = str2double(get(hEdit1,'string'));
if isnan(wavelength) | wavelength<=0
    uiwait(msgbox('Invalid wavelength!','Settings Error','error','modal'));
    return;
end
settings.wavelength = wavelength;
footprintAngle = str2double(get(hEdit2,'string'));
if isnan(footprintAngle) | footprintAngle<=0
    uiwait(msgbox('Invalid foot print angle!','Settings Error','error','modal'));
    return;
end
settings.footprintAngle = footprintAngle;
settings.merge.mode = get(hPopupmenu3a,'value');
settings.merge.interpMethod = get(hPopupmenu3b,'value');
monitorPeriod = str2double(get(hEdit4a,'string'));
if isnan(monitorPeriod) | monitorPeriod<0.001
    uiwait(msgbox({'Invalid monitor period: must be larger than 0.1 sec.'},'Settings Error','error','modal'));
    return;
end
settings.monitorPeriod = monitorPeriod;
settings.monitorAutoPeriodMode = get(hPopupmenu4b,'value');
setappdata(hFigSpecr,'settings',settings);
delete(h);
return;

Contact us at files@mathworks.com