From fdbaca6c3f92d907ff81d7557108b303302a8b1a Mon Sep 17 00:00:00 2001 From: Robin Krom Date: Sat, 29 Jan 2022 21:49:20 +0100 Subject: [PATCH] Fixed the field changing for #338, this should trigger undo and also changes to the default field values (meaning storing in the configuration)- Added the CTRL modifier for the feature for now. --- src/Greenshot.Editor/Drawing/Surface.cs | 237 ++++++++---------- src/Greenshot.Editor/Forms/ImageEditorForm.cs | 26 +- 2 files changed, 115 insertions(+), 148 deletions(-) diff --git a/src/Greenshot.Editor/Drawing/Surface.cs b/src/Greenshot.Editor/Drawing/Surface.cs index 2f956d132..5093ed201 100644 --- a/src/Greenshot.Editor/Drawing/Surface.cs +++ b/src/Greenshot.Editor/Drawing/Surface.cs @@ -2270,146 +2270,113 @@ namespace Greenshot.Editor.Drawing /// false if no keys were processed public bool ProcessCmdKey(Keys k) { - if (selectedElements.Count > 0) - { - bool shiftModifier = (ModifierKeys & Keys.Shift) == Keys.Shift; - int px = shiftModifier ? 10 : 1; - Point moveBy = Point.Empty; + if (selectedElements.Count <= 0) return false; - switch (k) - { - case Keys.Left: - case Keys.Left | Keys.Shift: - moveBy = new Point(-px, 0); - break; - case Keys.Up: - case Keys.Up | Keys.Shift: - moveBy = new Point(0, -px); - break; - case Keys.Right: - case Keys.Right | Keys.Shift: - moveBy = new Point(px, 0); - break; - case Keys.Down: - case Keys.Down | Keys.Shift: - moveBy = new Point(0, px); - break; - case Keys.PageUp: - PullElementsUp(); - break; - case Keys.PageDown: - PushElementsDown(); - break; - case Keys.Home: - PullElementsToTop(); - break; - case Keys.End: - PushElementsToBottom(); - break; - case Keys.Enter: - ConfirmSelectedConfirmableElements(true); - break; - case Keys.Escape: - ConfirmSelectedConfirmableElements(false); - break; - case Keys.NumPad0: - SetSelectedElementColor(Color.Orange, true, shiftModifier); - break; - case Keys.NumPad1: - SetSelectedElementColor(Color.Red, true, shiftModifier); - break; - case Keys.NumPad2: - SetSelectedElementColor(Color.FromArgb(0,255,0), true, shiftModifier); // Color.Green is #008000 and not #00FF00 - break; - case Keys.NumPad3: - SetSelectedElementColor(Color.Blue, true, shiftModifier); - break; - case Keys.NumPad4: - SetSelectedElementColor(Color.Cyan, true, shiftModifier); - break; - case Keys.NumPad5: - SetSelectedElementColor(Color.Magenta, true, shiftModifier); - break; - case Keys.NumPad6: - SetSelectedElementColor(Color.Yellow, true, shiftModifier); - break; - case Keys.NumPad7: - SetSelectedElementColor(Color.Black, true, shiftModifier); - break; - case Keys.NumPad8: - SetSelectedElementColor(Color.Gray, true, shiftModifier); - break; - case Keys.NumPad9: - SetSelectedElementColor(Color.White, true, shiftModifier); - break; - case Keys.D0: - case Keys.D0 | Keys.Shift: - SetSelectedElementColor(shiftModifier ? Color.Orange : Color.Transparent, false, shiftModifier); - break; - case Keys.D1: - case Keys.D1 | Keys.Shift: - SetSelectedElementColor(Color.Red, false, shiftModifier); - break; - case Keys.D2: - case Keys.D2 | Keys.Shift: - SetSelectedElementColor(Color.Green, false, shiftModifier); - break; - case Keys.D3: - case Keys.D3 | Keys.Shift: - SetSelectedElementColor(Color.Blue, false, shiftModifier); - break; - case Keys.D4: - case Keys.D4 | Keys.Shift: - SetSelectedElementColor(Color.Cyan, false, shiftModifier); - break; - case Keys.D5: - case Keys.D5 | Keys.Shift: - SetSelectedElementColor(Color.Magenta, false, shiftModifier); - break; - case Keys.D6: - case Keys.D6 | Keys.Shift: - SetSelectedElementColor(Color.Yellow, false, shiftModifier); - break; - case Keys.D7: - case Keys.D7 | Keys.Shift: - SetSelectedElementColor(Color.Black, false, shiftModifier); - break; - case Keys.D8: - case Keys.D8 | Keys.Shift: - SetSelectedElementColor(Color.Gray, false, shiftModifier); - break; - case Keys.D9: - case Keys.D9 | Keys.Shift: - SetSelectedElementColor(Color.White, false, shiftModifier); - break; - case Keys.Add: - case Keys.Add | Keys.Shift: - ChangeLineThickness(shiftModifier ? 5 : 1); - break; - case Keys.Subtract: - case Keys.Subtract | Keys.Shift: - ChangeLineThickness(shiftModifier ? -5 : -1); - break; - case Keys.Divide: - FlipShadow(); - break; - /*case Keys.Delete: + bool shiftModifier = (ModifierKeys & Keys.Shift) == Keys.Shift; + int px = shiftModifier ? 10 : 1; + Point moveBy = Point.Empty; + switch (k) + { + case Keys.Left: + case Keys.Left | Keys.Shift: + moveBy = new Point(-px, 0); + break; + case Keys.Up: + case Keys.Up | Keys.Shift: + moveBy = new Point(0, -px); + break; + case Keys.Right: + case Keys.Right | Keys.Shift: + moveBy = new Point(px, 0); + break; + case Keys.Down: + case Keys.Down | Keys.Shift: + moveBy = new Point(0, px); + break; + case Keys.PageUp: + PullElementsUp(); + break; + case Keys.PageDown: + PushElementsDown(); + break; + case Keys.Home: + PullElementsToTop(); + break; + case Keys.End: + PushElementsToBottom(); + break; + case Keys.Enter: + ConfirmSelectedConfirmableElements(true); + break; + case Keys.Escape: + ConfirmSelectedConfirmableElements(false); + break; + case Keys.D0 | Keys.Control: + case Keys.D0 | Keys.Shift | Keys.Control: + SetSelectedElementColor(shiftModifier ? Color.Orange : Color.Transparent, false, shiftModifier); + break; + case Keys.D1 | Keys.Control: + case Keys.D1 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.Red, false, shiftModifier); + break; + case Keys.D2 | Keys.Control: + case Keys.D2 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.Green, false, shiftModifier); + break; + case Keys.D3 | Keys.Control: + case Keys.D3 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.Blue, false, shiftModifier); + break; + case Keys.D4 | Keys.Control: + case Keys.D4 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.Cyan, false, shiftModifier); + break; + case Keys.D5 | Keys.Control: + case Keys.D5 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.Magenta, false, shiftModifier); + break; + case Keys.D6 | Keys.Control: + case Keys.D6 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.Yellow, false, shiftModifier); + break; + case Keys.D7 | Keys.Control: + case Keys.D7 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.Black, false, shiftModifier); + break; + case Keys.D8 | Keys.Control: + case Keys.D8 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.Gray, false, shiftModifier); + break; + case Keys.D9 | Keys.Control: + case Keys.D9 | Keys.Shift | Keys.Control: + SetSelectedElementColor(Color.White, false, shiftModifier); + break; + case Keys.Add | Keys.Control: + case Keys.Add | Keys.Shift | Keys.Control: + ChangeLineThickness(shiftModifier ? 5 : 1); + break; + case Keys.Subtract | Keys.Control: + case Keys.Subtract | Keys.Shift | Keys.Control: + ChangeLineThickness(shiftModifier ? -5 : -1); + break; + case Keys.Divide | Keys.Control: + FlipShadow(); + break; + /*case Keys.Delete: RemoveSelectedElements(); break;*/ - default: - return false; - } - - if (!Point.Empty.Equals(moveBy)) - { - selectedElements.MakeBoundsChangeUndoable(true); - selectedElements.MoveBy(moveBy.X, moveBy.Y); - } - - return true; + default: + return false; } - return false; + if (!Point.Empty.Equals(moveBy)) + { + selectedElements.MakeBoundsChangeUndoable(true); + selectedElements.MoveBy(moveBy.X, moveBy.Y); + } + + return true; + } // for laptops without numPads, also allow shift modifier diff --git a/src/Greenshot.Editor/Forms/ImageEditorForm.cs b/src/Greenshot.Editor/Forms/ImageEditorForm.cs index 4cae6f8e5..3e1be9489 100644 --- a/src/Greenshot.Editor/Forms/ImageEditorForm.cs +++ b/src/Greenshot.Editor/Forms/ImageEditorForm.cs @@ -471,7 +471,7 @@ namespace Greenshot.Editor.Forms private delegate void SurfaceMessageReceivedThreadSafeDelegate(object sender, SurfaceMessageEventArgs eventArgs); /// - /// This is the SufraceMessageEvent receiver which display a message in the status bar if the + /// This is the SurfaceMessageEvent receiver which display a message in the status bar if the /// surface is exported. It also updates the title to represent the filename, if there is one. /// /// @@ -505,41 +505,41 @@ namespace Greenshot.Editor.Forms /// /// This is called when the foreground color of the select element chances, used for shortcuts /// - /// - /// + /// object + /// SurfaceForegroundColorEventArgs private void ForegroundColorChanged(object sender, SurfaceForegroundColorEventArgs eventArgs) { - btnLineColor.SelectedColor = eventArgs.Color; + _surface.FieldAggregator.GetField(FieldType.LINE_COLOR).Value = eventArgs.Color; } /// /// This is called when the background color of the select element chances, used for shortcuts /// - /// - /// + /// object + /// SurfaceBackgroundColorEventArgs private void BackgroundColorChanged(object sender, SurfaceBackgroundColorEventArgs eventArgs) { - btnFillColor.SelectedColor = eventArgs.Color; + _surface.FieldAggregator.GetField(FieldType.FILL_COLOR).Value = eventArgs.Color; } /// /// This is called when the line thickness of the select element chances, used for shortcuts /// - /// - /// + /// object + /// SurfaceLineThicknessEventArgs private void LineThicknessChanged(object sender, SurfaceLineThicknessEventArgs eventArgs) { - lineThicknessUpDown.Value = eventArgs.Thickness; + _surface.FieldAggregator.GetField(FieldType.LINE_THICKNESS).Value = eventArgs.Thickness; } /// /// This is called when the shadow of the select element chances, used for shortcuts /// - /// - /// + /// object + /// SurfaceShadowEventArgs private void ShadowChanged(object sender, SurfaceShadowEventArgs eventArgs) { - shadowButton.Checked = eventArgs.HasShadow; + _surface.FieldAggregator.GetField(FieldType.SHADOW).Value = eventArgs.HasShadow; } ///