Editor events working now

This commit is contained in:
Jaex 2016-09-18 19:05:19 +03:00
parent eec447e011
commit ad1236b2fd
4 changed files with 77 additions and 51 deletions

View file

@ -41,6 +41,7 @@ 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;
@ -79,6 +80,8 @@ 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; }
@ -1148,45 +1151,85 @@ private Image GetOutputImage()
return ShapeManager.RenderOutputImage(Image);
}
internal void OnSaveImageRequested(Image img, string filePath)
internal void OnAfterCaptureTasksRequested()
{
if (AfterCaptureTasksRequested != null)
{
Close();
FormClosed += (sender, e) =>
{
Image img = GetResultImage();
AfterCaptureTasksRequested(img);
};
}
}
internal void OnSaveImageRequested()
{
if (SaveImageRequested != null)
{
SaveImageRequested(img, filePath);
Close();
using (Image img = GetResultImage())
{
SaveImageRequested(img, ImageFilePath);
}
}
}
internal string OnSaveImageAsRequested(Image img, string filePath)
internal void OnSaveImageAsRequested()
{
if (SaveImageAsRequested != null)
{
return SaveImageAsRequested(img, filePath);
}
Close();
return null;
using (Image img = GetResultImage())
{
string filePath = SaveImageAsRequested(img, ImageFilePath);
if (!string.IsNullOrEmpty(filePath))
{
ImageFilePath = filePath;
}
}
}
}
internal void OnCopyImageRequested(Image img)
internal void OnCopyImageRequested()
{
if (CopyImageRequested != null)
{
CopyImageRequested(img);
Close();
using (Image img = GetResultImage())
{
CopyImageRequested(img);
}
}
}
internal void OnUploadImageRequested(Image img)
internal void OnUploadImageRequested()
{
if (UploadImageRequested != null)
{
Close();
Image img = GetResultImage();
UploadImageRequested(img);
}
}
internal void OnPrintImageRequested(Image img)
internal void OnPrintImageRequested()
{
if (PrintImageRequested != null)
{
PrintImageRequested(img);
Close();
using (Image img = GetResultImage())
{
PrintImageRequested(img);
}
}
}

View file

@ -151,7 +151,8 @@ public static void ShowScreenRuler(RegionCaptureOptions options)
}
}
public static Image AnnotateImage(Image img, 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> copyImageRequested,
@ -160,6 +161,9 @@ public static Image AnnotateImage(Image img, RegionCaptureOptions options,
{
using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Editor))
{
form.ImageFilePath = filePath;
form.AfterCaptureTasksRequested += afterCaptureTasksRequested;
form.SaveImageRequested += saveImageRequested;
form.SaveImageAsRequested += saveImageAsRequested;
form.CopyImageRequested += copyImageRequested;
@ -173,14 +177,7 @@ public static Image AnnotateImage(Image img, RegionCaptureOptions options,
form.Prepare(img);
form.ShowDialog();
if (form.Result == RegionResult.Region)
{
return form.GetResultImage();
}
}
return null;
}
public static Image ApplyRegionPathToImage(Image img, GraphicsPath gp)

View file

@ -271,39 +271,33 @@ private void CreateContextMenu()
{
ToolStripMenuItem tsmiCompleteEdit = new ToolStripMenuItem("Run after capture tasks");
tsmiCompleteEdit.Image = Resources.tick;
tsmiCompleteEdit.Click += (sender, e) => form.Close(RegionResult.Region);
tsmiCompleteEdit.Click += (sender, e) => form.OnAfterCaptureTasksRequested();
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.Close();
using (Image img = form.GetResultImage())
{
form.OnSaveImageRequested(img, null);
}
};
tsmiSaveImage.Click += (sender, e) => form.OnSaveImageRequested();
cmsContextMenu.Items.Add(tsmiSaveImage);
ToolStripMenuItem tsmiSaveImageAs = new ToolStripMenuItem("Save image as...");
tsmiSaveImageAs.Image = Resources.disks_black;
tsmiSaveImageAs.Click += (sender, e) => form.Close(RegionResult.Region);
tsmiSaveImageAs.Click += (sender, e) => form.OnSaveImageAsRequested();
cmsContextMenu.Items.Add(tsmiSaveImageAs);
ToolStripMenuItem tsmiCopyImage = new ToolStripMenuItem("Copy image to clipboard");
tsmiCopyImage.Image = Resources.clipboard;
tsmiCopyImage.Click += (sender, e) => form.Close(RegionResult.Region);
tsmiCopyImage.Click += (sender, e) => form.OnCopyImageRequested();
cmsContextMenu.Items.Add(tsmiCopyImage);
ToolStripMenuItem tsmiUploadImage = new ToolStripMenuItem("Upload image");
tsmiUploadImage.Image = Resources.drive_globe;
tsmiUploadImage.Click += (sender, e) => form.Close(RegionResult.Region);
tsmiUploadImage.Click += (sender, e) => form.OnUploadImageRequested();
cmsContextMenu.Items.Add(tsmiUploadImage);
ToolStripMenuItem tsmiPrintImage = new ToolStripMenuItem("Print image...");
tsmiPrintImage.Image = Resources.printer;
tsmiPrintImage.Click += (sender, e) => form.Close(RegionResult.Region);
tsmiPrintImage.Click += (sender, e) => form.OnPrintImageRequested();
cmsContextMenu.Items.Add(tsmiPrintImage);
ToolStripSeparator tssEditorMode = new ToolStripSeparator();

View file

@ -626,30 +626,22 @@ public static void AnnotateImage(string filePath, TaskSettings taskSettings = nu
public static void AnnotateImageUsingShareX(Image img, string filePath, TaskSettings taskSettings = null)
{
if (img == null)
if (img == null && File.Exists(filePath))
{
if (File.Exists(filePath))
{
img = ImageHelpers.LoadImage(filePath);
}
else
{
return;
}
img = ImageHelpers.LoadImage(filePath);
}
using (img)
if (img != null)
{
Image result = RegionCaptureTasks.AnnotateImage(img, taskSettings.CaptureSettingsReference.SurfaceOptions,
(x, newFilePath) => SaveImageAsFile(x, taskSettings),
(x, newFilePath) => ImageHelpers.SaveImageFileDialog(x, newFilePath),
x => ClipboardHelpers.CopyImage(x),
x => UploadManager.UploadImage(x),
x => PrintImage(x));
if (result != null)
using (img)
{
UploadManager.RunImageTask(result, taskSettings);
RegionCaptureTasks.AnnotateImage(img, filePath, taskSettings.CaptureSettingsReference.SurfaceOptions,
x => UploadManager.RunImageTask(x, taskSettings),
(x, newFilePath) => ImageHelpers.SaveImage(x, newFilePath),
(x, newFilePath) => ImageHelpers.SaveImageFileDialog(x, newFilePath),
x => ClipboardHelpers.CopyImage(x),
x => UploadManager.UploadImage(x),
x => PrintImage(x));
}
}
}