diff --git a/lib/+artoa/+controller/+edit/+offsets/open.m b/lib/+artoa/+controller/+edit/+offsets/open.m index 7d846394495ba90a591e8d531c5a73df45bd1f26..cd75d603f3400e3e71a353999f7b081bdef14823 100644 --- a/lib/+artoa/+controller/+edit/+offsets/open.m +++ b/lib/+artoa/+controller/+edit/+offsets/open.m @@ -1,4 +1,4 @@ -function [] = open() +function [] = open(~, ~) %OPEN Initializes the offset details gui. % Detailed explanation goes here diff --git a/lib/+artoa/+controller/+edit/+pressure/open.m b/lib/+artoa/+controller/+edit/+pressure/open.m index 19758331c415b2643492e76c1fe2358cedb382a5..d2217712b9362305e7dd471d595a99ee69a23f1c 100644 --- a/lib/+artoa/+controller/+edit/+pressure/open.m +++ b/lib/+artoa/+controller/+edit/+pressure/open.m @@ -1,4 +1,4 @@ -function [] = open() +function [] = open(~, ~) %OPENEDITTEMPERATURE Initializes the pressure editing gui. % Detailed explanation goes here diff --git a/lib/+artoa/+controller/+edit/+temperature/open.m b/lib/+artoa/+controller/+edit/+temperature/open.m index d3fcf4b0d9714537e3bb00468c475595b277b127..8e7210f3a830e24851e74058faa377000177b0b9 100644 --- a/lib/+artoa/+controller/+edit/+temperature/open.m +++ b/lib/+artoa/+controller/+edit/+temperature/open.m @@ -1,4 +1,4 @@ -function [] = open() +function [] = open(~, ~) %OPENEDITTEMPERATURE Initializes the temperature editing gui. % Detailed explanation goes here diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/open.m b/lib/+artoa/+controller/+edit/+timeOfArrival/open.m index 24db0493bf198a976aca853a890b369df4a3487e..d9a4408c6a30c28a688b907a810748c305c891a0 100644 --- a/lib/+artoa/+controller/+edit/+timeOfArrival/open.m +++ b/lib/+artoa/+controller/+edit/+timeOfArrival/open.m @@ -1,4 +1,4 @@ -function [] = open() +function [] = open(~, ~) %OPEN Initializes the time of arrival editing gui. global artoaGui artoaWorkspace; diff --git a/lib/+artoa/+controller/+file/loadArtoaIni.m b/lib/+artoa/+controller/+file/loadArtoaIni.m index 3e147f4a431cc36b0385a6259427b3da4e9269a8..9d5ade9b12c5f2b970295af26887dbfcc61b6a29 100644 --- a/lib/+artoa/+controller/+file/loadArtoaIni.m +++ b/lib/+artoa/+controller/+file/loadArtoaIni.m @@ -1,4 +1,4 @@ -function [] = loadArtoaIni() +function [] = loadArtoaIni(~, ~) %RELOADARTOAINI Loads the artoa.ini file and copies the required values to workspace. % diff --git a/lib/+artoa/+controller/+file/loadInterim.m b/lib/+artoa/+controller/+file/loadInterim.m index 5418e7c41871e1bfd07b50aed41b4e010123e184..80ae9267720f9cccd1c417acd0e2e8181f086c0a 100644 --- a/lib/+artoa/+controller/+file/loadInterim.m +++ b/lib/+artoa/+controller/+file/loadInterim.m @@ -1,4 +1,4 @@ -function [] = loadInterim() +function [] = loadInterim(~, ~) %LOADINTERIM Loads the current state of ARTOA4 from the file specified by dialog. % diff --git a/lib/+artoa/+controller/+file/loadRfb.m b/lib/+artoa/+controller/+file/loadRfb.m index 776370ec40f24d5fcd7fb3d6d2fb1674c809e2f9..119ebd6828799504d477cfc985228056531e7c19 100644 --- a/lib/+artoa/+controller/+file/loadRfb.m +++ b/lib/+artoa/+controller/+file/loadRfb.m @@ -1,4 +1,4 @@ -function [] = loadRfb() +function [] = loadRfb(~, ~) %LOADRFB Creates a file selection dialog and reads the file into memory. global artoaDataInput; diff --git a/lib/+artoa/+controller/+file/loadSoundSourceFile.m b/lib/+artoa/+controller/+file/loadSoundSourceFile.m index ce3bad6529419e727e4666768412a7fe95e102e1..609898a49f87c2da82548707499a66fa4b4c80b4 100644 --- a/lib/+artoa/+controller/+file/loadSoundSourceFile.m +++ b/lib/+artoa/+controller/+file/loadSoundSourceFile.m @@ -1,4 +1,4 @@ -function [] = loadSoundSourceFile() +function [] = loadSoundSourceFile(~, ~) %LOADSOUNDSOURCEFILE Creates a file selection dialog and reads the file into memory. global artoaGui artoaDataInput; diff --git a/lib/+artoa/+controller/+file/saveInterim.m b/lib/+artoa/+controller/+file/saveInterim.m index 54d81e849e065fb9c84bdcbeed7b66cd267f8bad..f3d1f39db5fbecf1578ac4dce21e0d979c199875 100644 --- a/lib/+artoa/+controller/+file/saveInterim.m +++ b/lib/+artoa/+controller/+file/saveInterim.m @@ -1,4 +1,4 @@ -function [] = saveInterim() +function [] = saveInterim(~, ~) %SAVEINTERIM Saves the current state of ARTOA4 to the file specified by dialog. % diff --git a/lib/+artoa/+controller/+track/+parameter/open.m b/lib/+artoa/+controller/+track/+parameter/open.m index 9f19e7a1a922f94fa78531ae4ec28c10279a8644..45442636cdc82d028f2a89876b0c1f14820a5859 100644 --- a/lib/+artoa/+controller/+track/+parameter/open.m +++ b/lib/+artoa/+controller/+track/+parameter/open.m @@ -1,4 +1,4 @@ -function [] = open() +function [] = open(~, ~) %OPEN Initializes the tracking parameter gui. % diff --git a/lib/+artoa/+controller/+track/+trajectoryOutput/open.m b/lib/+artoa/+controller/+track/+trajectoryOutput/open.m index bd746c84220c3d18d9ef5e8b2296d644302c1ef5..8ab156722935d107ec5103cc6cc25c09e32766ea 100644 --- a/lib/+artoa/+controller/+track/+trajectoryOutput/open.m +++ b/lib/+artoa/+controller/+track/+trajectoryOutput/open.m @@ -1,4 +1,4 @@ -function [] = open() +function [] = open(~, ~) %OPEN Initializes the trajectory output gui. % diff --git a/lib/+artoa/+controller/initializeArtoa4.m b/lib/+artoa/+controller/initializeArtoa4.m index d54591fa4d2666406766bab05054ee933a5328ab..c07dbc6bf6623e39ca60489337896c00c24d8ce5 100644 --- a/lib/+artoa/+controller/initializeArtoa4.m +++ b/lib/+artoa/+controller/initializeArtoa4.m @@ -54,9 +54,27 @@ catch ex error([mfilename ': Reading soundsource file failed with the following message: ' ex.message]); end -%% Start artoa4 +%% 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; -artoa.gui.main(); +%% Start artoa4 +artoa.gui.main(callbacks); %% Update the settings defined by ini if artoa.data.getMember(artoaDataInput.ini, {'view', 'hidedeleteddatapoints'}, false) diff --git a/lib/+artoa/+controller/quit.m b/lib/+artoa/+controller/quit.m index 0be0b008fbe7fb0232e3931a45d94fe2a883652a..46b160a18289e868280882092f3f5cff112b0622 100644 --- a/lib/+artoa/+controller/quit.m +++ b/lib/+artoa/+controller/quit.m @@ -1,4 +1,4 @@ -function [] = quit() +function [] = quit(~, ~) %QUIT Closes all windows, cleans up workspace and quits ARTOA4. global artoaGui; diff --git a/lib/+artoa/+controller/switchHideDeletedPoints.m b/lib/+artoa/+controller/switchHideDeletedPoints.m index 63ff1b5f25a5c4e0c9e09f64e8c3db3667ba9825..a9d5b7c8d8db21f5ef5161080b4aefaaa1e7983e 100644 --- a/lib/+artoa/+controller/switchHideDeletedPoints.m +++ b/lib/+artoa/+controller/switchHideDeletedPoints.m @@ -1,4 +1,4 @@ -function [] = switchHideDeletedPoints() +function [] = switchHideDeletedPoints(~, ~) %SWITCHVIEWSHOWALL Switches wether all data points are shown or not. % Switches the menu checkbox and updates the workspace accordingly. diff --git a/lib/+artoa/+gui/main.m b/lib/+artoa/+gui/main.m index 85022507fabbb0411a7917109dcea27fb32fb105..86566f9587d70bd4c6e33ea20770ad3cfae40ac3 100644 --- a/lib/+artoa/+gui/main.m +++ b/lib/+artoa/+gui/main.m @@ -1,8 +1,35 @@ -function [ ] = main() +function [ ] = main(pCallbacks) %MAIN Contains the definition of main ARTOA4 gui. global artoaGui; +%% Initialize callbacks + +availableCallbacks = { ... + 'CloseRequestFcn', ... + 'WindowButtonDownFcn', ... + 'loadRfb', ... + 'loadInterim', ... + 'loadSoundsourceFile', ... + 'saveRic', ... + 'saveInterim', ... + 'loadArtoaIni', ... + 'quit', ... + 'openEditTemperature', ... + 'openEditPressure', ... + 'openEditTimeOfArrival', ... + 'openEditOffsets', ... + 'openTrackParameter', ... + 'openTrackTrajectoryOutput', ... + 'switchHideDeletedDataPoints' ... +}; + +for i = 1:length(availableCallbacks) % check if a callback is undefined + if ~isfield(pCallbacks, availableCallbacks{i}) + pCallbacks.(availableCallbacks{i}) = @(~, ~) false; + end +end + %% Initialize main window artoaGui.figures.main = figure( ... @@ -13,7 +40,7 @@ artoaGui.figures.main = figure( ... 'WindowKeyPressFcn', @artoa.controller.main.shortcuts ... ); -set(artoaGui.figures.main, 'CloseRequestFcn', 'artoa.controller.quit();'); +set(artoaGui.figures.main, 'CloseRequestFcn', pCallbacks.CloseRequestFcn); %% Initialize file menu artoaGui.main.menus = struct(); @@ -29,17 +56,17 @@ uimenu( ... uimenu( ... loadHandle, ... 'Label', 'RFB file', ... - 'Callback', 'artoa.controller.file.loadRfb();' ... + 'Callback', pCallbacks.loadRfb ... ); uimenu( ... loadHandle, ... 'Label', 'Interim file', ... - 'Callback', 'artoa.controller.file.loadInterim();' ... + 'Callback', pCallbacks.loadInterim ... ); uimenu( ... loadHandle, ... 'Label', 'SoSo file', ... - 'Callback', 'artoa.controller.file.loadSoundSourceFile();' ... + 'Callback', pCallbacks.loadSoundsourceFile ... ); @@ -53,27 +80,27 @@ artoaGui.main.menus.fileSave = uimenu( ... uimenu( ... artoaGui.main.menus.fileSave, ... 'Label', 'RIC file', ... - 'Callback', 'artoa.controller.saveRic();', ... + 'Callback', pCallbacks.saveRic, ... 'Enable', 'off' ... ); uimenu( ... artoaGui.main.menus.fileSave, ... 'Label', 'Interim file', ... - 'Callback', 'artoa.controller.file.saveInterim();' ... + 'Callback', pCallbacks.saveInterim ... ); artoaGui.main.menus.fileReloadArtoaIni = uimenu( ... artoaGui.main.menus.file, ... 'Label', 'Reload artoa.ini', ... - 'Callback', 'artoa.controller.file.loadArtoaIni();' ... + 'Callback', pCallbacks.loadArtoaIni ... ); % QUIT artoaGui.main.menus.fileQuit = uimenu( ... artoaGui.main.menus.file, ... 'Label', 'Quit', ... - 'Callback', 'artoa.controller.quit();' ... + 'Callback', pCallbacks.quit ... ); %% Initialize edit menu @@ -88,21 +115,21 @@ artoaGui.main.menus.edit = uimenu( ... artoaGui.main.menus.editTemperature = uimenu( ... artoaGui.main.menus.edit, ... 'Label', 'Temperature', ... - 'Callback', 'artoa.controller.edit.temperature.open();' ... + 'Callback', pCallbacks.openEditTemperature ... ); % PRESSURE artoaGui.main.menus.editPressure = uimenu( ... artoaGui.main.menus.edit, ... 'Label', 'Pressure', ... - 'Callback', 'artoa.controller.edit.pressure.open();' ... + 'Callback', pCallbacks.openEditPressure ... ); % TIME OF ARRIVAL artoaGui.main.menus.editTimeOfArrival = uimenu( ... artoaGui.main.menus.edit, ... 'Label', 'Time of arrival', ... - 'Callback', 'artoa.controller.edit.timeOfArrival.open();', ... + 'Callback', pCallbacks.openEditTimeOfArrival, ... 'Separator', 'on', ... 'Enable', 'off' ... ); @@ -110,7 +137,7 @@ artoaGui.main.menus.editTimeOfArrival = uimenu( ... artoaGui.main.menus.editOffsetDetails = uimenu( ... artoaGui.main.menus.edit, ... 'Label', 'Offset details', ... - 'Callback', 'artoa.controller.edit.offsets.open();', ... + 'Callback', pCallbacks.openEditOffsets, ... 'Separator', 'on' ... ); @@ -126,14 +153,14 @@ artoaGui.main.menus.track = uimenu( ... artoaGui.main.menus.trackParameter = uimenu( ... artoaGui.main.menus.track, ... 'Label', 'Track Parameter', ... - 'Callback', 'artoa.controller.track.parameter.open();' ... + 'Callback', pCallbacks.openTrackParameter ... ); % TRAJECTORY OUTPUT artoaGui.main.menus.trajectoryOutput = uimenu( ... artoaGui.main.menus.track, ... 'Label', 'Trajectory output', ... - 'Callback', 'artoa.controller.track.trajectoryOutput.open();' ... + 'Callback', pCallbacks.openTrackTrajectoryOutput ... ); @@ -148,7 +175,7 @@ artoaGui.main.menus.view = uimenu( ... artoaGui.main.menus.viewHideDeletedDataPoints = uimenu( ... artoaGui.main.menus.view, ... 'Label', 'Hide deleted data points', ... - 'Callback', 'artoa.controller.switchHideDeletedPoints();' ... + 'Callback', pCallbacks.switchHideDeletedDataPoints ... ); %% Initialize shortcut hints @@ -179,7 +206,7 @@ gitInfo = getGitInfo(); artoaGui.main.textVersionInfo = uicontrol( ... 'Parent', artoaGui.figures.main, ... - 'String', ['Version 4.' gitInfo.hash(1:8)], ... + 'String', artoa.controller.main.getVersionString(), ... 'Style', 'text', ... 'FontSize', 10, ... 'Units', 'normalized', ...