offsets.m 4.11 KiB
function [] = offsets(pCallbacks)
%OFFSETDETAILS Creates the offset details window
% Detailed explanation goes here
global artoaGui artoaWorkspace;
%% Initialize required variables
windowTitle = [ 'ARTOA4 - Float ' num2str(artoaWorkspace.float.floatname) ' - Offsets' ];
availableCallbacks = { ...
'CloseRequestFcn', ...
'tableSoundsourceOffsetsSelect', ...
'tableSoundsourceOffsetsEdit', ...
'tableSoundspeedEdit', ...
'buttonCalculateOffsets', ...
'checkboxUseOffsets', ...
'buttonCopyFromOptimum', ...
'buttonCopyFromMeasured', ...
'buttonUndoLastCopy' ...
};
for i = 1:length(availableCallbacks) % check if a callback is undefined
if ~isfield(pCallbacks, availableCallbacks{i})
pCallbacks.(availableCallbacks{i}) = @(~, ~) false;
end
end
%% Initialize offset details gui
artoaGui.figures.editOffsets = figure( ...
'Name', windowTitle, ...
'NumberTitle', 'off', ...
'MenuBar','none', ...
'Units', 'characters' ...
);
% adjust width
artoaGui.figures.editOffsets.Position(3) = 120;
artoaGui.figures.editOffsets.Position(4) = 35;
artoaGui.editOffsets = struct();
set( ...
artoaGui.figures.editOffsets, ...
'CloseRequestFcn', ...
@artoa.controller.edit.offsets.close ...
);
%% Setup position variables
left = 0.03;
fullwidth = 1 - (2 * left);
%% Initialize offset table
artoaGui.editOffsets.tableSoundsourceOffsets = uitable( ...
artoaGui.figures.editOffsets, ...
'Units', 'normalized', ...
'Position', [left, 0.45, fullwidth, 0.525], ...
'ColumnEditable', true, ...
'CellSelectionCallback', pCallbacks.tableSoundsourceOffsetsSelect, ...
'CellEditCallback', pCallbacks.tableSoundsourceOffsetsEdit ...
);
%% Initialize soundspeed table
artoaGui.editOffsets.tableSoundspeed = uitable( ...
artoaGui.figures.editOffsets, ...
'Units', 'normalized', ...
'Position', [left, 0.35, fullwidth, 0.1], ...
'ColumnEditable', true, ...'CellSelectionCallback', pCallbacks.tableSoundsourceOffsetsSelect, ...
'CellEditCallback', pCallbacks.tableSoundspeedEdit ...
);
%% Optimum offsets frame
artoaGui.editOffsets.frameOptimumOffsets = uipanel( ...
'Parent', artoaGui.figures.editOffsets, ...
'Title', 'Offset controls', ...
'Units', 'normalized', ...
'BackgroundColor', 'white', ...
'Position', [left .025 fullwidth .3] ...
);
%% Setup calculate offsets button
artoaGui.editOffsets.buttonCalculateOffsets = uicontrol( ...
'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
'String', 'Calculate offsets', ...
'Style', 'PushButton', ...
'FontSize', 8, ...
'Units', 'normalized', ...
'Position', [left .25 fullwidth/2 .2], ...
'CallBack', pCallbacks.buttonCalculateOffsets ...
);
artoaGui.editOffsets.checkboxUseOffsets = uicontrol( ...
'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
'String', 'Use offsets', ...
'Style', 'checkbox', ...
'FontSize', 8, ...
'Units', 'normalized', ...
'Position', [left .75 fullwidth/2 .2], ...
'CallBack', pCallbacks.checkboxUseOffsets ...
);
artoaGui.editOffsets.buttonCopyFromMeasured = uicontrol( ...
'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
'String', 'Copy Measured to Empirical', ...
'Style', 'PushButton', ...
'FontSize', 8, ...
'Units', 'normalized', ...
'Position', [(1.5*left + fullwidth/2) .75 fullwidth/2 .2], ...
'CallBack', pCallbacks.buttonCopyFromMeasured ...
);
artoaGui.editOffsets.buttonCopyFromOptimum = uicontrol( ...
'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
'String', 'Copy Optimum to Empirical', ...
'Style', 'PushButton', ...
'FontSize', 8, ...
'Units', 'normalized', ...
'Position', [(1.5*left + fullwidth/2) .5 fullwidth/2 .2], ...
'CallBack', pCallbacks.buttonCopyFromOptimum ...
);
artoaGui.editOffsets.buttonUndoLastCopy = uicontrol( ...
'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
'String', 'Undo last copy', ...
'Style', 'PushButton', ...
'FontSize', 8, ...
'Units', 'normalized', ...
'Position', [(1.5*left + fullwidth/2) .25 fullwidth/2 .2], ...
'CallBack', pCallbacks.buttonUndoLastCopy ...
);
end