private void ThreadDoWork() { Info.StartTime = DateTime.UtcNow; DoThreadJob(); if (Info.IsUploadJob) { if (Program.Settings.ShowUploadWarning && MessageBox.Show( "Are you sure you want to upload screenshot?\r\nYou can press 'No' for cancel current upload and disable auto uploading screenshots.", "ShareX - First time upload warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) { Program.Settings.ShowUploadWarning = false; Program.DefaultTaskSettings.AfterCaptureJob = Program.DefaultTaskSettings.AfterCaptureJob.Remove(AfterCaptureTasks.UploadImageToHost); RequestSettingUpdate = true; Stop(); } else { Program.Settings.ShowUploadWarning = false; if (Program.UploadersConfig == null) { Program.UploaderSettingsResetEvent.WaitOne(); } Status = TaskStatus.Working; Info.Status = "Uploading"; TaskbarManager.SetProgressState(Program.MainForm, TaskbarProgressBarStatus.Normal); if (threadWorker != null) { threadWorker.InvokeAsync(OnUploadStarted); } else { OnUploadStarted(); } bool isError = DoUpload(); if (isError && Program.Settings.MaxUploadFailRetry > 0) { DebugHelper.WriteLine("Upload failed. Retrying upload."); for (int retry = 1; isError && retry <= Program.Settings.MaxUploadFailRetry; retry++) { isError = DoUpload(retry); } } } } else { Info.Result.IsURLExpected = false; } if (!IsStopped && Info.Result != null && Info.Result.IsURLExpected && !Info.Result.IsError) { if (string.IsNullOrEmpty(Info.Result.URL)) { Info.Result.Errors.Add("URL is empty.\r\n\r\n" + Info.Result.ErrorsToString()); } else { DoAfterUploadJobs(); } } Info.UploadTime = DateTime.UtcNow; }
private void DoAfterUploadJobs() { try { if (Info.TaskSettings.AdvancedSettings.ResultForceHTTPS) { Info.Result.ForceHTTPS(); } if (Info.Job != TaskJob.ShareURL && (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.UseURLShortener) || Info.Job == TaskJob.ShortenURL || (Info.TaskSettings.AdvancedSettings.AutoShortenURLLength > 0 && Info.Result.URL.Length > Info.TaskSettings.AdvancedSettings.AutoShortenURLLength))) { UploadResult result = ShortenURL(Info.Result.URL); if (result != null) { Info.Result.ShortenedURL = result.ShortenedURL; Info.Result.Errors.AddRange(result.Errors); } } if (Info.Job != TaskJob.ShortenURL && (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.ShareURL) || Info.Job == TaskJob.ShareURL)) { UploadResult result = ShareURL(Info.Result.ToString()); if (result != null) { Info.Result.Errors.AddRange(result.Errors); } if (Info.Job == TaskJob.ShareURL) { Info.Result.IsURLExpected = false; } } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.CopyURLToClipboard)) { string txt; if (!string.IsNullOrEmpty(Info.TaskSettings.AdvancedSettings.ClipboardContentFormat)) { txt = new UploadInfoParser().Parse(Info, Info.TaskSettings.AdvancedSettings.ClipboardContentFormat); } else { txt = Info.Result.ToString(); } if (!string.IsNullOrEmpty(txt)) { ClipboardHelpers.CopyText(txt); } } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.OpenURL)) { string result; if (!string.IsNullOrEmpty(Info.TaskSettings.AdvancedSettings.OpenURLFormat)) { result = new UploadInfoParser().Parse(Info, Info.TaskSettings.AdvancedSettings.OpenURLFormat); } else { result = Info.Result.ToString(); } URLHelpers.OpenURL(result); } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.ShowQRCode)) { threadWorker.InvokeAsync(() => new QRCodeForm(Info.Result.ToString()).Show()); } } catch (Exception e) { DebugHelper.WriteException(e); AddErrorMessage(e.ToString()); } }
private void DoUploadJob() { if (Program.Settings.ShowUploadWarning && MessageBox.Show( Resources.UploadTask_DoUploadJob_First_time_upload_warning_text, "ShareX - " + Resources.UploadTask_DoUploadJob_First_time_upload_warning, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) { Program.Settings.ShowUploadWarning = false; Program.DefaultTaskSettings.AfterCaptureJob = Program.DefaultTaskSettings.AfterCaptureJob.Remove(AfterCaptureTasks.UploadImageToHost); RequestSettingUpdate = true; Stop(); } if (Program.Settings.LargeFileSizeWarning > 0) { long dataSize = Program.Settings.BinaryUnits ? Program.Settings.LargeFileSizeWarning * 1024 * 1024 : Program.Settings.LargeFileSizeWarning * 1000 * 1000; if (Data != null && Data.Length > dataSize) { using (MyMessageBox msgbox = new MyMessageBox(Resources.UploadTask_DoUploadJob_You_are_attempting_to_upload_a_large_file, "ShareX", MessageBoxButtons.YesNo, Resources.UploadManager_IsUploadConfirmed_Don_t_show_this_message_again_)) { msgbox.ShowDialog(); if (msgbox.IsChecked) { Program.Settings.LargeFileSizeWarning = 0; } if (msgbox.DialogResult == DialogResult.No) { Stop(); } } } } if (!StopRequested) { Program.Settings.ShowUploadWarning = false; if (Program.UploadersConfig == null) { Program.UploaderSettingsResetEvent.WaitOne(); } Status = TaskStatus.Working; Info.Status = Resources.UploadTask_DoUploadJob_Uploading; TaskbarManager.SetProgressState(Program.MainForm, TaskbarProgressBarStatus.Normal); bool cancelUpload = false; if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.ShowBeforeUploadWindow)) { BeforeUploadForm form = new BeforeUploadForm(Info); cancelUpload = form.ShowDialog() != DialogResult.OK; } if (!cancelUpload) { if (threadWorker != null) { threadWorker.InvokeAsync(OnUploadStarted); } else { OnUploadStarted(); } bool isError = DoUpload(); if (isError && Program.Settings.MaxUploadFailRetry > 0) { DebugHelper.WriteLine("Upload failed. Retrying upload."); for (int retry = 1; isError && retry <= Program.Settings.MaxUploadFailRetry; retry++) { isError = DoUpload(retry); } } } else { Info.Result.IsURLExpected = false; } } }
private bool DoAfterCaptureJobs() { if (Image == null) { return(true); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AddImageEffects)) { Image = TaskHelpers.ApplyImageEffects(Image, Info.TaskSettings.ImageSettingsReference); if (Image == null) { DebugHelper.WriteLine("Error: Applying image effects resulted empty image."); return(false); } } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AnnotateImage)) { Image = TaskHelpers.AnnotateImage(Image, null, Info.TaskSettings, true); if (Image == null) { return(false); } } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyImageToClipboard)) { ClipboardHelpers.CopyImage(Image, Info.FileName); DebugHelper.WriteLine("Image copied to clipboard."); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.PinToScreen)) { Image imageCopy = Image.CloneSafe(); threadWorker.InvokeAsync(() => TaskHelpers.PinToScreen(imageCopy)); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SendImageToPrinter)) { TaskHelpers.PrintImage(Image); } Info.Metadata.Image = Image; if (Info.TaskSettings.AfterCaptureJob.HasFlagAny(AfterCaptureTasks.SaveImageToFile, AfterCaptureTasks.SaveImageToFileWithDialog, AfterCaptureTasks.DoOCR, AfterCaptureTasks.UploadImageToHost)) { ImageData imageData = TaskHelpers.PrepareImage(Image, Info.TaskSettings); Data = imageData.ImageStream; Info.FileName = Path.ChangeExtension(Info.FileName, imageData.ImageFormat.GetDescription()); if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFile)) { string screenshotsFolder = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings, Info.Metadata); string filePath = TaskHelpers.HandleExistsFile(screenshotsFolder, Info.FileName, Info.TaskSettings); if (!string.IsNullOrEmpty(filePath)) { Info.FilePath = filePath; imageData.Write(Info.FilePath); DebugHelper.WriteLine("Image saved to file: " + Info.FilePath); } } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFileWithDialog)) { using (SaveFileDialog sfd = new SaveFileDialog()) { string initialDirectory = null; if (!string.IsNullOrEmpty(HelpersOptions.LastSaveDirectory) && Directory.Exists(HelpersOptions.LastSaveDirectory)) { initialDirectory = HelpersOptions.LastSaveDirectory; } else { initialDirectory = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings, Info.Metadata); } bool imageSaved; do { sfd.InitialDirectory = initialDirectory; sfd.FileName = Info.FileName; sfd.DefaultExt = Path.GetExtension(Info.FileName).Substring(1); sfd.Filter = string.Format("*{0}|*{0}|All files (*.*)|*.*", Path.GetExtension(Info.FileName)); sfd.Title = Resources.UploadTask_DoAfterCaptureJobs_Choose_a_folder_to_save + " " + Path.GetFileName(Info.FileName); if (sfd.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(sfd.FileName)) { Info.FilePath = sfd.FileName; HelpersOptions.LastSaveDirectory = Path.GetDirectoryName(Info.FilePath); imageSaved = imageData.Write(Info.FilePath); if (imageSaved) { DebugHelper.WriteLine("Image saved to file with dialog: " + Info.FilePath); } } else { break; } } while (!imageSaved); } } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveThumbnailImageToFile)) { string thumbnailFileName, thumbnailFolder; if (!string.IsNullOrEmpty(Info.FilePath)) { thumbnailFileName = Path.GetFileName(Info.FilePath); thumbnailFolder = Path.GetDirectoryName(Info.FilePath); } else { thumbnailFileName = Info.FileName; thumbnailFolder = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings, Info.Metadata); } Info.ThumbnailFilePath = TaskHelpers.CreateThumbnail(Image, thumbnailFolder, thumbnailFileName, Info.TaskSettings); if (!string.IsNullOrEmpty(Info.ThumbnailFilePath)) { DebugHelper.WriteLine("Thumbnail saved to file: " + Info.ThumbnailFilePath); } } } return(true); }
private void DoUploadJob() { if (Info.IsUploadJob) { if (Program.Settings.ShowUploadWarning && MessageBox.Show( "Are you sure you want to upload screenshot?\r\nYou can press 'No' for cancel current upload and disable auto uploading screenshots.", "ShareX - First time upload warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) { Program.Settings.ShowUploadWarning = false; Program.DefaultTaskSettings.AfterCaptureJob = Program.DefaultTaskSettings.AfterCaptureJob.Remove(AfterCaptureTasks.UploadImageToHost); RequestSettingUpdate = true; Stop(); } else { Program.Settings.ShowUploadWarning = false; if (Program.UploadersConfig == null) { Program.UploaderSettingsResetEvent.WaitOne(); } Status = TaskStatus.Working; Info.Status = "Uploading"; TaskbarManager.SetProgressState(Program.MainForm, TaskbarProgressBarStatus.Normal); DialogResult beforeUploadResult = DialogResult.OK; if (Info.TaskSettings.GeneralSettings.ShowBeforeUploadForm) { BeforeUploadForm form = new BeforeUploadForm(Info); beforeUploadResult = form.ShowDialog(); } if (beforeUploadResult == DialogResult.OK) { if (threadWorker != null) { threadWorker.InvokeAsync(OnUploadStarted); } else { OnUploadStarted(); } bool isError = DoUpload(); if (isError && Program.Settings.MaxUploadFailRetry > 0) { DebugHelper.WriteLine("Upload failed. Retrying upload."); for (int retry = 1; isError && retry <= Program.Settings.MaxUploadFailRetry; retry++) { isError = DoUpload(retry); } } } else if (beforeUploadResult == DialogResult.Cancel) { Info.Result.IsURLExpected = false; } } } else { Info.Result.IsURLExpected = false; } }