From 8f81068e07f271fff1d78818c293b8b22ba30895 Mon Sep 17 00:00:00 2001 From: Jaex Date: Thu, 22 Feb 2018 13:27:54 +0300 Subject: [PATCH] Holding ctrl while using image file tool will use last image file instead of opening file dialog --- .../Shapes/AnnotationOptions.cs | 1 + .../Shapes/Drawing/ImageFileDrawingShape.cs | 22 ++++-- .../Shapes/Drawing/StickerDrawingShape.cs | 75 +++++++++---------- 3 files changed, 51 insertions(+), 47 deletions(-) diff --git a/ShareX.ScreenCaptureLib/Shapes/AnnotationOptions.cs b/ShareX.ScreenCaptureLib/Shapes/AnnotationOptions.cs index 1dc79a0dd..a877ca367 100644 --- a/ShareX.ScreenCaptureLib/Shapes/AnnotationOptions.cs +++ b/ShareX.ScreenCaptureLib/Shapes/AnnotationOptions.cs @@ -75,6 +75,7 @@ public class AnnotationOptions // Image drawing public ImageEditorInterpolationMode ImageInterpolationMode = ImageEditorInterpolationMode.NearestNeighbor; + public string LastImageFilePath { get; set; } // Step drawing public Color StepBorderColor { get; set; } = SecondaryColor; diff --git a/ShareX.ScreenCaptureLib/Shapes/Drawing/ImageFileDrawingShape.cs b/ShareX.ScreenCaptureLib/Shapes/Drawing/ImageFileDrawingShape.cs index f09b53222..f4361fce8 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Drawing/ImageFileDrawingShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Drawing/ImageFileDrawingShape.cs @@ -35,15 +35,20 @@ public override void OnCreating() Point pos = InputManager.ClientMousePosition; Rectangle = new Rectangle(pos.X, pos.Y, 1, 1); - if (!OpenImageDialog(true)) + if (Manager.IsCornerMoving && LoadImageFile(AnnotationOptions.LastImageFilePath, true)) { - Remove(); + OnCreated(); + Manager.IsMoving = true; } - else + else if (OpenImageDialog(true)) { OnCreated(); ShowNodes(); } + else + { + Remove(); + } } public override void OnDoubleClicked() @@ -54,15 +59,20 @@ public override void OnDoubleClicked() private bool OpenImageDialog(bool centerImage) { Manager.IsMoving = false; - string filepath = ImageHelpers.OpenImageFileDialog(Manager.Form); + return LoadImageFile(filepath, centerImage); + } - if (!string.IsNullOrEmpty(filepath)) + private bool LoadImageFile(string filePath, bool centerImage) + { + if (!string.IsNullOrEmpty(filePath)) { - Image img = ImageHelpers.LoadImage(filepath); + Image img = ImageHelpers.LoadImage(filePath); if (img != null) { + AnnotationOptions.LastImageFilePath = filePath; + SetImage(img, centerImage); return true; diff --git a/ShareX.ScreenCaptureLib/Shapes/Drawing/StickerDrawingShape.cs b/ShareX.ScreenCaptureLib/Shapes/Drawing/StickerDrawingShape.cs index eec4031ff..80a2455e6 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Drawing/StickerDrawingShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Drawing/StickerDrawingShape.cs @@ -50,7 +50,37 @@ public override void ShowNodes() { } - private void OpenStickerForm(bool creating) + public override void OnCreating() + { + Point pos = InputManager.ClientMousePosition; + Rectangle = new Rectangle(pos.X, pos.Y, 1, 1); + + if (Manager.IsCornerMoving && LoadSticker(AnnotationOptions.LastStickerPath, AnnotationOptions.StickerSize)) + { + OnCreated(); + Manager.IsMoving = true; + } + else if (OpenStickerForm()) + { + OnCreated(); + } + else + { + Remove(); + } + } + + public override void OnDoubleClicked() + { + OpenStickerForm(); + } + + public override void Resize(int x, int y, bool fromBottomRight) + { + Move(x, y); + } + + private bool OpenStickerForm() { Manager.Form.Pause(); @@ -63,27 +93,16 @@ private void OpenStickerForm(bool creating) AnnotationOptions.SelectedStickerPack = stickerForm.SelectedStickerPack; AnnotationOptions.StickerSize = stickerForm.StickerSize; - if (LoadSticker(stickerForm.SelectedImageFile, stickerForm.StickerSize)) - { - if (creating) - { - OnCreated(); - } - - return; - } + return LoadSticker(stickerForm.SelectedImageFile, stickerForm.StickerSize); } } - - if (creating) - { - Remove(); - } } finally { Manager.Form.Resume(); } + + return false; } private bool LoadSticker(string filePath, int stickerSize) @@ -106,31 +125,5 @@ private bool LoadSticker(string filePath, int stickerSize) return false; } - - public override void OnCreating() - { - Point pos = InputManager.ClientMousePosition; - Rectangle = new Rectangle(pos.X, pos.Y, 1, 1); - - if (Manager.IsCornerMoving && LoadSticker(AnnotationOptions.LastStickerPath, AnnotationOptions.StickerSize)) - { - OnCreated(); - Manager.IsMoving = true; - } - else - { - OpenStickerForm(true); - } - } - - public override void OnDoubleClicked() - { - OpenStickerForm(false); - } - - public override void Resize(int x, int y, bool fromBottomRight) - { - Move(x, y); - } } } \ No newline at end of file