123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- %% CALLED BY par4Gbl_Main8c.m %%
- % TODO Should some of these vars be pulled out higher so they are easier to change?
- %
- function NImParamRadiusGui(projectScansDir)
- global SWsingleSc
- global SWgrowthArea
- global scan
- global scLst
- global ImParMat
- global searchRangeNum
- global defImParMat
- global fhImRun
- global fhconsole
- global easyResultsDir
- global fotosResultsDir
- global pointMapsResultsDir
- global pointMapsFile
- global matFile
- global numRows
- global numCols
- global scanSize
- global scanMax
- global searchRangeFile
- % Ncode ImRobot adaptation
- % TODO this code block and variables needs explanation
- defImParMat=[1,1,15,34,24,1,0,0,1,14,1,18];
- if ImParMat(3)==0 || ImParMat(4)==0 ||ImParMat(5)==0 || ImParMat(10)==0 ||ImParMat(11)==0
- ImParMat=defImParMat;
- end
- if size(ImParMat,2)<12
- ImParMat(12)=18; % default before user input CsearchRange value
- msg='Data made before SearchRange user entry added (ImParMat(12). 18 was the set value and the current default.)';
- end
- % ImParMat=defImParMat; %Activate for INITIAL USE only
- MPnum=1;
- destPerMP=1;
- selScan=1;
- SWgrowthArea=1;
- if exist(pointMapsFile, 'file')
- load(pointMapsFile);
- else
- load(fullfile(easyDir, 'PTmats', 'NImParameters')) % hardcoded default
- disp('WARNING: Using hardcoded NImParameters.mat')
- end
- ImParMat;
- % if ~exist('searchRangeNum','var') || isempty(searchRangeNum)
- if exist(searchRangeFile, 'file')
- load(searchRangeFile);
- CSearchRange; % TODO, might be an issue, figure out what this is doing
- end
-
- % yInitPos=0.30;
- xPos=0.05;
- btnWid=0.10;
- btnHt=0.05;
- spacing=0.02;% Spacing between the button and the next command's label
-
- % The ADD Groups button
- btnNumber=1;
- yPos=0.85-(btnNumber-1)*(btnHt+spacing);
- btnPos=[xPos yPos-spacing btnWid btnHt];
- fhImParm=gcf;
- if exist('easyResultsDir','var')&& ~isempty(easyResultsDir)
- set(fhImParm,'NumberTitle','off')
- set(fhImParm,'Name',strcat('ImageAnalysis- ',char(easyResultsDir)))
- else
- set(fhImParm,'NumberTitle','off')
- set(fhImParm,'Name','EASYconsole - Exp. Analysis NOT selected.')
- end
- btnNumber=5;
- yPos=0.85-(btnNumber-1)*(btnHt+spacing);
- btnPos=[xPos yPos-spacing btnWid btnHt];
- srcRadius=ImParMat(10);
- hedit=uicontrol(...
- 'Style', 'edit',...
- 'String',srcRadius,...
- 'Units','normalized',...
- 'Position', btnPos,... % [.002 .70 .08 .10],...
- 'callback',{@entryRadius}); % 'Position', [5 100 60 20])
- function entryRadius(source,~)
- user_entry=str2double(get(source,'string'));
- if (isnan(user_entry)||(user_entry<12)||(user_entry>17))
- errordlg('You must enter a numeric value between 12 and 17','Bad Input','modal')
- return
- end
- Radius=user_entry;
- ImParMat(10)=Radius;
- Radius;
- end
- btnNumber=6;
- yPos=0.85-(btnNumber-1)*(btnHt+spacing);
- btnPos=[xPos yPos-spacing btnWid btnHt];
- srcDither=ImParMat(6);
- hedit=uicontrol(...
- 'Style', 'edit',...
- 'String',srcDither,...
- 'Units','normalized',...
- 'Position', btnPos,...
- 'callback',{@entryDither});
- function entryDither(source,~)
- user_entry=str2double(get(source,'string'));
- if (isnan(user_entry)||(user_entry<0)||(user_entry>5))
- errordlg('You must enter a numeric value between 1 and 4','Bad Input','modal')
- return
- end
- Dither=user_entry;
- ImParMat(6)=Dither;
- Dither;
- end
- btnNumber=7;
- yPos=0.85-(btnNumber-1)*(btnHt+spacing);
- btnPos=[xPos yPos-spacing btnWid btnHt];
- % TODO, I don't think these are defined?
- try
- srchRange=ImParMat(12);
- catch % Legacy default value was 18 before being made a user input variable (ImParMat(12)). A preferable value now might be 12 or 14.
- srchRange=18;
- ImParMat(12)=18;
- end
-
- hSearchRange=uicontrol(...
- 'Style', 'edit',...
- 'Value',searchRangeNum,...
- 'Units','normalized',...
- 'Position', btnPos,...
- 'callback',{@searchRangeCallback});
- function searchRangeCallback(source,~)
- user_entry=str2double(get(source,'string'));
- if (isnan(user_entry)||(user_entry<1)||(user_entry>50)) %originally 18; 19_0729 increased
- errordlg('You must enter a numeric value between 1 and 18 12->18 recommended. (ImParMat(12)))','Bad Input','modal')
- return
- end
- searchRangeNum=user_entry;
- end
- % Ncode 12_0120 for reading in numeric folder names
- nlist=dir(fullfile(projectScansDir,'*'));
- nnn=0;
- for n=1:size(nlist,1)
- if (~isempty(str2num(nlist(n).name)))
- nnn=nnn+1;
- PnumLst(nnn)=(str2num(nlist(n).name));
- sl(nnn,1)={(nlist(n).name)};
- end
- end
- scanSize=size(sl,1);
- scanMax=max(str2double(sl));
- hListbox=uicontrol(...
- 'Style', 'listbox',...
- 'String',sort(sl),...
- 'value',[],...
- 'max',1000,...
- 'min',1,...
- 'Units','normalized',...
- 'Position', [.70 .40 .10 .60],...
- 'callback',{@load_listbox}); %'uiresume(gcbf)'); 'Position', [5 100 60 20])
-
- function load_listbox(source,~)
- userIndx=(get(source,'value'));
- userStr=(get(source,'string'));
- %scLstIndx=str2num(char(strrep(userStr(userIndx), 'Scan', '')))
- user_entry=userStr(userIndx);
- scLst=user_entry;
- if size(scLst,1)>1
- % searchRangeNum=num2str(ImParMat(12))
- set(hSearchRange,'string',num2str(ImParMat(12)))
- else
- try
- searchRangeNum=CSearchRange(str2double(scLst));
- set(hSearchRange,'string',CSearchRange(str2double(scLst)))
- catch
- % CSrchRng=num2str(ImParMat(12))
- % set(hSearchRange,'string',num2str(ImParMat(12)))
- end
- end
- end
- scLst;
-
- btnNumber=10;
- yPos=0.85-(btnNumber-1)*(btnHt+spacing);
- btnPos=[xPos yPos-spacing btnWid btnHt];
- hedit8=uicontrol(...
- 'Style', 'pushbutton',...
- 'String',{'Continue'},...
- 'Units','normalized',...
- 'Position', btnPos,...
- 'callback','uiresume(gcbf)');
- % Labels
- xLPos=0.175;
- yPos=0;
- btnWid=0.20;
- lblNumber=5;
- yPos=0.85-(lblNumber-1)*(btnHt+spacing);
- btnPos=[xLPos yPos-spacing btnWid btnHt];
- htxt=uicontrol(...
- 'Style', 'text',...
- 'String','Radius',... %'String','Width',...
- 'Units','normalized',...
- 'Position', btnPos);
- lblNumber=6;
- yPos=0.85-(lblNumber-1)*(btnHt+spacing);
- btnPos=[xLPos yPos-spacing btnWid btnHt];
- htxt=uicontrol(...
- 'Style', 'text',...
- 'String','Dither',...
- 'Units','normalized',...
- 'Position', btnPos);
- lblNumber=7;
- yPos=0.85-(lblNumber-1)*(btnHt+spacing);
- btnPos=[xLPos yPos-spacing btnWid btnHt];
- htxt=uicontrol(...
- 'Style', 'text',...
- 'String','SearchRange',...
- 'Units','normalized',...
- 'Position', btnPos);
- uiwait(gcf);
- for i=1:length(scLst)
- CSearchRange(str2double(scLst(i)))=CSrchRng;
- ImParMat(12)=CSrchRng;
- end
-
- ImParMat;
- searchRangeNum;
- save(pointMapsFile, 'ImParMat');
- save(searchRangeFile,'searchRangeNum');
- close
- return
- end
|