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, Region,
Fullscreen, Fullscreen,
Monitor, Monitor,
ActiveMonitor ActiveMonitor,
AnnotateRunAfterCaptureTasks,
AnnotateSaveImage,
AnnotateSaveImageAs,
AnnotateCopyImage,
AnnotateUploadImage,
AnnotatePrintImage
} }
public enum NodeType public enum NodeType

View file

@ -41,13 +41,6 @@ public sealed class RegionCaptureForm : Form
{ {
public static GraphicsPath LastRegionFillPath { get; private set; } 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 RegionCaptureOptions Config { get; set; }
public Rectangle ScreenRectangle { get; private set; } public Rectangle ScreenRectangle { get; private set; }
public Rectangle ScreenRectangle0Based { 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 RegionResult Result { get; private set; }
public int FPS { get; private set; } public int FPS { get; private set; }
public int MonitorIndex { get; set; } public int MonitorIndex { get; set; }
public string ImageFilePath { get; set; }
public RegionCaptureMode Mode { get; private set; } public RegionCaptureMode Mode { get; private set; }
@ -80,10 +74,7 @@ public Color CurrentColor
public SimpleWindowInfo SelectedWindow { get; private set; } public SimpleWindowInfo SelectedWindow { get; private set; }
public string ImageFilePath { get; set; }
internal ShapeManager ShapeManager { get; private set; } internal ShapeManager ShapeManager { get; private set; }
internal List<DrawableObject> DrawableObjects { get; private set; } internal List<DrawableObject> DrawableObjects { get; private set; }
public IContainer components = null; public IContainer components = null;
@ -1151,88 +1142,6 @@ private Image GetOutputImage()
return ShapeManager.RenderOutputImage(Image); 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) protected override void Dispose(bool disposing)
{ {
if (ShapeManager != null) 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, public static void AnnotateImage(Image img, string filePath, RegionCaptureOptions options,
Action<Image> afterCaptureTasksRequested, Action<Image> afterCaptureTasksRequested,
Action<Image, string> saveImageRequested, Action<Image, string> saveImageRequested,
Func<Image, string, string> saveImageAsRequested, Action<Image, string> saveImageAsRequested,
Action<Image> copyImageRequested, Action<Image> copyImageRequested,
Action<Image> uploadImageRequested, Action<Image> uploadImageRequested,
Action<Image> printImageRequested) Action<Image> printImageRequested)
@ -163,13 +163,6 @@ public static void ShowScreenRuler(RegionCaptureOptions options)
{ {
form.ImageFilePath = filePath; 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 = GetRegionCaptureOptions(options);
form.Config.DetectWindows = false; form.Config.DetectWindows = false;
form.Config.ShowTips = false; form.Config.ShowTips = false;
@ -177,6 +170,40 @@ public static void ShowScreenRuler(RegionCaptureOptions options)
form.Prepare(img); form.Prepare(img);
form.ShowDialog(); 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"); ToolStripMenuItem tsmiCompleteEdit = new ToolStripMenuItem("Run after capture tasks");
tsmiCompleteEdit.Image = Resources.tick; tsmiCompleteEdit.Image = Resources.tick;
tsmiCompleteEdit.Click += (sender, e) => form.OnAfterCaptureTasksRequested(); tsmiCompleteEdit.Click += (sender, e) => form.Close(RegionResult.AnnotateRunAfterCaptureTasks);
cmsContextMenu.Items.Add(tsmiCompleteEdit); cmsContextMenu.Items.Add(tsmiCompleteEdit);
ToolStripMenuItem tsmiSaveImage = new ToolStripMenuItem("Save image"); ToolStripMenuItem tsmiSaveImage = new ToolStripMenuItem("Save image");
tsmiSaveImage.Enabled = !string.IsNullOrEmpty(form.ImageFilePath); tsmiSaveImage.Enabled = !string.IsNullOrEmpty(form.ImageFilePath);
tsmiSaveImage.Image = Resources.disk_black; tsmiSaveImage.Image = Resources.disk_black;
tsmiSaveImage.Click += (sender, e) => form.OnSaveImageRequested(); tsmiSaveImage.Click += (sender, e) => form.Close(RegionResult.AnnotateSaveImage);
cmsContextMenu.Items.Add(tsmiSaveImage); cmsContextMenu.Items.Add(tsmiSaveImage);
ToolStripMenuItem tsmiSaveImageAs = new ToolStripMenuItem("Save image as..."); ToolStripMenuItem tsmiSaveImageAs = new ToolStripMenuItem("Save image as...");
tsmiSaveImageAs.Image = Resources.disks_black; tsmiSaveImageAs.Image = Resources.disks_black;
tsmiSaveImageAs.Click += (sender, e) => form.OnSaveImageAsRequested(); tsmiSaveImageAs.Click += (sender, e) => form.Close(RegionResult.AnnotateSaveImageAs);
cmsContextMenu.Items.Add(tsmiSaveImageAs); cmsContextMenu.Items.Add(tsmiSaveImageAs);
ToolStripMenuItem tsmiCopyImage = new ToolStripMenuItem("Copy image to clipboard"); ToolStripMenuItem tsmiCopyImage = new ToolStripMenuItem("Copy image to clipboard");
tsmiCopyImage.Image = Resources.clipboard; tsmiCopyImage.Image = Resources.clipboard;
tsmiCopyImage.Click += (sender, e) => form.OnCopyImageRequested(); tsmiCopyImage.Click += (sender, e) => form.Close(RegionResult.AnnotateCopyImage);
cmsContextMenu.Items.Add(tsmiCopyImage); cmsContextMenu.Items.Add(tsmiCopyImage);
ToolStripMenuItem tsmiUploadImage = new ToolStripMenuItem("Upload image"); ToolStripMenuItem tsmiUploadImage = new ToolStripMenuItem("Upload image");
tsmiUploadImage.Image = Resources.drive_globe; tsmiUploadImage.Image = Resources.drive_globe;
tsmiUploadImage.Click += (sender, e) => form.OnUploadImageRequested(); tsmiUploadImage.Click += (sender, e) => form.Close(RegionResult.AnnotateUploadImage);
cmsContextMenu.Items.Add(tsmiUploadImage); cmsContextMenu.Items.Add(tsmiUploadImage);
ToolStripMenuItem tsmiPrintImage = new ToolStripMenuItem("Print image..."); ToolStripMenuItem tsmiPrintImage = new ToolStripMenuItem("Print image...");
tsmiPrintImage.Image = Resources.printer; tsmiPrintImage.Image = Resources.printer;
tsmiPrintImage.Click += (sender, e) => form.OnPrintImageRequested(); tsmiPrintImage.Click += (sender, e) => form.Close(RegionResult.AnnotatePrintImage);
cmsContextMenu.Items.Add(tsmiPrintImage); cmsContextMenu.Items.Add(tsmiPrintImage);
ToolStripSeparator tssEditorMode = new ToolStripSeparator(); ToolStripSeparator tssEditorMode = new ToolStripSeparator();