From 731378eb75f835da6e8763b41d51136782d6c44f Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Wed, 10 Mar 2021 09:53:41 -0800 Subject: [PATCH] Improving right click printer menu --- .../CustomWidgets/SimpleButton.cs | 49 ++++++------------- MatterControlLib/DesignTools/Lithophane.cs | 3 +- .../PartPreviewWindow/MainViewWidget.cs | 16 ++++-- .../PartPreviewWindow/PopupMenuButton.cs | 32 ++++++------ MatterControlLib/SetupWizard/TourPopover.cs | 3 +- Submodules/agg-sharp | 2 +- 6 files changed, 47 insertions(+), 58 deletions(-) diff --git a/MatterControlLib/CustomWidgets/SimpleButton.cs b/MatterControlLib/CustomWidgets/SimpleButton.cs index 5e123a9e3..284c8badb 100644 --- a/MatterControlLib/CustomWidgets/SimpleButton.cs +++ b/MatterControlLib/CustomWidgets/SimpleButton.cs @@ -39,8 +39,6 @@ namespace MatterHackers.MatterControl.CustomWidgets { public class SimpleButton : GuiWidget { - private bool mouseInBounds = false; - protected ThemeConfig theme; private bool hasKeyboardFocus; @@ -59,20 +57,6 @@ namespace MatterHackers.MatterControl.CustomWidgets public Color MouseDownColor { get; set; } = Color.Transparent; - public override void OnMouseEnterBounds(MouseEventArgs mouseEvent) - { - mouseInBounds = true; - base.OnMouseEnterBounds(mouseEvent); - this.Invalidate(); - } - - public override void OnMouseLeaveBounds(MouseEventArgs mouseEvent) - { - mouseInBounds = false; - base.OnMouseLeaveBounds(mouseEvent); - this.Invalidate(); - } - public override void OnMouseDown(MouseEventArgs mouseEvent) { base.OnMouseDown(mouseEvent); @@ -104,17 +88,30 @@ namespace MatterHackers.MatterControl.CustomWidgets base.OnKeyUp(keyEvent); } + public override void OnMouseEnterBounds(MouseEventArgs mouseEvent) + { + Invalidate(); + base.OnMouseEnterBounds(mouseEvent); + } + + public override void OnMouseLeaveBounds(MouseEventArgs mouseEvent) + { + Invalidate(); + base.OnMouseLeaveBounds(mouseEvent); + } + public override Color BackgroundColor { get { + var firstWidgetUnderMouse = ContainsFirstUnderMouseRecursive(); if (this.MouseCaptured - && mouseInBounds + && firstWidgetUnderMouse && this.Enabled) { return this.MouseDownColor; } - else if (mouseInBounds + else if (firstWidgetUnderMouse && this.Enabled) { return this.HoverColor; @@ -129,7 +126,7 @@ namespace MatterHackers.MatterControl.CustomWidgets public override void OnFocusChanged(EventArgs e) { - hasKeyboardFocus = this.Focused && !mouseInBounds; + hasKeyboardFocus = this.Focused && !ContainsFirstUnderMouseRecursive(); this.Invalidate(); base.OnFocusChanged(e); @@ -159,20 +156,6 @@ namespace MatterHackers.MatterControl.CustomWidgets graphics2D.Render(rectOutline, theme.EditFieldColors.Focused.BorderColor); } } - - public override bool Enabled - { - get => base.Enabled; - set - { - base.Enabled = value; - - if (!base.Enabled) - { - mouseInBounds = false; - } - } - } } public class SimpleFlowButton : FlowLayoutWidget diff --git a/MatterControlLib/DesignTools/Lithophane.cs b/MatterControlLib/DesignTools/Lithophane.cs index 2e529d446..4159cefc5 100644 --- a/MatterControlLib/DesignTools/Lithophane.cs +++ b/MatterControlLib/DesignTools/Lithophane.cs @@ -173,8 +173,7 @@ namespace MatterHackers.MatterControl.Plugins.Lithophane public ImageBufferImageData(ImageBuffer image, double pixelWidth) { - resizedImage = this.ToResizedGrayscale(image, pixelWidth); - resizedImage.FlipY(); + resizedImage = this.ToResizedGrayscale(image, pixelWidth).MirrorY(); } public int Width => resizedImage.Width; diff --git a/MatterControlLib/PartPreviewWindow/MainViewWidget.cs b/MatterControlLib/PartPreviewWindow/MainViewWidget.cs index aa0b9b188..b0f8e60a9 100644 --- a/MatterControlLib/PartPreviewWindow/MainViewWidget.cs +++ b/MatterControlLib/PartPreviewWindow/MainViewWidget.cs @@ -35,6 +35,7 @@ using System.Runtime.CompilerServices; using System.Threading.Tasks; using MatterControlLib; using MatterHackers.Agg; +using MatterHackers.Agg.Image; using MatterHackers.Agg.Platform; using MatterHackers.Agg.UI; using MatterHackers.DataConverters3D; @@ -771,12 +772,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow var textWidget = new TextWidget("Move Tab", pointSize: theme.DefaultFontSize, textColor: theme.TextColor) { - Padding = PopupMenu.MenuPadding.Clone(right: 0), + Margin = PopupMenu.MenuPadding.Clone(PopupMenu.MenuPadding.Left - 5, right: 5), VAnchor = VAnchor.Center, }; moveButtons.AddChild(textWidget); - var moveLeftButton = new TextButton("<<".Localize(), theme) + var buttonSize = 24 * DeviceScale; + var moveLeftButton = new IconButton(StaticData.Instance.LoadIcon("fa-angle-right_12.png", 14, 14, theme.InvertIcons).MirrorX(), theme) { + Width = buttonSize, + Height = buttonSize, + Margin = new BorderDouble(3, 0), + HoverColor = theme.AccentMimimalOverlay, VAnchor = VAnchor.Center, }; moveLeftButton.Click += (s, e) => @@ -786,8 +792,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow }; moveButtons.AddChild(moveLeftButton); - var moveRightButton = new TextButton(">>".Localize(), theme) + var moveRightButton = new IconButton(StaticData.Instance.LoadIcon("fa-angle-right_12.png", 14, 14, theme.InvertIcons), theme) { + Width = buttonSize, + Height = buttonSize, + Margin = new BorderDouble(3, 0), + HoverColor = theme.AccentMimimalOverlay, VAnchor = VAnchor.Center, }; diff --git a/MatterControlLib/PartPreviewWindow/PopupMenuButton.cs b/MatterControlLib/PartPreviewWindow/PopupMenuButton.cs index 2b5da0063..230dc43dd 100644 --- a/MatterControlLib/PartPreviewWindow/PopupMenuButton.cs +++ b/MatterControlLib/PartPreviewWindow/PopupMenuButton.cs @@ -40,7 +40,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public class PopupMenuButton : PopupButton { private readonly ThemeConfig theme; - private bool mouseInBounds; private bool _drawArrow = false; private VertexStorage dropArrow = DropArrow.DownArrow; private RectangleDouble dropButtonBounds = RectangleDouble.ZeroIntersection; @@ -125,6 +124,18 @@ namespace MatterHackers.MatterControl.PartPreviewWindow base.OnBoundsChanged(e); } + public override void OnMouseEnterBounds(MouseEventArgs mouseEvent) + { + Invalidate(); + base.OnMouseEnterBounds(mouseEvent); + } + + public override void OnMouseLeaveBounds(MouseEventArgs mouseEvent) + { + Invalidate(); + base.OnMouseLeaveBounds(mouseEvent); + } + public override void OnDraw(Graphics2D graphics2D) { base.OnDraw(graphics2D); @@ -147,33 +158,20 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } - public override void OnMouseEnterBounds(MouseEventArgs mouseEvent) - { - mouseInBounds = true; - base.OnMouseEnterBounds(mouseEvent); - this.Invalidate(); - } - - public override void OnMouseLeaveBounds(MouseEventArgs mouseEvent) - { - mouseInBounds = false; - base.OnMouseLeaveBounds(mouseEvent); - this.Invalidate(); - } - public override Color BackgroundColor { get { + var firstWidgetUnderMouse = FirstWidgetUnderMouse; if (!MenuVisible && this.MouseCaptured - && mouseInBounds + && firstWidgetUnderMouse && this.Enabled) { return this.MouseDownColor; } else if (!MenuVisible - && mouseInBounds + && firstWidgetUnderMouse && this.Enabled) { return this.HoverColor; diff --git a/MatterControlLib/SetupWizard/TourPopover.cs b/MatterControlLib/SetupWizard/TourPopover.cs index 774b910c1..7200c84e0 100644 --- a/MatterControlLib/SetupWizard/TourPopover.cs +++ b/MatterControlLib/SetupWizard/TourPopover.cs @@ -270,8 +270,7 @@ namespace MatterHackers.MatterControl.Tour } else { - var leftArrow = new ImageBuffer(rightArrow); - leftArrow.FlipX(); + var leftArrow = new ImageBuffer(rightArrow).MirrorX(); this.Image = leftArrow; } diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 97889bbc2..be0aedaf8 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 97889bbc2ac142ad04a176a2c73b789266c499ce +Subproject commit be0aedaf800379d1409c5758ddb282fc63b0f98e