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;