From 4fd322b031bd7ebe71a2bfd13b19de4585bf1a08 Mon Sep 17 00:00:00 2001 From: Jaex Date: Fri, 30 Sep 2016 14:22:51 +0300 Subject: [PATCH] fixed #1951: After screen recording support loading animated gif from file path in after capture form --- ShareX/Forms/AfterCaptureForm.cs | 20 +++++++++++++++++++- ShareX/ScreenRecordManager.cs | 2 +- ShareX/TaskHelpers.cs | 25 ++++++++++++++++++++++--- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/ShareX/Forms/AfterCaptureForm.cs b/ShareX/Forms/AfterCaptureForm.cs index d4cfa3cfc..8a30e0951 100644 --- a/ShareX/Forms/AfterCaptureForm.cs +++ b/ShareX/Forms/AfterCaptureForm.cs @@ -27,6 +27,7 @@ You should have received a copy of the GNU General Public License using ShareX.Properties; using System; using System.Drawing; +using System.IO; using System.Linq; using System.Windows.Forms; @@ -37,7 +38,7 @@ public partial class AfterCaptureForm : Form public TaskSettings TaskSettings { get; private set; } public string FileName { get; private set; } - public AfterCaptureForm(Image img, TaskSettings taskSettings) + public AfterCaptureForm(TaskSettings taskSettings) { TaskSettings = taskSettings; @@ -55,6 +56,12 @@ public AfterCaptureForm(Image img, TaskSettings taskSettings) AddAfterCaptureItems(TaskSettings.AfterCaptureJob); AddAfterUploadItems(TaskSettings.AfterUploadJob); + FileName = TaskHelpers.GetFilename(TaskSettings); + txtFileName.Text = FileName; + } + + public AfterCaptureForm(Image img, TaskSettings taskSettings) : this(taskSettings) + { if (img != null) { pbImage.LoadImage(img); @@ -65,6 +72,17 @@ public AfterCaptureForm(Image img, TaskSettings taskSettings) 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) { this.ForceActivate(); diff --git a/ShareX/ScreenRecordManager.cs b/ShareX/ScreenRecordManager.cs index 78ab416f8..e2e70ee29 100644 --- a/ShareX/ScreenRecordManager.cs +++ b/ShareX/ScreenRecordManager.cs @@ -305,7 +305,7 @@ private static void StartRecording(ScreenRecordOutput outputType, TaskSettings t { 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); TaskManager.Start(task); diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index c4b0552e3..6e15bd8aa 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -196,22 +196,41 @@ public static string GetFilename(TaskSettings taskSettings, string extension = n 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; 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 (img != null) img.Dispose(); + if (img != null) + { + img.Dispose(); + } + return false; } fileName = afterCaptureForm.FileName; } + finally + { + afterCaptureForm.Dispose(); + } } return true;