From 0be27efa5838882644f97dfb70f5b70825db896a Mon Sep 17 00:00:00 2001 From: giuliaghirardini <giulia.ghirardini@skywarder.eu> Date: Tue, 25 Feb 2025 13:10:23 +0100 Subject: [PATCH] [fixes][utilities] Implemented method to take figures from background to foreground when selected. Improved graphics --- functions/utilities/exportFigureGUI.m | 107 ++++++++++++++++---------- 1 file changed, 68 insertions(+), 39 deletions(-) diff --git a/functions/utilities/exportFigureGUI.m b/functions/utilities/exportFigureGUI.m index 6654c01..5d72888 100644 --- a/functions/utilities/exportFigureGUI.m +++ b/functions/utilities/exportFigureGUI.m @@ -10,11 +10,24 @@ figWidth = 800; figHeight = 700; % Calculate position to center the figure -figX = (screenSize(3) - figWidth) / 2; +figX = (screenSize(3) - figWidth) / 10; figY = (screenSize(4) - figHeight) / 2; + +% Get the screen size +screenSize = get(0, 'ScreenSize'); +screenWidth = screenSize(3); +screenHeight = screenSize(4); + +% Define an offset from the top of the screen +topOffset = figY; +leftOffset = figX; + +% Calculate the position for the new figures +positionGui = [leftOffset, screenHeight-figHeight-topOffset, figWidth, figHeight]; + %% Create main figure window -fig = uifigure('Name', 'Export Standardized Figure', 'Position', [figX, figY, figWidth, figHeight]); +fig = uifigure('Name', 'Export Standardized Figure', 'Position', positionGui); % Add title titleLabel = uilabel(fig); @@ -45,6 +58,7 @@ percTextField = uieditfield(fig, 'numeric', 'Value', 0.75, 'Position', [670 170 %%% Create a panel to group flags flagsPanel = uipanel(fig, ... 'Title', 'Flags', ... + 'FontWeight', 'bold', ... 'FontSize', 12, ... 'Position', [40 400 720 70]); % Position: [x, y, width, height] @@ -68,6 +82,7 @@ satelliteMapColorsBox = uicheckbox(flagsPanel, 'Text', 'Satellite Map Colors', ' %%% Create a panel to group export settings exportPanel = uipanel(fig, ... 'Title', 'Export setting', ... + 'FontWeight', 'bold', ... 'FontSize', 12, ... 'Position', [40 310 720 70]); % Position: [x, y, width, height] @@ -83,6 +98,7 @@ overwriteFigureBox = uicheckbox(exportPanel, 'Text', 'Overwrite', 'Value', false %%% Create a panel to group dropdown menus legendPanel = uipanel(fig, ... 'Title', 'Legend', ... + 'FontWeight', 'bold', ... 'FontSize', 12, ... 'Position', [40 220 720 70]); % Position: [x, y, width, height] @@ -111,11 +127,6 @@ figHandles = findFigures(fig); figNames = getFigureNames(figHandles); % Dropdown menu to select figure -% uilabel(fig, 'Text', 'Select Figure:', 'Position', [50, 500, 100, 30]); -% figSelectionDropDown = uidropdown(fig, ... -% 'Items', figNames, ... -% 'Position', [150, 500, 200, 30]); - uilabel(fig, 'Text', 'Select Figure:', 'Position', [50, 500, 100, 30]); figSelectionDropDown = uidropdown(fig, ... 'Items', figNames, ... @@ -131,16 +142,19 @@ end % Button to update the dropdown menu updateButton = uibutton(fig, 'Text', 'Update Figures', ... 'Position', [370, 500, 120, 30], ... + 'BackgroundColor', '#9fc9eb', ... 'ButtonPushedFcn', @(src, event) updateDropdown()); % Submit Button exportButton = uibutton(fig, 'Text', 'Export Figure', ... 'Position', [350 100 100 30], ... + 'BackgroundColor', '#cbffbe', ... 'ButtonPushedFcn', @(src, event) exportFigureCallback()); % preview image to export button previewButton = uibutton(fig, 'Text', 'Update preview', ... 'Position', [500, 500, 120, 30], ... + 'BackgroundColor', '#9fc9eb', ... 'ButtonPushedFcn', @(src, event) previewFigureCallback()); %% Functions @@ -165,14 +179,33 @@ previewButton = uibutton(fig, 'Text', 'Update preview', ... % Get selected figure from dropdown selectedIdx = figSelectionDropDown.Value; selectedFig = []; + + for i = 1:length(figHandles) + figSeries = figHandles(i); + + % Set the default figure position + pos = get(figSeries, 'Position'); % gives x left, y bottom, width, height + width = pos(3); + height = pos(4); + leftOffsetNew = screenWidth/5; + topOffsetNew = screenHeight/3; + + positionCurrentFig = [screenWidth-width-leftOffsetNew, ... + screenHeight-height-topOffsetNew, width, height]; + set(figSeries, 'Position', positionCurrentFig); + end % Find the selected figure for i = 1:length(figHandles) if strcmp(figSelectionDropDown.Items{i}, selectedIdx) selectedFig = figHandles(i); + + % Move from background to foreground current figure + uistack(selectedFig,'top') break; end end + updateDropdown(); if isempty(selectedFig) && isscalar(figHandles), selectedFig = figHandles(1); end @@ -217,41 +250,37 @@ previewButton = uibutton(fig, 'Text', 'Update preview', ... end end - % % Apply user settings + % Apply user settings % linesInPlot = findall(newAx, 'Type', 'line'); - % - % if addMarkersBox.Value - % addMarkersBox.ValueChangedFcn = @(src, event) updatePreview(); - % end - % if changeColorsBox.Value - % set(newAx, 'ColorOrder', lines(7)); - % end - % if gridBox.Value - % grid(newAx, 'on'); - % else - % grid(newAx, 'off'); - % end - % if changeLineStyleBox.Value - % for line = linesInPlot' - % set(line, 'LineStyle', '--'); - % end - % end - % if satelliteMapColorsBox.Value - % colormap(newAx, 'parula'); - % end - % if WHratioField.Value > 0 - % daspect(newAx, [1 WHratioField.Value 1]); - % end + + if addMarkersBox.Value + addMarkersBox.ValueChangedFcn = @(src, event) previewFigureCallback(); + end + if changeColorsBox.Value + changeColorsBox.ValueChangedFcn = @(src, event) previewFigureCallback(); + end + if gridBox.Value + gridBox.ValueChangedFcn = @(src, event) previewFigureCallback(); + end + if changeLineStyleBox.Value + changeLineStyleBox.ValueChangedFcn = @(src, event) previewFigureCallback(); + end + if satelliteMapColorsBox.Value + satelliteMapColorsBox.ValueChangedFcn = @(src, event) previewFigureCallback(); + end + if WHratioField.Value > 0 + WHratioField.ValueChangedFcn = @(src, event) previewFigureCallback(); + end % Ensure preview updates on checkbox change - % addMarkersBox.ValueChangedFcn = @(src, event) updatePreview(); - % changeColorsBox.ValueChangedFcn = @(src, event) updatePreview(); - % gridBox.ValueChangedFcn = @(src, event) updatePreview(); - % WHratioField.ValueChangedFcn = @(src, event) updatePreview(); - % changeLineStyleBox.ValueChangedFcn = @(src, event) updatePreview(); - % satelliteMapColorsBox.ValueChangedFcn = @(src, event) updatePreview(); - % legendLocationDropDown.ValueChangedFcn = @(src, event) updatePreview(); - % legendOrientationDropDown.ValueChangedFcn = @(src, event) updatePreview(); + addMarkersBox.ValueChangedFcn = @(src, event) updatePreview(); + changeColorsBox.ValueChangedFcn = @(src, event) updatePreview(); + gridBox.ValueChangedFcn = @(src, event) updatePreview(); + WHratioField.ValueChangedFcn = @(src, event) updatePreview(); + changeLineStyleBox.ValueChangedFcn = @(src, event) updatePreview(); + satelliteMapColorsBox.ValueChangedFcn = @(src, event) updatePreview(); + legendLocationDropDown.ValueChangedFcn = @(src, event) updatePreview(); + legendOrientationDropDown.ValueChangedFcn = @(src, event) updatePreview(); hold(newAx, 'off'); end -- GitLab