diff --git a/ShareX/Forms/MainForm.Designer.cs b/ShareX/Forms/MainForm.Designer.cs index b518f63e1..ea98c75fa 100644 --- a/ShareX/Forms/MainForm.Designer.cs +++ b/ShareX/Forms/MainForm.Designer.cs @@ -90,12 +90,12 @@ private void InitializeComponent() this.tssMain2 = new System.Windows.Forms.ToolStripSeparator(); this.tsddbTools = new System.Windows.Forms.ToolStripDropDownButton(); this.tsmiScreenColorPicker = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiRuler = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiHashCheck = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiIndexFolder = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiImageEffects = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiMonitorTest = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiDNSChanger = new System.Windows.Forms.ToolStripMenuItem(); - this.tsmiRuler = new System.Windows.Forms.ToolStripMenuItem(); this.tsbScreenshotsFolder = new System.Windows.Forms.ToolStripButton(); this.tsbHistory = new System.Windows.Forms.ToolStripButton(); this.tsbImageHistory = new System.Windows.Forms.ToolStripButton(); @@ -133,6 +133,7 @@ private void InitializeComponent() this.tsmiOpenDeletionURL = new System.Windows.Forms.ToolStripMenuItem(); this.tssOpen1 = new System.Windows.Forms.ToolStripSeparator(); this.tsmiOpenFile = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiOpenThumbnailFile = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiOpenFolder = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiCopy = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiCopyURL = new System.Windows.Forms.ToolStripMenuItem(); @@ -202,12 +203,12 @@ private void InitializeComponent() this.tssTray2 = new System.Windows.Forms.ToolStripSeparator(); this.tsmiTrayTools = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayScreenColorPicker = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiTrayRuler = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayHashCheck = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayIndexFolder = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayImageEffects = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayMonitorTest = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayDNSChanger = new System.Windows.Forms.ToolStripMenuItem(); - this.tsmiTrayRuler = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiScreenshotsFolder = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayHistory = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayImageHistory = new System.Windows.Forms.ToolStripMenuItem(); @@ -217,6 +218,8 @@ private void InitializeComponent() this.tsmiTrayShow = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayExit = new System.Windows.Forms.ToolStripMenuItem(); this.ssToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiCopyThumbnailFile = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiCopyThumbnailImage = new System.Windows.Forms.ToolStripMenuItem(); this.tsMain.SuspendLayout(); this.scMain.Panel1.SuspendLayout(); this.scMain.Panel2.SuspendLayout(); @@ -571,6 +574,14 @@ private void InitializeComponent() this.tsmiScreenColorPicker.Text = "Screen color picker..."; this.tsmiScreenColorPicker.Click += new System.EventHandler(this.tsmiCursorHelper_Click); // + // tsmiRuler + // + this.tsmiRuler.Image = global::ShareX.Properties.Resources.ruler_triangle; + this.tsmiRuler.Name = "tsmiRuler"; + this.tsmiRuler.Size = new System.Drawing.Size(183, 22); + this.tsmiRuler.Text = "Ruler..."; + this.tsmiRuler.Click += new System.EventHandler(this.tsmiRuler_Click); + // // tsmiHashCheck // this.tsmiHashCheck.Image = global::ShareX.Properties.Resources.application_task; @@ -611,14 +622,6 @@ private void InitializeComponent() this.tsmiDNSChanger.Text = "DNS changer..."; this.tsmiDNSChanger.Click += new System.EventHandler(this.tsmiDNSChanger_Click); // - // tsmiRuler - // - this.tsmiRuler.Image = global::ShareX.Properties.Resources.ruler_triangle; - this.tsmiRuler.Name = "tsmiRuler"; - this.tsmiRuler.Size = new System.Drawing.Size(183, 22); - this.tsmiRuler.Text = "Ruler..."; - this.tsmiRuler.Click += new System.EventHandler(this.tsmiRuler_Click); - // // tsbScreenshotsFolder // this.tsbScreenshotsFolder.Image = global::ShareX.Properties.Resources.folder_open_image; @@ -895,7 +898,7 @@ private void InitializeComponent() this.tsmiHidePreview}); this.cmsUploadInfo.Name = "cmsHistory"; this.cmsUploadInfo.ShowImageMargin = false; - this.cmsUploadInfo.Size = new System.Drawing.Size(155, 258); + this.cmsUploadInfo.Size = new System.Drawing.Size(155, 280); // // tsmiShowErrors // @@ -920,7 +923,8 @@ private void InitializeComponent() this.tsmiOpenDeletionURL, this.tssOpen1, this.tsmiOpenFile, - this.tsmiOpenFolder}); + this.tsmiOpenFolder, + this.tsmiOpenThumbnailFile}); this.tsmiOpen.Name = "tsmiOpen"; this.tsmiOpen.Size = new System.Drawing.Size(154, 22); this.tsmiOpen.Text = "Open"; @@ -965,6 +969,13 @@ private void InitializeComponent() this.tsmiOpenFile.Text = "File"; this.tsmiOpenFile.Click += new System.EventHandler(this.tsmiOpenFile_Click); // + // tsmiOpenThumbnailFile + // + this.tsmiOpenThumbnailFile.Name = "tsmiOpenThumbnailFile"; + this.tsmiOpenThumbnailFile.Size = new System.Drawing.Size(156, 22); + this.tsmiOpenThumbnailFile.Text = "Thumbnail file"; + this.tsmiOpenThumbnailFile.Click += new System.EventHandler(this.tsmiOpenThumbnailFile_Click); + // // tsmiOpenFolder // this.tsmiOpenFolder.Name = "tsmiOpenFolder"; @@ -983,6 +994,8 @@ private void InitializeComponent() this.tsmiCopyFile, this.tsmiCopyImage, this.tsmiCopyText, + this.tsmiCopyThumbnailFile, + this.tsmiCopyThumbnailImage, this.tssCopy2, this.tsmiCopyHTMLLink, this.tsmiCopyHTMLImage, @@ -1526,6 +1539,14 @@ private void InitializeComponent() this.tsmiTrayScreenColorPicker.Text = "Screen color picker..."; this.tsmiTrayScreenColorPicker.Click += new System.EventHandler(this.tsmiCursorHelper_Click); // + // tsmiTrayRuler + // + this.tsmiTrayRuler.Image = global::ShareX.Properties.Resources.ruler_triangle; + this.tsmiTrayRuler.Name = "tsmiTrayRuler"; + this.tsmiTrayRuler.Size = new System.Drawing.Size(183, 22); + this.tsmiTrayRuler.Text = "Ruler..."; + this.tsmiTrayRuler.Click += new System.EventHandler(this.tsmiRuler_Click); + // // tsmiTrayHashCheck // this.tsmiTrayHashCheck.Image = global::ShareX.Properties.Resources.application_task; @@ -1566,14 +1587,6 @@ private void InitializeComponent() this.tsmiTrayDNSChanger.Text = "DNS changer..."; this.tsmiTrayDNSChanger.Click += new System.EventHandler(this.tsmiDNSChanger_Click); // - // tsmiTrayRuler - // - this.tsmiTrayRuler.Image = global::ShareX.Properties.Resources.ruler_triangle; - this.tsmiTrayRuler.Name = "tsmiTrayRuler"; - this.tsmiTrayRuler.Size = new System.Drawing.Size(183, 22); - this.tsmiTrayRuler.Text = "Ruler..."; - this.tsmiTrayRuler.Click += new System.EventHandler(this.tsmiRuler_Click); - // // tsmiScreenshotsFolder // this.tsmiScreenshotsFolder.Image = global::ShareX.Properties.Resources.folder_open_image; @@ -1641,6 +1654,20 @@ private void InitializeComponent() this.ssToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.ssToolStripMenuItem.Text = "ss"; // + // tsmiCopyThumbnailFile + // + this.tsmiCopyThumbnailFile.Name = "tsmiCopyThumbnailFile"; + this.tsmiCopyThumbnailFile.Size = new System.Drawing.Size(233, 22); + this.tsmiCopyThumbnailFile.Text = "Thumbnail file"; + this.tsmiCopyThumbnailFile.Click += new System.EventHandler(this.tsmiCopyThumbnailFile_Click); + // + // tsmiCopyThumbnailImage + // + this.tsmiCopyThumbnailImage.Name = "tsmiCopyThumbnailImage"; + this.tsmiCopyThumbnailImage.Size = new System.Drawing.Size(233, 22); + this.tsmiCopyThumbnailImage.Text = "Thumbnail image"; + this.tsmiCopyThumbnailImage.Click += new System.EventHandler(this.tsmiCopyThumbnailImage_Click); + // // MainForm // this.AllowDrop = true; @@ -1835,5 +1862,8 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem tsmiTrayDragDropUpload; private System.Windows.Forms.ToolStripMenuItem tsmiRuler; private System.Windows.Forms.ToolStripMenuItem tsmiTrayRuler; + private System.Windows.Forms.ToolStripMenuItem tsmiOpenThumbnailFile; + private System.Windows.Forms.ToolStripMenuItem tsmiCopyThumbnailFile; + private System.Windows.Forms.ToolStripMenuItem tsmiCopyThumbnailImage; } } \ No newline at end of file diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 7351a9a24..3535d8fc4 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -252,6 +252,7 @@ private void UpdateControls() tsmiOpenFile.Enabled = uim.SelectedItem.IsFileExist; tsmiOpenFolder.Enabled = uim.SelectedItem.IsFileExist; + tsmiOpenThumbnailFile.Enabled = uim.SelectedItem.IsThumbnailFileExist; // Copy tsmiCopy.Visible = true; @@ -264,6 +265,8 @@ private void UpdateControls() tsmiCopyFile.Enabled = uim.SelectedItem.IsFileExist; tsmiCopyImage.Enabled = uim.SelectedItem.IsImageFile; tsmiCopyText.Enabled = uim.SelectedItem.IsTextFile; + tsmiCopyThumbnailFile.Enabled = uim.SelectedItem.IsThumbnailFileExist; + tsmiCopyThumbnailImage.Enabled = uim.SelectedItem.IsThumbnailFileExist; tsmiCopyHTMLLink.Enabled = uim.SelectedItems.Any(x => x.IsURLExist); tsmiCopyHTMLImage.Enabled = uim.SelectedItems.Any(x => x.IsImageURL); @@ -1043,6 +1046,11 @@ private void tsmiOpenFile_Click(object sender, EventArgs e) uim.OpenFile(); } + private void tsmiOpenThumbnailFile_Click(object sender, EventArgs e) + { + uim.OpenThumbnailFile(); + } + private void tsmiOpenFolder_Click(object sender, EventArgs e) { uim.OpenFolder(); @@ -1083,6 +1091,16 @@ private void tsmiCopyText_Click(object sender, EventArgs e) uim.CopyText(); } + private void tsmiCopyThumbnailFile_Click(object sender, EventArgs e) + { + uim.CopyThumbnailFile(); + } + + private void tsmiCopyThumbnailImage_Click(object sender, EventArgs e) + { + uim.CopyThumbnailImage(); + } + private void tsmiCopyHTMLLink_Click(object sender, EventArgs e) { uim.CopyHTMLLink(); diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index 3b9abcb11..55ec3be56 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -70,7 +70,7 @@ public static ImageData PrepareImage(Image img, TaskSettings taskSettings) return imageData; } - public static bool CreateThumbnail(Image img, string filename, TaskSettings taskSettings) + public static string CreateThumbnail(Image img, string filename, TaskSettings taskSettings) { if ((taskSettings.ImageSettings.ThumbnailWidth > 0 || taskSettings.ImageSettings.ThumbnailHeight > 0) && (!taskSettings.ImageSettings.ThumbnailCheckSize || (img.Width > taskSettings.ImageSettings.ThumbnailWidth && img.Height > taskSettings.ImageSettings.ThumbnailHeight))) @@ -92,8 +92,7 @@ public static bool CreateThumbnail(Image img, string filename, TaskSettings task }.Apply(thumbImage); thumbImage = ImageHelpers.FillBackground(thumbImage, Color.White); thumbImage.SaveJPG(thumbnailFilePath, 90); - DebugHelper.WriteLine("SaveThumbnailImageToFile: " + thumbnailFilePath); - return true; + return thumbnailFilePath; } finally { @@ -105,7 +104,7 @@ public static bool CreateThumbnail(Image img, string filename, TaskSettings task } } - return false; + return null; } public static MemoryStream SaveImage(Image img, EImageFormat imageFormat, TaskSettings taskSettings) diff --git a/ShareX/TaskInfo.cs b/ShareX/TaskInfo.cs index e82e37ae0..1e3e43f7a 100644 --- a/ShareX/TaskInfo.cs +++ b/ShareX/TaskInfo.cs @@ -65,6 +65,7 @@ public string FilePath } public string FileName { get; set; } + public string ThumbnailFilePath { get; set; } public EDataType DataType { get; set; } public EDataType UploadDestination diff --git a/ShareX/UploadInfoManager.cs b/ShareX/UploadInfoManager.cs index 56f4cbd4b..2aabaae8f 100644 --- a/ShareX/UploadInfoManager.cs +++ b/ShareX/UploadInfoManager.cs @@ -119,6 +119,11 @@ public void OpenFile() if (IsItemSelected && SelectedItem.IsFileExist) Helpers.LoadBrowserAsync(SelectedItem.Info.FilePath); } + public void OpenThumbnailFile() + { + if (IsItemSelected && SelectedItem.IsThumbnailFileExist) Helpers.LoadBrowserAsync(SelectedItem.Info.ThumbnailFilePath); + } + public void OpenFolder() { if (IsItemSelected && SelectedItem.IsFileExist) Helpers.OpenFolderWithFile(SelectedItem.Info.FilePath); @@ -182,6 +187,16 @@ public void CopyText() if (IsItemSelected && SelectedItem.IsTextFile) ClipboardHelpers.CopyTextFromFile(SelectedItem.Info.FilePath); } + public void CopyThumbnailFile() + { + if (IsItemSelected && SelectedItem.IsThumbnailFileExist) ClipboardHelpers.CopyFile(SelectedItem.Info.ThumbnailFilePath); + } + + public void CopyThumbnailImage() + { + if (IsItemSelected && SelectedItem.IsThumbnailFileExist) ClipboardHelpers.CopyImageFromFile(SelectedItem.Info.ThumbnailFilePath); + } + public void CopyHTMLLink() { if (IsItemSelected) CopyTexts(SelectedItems.Where(x => x.IsURLExist).Select(x => parser.Parse(x.Info, UploadInfoParser.HTMLLink))); diff --git a/ShareX/UploadInfoStatus.cs b/ShareX/UploadInfoStatus.cs index a74f0ac86..417b17ce4 100644 --- a/ShareX/UploadInfoStatus.cs +++ b/ShareX/UploadInfoStatus.cs @@ -40,6 +40,8 @@ public class UploadInfoStatus public bool IsTextURL { get; private set; } public bool IsFilePathValid { get; private set; } public bool IsFileExist { get; private set; } + public bool IsThumbnailFilePathValid { get; private set; } + public bool IsThumbnailFileExist { get; private set; } public bool IsImageFile { get; private set; } public bool IsTextFile { get; private set; } @@ -63,6 +65,8 @@ public void Update() IsFilePathValid = !string.IsNullOrEmpty(Info.FilePath) && Path.HasExtension(Info.FilePath); IsFileExist = IsFilePathValid && File.Exists(Info.FilePath); + IsThumbnailFilePathValid = !string.IsNullOrEmpty(Info.ThumbnailFilePath) && Path.HasExtension(Info.ThumbnailFilePath); + IsThumbnailFileExist = IsThumbnailFilePathValid && File.Exists(Info.ThumbnailFilePath); IsImageFile = IsFileExist && Helpers.IsImageFile(Info.FilePath); IsTextFile = IsFileExist && Helpers.IsTextFile(Info.FilePath); } diff --git a/ShareX/UploadTask.cs b/ShareX/UploadTask.cs index 2e3b8882d..69ee4d086 100644 --- a/ShareX/UploadTask.cs +++ b/ShareX/UploadTask.cs @@ -452,7 +452,12 @@ private void DoAfterCaptureJobs() if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveThumbnailImageToFile)) { - TaskHelpers.CreateThumbnail(tempImage, Info.FileName, Info.TaskSettings); + Info.ThumbnailFilePath = TaskHelpers.CreateThumbnail(tempImage, Info.FileName, Info.TaskSettings); + + if (!string.IsNullOrEmpty(Info.ThumbnailFilePath)) + { + DebugHelper.WriteLine("SaveThumbnailImageToFile: " + Info.ThumbnailFilePath); + } } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyFileToClipboard) && !string.IsNullOrEmpty(Info.FilePath) &&