Merge pull request #1094 from mpistrich/master

Reopen save as dialog on errors after capture
This commit is contained in:
Jaex 2015-11-01 10:48:39 +02:00
commit 9b3677c9a2
4 changed files with 47 additions and 16 deletions

View file

@ -24,8 +24,10 @@
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
using ShareX.Properties;
using System;
using System.IO;
using System.Windows.Forms;
namespace ShareX
{
@ -46,6 +48,9 @@ public string Write(string filePath)
catch (Exception e)
{
DebugHelper.WriteException(e);
MessageBox.Show(new Form() { WindowState = FormWindowState.Maximized, TopMost = true },
string.Format(Resources.ImageData_Write_Error + "\r\n\r\n" + e, filePath), "ShareX",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return string.Empty;

View file

@ -1035,6 +1035,15 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Could not write image to path {0}..
/// </summary>
public static string ImageData_Write_Error {
get {
return ResourceManager.GetString("ImageData_Write_Error", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View file

@ -811,4 +811,7 @@ Would you like to restart ShareX?</value>
<data name="vn" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\vn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ImageData_Write_Error" xml:space="preserve">
<value>Could not write image to path {0}.</value>
</data>
</root>

View file

@ -561,24 +561,38 @@ private bool DoAfterCaptureJobs()
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
if (string.IsNullOrEmpty(lastSaveAsFolder) || !Directory.Exists(lastSaveAsFolder))
{
lastSaveAsFolder = Info.TaskSettings.CaptureFolder;
}
bool imageSaved = false;
sfd.InitialDirectory = lastSaveAsFolder;
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))
do
{
Info.FilePath = sfd.FileName;
lastSaveAsFolder = Path.GetDirectoryName(Info.FilePath);
imageData.Write(Info.FilePath);
DebugHelper.WriteLine("Image saved to file with dialog: " + Info.FilePath);
}
if (string.IsNullOrEmpty(lastSaveAsFolder) || !Directory.Exists(lastSaveAsFolder))
{
lastSaveAsFolder = Info.TaskSettings.CaptureFolder;
}
sfd.InitialDirectory = lastSaveAsFolder;
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;
lastSaveAsFolder = Path.GetDirectoryName(Info.FilePath);
imageSaved = imageData.Write(Info.FilePath) == Info.FilePath;
if (imageSaved)
{
DebugHelper.WriteLine("Image saved to file with dialog: " + Info.FilePath);
}
}
else
{
// User cancelled the dialog - stop image saving retries.
return false;
}
} while (!imageSaved);
}
}