mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Execute editor tasks after region capture window is closed
This commit is contained in:
parent
ad1236b2fd
commit
a7b93af654
4 changed files with 49 additions and 107 deletions
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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 AnnotateImage(Image img, string filePath, RegionCaptureOption
|
||||||
{
|
{
|
||||||
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 AnnotateImage(Image img, string filePath, RegionCaptureOption
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue