From 367234e2972f9a44eb951c64a52d3d3a0d5625ca Mon Sep 17 00:00:00 2001 From: giuliaghirardini <giulia.ghirardini@skywarder.eu> Date: Mon, 24 Feb 2025 23:49:22 +0100 Subject: [PATCH] [fixes][utilities] Deleted preview panel on GUI and improved default options --- functions/utilities/exportFigureGUI.m | 124 +++++++++++++------------- 1 file changed, 63 insertions(+), 61 deletions(-) diff --git a/functions/utilities/exportFigureGUI.m b/functions/utilities/exportFigureGUI.m index 7f25767..6654c01 100644 --- a/functions/utilities/exportFigureGUI.m +++ b/functions/utilities/exportFigureGUI.m @@ -6,7 +6,7 @@ function exportFigureGUI screenSize = get(0, 'ScreenSize'); % [left, bottom, width, height] % Set the uifigure size -figWidth = 1400; +figWidth = 800; figHeight = 700; % Calculate position to center the figure @@ -39,7 +39,7 @@ forcedMarkersField = uieditfield(fig, 'numeric', 'Value', 0, 'Position', [390 17 % Percentage of Text Width uilabel(fig, 'Text', 'Percentage of Text Width:', 'Position', [500 170 200 30]); -percTextField = uieditfield(fig, 'numeric', 'Position', [670 170 50 30]); +percTextField = uieditfield(fig, 'numeric', 'Value', 0.75, 'Position', [670 170 50 30]); %% Checkboxes %%% Create a panel to group flags @@ -50,15 +50,20 @@ flagsPanel = uipanel(fig, ... % Checkboxes for optional parameters addMarkersBox = uicheckbox(flagsPanel, 'Text', 'Add Markers', 'Value', true, ... - 'Position', [10 10 150 20]); + 'Position', [10 10 150 20], ... + 'ValueChangedFcn', @(src, event) updatePreview()); changeColorsBox = uicheckbox(flagsPanel, 'Text', 'Change Colors', 'Value', true, ... - 'Position', [120 10 150 20]); + 'Position', [120 10 150 20], ... + 'ValueChangedFcn', @(src, event) updatePreview()); changeLineStyleBox = uicheckbox(flagsPanel, 'Text', 'Change Line Style', 'Value', false, ... - 'Position', [240 10 150 20]); + 'Position', [240 10 150 20], ... + 'ValueChangedFcn', @(src, event) updatePreview()); gridBox = uicheckbox(flagsPanel, 'Text', 'Show Grid', 'Value', true, ... - 'Position', [370 10 150 20]); + 'Position', [370 10 150 20], ... + 'ValueChangedFcn', @(src, event) updatePreview()); satelliteMapColorsBox = uicheckbox(flagsPanel, 'Text', 'Satellite Map Colors', 'Value', false, ... - 'Position', [480 10 150 20]); + 'Position', [480 10 150 20], ... + 'ValueChangedFcn', @(src, event) updatePreview()); %%% Create a panel to group export settings exportPanel = uipanel(fig, ... @@ -90,22 +95,27 @@ legendPositions = {'north', 'south', 'east', 'west', ... 'best', 'bestoutside'}; legendLocationDropDown = uidropdown(legendPanel, 'Items', legendPositions, ... 'Value', 'southoutside', ... - 'Position', [80 10 150 22]); + 'Position', [80 10 150 22], ... + 'ValueChangedFcn', @(src, event) updatePreview()); uilabel(legendPanel, 'Text', 'Orientation:', 'Position', [250 10 70 20]); legendOrientations = {'horizontal', 'vertical'}; legendOrientationDropDown = uidropdown(legendPanel, 'Items', legendOrientations, ... 'Value', 'horizontal', ... - 'Position', [330 10 150 22]); + 'Position', [330 10 150 22], ... + 'ValueChangedFcn', @(src, event) updatePreview()); %% Preview content -uiPanel = uipanel(fig, 'Title', 'Export preview', 'Position', [810, 100, 550, 500]); - % Find all open figures (excluding this GUI) 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, ... @@ -124,7 +134,7 @@ updateButton = uibutton(fig, 'Text', 'Update Figures', ... 'ButtonPushedFcn', @(src, event) updateDropdown()); % Submit Button -submitButton = uibutton(fig, 'Text', 'Export Figure', ... +exportButton = uibutton(fig, 'Text', 'Export Figure', ... 'Position', [350 100 100 30], ... 'ButtonPushedFcn', @(src, event) exportFigureCallback()); @@ -149,8 +159,6 @@ previewButton = uibutton(fig, 'Text', 'Update preview', ... % Function to update preview function updatePreview() - % Delete any existing axes - delete(findall(uiPanel, 'Type', 'figure')); figHandles = findFigures(fig); @@ -169,17 +177,14 @@ previewButton = uibutton(fig, 'Text', 'Update preview', ... if isempty(selectedFig) && isscalar(figHandles), selectedFig = figHandles(1); end if isempty(selectedFig) || ~isvalid(selectedFig), return; end - + % Retrieve axes from selected figure obj = findall(selectedFig, 'Type', 'figure'); - % Delete any existing axes - delete(findall(uiPanel, 'Type', 'axes')); - - % Copy the axes into the UI Panel + % Copy the axes informations check = size(obj.Children); if check(1) == 1 - newAx = copyobj(obj.Children, uiPanel); + newAx = obj.Children; hold(newAx, 'on'); end if check(1) == 2 % geoplots or 3d plots or tabfigures @@ -194,62 +199,59 @@ previewButton = uibutton(fig, 'Text', 'Update preview', ... newAx = copyobj(obj.Children(1).Children(i).Children, newFig); set(newAx, 'Position', get(gca, 'Position')); - hold(newAx, 'on'); + hold(newAx, 'on'); end + delete(obj); else - newAx = copyobj(obj.Children(2), uiPanel); + newAx = obj.Children(2); hold(newAx, 'on'); end end if check(1) > 2 if isa(obj.Children(1), 'matlab.graphics.illustration.Legend') - newAx = copyobj(obj.Children(2:end), uiPanel); + newAx = obj.Children(2:end); hold(newAx(1:check(1)-1), 'on'); else - newAx = copyobj(obj.Children, uiPanel); + newAx = obj.Children; hold(newAx, 'on'); end end - %set(newAx, 'Position', [0.1, 0.1, 0.8, 0.8]); % Adjust position in panel - %hold(newAx, 'on'); - - % Apply user settings - linesInPlot = findall(newAx, 'Type', 'line'); - if addMarkersBox.Value - for line = linesInPlot' - set(line, 'Marker', 'o', 'MarkerSize', 4); - end - 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 + % % 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 % 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