Matthias Pospiech
Matthias Pospiech

Reputation: 3488

wait for gui to finish

As already asked more or less in this question: https://stackoverflow.com/questions/14397729/working-with-multiple-guis-in-matlab

I want to have the output parameers and wait for a gui to finish.

I now use waitfor, but the output is always only a single handle

handle = uiConfigureCalibration('uiMain', handles.figure1);
waitfor(handle);
display(handle);

The output function of uiConfigureCalibration however passes several parameters:

function varargout = uiConfigureCalibration_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;
if isfieldRecursive(handles, 'handles.files.calibration')
   varargout{2} = handles.files.calibration;
   varargout{3} = handles.calibration;
end 

Any chance to get these parameters somehow in the calling function ?

Upvotes: 0

Views: 299

Answers (1)

Ilya Kobelevskiy
Ilya Kobelevskiy

Reputation: 5345

You would have to do

[output,FilesCalibration,Calibration] = uiConfigureCalibration('uiMain', handles.figure1);

to grab additional outputs - you are only asking for one output in your function call, so you always get one output. However, this will fail if you output single parameter.

Since number of outputs is variable, I think it is better to return structure containing all outputs:

function output = uiConfigureCalibration_OutputFcn(hObject, eventdata, handles) 
output.output = handles.output;
if isfieldRecursive(handles, 'handles.files.calibration')
   output.files.calibration = handles.files.calibration;
   output.calibration = handles.calibration;
end

Now function essentially returns a subset of handles structure, containing 1 or 3 fields depending on the structure of handles

Upvotes: 1

Related Questions