Skip to content
Snippets Groups Projects
initializeArtoa4.m 2.93 KiB
Newer Older
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