diff --git a/ShareX.ScreenCaptureLib/Enums.cs b/ShareX.ScreenCaptureLib/Enums.cs index 467304e01..d89c30b1b 100644 --- a/ShareX.ScreenCaptureLib/Enums.cs +++ b/ShareX.ScreenCaptureLib/Enums.cs @@ -48,7 +48,13 @@ public enum RegionResult Region, Fullscreen, Monitor, - ActiveMonitor + ActiveMonitor, + AnnotateRunAfterCaptureTasks, + AnnotateSaveImage, + AnnotateSaveImageAs, + AnnotateCopyImage, + AnnotateUploadImage, + AnnotatePrintImage } public enum NodeType diff --git a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs index 59403681a..31ea6a531 100644 --- a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs @@ -41,13 +41,6 @@ public sealed class RegionCaptureForm : Form { public static GraphicsPath LastRegionFillPath { get; private set; } - public event Action AfterCaptureTasksRequested; - public event Action SaveImageRequested; - public event Func SaveImageAsRequested; - public event Action CopyImageRequested; - public event Action UploadImageRequested; - public event Action PrintImageRequested; - public RegionCaptureOptions Config { get; set; } public Rectangle ScreenRectangle { get; private set; } public Rectangle ScreenRectangle0Based { get; private set; } @@ -56,6 +49,7 @@ public sealed class RegionCaptureForm : Form public RegionResult Result { get; private set; } public int FPS { get; private set; } public int MonitorIndex { get; set; } + public string ImageFilePath { get; set; } public RegionCaptureMode Mode { get; private set; } @@ -80,10 +74,7 @@ public Color CurrentColor public SimpleWindowInfo SelectedWindow { get; private set; } - public string ImageFilePath { get; set; } - internal ShapeManager ShapeManager { get; private set; } - internal List DrawableObjects { get; private set; } public IContainer components = null; @@ -1151,88 +1142,6 @@ private Image GetOutputImage() return ShapeManager.RenderOutputImage(Image); } - internal void OnAfterCaptureTasksRequested() - { - if (AfterCaptureTasksRequested != null) - { - Close(); - - FormClosed += (sender, e) => - { - Image img = GetResultImage(); - AfterCaptureTasksRequested(img); - }; - } - } - - internal void OnSaveImageRequested() - { - if (SaveImageRequested != null) - { - Close(); - - using (Image img = GetResultImage()) - { - SaveImageRequested(img, ImageFilePath); - } - } - } - - internal void OnSaveImageAsRequested() - { - if (SaveImageAsRequested != null) - { - Close(); - - using (Image img = GetResultImage()) - { - string filePath = SaveImageAsRequested(img, ImageFilePath); - - if (!string.IsNullOrEmpty(filePath)) - { - ImageFilePath = filePath; - } - } - } - } - - internal void OnCopyImageRequested() - { - if (CopyImageRequested != null) - { - Close(); - - using (Image img = GetResultImage()) - { - CopyImageRequested(img); - } - } - } - - internal void OnUploadImageRequested() - { - if (UploadImageRequested != null) - { - Close(); - - Image img = GetResultImage(); - UploadImageRequested(img); - } - } - - internal void OnPrintImageRequested() - { - if (PrintImageRequested != null) - { - Close(); - - using (Image img = GetResultImage()) - { - PrintImageRequested(img); - } - } - } - protected override void Dispose(bool disposing) { if (ShapeManager != null) diff --git a/ShareX.ScreenCaptureLib/RegionCaptureTasks.cs b/ShareX.ScreenCaptureLib/RegionCaptureTasks.cs index 7b2892de0..d3b9b5b4c 100644 --- a/ShareX.ScreenCaptureLib/RegionCaptureTasks.cs +++ b/ShareX.ScreenCaptureLib/RegionCaptureTasks.cs @@ -154,7 +154,7 @@ public static void ShowScreenRuler(RegionCaptureOptions options) public static void AnnotateImage(Image img, string filePath, RegionCaptureOptions options, Action afterCaptureTasksRequested, Action saveImageRequested, - Func saveImageAsRequested, + Action saveImageAsRequested, Action copyImageRequested, Action uploadImageRequested, Action printImageRequested) @@ -163,13 +163,6 @@ public static void ShowScreenRuler(RegionCaptureOptions options) { form.ImageFilePath = filePath; - form.AfterCaptureTasksRequested += afterCaptureTasksRequested; - form.SaveImageRequested += saveImageRequested; - form.SaveImageAsRequested += saveImageAsRequested; - form.CopyImageRequested += copyImageRequested; - form.UploadImageRequested += uploadImageRequested; - form.PrintImageRequested += printImageRequested; - form.Config = GetRegionCaptureOptions(options); form.Config.DetectWindows = false; form.Config.ShowTips = false; @@ -177,6 +170,40 @@ public static void ShowScreenRuler(RegionCaptureOptions options) form.Prepare(img); form.ShowDialog(); + + if (form.Result != RegionResult.Close) + { + Image result = form.GetResultImage(); + + switch (form.Result) + { + default: + result.Dispose(); + break; + case RegionResult.AnnotateRunAfterCaptureTasks: + afterCaptureTasksRequested(result); + break; + case RegionResult.AnnotateSaveImage: + saveImageRequested(result, form.ImageFilePath); + result.Dispose(); + break; + case RegionResult.AnnotateSaveImageAs: + saveImageAsRequested(result, form.ImageFilePath); + result.Dispose(); + break; + case RegionResult.AnnotateCopyImage: + copyImageRequested(result); + result.Dispose(); + break; + case RegionResult.AnnotateUploadImage: + uploadImageRequested(result); + break; + case RegionResult.AnnotatePrintImage: + printImageRequested(result); + result.Dispose(); + break; + } + } } } diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs index a27be678a..ef8d7fc65 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs @@ -271,33 +271,33 @@ private void CreateContextMenu() { ToolStripMenuItem tsmiCompleteEdit = new ToolStripMenuItem("Run after capture tasks"); tsmiCompleteEdit.Image = Resources.tick; - tsmiCompleteEdit.Click += (sender, e) => form.OnAfterCaptureTasksRequested(); + tsmiCompleteEdit.Click += (sender, e) => form.Close(RegionResult.AnnotateRunAfterCaptureTasks); cmsContextMenu.Items.Add(tsmiCompleteEdit); ToolStripMenuItem tsmiSaveImage = new ToolStripMenuItem("Save image"); tsmiSaveImage.Enabled = !string.IsNullOrEmpty(form.ImageFilePath); tsmiSaveImage.Image = Resources.disk_black; - tsmiSaveImage.Click += (sender, e) => form.OnSaveImageRequested(); + tsmiSaveImage.Click += (sender, e) => form.Close(RegionResult.AnnotateSaveImage); cmsContextMenu.Items.Add(tsmiSaveImage); ToolStripMenuItem tsmiSaveImageAs = new ToolStripMenuItem("Save image as..."); tsmiSaveImageAs.Image = Resources.disks_black; - tsmiSaveImageAs.Click += (sender, e) => form.OnSaveImageAsRequested(); + tsmiSaveImageAs.Click += (sender, e) => form.Close(RegionResult.AnnotateSaveImageAs); cmsContextMenu.Items.Add(tsmiSaveImageAs); ToolStripMenuItem tsmiCopyImage = new ToolStripMenuItem("Copy image to clipboard"); tsmiCopyImage.Image = Resources.clipboard; - tsmiCopyImage.Click += (sender, e) => form.OnCopyImageRequested(); + tsmiCopyImage.Click += (sender, e) => form.Close(RegionResult.AnnotateCopyImage); cmsContextMenu.Items.Add(tsmiCopyImage); ToolStripMenuItem tsmiUploadImage = new ToolStripMenuItem("Upload image"); tsmiUploadImage.Image = Resources.drive_globe; - tsmiUploadImage.Click += (sender, e) => form.OnUploadImageRequested(); + tsmiUploadImage.Click += (sender, e) => form.Close(RegionResult.AnnotateUploadImage); cmsContextMenu.Items.Add(tsmiUploadImage); ToolStripMenuItem tsmiPrintImage = new ToolStripMenuItem("Print image..."); tsmiPrintImage.Image = Resources.printer; - tsmiPrintImage.Click += (sender, e) => form.OnPrintImageRequested(); + tsmiPrintImage.Click += (sender, e) => form.Close(RegionResult.AnnotatePrintImage); cmsContextMenu.Items.Add(tsmiPrintImage); ToolStripSeparator tssEditorMode = new ToolStripSeparator();