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,
|
||||
Fullscreen,
|
||||
Monitor,
|
||||
ActiveMonitor
|
||||
ActiveMonitor,
|
||||
AnnotateRunAfterCaptureTasks,
|
||||
AnnotateSaveImage,
|
||||
AnnotateSaveImageAs,
|
||||
AnnotateCopyImage,
|
||||
AnnotateUploadImage,
|
||||
AnnotatePrintImage
|
||||
}
|
||||
|
||||
public enum NodeType
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 AnnotateImage(Image img, string filePath, RegionCaptureOption
|
|||
{
|
||||
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 AnnotateImage(Image img, string filePath, RegionCaptureOption
|
|||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue