From 1f77638b8046b68514ec67cab0f2743bdcc51b60 Mon Sep 17 00:00:00 2001 From: Lewin Probst <info@emirror.de> Date: Wed, 4 Dec 2019 12:11:18 +0100 Subject: [PATCH] Updated main window, no receives the required callbacks as parameter. --- lib/+artoa/+controller/+edit/+offsets/open.m | 2 +- lib/+artoa/+controller/+edit/+pressure/open.m | 2 +- .../+controller/+edit/+temperature/open.m | 2 +- .../+controller/+edit/+timeOfArrival/open.m | 2 +- lib/+artoa/+controller/+file/loadArtoaIni.m | 2 +- lib/+artoa/+controller/+file/loadInterim.m | 2 +- lib/+artoa/+controller/+file/loadRfb.m | 2 +- .../+controller/+file/loadSoundSourceFile.m | 2 +- lib/+artoa/+controller/+file/saveInterim.m | 2 +- .../+controller/+track/+parameter/open.m | 2 +- .../+track/+trajectoryOutput/open.m | 2 +- lib/+artoa/+controller/initializeArtoa4.m | 22 ++++++- lib/+artoa/+controller/quit.m | 2 +- .../+controller/switchHideDeletedPoints.m | 2 +- lib/+artoa/+gui/main.m | 61 +++++++++++++------ 15 files changed, 77 insertions(+), 32 deletions(-) diff --git a/lib/+artoa/+controller/+edit/+offsets/open.m b/lib/+artoa/+controller/+edit/+offsets/open.m index 7d84639..cd75d60 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 1975833..d221771 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 d3fcf4b..8e7210f 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 24db049..d9a4408 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 3e147f4..9d5ade9 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 5418e7c..80ae926 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 776370e..119ebd6 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 ce3bad6..609898a 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 54d81e8..f3d1f39 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 9f19e7a..4544263 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 bd746c8..8ab1567 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 d54591f..c07dbc6 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 0be0b00..46b160a 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 63ff1b5..a9d5b7c 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 8502250..86566f9 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', ... -- GitLab