function [] = initializeArtoa4() %INITIALIZEARTOA4 Initializes variables required for artoa4 and creates the main window if required. % global artoaDataInput artoaDataOutput artoaWorkspace artoaGui; %% When the gui exists, focus it if isfield(artoaGui, 'figures') && isfield(artoaGui.figures, 'main') figure(artoaGui.figures.main.Number); return end %% Initalize required variables artoaDataInput = struct(); artoaDataOutput = struct(); artoaWorkspace = struct(); artoaWorkspace.hideDeletedDataPoints = false; artoaWorkspace.defaults = struct(); artoaWorkspace.defaults.trackingMethods = { ... 'Least Square', ... 'Exclusive Least Square', ... 'Circular', ... 'Hyperbolic' ... }; artoaWorkspace.defaults.interpolationMethods = { ... 'None', ... 'Linear', ... 'Spline', ... 'Cubic' ... }; artoaWorkspace.defaults.soundspeedMethods = { ... 'Del Grosso', ... 'Linear', ... 'Soundsource file', ... 'Levitus', ... 'Manual' ... }; artoaWorkspace.defaults.pickPointMarkerSize = 80; artoaGui = struct(); artoaGui.figures = struct(); artoaGui.main = struct(); %% Read ini file if existent and copy required variables to workspace artoa.controller.file.loadArtoaIni(); %% Read soundsource file if existent try soundsourceFilepath = artoaDataInput.ini.files.soundsourcefile; if ~isfile(soundsourceFilepath) error([mfilename ': ' soundsourceFilepath ' is not a file. Please check your artoa.ini!']); end artoaDataInput.soundsources = artoa.load.soundsources(soundsourceFilepath); catch ex error([mfilename ': Reading soundsource file failed with the following message: ' ex.message]); end %% Prepare callbacks for main gui callbacks = struct(); callbacks.CloseRequestFcn = @artoa.controller.quit; callbacks.quit = @artoa.controller.quit; callbacks.WindowButtonDownFcn = @artoa.controller.main.windowButtonDownFcn; callbacks.loadRfb = @artoa.controller.file.loadRfb; callbacks.loadInterim = @artoa.controller.file.loadInterim; callbacks.loadSoundsourceFile = @artoa.controller.file.loadSoundSourceFile; callbacks.saveRic = @artoa.controller.saveRic; callbacks.saveInterim = @artoa.controller.file.saveInterim; callbacks.loadArtoaIni = @artoa.controller.file.loadArtoaIni; callbacks.openEditTemperature = @artoa.controller.edit.temperature.open; callbacks.openEditPressure = @artoa.controller.edit.pressure.open; callbacks.openEditTimeOfArrival = @artoa.controller.edit.timeOfArrival.open; callbacks.openEditOffsets = @artoa.controller.edit.offsets.open; callbacks.openTrackParameter = @artoa.controller.track.parameter.open; callbacks.openTrackTrajectoryOutput = @artoa.controller.track.trajectoryOutput.open; callbacks.switchHideDeletedDataPoints = @artoa.controller.switchHideDeletedPoints; %% Start artoa4 artoa.gui.main(callbacks); %% Update the settings defined by ini if artoa.data.getMember(artoaDataInput.ini, {'view', 'hidedeleteddatapoints'}, false) artoa.controller.switchHideDeletedPoints(); end end