From d9be920c363ad659856e2a3a886bf1d897b62cf7 Mon Sep 17 00:00:00 2001 From: Lewin Probst <info@emirror.de> Date: Tue, 10 Sep 2019 18:31:06 +0200 Subject: [PATCH] Updated the edit windows to match the requirements of issue #11. --- .../+edit/+pressure/applyStatusToAllPoints.m | 21 +++ .../+edit/+pressure/applyStatusToAllVisible.m | 31 ++++ .../+pressure/applyStatusToSelectedPoints.m | 6 +- .../+edit/+pressure/dropSelection.m | 16 +++ .../+controller/+edit/+pressure/pickPoint.m | 32 +++++ .../+controller/+edit/+pressure/pickPolygon.m | 18 +-- .../+temperature/applyStatusToAllPoints.m | 21 +++ .../+temperature/applyStatusToAllVisible.m | 31 ++++ .../applyStatusToSelectedPoints.m | 6 +- .../+edit/+temperature/dropSelection.m | 16 +++ .../+edit/+temperature/pickPoint.m | 32 +++++ .../+edit/+temperature/pickPolygon.m | 8 +- .../applySoundSourceToSelectedPoints.m | 2 +- .../+edit/+timeOfArrival/dropSelection.m | 16 +++ .../+edit/+timeOfArrival/pickPoint.m | 32 +++++ .../+edit/+timeOfArrival/pickPolygon.m | 16 +-- .../+controller/+edit/+timeOfArrival/plot.m | 2 +- .../+edit/+timeOfArrival/resetShiftToa.m | 22 +++ .../{shiftToaSelection.m => shiftToa.m} | 9 +- lib/+artoa/+controller/+edit/clearSelection.m | 14 +- .../+controller/+edit/dataPointsSelected.m | 2 +- lib/+artoa/+controller/+file/saveInterim.m | 2 +- lib/+artoa/+controller/copyRfbToWorkspace.m | 3 + lib/+artoa/+gui/+edit/pressure.m | 136 +++++++++++++----- lib/+artoa/+gui/+edit/temperature.m | 135 ++++++++++++----- lib/+artoa/+gui/+edit/timeOfArrival.m | 68 ++++++--- 26 files changed, 554 insertions(+), 143 deletions(-) create mode 100644 lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPoints.m create mode 100644 lib/+artoa/+controller/+edit/+pressure/applyStatusToAllVisible.m create mode 100644 lib/+artoa/+controller/+edit/+pressure/dropSelection.m create mode 100644 lib/+artoa/+controller/+edit/+pressure/pickPoint.m create mode 100644 lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPoints.m create mode 100644 lib/+artoa/+controller/+edit/+temperature/applyStatusToAllVisible.m create mode 100644 lib/+artoa/+controller/+edit/+temperature/dropSelection.m create mode 100644 lib/+artoa/+controller/+edit/+temperature/pickPoint.m create mode 100644 lib/+artoa/+controller/+edit/+timeOfArrival/dropSelection.m create mode 100644 lib/+artoa/+controller/+edit/+timeOfArrival/pickPoint.m create mode 100644 lib/+artoa/+controller/+edit/+timeOfArrival/resetShiftToa.m rename lib/+artoa/+controller/+edit/+timeOfArrival/{shiftToaSelection.m => shiftToa.m} (71%) diff --git a/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPoints.m b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPoints.m new file mode 100644 index 0000000..c78d323 --- /dev/null +++ b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPoints.m @@ -0,0 +1,21 @@ +function [] = applyStatusToAllPoints(pStatus) +%APPLYSTATUSTOALLPOINTS Applies the given status to all points. +% Applies given status to all points. +% +% Parameters: +% pStatusCode (int) The status code that will be applied to the +% selected data. + +global artoaWorkspace artoaGui; + +%% Set status +artoaWorkspace.statusPressure(:) = pStatus; + +%% Update gui +artoa.controller.edit.updateAvailablePlots(); +artoa.controller.updateMenuButtons(); + +[artoaGui.editPressure, artoaWorkspace.editPressure] = ... + artoa.controller.edit.clearSelection(artoaGui.editPressure, artoaWorkspace.editPressure); +end + diff --git a/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllVisible.m b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllVisible.m new file mode 100644 index 0000000..1a6e02a --- /dev/null +++ b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllVisible.m @@ -0,0 +1,31 @@ +function [] = applyStatusToAllVisible(pStatusCode) +%APPLYSTATUSTOALLVISIBLE Applies the given status code to the visible points. +% Applies the given status to the workspace variable. +% +% Parameters: +% pStatusCode (int) The status code that will be applied to the +% selected data. +% + +global artoaWorkspace artoaGui; + +%% Get all visible points +x_boundary = artoaGui.figures.editPressure.CurrentAxes.XLim; +y_boundary = artoaGui.figures.editPressure.CurrentAxes.YLim; + +selection = inpolygon( ... + artoaWorkspace.rafosDate, ... + artoaWorkspace.pressure, ... + [x_boundary(1) x_boundary(2) x_boundary(2) x_boundary(1) x_boundary(1)], ... + [y_boundary(1) y_boundary(1) y_boundary(2) y_boundary(2) y_boundary(1)] ... +); + +%% Set status +artoaWorkspace.statusPressure(selection) = pStatusCode; + +%% Update gui +artoa.controller.edit.updateAvailablePlots(); +artoa.controller.updateMenuButtons(); + +end + diff --git a/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m b/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m index e8625a7..19d00d2 100644 --- a/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m +++ b/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m @@ -14,14 +14,14 @@ global artoaWorkspace artoaGui; %% Check if selection exists -if ~isfield(artoaWorkspace.editPressure, 'selectedPoints') ... - || isempty(artoaWorkspace.editPressure.selectedPoints) +if ~isfield(artoaWorkspace.editPressure, 'userSelection') ... + || isempty(artoaWorkspace.editPressure.userSelection) warndlg('You need to select data by using the "Pick" button first!', 'No data selected'); return; end %% Set status -artoaWorkspace.statusPressure(artoaWorkspace.editPressure.selectedPoints) = pStatusCode; +artoaWorkspace.statusPressure(artoaWorkspace.editPressure.userSelection) = pStatusCode; %% Update gui artoa.controller.edit.updateAvailablePlots(); diff --git a/lib/+artoa/+controller/+edit/+pressure/dropSelection.m b/lib/+artoa/+controller/+edit/+pressure/dropSelection.m new file mode 100644 index 0000000..9ffc01c --- /dev/null +++ b/lib/+artoa/+controller/+edit/+pressure/dropSelection.m @@ -0,0 +1,16 @@ +function [] = dropSelection() +%DROPSELECTION Summary of this function goes here +% Detailed explanation goes here + +global artoaGui artoaWorkspace; + +if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editPressure) + if strcmp(questdlg('Reset current selection?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel') + return; + end + % reset the line and all required fields + [artoaGui.editPressure, artoaWorkspace.editPressure] = artoa.controller.edit.clearSelection(artoaGui.editPressure, artoaWorkspace.editPressure); +end + +end + diff --git a/lib/+artoa/+controller/+edit/+pressure/pickPoint.m b/lib/+artoa/+controller/+edit/+pressure/pickPoint.m new file mode 100644 index 0000000..addaa25 --- /dev/null +++ b/lib/+artoa/+controller/+edit/+pressure/pickPoint.m @@ -0,0 +1,32 @@ +function [] = pickPoint() +%PICKPOINT Lets the user pick a point in the plot. +% Selection can be aborted by using the right mouse button. + +global artoaGui artoaWorkspace; + +%% Check if polygon is already selected + +artoa.controller.edit.pressure.dropSelection(); + +%% Select point by mouse + +[dx, dy, button] = ginput(1); + +% find closest match +% calculate distance +distance = sqrt((artoaWorkspace.rafosDate - dx).^2 + (artoaWorkspace.pressure - dy).^2); +[~, index] = min(distance); +x_closest = artoaWorkspace.rafosDate(index); +y_closest = artoaWorkspace.pressure(index); + +if button ~= 1 + return; +end + +hold on; +artoaGui.editPressure.userSelection = scatter(x_closest, y_closest, 50, [1 1 1]); +hold off; +artoaWorkspace.editPressure.userSelection = index; + +end + diff --git a/lib/+artoa/+controller/+edit/+pressure/pickPolygon.m b/lib/+artoa/+controller/+edit/+pressure/pickPolygon.m index a61ab17..6394619 100644 --- a/lib/+artoa/+controller/+edit/+pressure/pickPolygon.m +++ b/lib/+artoa/+controller/+edit/+pressure/pickPolygon.m @@ -8,22 +8,16 @@ function [] = pickPolygon() global artoaGui artoaWorkspace; -%% Check if polygon is already selected +%% Check if selection is already selected -if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editPressure) - if strcmp(questdlg('Reset current line and pick a new one?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel') - return; - end - % reset the line and all required fields - [artoaGui.editPressure, artoaWorkspace.editPressure] = artoa.controller.edit.clearSelection(artoaGui.editPressure, artoaWorkspace.editPressure); -end +artoa.controller.edit.pressure.dropSelection(); %% Select polygon by mouse x = []; y = []; % draw the line that will be extended on every click -artoaGui.editPressure.selectedPolygon = line( ... +artoaGui.editPressure.userSelection = line( ... NaN, NaN, 'Color', [1 1 1], 'LineStyle', '-' ... ); @@ -41,7 +35,7 @@ while button == 1 continue; end % update the line - set(artoaGui.editPressure.selectedPolygon, 'XData', x, 'YData', y); + set(artoaGui.editPressure.userSelection, 'XData', x, 'YData', y); [dx, dy, button] = ginput(1); end @@ -54,10 +48,10 @@ else return; end % update the line -set(artoaGui.editPressure.selectedPolygon, 'XData', x, 'YData', y); +set(artoaGui.editPressure.userSelection, 'XData', x, 'YData', y); % store the selected points in the workspace for editing -artoaWorkspace.editPressure.selectedPoints = inpolygon( ... +artoaWorkspace.editPressure.userSelection = inpolygon( ... artoaWorkspace.rafosDate, ... artoaWorkspace.pressure, ... x, ... diff --git a/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPoints.m b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPoints.m new file mode 100644 index 0000000..535f34e --- /dev/null +++ b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPoints.m @@ -0,0 +1,21 @@ +function [] = applyStatusToAllPoints(pStatus) +%APPLYSTATUSTOALLPOINTS Applies the given status to all points. +% Applies given status to all points. +% +% Parameters: +% pStatusCode (int) The status code that will be applied to the +% selected data. + +global artoaWorkspace artoaGui; + +%% Set status +artoaWorkspace.statusTemperature(:) = pStatus; + +%% Update gui +artoa.controller.edit.updateAvailablePlots(); +artoa.controller.updateMenuButtons(); + +[artoaGui.editTemperature, artoaWorkspace.editTemperature] = ... + artoa.controller.edit.clearSelection(artoaGui.editTemperature, artoaWorkspace.editTemperature); +end + diff --git a/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllVisible.m b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllVisible.m new file mode 100644 index 0000000..be52ac6 --- /dev/null +++ b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllVisible.m @@ -0,0 +1,31 @@ +function [] = applyStatusToAllVisible(pStatusCode) +%APPLYSTATUSTOALLVISIBLE Applies the given status code to the visible points. +% Applies the given status to the workspace variable. +% +% Parameters: +% pStatusCode (int) The status code that will be applied to the +% selected data. +% + +global artoaWorkspace artoaGui; + +%% Get all visible points +x_boundary = artoaGui.figures.editTemperature.CurrentAxes.XLim; +y_boundary = artoaGui.figures.editTemperature.CurrentAxes.YLim; + +selection = inpolygon( ... + artoaWorkspace.rafosDate, ... + artoaWorkspace.temperature, ... + [x_boundary(1) x_boundary(2) x_boundary(2) x_boundary(1) x_boundary(1)], ... + [y_boundary(1) y_boundary(1) y_boundary(2) y_boundary(2) y_boundary(1)] ... +); + +%% Set status +artoaWorkspace.statusTemperature(selection) = pStatusCode; + +%% Update gui +artoa.controller.edit.updateAvailablePlots(); +artoa.controller.updateMenuButtons(); + +end + diff --git a/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m b/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m index 0a69475..b5e345f 100644 --- a/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m +++ b/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m @@ -14,14 +14,14 @@ global artoaWorkspace artoaGui; %% Check if selection exists -if ~isfield(artoaWorkspace.editTemperature, 'selectedPoints') ... - || isempty(artoaWorkspace.editTemperature.selectedPoints) +if ~isfield(artoaWorkspace.editTemperature, 'userSelection') ... + || isempty(artoaWorkspace.editTemperature.userSelection) warndlg('You need to select data by using the "Pick" button first!', 'No data selected'); return; end %% Set status -artoaWorkspace.statusTemperature(artoaWorkspace.editTemperature.selectedPoints) = pStatusCode; +artoaWorkspace.statusTemperature(artoaWorkspace.editTemperature.userSelection) = pStatusCode; %% Update gui artoa.controller.edit.updateAvailablePlots(); diff --git a/lib/+artoa/+controller/+edit/+temperature/dropSelection.m b/lib/+artoa/+controller/+edit/+temperature/dropSelection.m new file mode 100644 index 0000000..bce2559 --- /dev/null +++ b/lib/+artoa/+controller/+edit/+temperature/dropSelection.m @@ -0,0 +1,16 @@ +function [] = dropSelection() +%DROPSELECTION Summary of this function goes here +% Detailed explanation goes here + +global artoaGui artoaWorkspace; + +if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editTemperature) + if strcmp(questdlg('Reset current selection?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel') + return; + end + % reset the line and all required fields + [artoaGui.editTemperature, artoaWorkspace.editTemperature] = artoa.controller.edit.clearSelection(artoaGui.editTemperature, artoaWorkspace.editTemperature); +end + +end + diff --git a/lib/+artoa/+controller/+edit/+temperature/pickPoint.m b/lib/+artoa/+controller/+edit/+temperature/pickPoint.m new file mode 100644 index 0000000..50eb98e --- /dev/null +++ b/lib/+artoa/+controller/+edit/+temperature/pickPoint.m @@ -0,0 +1,32 @@ +function [] = pickPoint() +%PICKPOINT Lets the user pick a point in the plot. +% Selection can be aborted by using the right mouse button. + +global artoaGui artoaWorkspace; + +%% Check if polygon is already selected + +artoa.controller.edit.temperature.dropSelection(); + +%% Select point by mouse + +[dx, dy, button] = ginput(1); + +% find closest match +% calculate distance +distance = sqrt((artoaWorkspace.rafosDate - dx).^2 + (artoaWorkspace.temperature - dy).^2); +[~, index] = min(distance); +x_closest = artoaWorkspace.rafosDate(index); +y_closest = artoaWorkspace.temperature(index); + +if button ~= 1 + return; +end + +hold on; +artoaGui.editTemperature.userSelection = scatter(x_closest, y_closest, 50, [1 1 1]); +hold off; +artoaWorkspace.editTemperature.userSelection = index; + +end + diff --git a/lib/+artoa/+controller/+edit/+temperature/pickPolygon.m b/lib/+artoa/+controller/+edit/+temperature/pickPolygon.m index 1907ddf..aca9d5d 100644 --- a/lib/+artoa/+controller/+edit/+temperature/pickPolygon.m +++ b/lib/+artoa/+controller/+edit/+temperature/pickPolygon.m @@ -23,7 +23,7 @@ x = []; y = []; % draw the line that will be extended on every click -artoaGui.editTemperature.selectedPolygon = line( ... +artoaGui.editTemperature.userSelection = line( ... NaN, NaN, 'Color', [1 1 1], 'LineStyle', '-' ... ); @@ -41,7 +41,7 @@ while button == 1 continue; end % update the line - set(artoaGui.editTemperature.selectedPolygon, 'XData', x, 'YData', y); + set(artoaGui.editTemperature.userSelection, 'XData', x, 'YData', y); [dx, dy, button] = ginput(1); end @@ -54,10 +54,10 @@ else return; end % update the line -set(artoaGui.editTemperature.selectedPolygon, 'XData', x, 'YData', y); +set(artoaGui.editTemperature.userSelection, 'XData', x, 'YData', y); % store the selected points in the workspace for editing -artoaWorkspace.editTemperature.selectedPoints = inpolygon( ... +artoaWorkspace.editTemperature.userSelection = inpolygon( ... artoaWorkspace.rafosDate, ... artoaWorkspace.temperature, ... x, ... diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m b/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m index 77026a9..eab9e18 100644 --- a/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m +++ b/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m @@ -34,7 +34,7 @@ end % update sound source of selected points artoaWorkspace.toaData.soundSource( ... - artoaWorkspace.editTimeOfArrival.selectedPoints ... + artoaWorkspace.editTimeOfArrival.userSelection ... ) = soundsources(index); diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/dropSelection.m b/lib/+artoa/+controller/+edit/+timeOfArrival/dropSelection.m new file mode 100644 index 0000000..eeca413 --- /dev/null +++ b/lib/+artoa/+controller/+edit/+timeOfArrival/dropSelection.m @@ -0,0 +1,16 @@ +function [] = dropSelection() +%DROPSELECTION Summary of this function goes here +% Detailed explanation goes here + +global artoaGui artoaWorkspace; + +if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editTimeOfArrival) + if strcmp(questdlg('Reset current selection?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel') + return; + end + % reset the line and all required fields + [artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival] = artoa.controller.edit.clearSelection(artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival); +end + +end + diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/pickPoint.m b/lib/+artoa/+controller/+edit/+timeOfArrival/pickPoint.m new file mode 100644 index 0000000..e6173cb --- /dev/null +++ b/lib/+artoa/+controller/+edit/+timeOfArrival/pickPoint.m @@ -0,0 +1,32 @@ +function [] = pickPoint() +%PICKPOINT Lets the user pick a point in the plot. +% Selection can be aborted by using the right mouse button. + +global artoaGui artoaWorkspace; + +%% Check if polygon is already selected + +artoa.controller.edit.timeOfArrival.dropSelection(); + +%% Select point by mouse + +[dx, dy, button] = ginput(1); + +% find closest match +% calculate distance +distance = sqrt((artoaWorkspace.toaData.toaDate - dx).^2 + (artoaWorkspace.toaData.toa - dy).^2); +[~, index] = min(distance); +x_closest = artoaWorkspace.toaData.toaDate(index); +y_closest = artoaWorkspace.toaData.toa(index); + +if button ~= 1 + return; +end + +hold on; +artoaGui.editTimeOfArrival.userSelection = scatter(x_closest, y_closest, 50, [1 1 1]); +hold off; +artoaWorkspace.editTimeOfArrival.userSelection = index; + +end + diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/pickPolygon.m b/lib/+artoa/+controller/+edit/+timeOfArrival/pickPolygon.m index c0d0fe4..0b7e3ba 100644 --- a/lib/+artoa/+controller/+edit/+timeOfArrival/pickPolygon.m +++ b/lib/+artoa/+controller/+edit/+timeOfArrival/pickPolygon.m @@ -10,20 +10,14 @@ global artoaGui artoaWorkspace; %% Check if polygon is already selected -if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editTimeOfArrival) - if strcmp(questdlg('Reset current line and pick a new one?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel') - return; - end - % reset the line and all required fields - [artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival] = artoa.controller.edit.clearSelection(artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival); -end +artoa.controller.edit.timeOfArrival.dropSelection(); %% Select polygon by mouse x = []; y = []; % draw the line that will be extended on every click -artoaGui.editTimeOfArrival.selectedPolygon = line( ... +artoaGui.editTimeOfArrival.userSelection = line( ... NaN, NaN, 'Color', [1 1 1], 'LineStyle', '-' ... ); @@ -41,7 +35,7 @@ while button == 1 continue; end % update the line - set(artoaGui.editTimeOfArrival.selectedPolygon, 'XData', x, 'YData', y); + set(artoaGui.editTimeOfArrival.userSelection, 'XData', x, 'YData', y); [dx, dy, button] = ginput(1); end @@ -54,10 +48,10 @@ else return; end % update the line -set(artoaGui.editTimeOfArrival.selectedPolygon, 'XData', x, 'YData', y); +set(artoaGui.editTimeOfArrival.userSelection, 'XData', x, 'YData', y); % store the selected points in the workspace for editing -artoaWorkspace.editTimeOfArrival.selectedPoints = inpolygon( ... +artoaWorkspace.editTimeOfArrival.userSelection = inpolygon( ... artoaWorkspace.toaData.toaDate, ... artoaWorkspace.toaData.toa, ... x, ... diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m b/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m index b4bc6aa..ce713b2 100644 --- a/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m +++ b/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m @@ -91,7 +91,7 @@ set(titleHandle, 'Color', 'blue'); % set x and y label xlabel(artoaGui.figures.editTimeOfArrival.CurrentAxes, 'Message Date', 'FontSize', 10); -ylabel(artoaGui.figures.editTimeOfArrival.CurrentAxes, 'Time of arrival', 'FontSize', 10); +ylabel(artoaGui.figures.editTimeOfArrival.CurrentAxes, 'Time of arrival rel. to window start time', 'FontSize', 10); hold off; diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/resetShiftToa.m b/lib/+artoa/+controller/+edit/+timeOfArrival/resetShiftToa.m new file mode 100644 index 0000000..37bd316 --- /dev/null +++ b/lib/+artoa/+controller/+edit/+timeOfArrival/resetShiftToa.m @@ -0,0 +1,22 @@ +function [] = resetShiftToa() +%SHIFTTOA Summary of this function goes here +% Detailed explanation goes here + +global artoaGui artoaWorkspace artoaDataInput; + +%% Ask for reset +if strcmp(questdlg('Reset shift?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel') + return; +end + + +artoaWorkspace.toaData.toa = artoaDataInput.toaData.toa; + +[artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival] = ... + artoa.controller.edit.clearSelection(artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival); + +artoa.controller.edit.updateAvailablePlots(); + + +end + diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/shiftToaSelection.m b/lib/+artoa/+controller/+edit/+timeOfArrival/shiftToa.m similarity index 71% rename from lib/+artoa/+controller/+edit/+timeOfArrival/shiftToaSelection.m rename to lib/+artoa/+controller/+edit/+timeOfArrival/shiftToa.m index 25c3d5b..54c3c5e 100644 --- a/lib/+artoa/+controller/+edit/+timeOfArrival/shiftToaSelection.m +++ b/lib/+artoa/+controller/+edit/+timeOfArrival/shiftToa.m @@ -1,16 +1,9 @@ -function [] = shiftToaSelection() +function [] = shiftToa() %SHIFTTOA Summary of this function goes here % Detailed explanation goes here global artoaGui artoaWorkspace; -%% Select polygon - -if ~artoa.controller.edit.dataPointsSelected(artoaWorkspace.editTimeOfArrival) - warndlg('You need to select data by using the "Pick" button first!', 'No data selected'); - return; -end - %% Ask for shift value answer = inputdlg({'Enter shift value:'}, 'Shift TOAs', [1 35], {'0'}); diff --git a/lib/+artoa/+controller/+edit/clearSelection.m b/lib/+artoa/+controller/+edit/clearSelection.m index 721e7ea..4b8e802 100644 --- a/lib/+artoa/+controller/+edit/clearSelection.m +++ b/lib/+artoa/+controller/+edit/clearSelection.m @@ -5,15 +5,15 @@ function [guiHandle, workspaceStruct] = clearSelection(pGuiHandle, pWorkspaceStr guiHandle = pGuiHandle; workspaceStruct = pWorkspaceStruct; -%% Remove polygon from gui -if isfield(guiHandle, 'selectedPolygon') - delete(guiHandle.selectedPolygon); - guiHandle = rmfield(guiHandle, 'selectedPolygon'); +%% Remove selection from gui +if isfield(guiHandle, 'userSelection') + delete(guiHandle.userSelection); + guiHandle = rmfield(guiHandle, 'userSelection'); end -%% Remove the polygon field from workspace -if (isfield(workspaceStruct, 'selectedPoints')) - workspaceStruct = rmfield(workspaceStruct, 'selectedPoints'); +%% Remove the selection field from workspace +if (isfield(workspaceStruct, 'userSelection')) + workspaceStruct = rmfield(workspaceStruct, 'userSelection'); end end diff --git a/lib/+artoa/+controller/+edit/dataPointsSelected.m b/lib/+artoa/+controller/+edit/dataPointsSelected.m index d126a99..b520501 100644 --- a/lib/+artoa/+controller/+edit/dataPointsSelected.m +++ b/lib/+artoa/+controller/+edit/dataPointsSelected.m @@ -6,7 +6,7 @@ function [dataIsSelected] = dataPointsSelected(pHandle) dataIsSelected = false; %% Check required fields -if ~isfield(pHandle, 'selectedPoints') || isempty(pHandle.selectedPoints) +if ~isfield(pHandle, 'userSelection') || isempty(pHandle.userSelection) return; end diff --git a/lib/+artoa/+controller/+file/saveInterim.m b/lib/+artoa/+controller/+file/saveInterim.m index bbedf13..432b95e 100644 --- a/lib/+artoa/+controller/+file/saveInterim.m +++ b/lib/+artoa/+controller/+file/saveInterim.m @@ -14,7 +14,7 @@ filter = artoa.data.getMember(artoaDataInput, {'ini', 'filemask', 'interim'}, '* filepath = fullfile(pathname, filename); if isfile(filepath) - save(filename, 'artoaWorkspace', 'artoaDataInput', 'artoaDataOutput'); + save(filepath, 'artoaWorkspace', 'artoaDataInput', 'artoaDataOutput'); else warning([mfilename ': Save interim file failed because the selected file is not a file!']); end diff --git a/lib/+artoa/+controller/copyRfbToWorkspace.m b/lib/+artoa/+controller/copyRfbToWorkspace.m index a1b9402..c04e6f2 100644 --- a/lib/+artoa/+controller/copyRfbToWorkspace.m +++ b/lib/+artoa/+controller/copyRfbToWorkspace.m @@ -55,6 +55,9 @@ artoaWorkspace.toaData.soundSource = cell( ... 1 ... ); +% Copy the original toaData object to the input, so that it easily can be +% restored later on +artoaDataInput.toaData = artoaWorkspace.toaData; %% TEMPERATURE artoaWorkspace.temperature = artoaDataInput.rfb.DATA(:, artoaDataInput.rfb.VARIABLE_LIST.temperature); diff --git a/lib/+artoa/+gui/+edit/pressure.m b/lib/+artoa/+gui/+edit/pressure.m index bf5e4c3..c949d8e 100644 --- a/lib/+artoa/+gui/+edit/pressure.m +++ b/lib/+artoa/+gui/+edit/pressure.m @@ -34,85 +34,149 @@ set(gca, 'Position', [0.13 0.11 0.706 0.815]); left = .85; width = .14; -buttonHeight = .05; -artoaGui.editPressure.frameControls = uipanel( ... - 'Title', 'Data', ... +%% PICK +pickButtonHeight = .25; + +artoaGui.editPressure.frameControlsPick = uipanel( ... + 'Title', 'Pick', ... 'Units', 'normalized', ... 'BackgroundColor', 'white', ... - 'Position', [left .11 width .815] ... + 'Position', [left .72 width .2] ... ); -artoaGui.editPressure.buttonPick = uicontrol( ... - 'Parent', artoaGui.editPressure.frameControls, ... - 'String', 'Pick', ... +artoaGui.editPressure.buttonPickPolygon = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsPick, ... + 'String', 'Polygon', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .9 .69 buttonHeight], ... + 'Position', [.156 .65 .69 pickButtonHeight], ... 'CallBack', 'artoa.controller.edit.pressure.pickPolygon();' ... ); +artoaGui.editPressure.buttonPickPoint = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsPick, ... + 'String', 'Point', ... + 'Style', 'PushButton', ... + 'FontSize', 8, ... + 'Units', 'normalized', ... + 'Position', [.156 .35 .69 pickButtonHeight], ... + 'CallBack', 'artoa.controller.edit.pressure.pickPoint();' ... +); + +artoaGui.editPressure.buttonDropSelection = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsPick, ... + 'String', 'Drop', ... + 'Style', 'PushButton', ... + 'FontSize', 8, ... + 'Units', 'normalized', ... + 'Position', [.156 .05 .69 pickButtonHeight], ... + 'CallBack', 'artoa.controller.edit.pressure.dropSelection();' ... +); + +%% APPLY +applyButtonHeight = .25; + +artoaGui.editPressure.frameControlsApply = uipanel( ... + 'Title', 'Apply', ... + 'Units', 'normalized', ... + 'BackgroundColor', 'white', ... + 'Position', [left .5 width .2] ... +); + artoaGui.editPressure.buttonApply = uicontrol( ... - 'Parent', artoaGui.editPressure.frameControls, ... - 'String', 'Apply', ... + 'Parent', artoaGui.editPressure.frameControlsApply, ... + 'String', 'Selected', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .85 .69 buttonHeight], ... + 'Position', [.156 .65 .69 applyButtonHeight], ... 'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(1);' ... ); -artoaGui.editPressure.buttonReset = uicontrol( ... - 'Parent', artoaGui.editPressure.frameControls, ... - 'String', 'Reset', ... +artoaGui.editPressure.buttonApplyAllVisible = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsApply, ... + 'String', 'All visible', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .8 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(0);' ... + 'Position', [.156 .35 .69 applyButtonHeight], ... + 'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllVisible(1);' ... ); -artoaGui.editPressure.buttonDelete = uicontrol( ... - 'Parent', artoaGui.editPressure.frameControls, ... - 'String', 'Delete', ... +artoaGui.editPressure.buttonApplyAll = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsApply, ... + 'String', 'All', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .7 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(2);' ... + 'Position', [.156 .05 .69 applyButtonHeight], ... + 'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllPoints(1);' ... ); -artoaGui.editPressure.buttonApplyAll = uicontrol( ... - 'Parent', artoaGui.editPressure.frameControls, ... - 'String', 'Apply all', ... + +%% RESET +resetButtonHeight = .25; + +artoaGui.editPressure.frameControlsReset = uipanel( ... + 'Title', 'Reset', ... + 'Units', 'normalized', ... + 'BackgroundColor', 'white', ... + 'Position', [left .28 width .2] ... +); + +artoaGui.editPressure.buttonReset = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsReset, ... + 'String', 'Selected', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .5 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllPointsExceptDeleted(1);' ... + 'Position', [.156 .65 .69 resetButtonHeight], ... + 'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(0);' ... ); -artoaGui.editPressure.buttonResetAll = uicontrol( ... - 'Parent', artoaGui.editPressure.frameControls, ... - 'String', 'Reset all', ... +artoaGui.editPressure.buttonResetAllVisible = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsReset, ... + 'String', 'All visible', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .45 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllPointsExceptDeleted(0);' ... + 'Position', [.156 .35 .69 resetButtonHeight], ... + 'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllVisible(0);' ... ); -artoaGui.editPressure.buttonReplot = uicontrol( ... - 'Parent', artoaGui.editPressure.frameControls, ... - 'String', 'Replot', ... +artoaGui.editPressure.buttonResetAll = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsReset, ... + 'String', 'All', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .05 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.pressure.plot();' ... + 'Position', [.156 .05 .69 resetButtonHeight], ... + 'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllPoints(0);' ... ); +%% DELETE +deleteButtonHeight = .4; + +artoaGui.editPressure.frameControlsDelete = uipanel( ... + 'Title', 'Delete', ... + 'Units', 'normalized', ... + 'BackgroundColor', 'white', ... + 'Position', [left .11 width .15] ... +); + +artoaGui.editPressure.buttonDelete = uicontrol( ... + 'Parent', artoaGui.editPressure.frameControlsDelete, ... + 'String', 'Selected', ... + 'Style', 'PushButton', ... + 'FontSize', 8, ... + 'Units', 'normalized', ... + 'Position', [.156 .3 .69 deleteButtonHeight], ... + 'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(2);' ... +); +%% Enable zoom +zoom on; end diff --git a/lib/+artoa/+gui/+edit/temperature.m b/lib/+artoa/+gui/+edit/temperature.m index 10e685a..94e559d 100644 --- a/lib/+artoa/+gui/+edit/temperature.m +++ b/lib/+artoa/+gui/+edit/temperature.m @@ -34,84 +34,149 @@ set(gca, 'Position', [0.13 0.11 0.706 0.815]); left = .85; width = .14; -buttonHeight = .05; -artoaGui.editTemperature.frameControls = uipanel( ... - 'Title', 'Data', ... +%% PICK +pickButtonHeight = .25; + +artoaGui.editTemperature.frameControlsPick = uipanel( ... + 'Title', 'Pick', ... 'Units', 'normalized', ... 'BackgroundColor', 'white', ... - 'Position', [left .11 width .815] ... + 'Position', [left .72 width .2] ... ); -artoaGui.editTemperature.buttonPick = uicontrol( ... - 'Parent', artoaGui.editTemperature.frameControls, ... - 'String', 'Pick', ... +artoaGui.editTemperature.buttonPickPolygon = uicontrol( ... + 'Parent', artoaGui.editTemperature.frameControlsPick, ... + 'String', 'Polygon', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .9 .69 buttonHeight], ... + 'Position', [.156 .65 .69 pickButtonHeight], ... 'CallBack', 'artoa.controller.edit.temperature.pickPolygon();' ... ); +artoaGui.editTemperature.buttonPickPoint = uicontrol( ... + 'Parent', artoaGui.editTemperature.frameControlsPick, ... + 'String', 'Point', ... + 'Style', 'PushButton', ... + 'FontSize', 8, ... + 'Units', 'normalized', ... + 'Position', [.156 .35 .69 pickButtonHeight], ... + 'CallBack', 'artoa.controller.edit.temperature.pickPoint();' ... +); + +artoaGui.editTemperature.buttonDropSelection = uicontrol( ... + 'Parent', artoaGui.editTemperature.frameControlsPick, ... + 'String', 'Drop', ... + 'Style', 'PushButton', ... + 'FontSize', 8, ... + 'Units', 'normalized', ... + 'Position', [.156 .05 .69 pickButtonHeight], ... + 'CallBack', 'artoa.controller.edit.temperature.dropSelection();' ... +); + +%% APPLY +applyButtonHeight = .25; + +artoaGui.editTemperature.frameControlsApply = uipanel( ... + 'Title', 'Apply', ... + 'Units', 'normalized', ... + 'BackgroundColor', 'white', ... + 'Position', [left .5 width .2] ... +); + artoaGui.editTemperature.buttonApply = uicontrol( ... - 'Parent', artoaGui.editTemperature.frameControls, ... - 'String', 'Apply', ... + 'Parent', artoaGui.editTemperature.frameControlsApply, ... + 'String', 'Selected', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .85 .69 buttonHeight], ... + 'Position', [.156 .65 .69 applyButtonHeight], ... 'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(1);' ... ); -artoaGui.editTemperature.buttonReset = uicontrol( ... - 'Parent', artoaGui.editTemperature.frameControls, ... - 'String', 'Reset', ... +artoaGui.editTemperature.buttonApplyAllVisible = uicontrol( ... + 'Parent', artoaGui.editTemperature.frameControlsApply, ... + 'String', 'All visible', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .8 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(0);' ... + 'Position', [.156 .35 .69 applyButtonHeight], ... + 'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllVisible(1);' ... ); -artoaGui.editTemperature.buttonDelete = uicontrol( ... - 'Parent', artoaGui.editTemperature.frameControls, ... - 'String', 'Delete', ... +artoaGui.editTemperature.buttonApplyAll = uicontrol( ... + 'Parent', artoaGui.editTemperature.frameControlsApply, ... + 'String', 'All', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .7 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(2);' ... + 'Position', [.156 .05 .69 applyButtonHeight], ... + 'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllPoints(1);' ... ); -artoaGui.editTemperature.buttonApplyAll = uicontrol( ... - 'Parent', artoaGui.editTemperature.frameControls, ... - 'String', 'Apply all', ... +%% RESET +resetButtonHeight = .25; + +artoaGui.editTemperature.frameControlsReset = uipanel( ... + 'Title', 'Reset', ... + 'Units', 'normalized', ... + 'BackgroundColor', 'white', ... + 'Position', [left .28 width .2] ... +); + +artoaGui.editTemperature.buttonReset = uicontrol( ... + 'Parent', artoaGui.editTemperature.frameControlsReset, ... + 'String', 'Selected', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .5 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllPointsExceptDeleted(1);' ... + 'Position', [.156 .65 .69 resetButtonHeight], ... + 'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(0);' ... +); + +artoaGui.editTemperature.buttonResetAllVisible = uicontrol( ... + 'Parent', artoaGui.editTemperature.frameControlsReset, ... + 'String', 'All visible', ... + 'Style', 'PushButton', ... + 'FontSize', 8, ... + 'Units', 'normalized', ... + 'Position', [.156 .35 .69 resetButtonHeight], ... + 'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllVisible(0);' ... ); artoaGui.editTemperature.buttonResetAll = uicontrol( ... - 'Parent', artoaGui.editTemperature.frameControls, ... - 'String', 'Reset all', ... + 'Parent', artoaGui.editTemperature.frameControlsReset, ... + 'String', 'All', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .45 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllPointsExceptDeleted(0);' ... + 'Position', [.156 .05 .69 resetButtonHeight], ... + 'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllPoints(0);' ... +); + +%% DELETE +deleteButtonHeight = .4; + +artoaGui.editTemperature.frameControlsDelete = uipanel( ... + 'Title', 'Delete', ... + 'Units', 'normalized', ... + 'BackgroundColor', 'white', ... + 'Position', [left .11 width .15] ... ); -artoaGui.editTemperature.buttonReplot = uicontrol( ... - 'Parent', artoaGui.editTemperature.frameControls, ... - 'String', 'Replot', ... +artoaGui.editTemperature.buttonDelete = uicontrol( ... + 'Parent', artoaGui.editTemperature.frameControlsDelete, ... + 'String', 'Selected', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .05 .69 buttonHeight], ... - 'CallBack', 'artoa.controller.edit.temperature.plot();' ... + 'Position', [.156 .3 .69 deleteButtonHeight], ... + 'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(2);' ... ); +%% Enable zoom +zoom on; + end diff --git a/lib/+artoa/+gui/+edit/timeOfArrival.m b/lib/+artoa/+gui/+edit/timeOfArrival.m index 893c5cf..9b98175 100644 --- a/lib/+artoa/+gui/+edit/timeOfArrival.m +++ b/lib/+artoa/+gui/+edit/timeOfArrival.m @@ -34,45 +34,71 @@ set(gca, 'Position', [0.13 0.11 0.706 0.815]); left = .85; width = .14; -buttonHeight = .05; -buttonMarginLeftRight = .005; -%% Data frame -artoaGui.editTimeOfArrival.frameControls = uipanel( ... - 'Title', 'Data', ... +%% Selection frame +artoaGui.editTimeOfArrival.frameControlsSelect = uipanel( ... + 'Title', 'Select', ... 'Units', 'normalized', ... 'BackgroundColor', 'white', ... - 'Position', [left .6 width .3] ... + 'Position', [left .6 width .2] ... ); -artoaGui.editTimeOfArrival.buttonPick = uicontrol( ... - 'Parent', artoaGui.editTimeOfArrival.frameControls, ... - 'String', 'Pick', ... +artoaGui.editTimeOfArrival.buttonPickPolygon = uicontrol( ... + 'Parent', artoaGui.editTimeOfArrival.frameControlsSelect, ... + 'String', 'Polygon', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .75 .69 .2], ... + 'Position', [.156 .7 .69 .2], ... 'CallBack', 'artoa.controller.edit.timeOfArrival.pickPolygon();' ... ); -artoaGui.editTimeOfArrival.buttonShift = uicontrol( ... - 'Parent', artoaGui.editTimeOfArrival.frameControls, ... - 'String', 'Shift', ... +artoaGui.editTimeOfArrival.buttonPickPoint = uicontrol( ... + 'Parent', artoaGui.editTimeOfArrival.frameControlsSelect, ... + 'String', 'Point', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .5 .69 .2], ... - 'CallBack', 'artoa.controller.edit.timeOfArrival.shiftToaSelection();' ... + 'Position', [.156 .4 .69 .2], ... + 'CallBack', 'artoa.controller.edit.timeOfArrival.pickPoint();' ... ); -artoaGui.editTimeOfArrival.buttonReplot = uicontrol( ... - 'Parent', artoaGui.editTimeOfArrival.frameControls, ... - 'String', 'Replot', ... +artoaGui.editTimeOfArrival.buttonDropSelection = uicontrol( ... + 'Parent', artoaGui.editTimeOfArrival.frameControlsSelect, ... + 'String', 'Drop', ... 'Style', 'PushButton', ... 'FontSize', 8, ... 'Units', 'normalized', ... - 'Position', [.156 .05 .69 .2], ... - 'CallBack', 'artoa.controller.edit.timeOfArrival.plot();' ... + 'Position', [.156 .1 .69 .2], ... + 'CallBack', 'artoa.controller.edit.timeOfArrival.dropSelection();' ... +); + +%% Shift frame +artoaGui.editTimeOfArrival.frameControlsShift = uipanel( ... + 'Title', 'Shift', ... + 'Units', 'normalized', ... + 'BackgroundColor', 'white', ... + 'Position', [left .35 width .2] ... +); + +artoaGui.editTimeOfArrival.buttonShiftApply = uicontrol( ... + 'Parent', artoaGui.editTimeOfArrival.frameControlsShift, ... + 'String', 'Apply', ... + 'Style', 'PushButton', ... + 'FontSize', 8, ... + 'Units', 'normalized', ... + 'Position', [.156 .6 .69 .3], ... + 'CallBack', 'artoa.controller.edit.timeOfArrival.shiftToa();' ... +); + +artoaGui.editTimeOfArrival.buttonShiftResetSelection = uicontrol( ... + 'Parent', artoaGui.editTimeOfArrival.frameControlsShift, ... + 'String', 'Reset', ... + 'Style', 'PushButton', ... + 'FontSize', 8, ... + 'Units', 'normalized', ... + 'Position', [.156 .2 .69 .3], ... + 'CallBack', 'artoa.controller.edit.timeOfArrival.resetShiftToa();' ... ); %% Sound source frame @@ -104,6 +130,8 @@ artoaGui.editTimeOfArrival.buttonDelete = uicontrol( ... 'CallBack', 'artoa.controller.edit.timeOfArrival.removeSoundSourceFromSelectedPoints();' ... ); +%% Enable zoom +zoom on; end -- GitLab