Execute editor tasks after region capture window is closed

This commit is contained in:
Jaex 2016-09-18 21:35:15 +03:00
parent ad1236b2fd
commit a7b93af654
4 changed files with 49 additions and 107 deletions

View file

@ -48,7 +48,13 @@ public enum RegionResult
Region,
Fullscreen,
Monitor,
ActiveMonitor
ActiveMonitor,
AnnotateRunAfterCaptureTasks,
AnnotateSaveImage,
AnnotateSaveImageAs,
AnnotateCopyImage,
AnnotateUploadImage,
AnnotatePrintImage
}
public enum NodeType

View file

@ -41,13 +41,6 @@ public sealed class RegionCaptureForm : Form
{
public static GraphicsPath LastRegionFillPath { get; private set; }
public event Action<Image> AfterCaptureTasksRequested;
public event Action<Image, string> SaveImageRequested;
public event Func<Image, string, string> SaveImageAsRequested;
public event Action<Image> CopyImageRequested;
public event Action<Image> UploadImageRequested;
public event Action<Image> 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<DrawableObject> 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)

View file

@ -154,7 +154,7 @@ public static void ShowScreenRuler(RegionCaptureOptions options)
public static void AnnotateImage(Image img, string filePath, RegionCaptureOptions options,
Action<Image> afterCaptureTasksRequested,
Action<Image, string> saveImageRequested,
Func<Image, string, string> saveImageAsRequested,
Action<Image, string> saveImageAsRequested,
Action<Image> copyImageRequested,
Action<Image> uploadImageRequested,
Action<Image> 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;
}
}
}
}

View file

@ -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();