fixed #1951: After screen recording support loading animated gif from file path in after capture form

This commit is contained in:
Jaex 2016-09-30 14:22:51 +03:00
parent 6087ea40fb
commit 4fd322b031
3 changed files with 42 additions and 5 deletions

View file

@ -27,6 +27,7 @@ You should have received a copy of the GNU General Public License
using ShareX.Properties; using ShareX.Properties;
using System; using System;
using System.Drawing; using System.Drawing;
using System.IO;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
@ -37,7 +38,7 @@ public partial class AfterCaptureForm : Form
public TaskSettings TaskSettings { get; private set; } public TaskSettings TaskSettings { get; private set; }
public string FileName { get; private set; } public string FileName { get; private set; }
public AfterCaptureForm(Image img, TaskSettings taskSettings) public AfterCaptureForm(TaskSettings taskSettings)
{ {
TaskSettings = taskSettings; TaskSettings = taskSettings;
@ -55,6 +56,12 @@ public AfterCaptureForm(Image img, TaskSettings taskSettings)
AddAfterCaptureItems(TaskSettings.AfterCaptureJob); AddAfterCaptureItems(TaskSettings.AfterCaptureJob);
AddAfterUploadItems(TaskSettings.AfterUploadJob); AddAfterUploadItems(TaskSettings.AfterUploadJob);
FileName = TaskHelpers.GetFilename(TaskSettings);
txtFileName.Text = FileName;
}
public AfterCaptureForm(Image img, TaskSettings taskSettings) : this(taskSettings)
{
if (img != null) if (img != null)
{ {
pbImage.LoadImage(img); pbImage.LoadImage(img);
@ -65,6 +72,17 @@ public AfterCaptureForm(Image img, TaskSettings taskSettings)
txtFileName.Text = FileName; txtFileName.Text = FileName;
} }
public AfterCaptureForm(string filePath, TaskSettings taskSettings) : this(taskSettings)
{
if (Helpers.IsImageFile(filePath))
{
pbImage.LoadImageFromFileAsync(filePath);
}
FileName = Path.GetFileNameWithoutExtension(filePath);
txtFileName.Text = FileName;
}
private void AfterCaptureForm_Shown(object sender, EventArgs e) private void AfterCaptureForm_Shown(object sender, EventArgs e)
{ {
this.ForceActivate(); this.ForceActivate();

View file

@ -305,7 +305,7 @@ private static void StartRecording(ScreenRecordOutput outputType, TaskSettings t
{ {
string customFileName; string customFileName;
if (!abortRequested && !string.IsNullOrEmpty(path) && File.Exists(path) && TaskHelpers.ShowAfterCaptureForm(taskSettings, out customFileName)) if (!abortRequested && !string.IsNullOrEmpty(path) && File.Exists(path) && TaskHelpers.ShowAfterCaptureForm(taskSettings, out customFileName, null, path))
{ {
WorkerTask task = WorkerTask.CreateFileJobTask(path, taskSettings, customFileName); WorkerTask task = WorkerTask.CreateFileJobTask(path, taskSettings, customFileName);
TaskManager.Start(task); TaskManager.Start(task);

View file

@ -196,22 +196,41 @@ public static string GetFilename(TaskSettings taskSettings, string extension = n
return filename; return filename;
} }
public static bool ShowAfterCaptureForm(TaskSettings taskSettings, out string fileName, Image img = null) public static bool ShowAfterCaptureForm(TaskSettings taskSettings, out string fileName, Image img = null, string filePath = null)
{ {
fileName = null; fileName = null;
if (taskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.ShowAfterCaptureWindow)) if (taskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.ShowAfterCaptureWindow))
{ {
using (AfterCaptureForm afterCaptureForm = new AfterCaptureForm(img, taskSettings)) AfterCaptureForm afterCaptureForm = null;
try
{ {
if (!string.IsNullOrEmpty(filePath))
{
afterCaptureForm = new AfterCaptureForm(filePath, taskSettings);
}
else
{
afterCaptureForm = new AfterCaptureForm(img, taskSettings);
}
if (afterCaptureForm.ShowDialog() == DialogResult.Cancel) if (afterCaptureForm.ShowDialog() == DialogResult.Cancel)
{ {
if (img != null) img.Dispose(); if (img != null)
{
img.Dispose();
}
return false; return false;
} }
fileName = afterCaptureForm.FileName; fileName = afterCaptureForm.FileName;
} }
finally
{
afterCaptureForm.Dispose();
}
} }
return true; return true;