Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Alexander 2021-10-29 23:17:05 +03:00
commit a9265ef093
18 changed files with 256 additions and 187 deletions

View file

@ -59,7 +59,7 @@ public sealed class RegionCaptureForm : Form
public RegionCaptureMode Mode { get; private set; }
public bool IsEditorMode => Mode == RegionCaptureMode.Editor || Mode == RegionCaptureMode.TaskEditor;
public bool IsAnnotationMode => Mode == RegionCaptureMode.Annotation || IsEditorMode;
public bool IsModified => ShapeManager != null && ShapeManager.IsModified;
public bool IsImageModified => ShapeManager != null && ShapeManager.IsImageModified;
public Point CurrentPosition { get; private set; }
public Point PanningStrech = new Point();
@ -285,6 +285,7 @@ private void Prepare(Bitmap canvas = null)
ShapeManager = new ShapeManager(this);
ShapeManager.WindowCaptureMode = !IsEditorMode && Options.DetectWindows;
ShapeManager.IncludeControls = Options.DetectControls;
ShapeManager.ImageModified += ShapeManager_ImageModified;
InitBackground(canvas);
@ -302,6 +303,15 @@ private void Prepare(Bitmap canvas = null)
}
}
private void ShapeManager_ImageModified()
{
if (Options.EditorAutoCopyImage && !IsClosing && IsEditorMode)
{
Bitmap bmp = GetResultImage();
CopyImageRequested(bmp);
}
}
internal void InitBackground(Bitmap canvas, bool centerCanvas = true)
{
if (Canvas != null) Canvas.Dispose();
@ -543,7 +553,7 @@ internal bool ShowExitConfirmation()
{
bool result = true;
if (IsModified)
if (IsImageModified)
{
Pause();
result = MessageBox.Show(this, Resources.RegionCaptureForm_ShowExitConfirmation_Text, Resources.RegionCaptureForm_ShowExitConfirmation_ShareXImageEditor,
@ -1415,7 +1425,7 @@ private Bitmap ReceiveImageForTask()
{
Bitmap bmp = GetResultImage();
ShapeManager.IsModified = false;
ShapeManager.IsImageModified = false;
if (Options.AutoCloseEditorOnTask)
{

View file

@ -90,6 +90,7 @@ public class RegionCaptureOptions
// Image editor
public ImageEditorStartMode ImageEditorStartMode = ImageEditorStartMode.AutoSize;
public WindowState ImageEditorWindowState = new WindowState();
public bool EditorAutoCopyImage = true;
public bool AutoCloseEditorOnTask = false;
public bool ShowEditorPanTip = true;
public ImageInterpolationMode ImageEditorResizeInterpolationMode = ImageInterpolationMode.Bicubic;

View file

@ -243,6 +243,11 @@ public virtual void OnCreating()
public virtual void OnCreated()
{
InitialSize = Rectangle.Size;
if (ShapeCategory == ShapeCategory.Drawing || ShapeCategory == ShapeCategory.Effect)
{
Manager.OnImageModified();
}
}
public virtual void OnMoving()

View file

@ -49,8 +49,8 @@ public override void ShowNodes()
public override void OnCreating()
{
Manager.IsMoving = true;
UpdateCursor(Manager.GetSelectedCursor().Handle, InputManager.ClientMousePosition);
OnCreated();
}
public override void OnDraw(Graphics g)

View file

@ -57,9 +57,9 @@ private set
public override void OnCreated()
{
base.OnCreated();
AutoSize(true);
TailPosition = Rectangle.Location.Add(0, Rectangle.Height + 30);
OnCreated(false);
}
protected override void UseLightResizeNodes()

View file

@ -75,6 +75,7 @@ public override void OnCreating()
Rectangle = new Rectangle(new Point(pos.X - (Rectangle.Width / 2), pos.Y - (Rectangle.Height / 2)), Rectangle.Size);
int tailOffset = 5;
TailPosition = Rectangle.Location.Add(Rectangle.Width + tailOffset, Rectangle.Height + tailOffset);
OnCreated();
}
protected override void UseLightResizeNodes()

View file

@ -115,7 +115,16 @@ public override void OnCreating()
public override void OnCreated()
{
AutoSize(true);
OnCreated(true);
}
protected void OnCreated(bool autoSize)
{
if (autoSize)
{
AutoSize(true);
}
base.OnCreated();
ShowNodes();
}

View file

@ -255,7 +255,7 @@ public bool IsPanning
public bool IsSnapResizing { get; private set; }
public bool IsRenderingOutput { get; private set; }
public Point RenderOffset { get; private set; }
public bool IsModified { get; internal set; }
public bool IsImageModified { get; internal set; }
public InputManager InputManager { get; private set; } = new InputManager();
public List<SimpleWindowInfo> Windows { get; set; }
@ -306,6 +306,7 @@ public bool NodesVisible
public event Action<BaseShape> CurrentShapeChanged;
public event Action<ShapeType> CurrentShapeTypeChanged;
public event Action<BaseShape> ShapeCreated;
public event Action ImageModified;
internal RegionCaptureForm Form { get; private set; }
@ -378,6 +379,29 @@ public ShapeManager(RegionCaptureForm form)
}
}
private void OnCurrentShapeChanged(BaseShape shape)
{
CurrentShapeChanged?.Invoke(shape);
}
private void OnCurrentShapeTypeChanged(ShapeType shapeType)
{
CurrentShapeTypeChanged?.Invoke(shapeType);
}
private void OnShapeCreated(BaseShape shape)
{
ShapeCreated?.Invoke(shape);
}
internal void OnImageModified()
{
OrderStepShapes();
IsImageModified = true;
ImageModified?.Invoke();
}
private void form_Shown(object sender, EventArgs e)
{
if (Form.IsAnnotationMode)
@ -887,8 +911,6 @@ private void RunAction(RegionCaptureAction action)
public void Update()
{
OrderStepShapes();
BaseShape shape = CurrentShape;
if (shape != null)
@ -1087,11 +1109,6 @@ private void AddShape(BaseShape shape)
{
Shapes.Add(shape);
CurrentShape = shape;
if (shape.ShapeCategory == ShapeCategory.Drawing || shape.ShapeCategory == ShapeCategory.Effect)
{
IsModified = true;
}
}
private BaseShape CreateShape()
@ -1419,7 +1436,7 @@ public void DeleteShape(BaseShape shape)
if (shape.ShapeCategory == ShapeCategory.Drawing || shape.ShapeCategory == ShapeCategory.Effect)
{
IsModified = true;
OnImageModified();
}
UpdateMenu();
@ -1447,7 +1464,7 @@ private void DeleteAllShapes()
Shapes.Clear();
DeselectCurrentShape();
IsModified = true;
OnImageModified();
}
}
@ -1754,7 +1771,7 @@ public void UpdateCanvas(Bitmap canvas, bool centerCanvas = true)
effect.OnMoved();
}
IsModified = true;
OnImageModified();
}
public void CropArea(Rectangle rect)
@ -2103,21 +2120,6 @@ private bool PickColor(Color currentColor, out Color newColor)
return ColorPickerForm.PickColor(currentColor, out newColor, Form, openScreenColorPicker, Options.ColorPickerOptions);
}
private void OnCurrentShapeChanged(BaseShape shape)
{
CurrentShapeChanged?.Invoke(shape);
}
private void OnCurrentShapeTypeChanged(ShapeType shapeType)
{
CurrentShapeTypeChanged?.Invoke(shapeType);
}
private void OnShapeCreated(BaseShape shape)
{
ShapeCreated?.Invoke(shape);
}
public void Dispose()
{
DeleteAllShapes();

View file

@ -885,6 +885,13 @@ internal void CreateToolbar()
(sender, e) => Options.ImageEditorStartMode = (ImageEditorStartMode)tscbImageEditorStartMode.Content.SelectedIndex;
tsddbOptions.DropDownItems.Add(tscbImageEditorStartMode);
// TODO: Translate
ToolStripMenuItem tsmiEditorAutoCopyImage = new ToolStripMenuItem("Auto copy image to clipboard");
tsmiEditorAutoCopyImage.Checked = Options.EditorAutoCopyImage;
tsmiEditorAutoCopyImage.CheckOnClick = true;
tsmiEditorAutoCopyImage.Click += (sender, e) => Options.EditorAutoCopyImage = tsmiEditorAutoCopyImage.Checked;
tsddbOptions.DropDownItems.Add(tsmiEditorAutoCopyImage);
ToolStripMenuItem tsmiAutoCloseEditorOnTask = new ToolStripMenuItem(Resources.ShapeManager_CreateToolbar_AutoCloseEditorOnTask);
tsmiAutoCloseEditorOnTask.Checked = Options.AutoCloseEditorOnTask;
tsmiAutoCloseEditorOnTask.CheckOnClick = true;

View file

@ -34,37 +34,39 @@ namespace ShareX.Steam
{
public static class Launcher
{
private static string ContentFolderPath => Helpers.GetAbsolutePath("ShareX");
private static string ContentExecutablePath => Path.Combine(ContentFolderPath, "ShareX.exe");
private static string ContentSteamFilePath => Path.Combine(ContentFolderPath, "Steam");
private static string UpdateFolderPath => Helpers.GetAbsolutePath("Updates");
private static string UpdateExecutablePath => Path.Combine(UpdateFolderPath, "ShareX.exe");
private static string UpdatingTempFilePath => Path.Combine(ContentFolderPath, "Updating");
private static string ContentFolderPath = GetContentFolderPath();
private static string ContentExecutablePath = Path.Combine(ContentFolderPath, "ShareX.exe");
private static string ContentSteamFilePath = Path.Combine(ContentFolderPath, "Steam");
private static string UpdatingTempFilePath = Path.Combine(ContentFolderPath, "Updating");
private static bool IsFirstTimeRunning { get; set; }
private static bool IsStartupRun { get; set; }
private static bool ShowInApp => File.Exists(ContentSteamFilePath);
private static string UpdateFolderPath = Helpers.GetAbsolutePath("Updates");
private static string UpdateExecutablePath = Path.Combine(UpdateFolderPath, "ShareX.exe");
private static bool IsFirstTimeRunning, IsStartupRun, ShowInApp, IsSteamInit;
private static Stopwatch SteamInitStopwatch;
public static void Run(string[] args)
{
Stopwatch startTimer = Stopwatch.StartNew();
if (Helpers.IsCommandExist(args, "-uninstall"))
{
UninstallShareX();
return;
}
bool isSteamInit = false;
IsStartupRun = Helpers.IsCommandExist(args, "-silent");
#if DEBUG
ShowInApp = true;
#else
ShowInApp = File.Exists(ContentSteamFilePath);
#endif
if (!IsShareXRunning())
{
// If running on startup and need to show "In-app" then wait until Steam is open
// If running on startup and need to show "In-app" then wait for Steam to run.
if (IsStartupRun && ShowInApp)
{
for (int i = 0; i < 20 && !SteamAPI.IsSteamRunning(); i++)
for (int i = 0; i < 30 && !SteamAPI.IsSteamRunning(); i++)
{
Thread.Sleep(1000);
}
@ -72,15 +74,27 @@ public static void Run(string[] args)
if (SteamAPI.IsSteamRunning())
{
isSteamInit = SteamAPI.Init();
// Even "IsSteamRunning" is true still Steam API init can fail, therefore need to give more time for Steam to launch.
for (int i = 0; i < 10; i++)
{
IsSteamInit = SteamAPI.Init();
if (IsSteamInit)
{
SteamInitStopwatch = Stopwatch.StartNew();
break;
}
Thread.Sleep(1000);
}
}
if (IsUpdateRequired())
{
DoUpdate();
UpdateShareX();
}
if (isSteamInit)
if (IsSteamInit)
{
SteamAPI.Shutdown();
}
@ -92,23 +106,27 @@ public static void Run(string[] args)
if (IsFirstTimeRunning)
{
// Show first time config window
// Show first time config window.
arguments = "-SteamConfig";
}
else if (IsStartupRun)
{
// Don't show ShareX main window
// Don't show ShareX main window.
arguments = "-silent";
}
RunShareX(arguments);
if (isSteamInit)
if (IsSteamInit)
{
// Reason for this workaround because Steam only allows writing review if you played game at least 5 minutes
// So launcher will stay on for 10 seconds and eventually users can reach 5 minutes that way (It will require 30 times opening)
// Otherwise nobody can write review
int waitTime = 10000 - (int)startTimer.ElapsedMilliseconds;
// Reason for this workaround is because Steam only allows writing review if user is played the game at least 5 minutes.
// For this reason ShareX launcher will stay on for at least 10 seconds to let users eventually reach 5 minutes play time.
int waitTime = 10000;
if (SteamInitStopwatch != null)
{
waitTime -= (int)SteamInitStopwatch.ElapsedMilliseconds;
}
if (waitTime > 0)
{
@ -118,9 +136,23 @@ public static void Run(string[] args)
}
}
private static string GetContentFolderPath()
{
#if DEBUG
string path = Helpers.GetAbsolutePath(@"..\..\..\ShareX\bin\Debug");
if (Directory.Exists(path))
{
return path;
}
#endif
return Helpers.GetAbsolutePath("ShareX");
}
private static bool IsShareXRunning()
{
// Check ShareX mutex
// Check ShareX mutex.
return Helpers.IsRunning("82E6AC09-0FEF-4390-AD9F-0DD3F5561EFC");
}
@ -128,8 +160,14 @@ private static bool IsUpdateRequired()
{
try
{
// Update not exists?
if (!File.Exists(UpdateExecutablePath))
{
return false;
}
// First time running?
if (!Directory.Exists(ContentFolderPath) || !File.Exists(ContentExecutablePath))
if (!File.Exists(ContentExecutablePath))
{
IsFirstTimeRunning = true;
return true;
@ -155,7 +193,7 @@ private static bool IsUpdateRequired()
return false;
}
private static void DoUpdate()
private static void UpdateShareX()
{
try
{
@ -164,7 +202,7 @@ private static void DoUpdate()
Directory.CreateDirectory(ContentFolderPath);
}
// In case updating terminate middle of it, in next Launcher start it can repair
// In case updating process terminate middle of it, allow launcher to repair ShareX.
Helpers.CreateEmptyFile(UpdatingTempFilePath);
Helpers.CopyAll(UpdateFolderPath, ContentFolderPath);
File.Delete(UpdatingTempFilePath);
@ -203,10 +241,10 @@ private static void RunShareX(string arguments = "")
{
try
{
// Workaround for don't show "In-app"
// Workaround to don't show "In-app".
uint result = Helpers.WinExec($"\"{ContentExecutablePath}\" {arguments}", 5);
// If the function succeeds, the return value is greater than 31
// If the function succeeds, the return value is greater than 31.
if (result > 31)
{
return;
@ -216,7 +254,7 @@ private static void RunShareX(string arguments = "")
{
}
// Workaround 2
// Workaround 2.
string path = Path.Combine(Environment.SystemDirectory, "cmd.exe");
if (!File.Exists(path))

Binary file not shown.

Binary file not shown.

View file

@ -55,6 +55,7 @@ public override GenericUploader CreateUploader(UploadersConfig config, TaskRefer
CreateShare = config.OwnCloudCreateShare,
DirectLink = config.OwnCloudDirectLink,
PreviewLink = config.OwnCloudUsePreviewLinks,
AnimationEnabled = config.OwnCloudAnimationFriendlyLinks,
IsCompatibility81 = config.OwnCloud81Compatibility,
AutoExpireTime = config.OwnCloudExpiryTime,
AutoExpire = config.OwnCloudAutoExpire
@ -72,6 +73,7 @@ public sealed class OwnCloud : FileUploader
public string Path { get; set; }
public int AutoExpireTime { get; set; }
public bool CreateShare { get; set; }
public bool AnimationEnabled { get; set; }
public bool DirectLink { get; set; }
public bool PreviewLink { get; set; }
public bool IsCompatibility81 { get; set; }
@ -121,7 +123,7 @@ public override UploadResult Upload(Stream stream, string fileName)
if (CreateShare)
{
AllowReportProgress = false;
result.URL = ShareFile(path);
result.URL = ShareFile(path, fileName);
}
else
{
@ -133,7 +135,7 @@ public override UploadResult Upload(Stream stream, string fileName)
}
// https://doc.owncloud.org/server/10.0/developer_manual/core/ocs-share-api.html#create-a-new-share
public string ShareFile(string path)
public string ShareFile(string path, string fileName)
{
Dictionary<string, string> args = new Dictionary<string, string>();
args.Add("path", path); // path to the file/folder which should be shared
@ -181,14 +183,28 @@ public string ShareFile(string path)
{
OwnCloudShareResponseData data = ((JObject)result.ocs.data).ToObject<OwnCloudShareResponseData>();
string link = data.url;
if (PreviewLink && Helpers.IsImageFile(path))
{
link += "/preview";
}
else if (DirectLink)
{
link += (IsCompatibility81 ? "/" : "&") + "download";
if (IsCompatibility81)
{
link += "/download";
}
else
{
link += "&download";
}
if (AnimationEnabled)
{
link = URLHelpers.CombineURL(link, URLHelpers.URLEncode(fileName));
}
}
return link;
}
else

View file

@ -317,6 +317,7 @@ private void InitializeComponent()
this.txtMegaPassword = new System.Windows.Forms.TextBox();
this.lblMegaPassword = new System.Windows.Forms.Label();
this.tpOwnCloud = new System.Windows.Forms.TabPage();
this.cbOwnCloudAnimationFriendlyLinks = new System.Windows.Forms.CheckBox();
this.txtOwnCloudExpiryTime = new System.Windows.Forms.NumericUpDown();
this.cbOwnCloudAutoExpire = new System.Windows.Forms.CheckBox();
this.lblOwnCloudExpiryTime = new System.Windows.Forms.Label();
@ -2643,6 +2644,7 @@ private void InitializeComponent()
// tpOwnCloud
//
this.tpOwnCloud.BackColor = System.Drawing.SystemColors.Window;
this.tpOwnCloud.Controls.Add(this.cbOwnCloudAnimationFriendlyLinks);
this.tpOwnCloud.Controls.Add(this.txtOwnCloudExpiryTime);
this.tpOwnCloud.Controls.Add(this.cbOwnCloudAutoExpire);
this.tpOwnCloud.Controls.Add(this.lblOwnCloudExpiryTime);
@ -2662,6 +2664,14 @@ private void InitializeComponent()
resources.ApplyResources(this.tpOwnCloud, "tpOwnCloud");
this.tpOwnCloud.Name = "tpOwnCloud";
//
// cbOwnCloudAnimationFriendlyLinks
//
resources.ApplyResources(this.cbOwnCloudAnimationFriendlyLinks, "cbOwnCloudAnimationFriendlyLinks");
this.cbOwnCloudAnimationFriendlyLinks.Name = "cbOwnCloudAnimationFriendlyLinks";
this.cbOwnCloudAnimationFriendlyLinks.UseMnemonic = false;
this.cbOwnCloudAnimationFriendlyLinks.UseVisualStyleBackColor = true;
this.cbOwnCloudAnimationFriendlyLinks.CheckedChanged += new System.EventHandler(this.cbOwnCloudAnimationFriendlyLinks_CheckedChanged);
//
// txtOwnCloudExpiryTime
//
resources.ApplyResources(this.txtOwnCloudExpiryTime, "txtOwnCloudExpiryTime");
@ -5671,5 +5681,6 @@ private void InitializeComponent()
private System.Windows.Forms.TextBox txtZWSURL;
private System.Windows.Forms.Label lblZWSToken;
private System.Windows.Forms.Label lblZWSURL;
private System.Windows.Forms.CheckBox cbOwnCloudAnimationFriendlyLinks;
}
}

View file

@ -577,6 +577,7 @@ private void LoadFileUploaderSettings()
txtOwnCloudExpiryTime.Value = Config.OwnCloudExpiryTime;
cbOwnCloudCreateShare.Checked = Config.OwnCloudCreateShare;
cbOwnCloudDirectLink.Checked = Config.OwnCloudDirectLink;
cbOwnCloudAnimationFriendlyLinks.Checked = Config.OwnCloudAnimationFriendlyLinks;
cbOwnCloud81Compatibility.Checked = Config.OwnCloud81Compatibility;
cbOwnCloudUsePreviewLinks.Checked = Config.OwnCloudUsePreviewLinks;
cbOwnCloudAutoExpire.Checked = Config.OwnCloudAutoExpire;
@ -2292,6 +2293,11 @@ private void cbOwnCloudDirectLink_CheckedChanged(object sender, EventArgs e)
Config.OwnCloudDirectLink = cbOwnCloudDirectLink.Checked;
}
private void cbOwnCloudAnimationFriendlyLinks_CheckedChanged(object sender, EventArgs e)
{
Config.OwnCloudAnimationFriendlyLinks = cbOwnCloudAnimationFriendlyLinks.Checked;
}
private void cbOwnCloud81Compatibility_CheckedChanged(object sender, EventArgs e)
{
Config.OwnCloud81Compatibility = cbOwnCloud81Compatibility.Checked;

View file

@ -459,7 +459,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oauthTwitter</value>
</data>
<data name="&gt;&gt;oauthTwitter.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauthTwitter.Parent" xml:space="preserve">
<value>tpTwitter</value>
@ -586,7 +586,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpTwitter.Text" xml:space="preserve">
<value>Twitter</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpTwitter.Name" xml:space="preserve">
<value>tpTwitter</value>
@ -715,7 +714,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oauth2Bitly</value>
</data>
<data name="&gt;&gt;oauth2Bitly.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Bitly.Parent" xml:space="preserve">
<value>tpBitly</value>
@ -737,7 +736,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpBitly.Text" xml:space="preserve">
<value>bit.ly</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpBitly.Name" xml:space="preserve">
<value>tpBitly</value>
@ -999,7 +997,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpYourls.Text" xml:space="preserve">
<value>YOURLS</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpYourls.Name" xml:space="preserve">
<value>tpYourls</value>
@ -1159,7 +1156,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpAdFly.Text" xml:space="preserve">
<value>adf.ly</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpAdFly.Name" xml:space="preserve">
<value>tpAdFly</value>
@ -1346,7 +1342,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpPolr.Text" xml:space="preserve">
<value>Polr</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPolr.Name" xml:space="preserve">
<value>tpPolr</value>
@ -1536,7 +1531,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpFirebaseDynamicLinks.Text" xml:space="preserve">
<value>Firebase Dynamic Links</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpFirebaseDynamicLinks.Name" xml:space="preserve">
<value>tpFirebaseDynamicLinks</value>
@ -1798,7 +1792,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpKutt.Text" xml:space="preserve">
<value>Kutt</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpKutt.Name" xml:space="preserve">
<value>tpKutt</value>
@ -1928,7 +1921,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpZeroWidthShortener.Text" xml:space="preserve">
<value>Zero Width Shortener</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpZeroWidthShortener.Name" xml:space="preserve">
<value>tpZeroWidthShortener</value>
@ -2028,7 +2020,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="btnSFTPKeyLocationBrowse.Text" xml:space="preserve">
<value>...</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;btnSFTPKeyLocationBrowse.Name" xml:space="preserve">
<value>btnSFTPKeyLocationBrowse</value>
@ -2134,7 +2125,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="gbSFTP.Text" xml:space="preserve">
<value>SFTP</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;gbSFTP.Name" xml:space="preserve">
<value>gbSFTP</value>
@ -2359,7 +2349,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>eiFTP</value>
</data>
<data name="&gt;&gt;eiFTP.Type" xml:space="preserve">
<value>ShareX.HelpersLib.ExportImportControl, ShareX.HelpersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.ExportImportControl, ShareX.HelpersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;eiFTP.Parent" xml:space="preserve">
<value>gbFTPAccount</value>
@ -2492,7 +2482,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="rbFTPProtocolFTP.Text" xml:space="preserve">
<value>FTP</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;rbFTPProtocolFTP.Name" xml:space="preserve">
<value>rbFTPProtocolFTP</value>
@ -2523,7 +2512,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="rbFTPProtocolFTPS.Text" xml:space="preserve">
<value>FTPS</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;rbFTPProtocolFTPS.Name" xml:space="preserve">
<value>rbFTPProtocolFTPS</value>
@ -2554,7 +2542,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="rbFTPProtocolSFTP.Text" xml:space="preserve">
<value>SFTP</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;rbFTPProtocolSFTP.Name" xml:space="preserve">
<value>rbFTPProtocolSFTP</value>
@ -2969,7 +2956,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="btnFTPSCertificateLocationBrowse.Text" xml:space="preserve">
<value>...</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;btnFTPSCertificateLocationBrowse.Name" xml:space="preserve">
<value>btnFTPSCertificateLocationBrowse</value>
@ -3096,7 +3082,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="gbFTPS.Text" xml:space="preserve">
<value>FTPS</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;gbFTPS.Name" xml:space="preserve">
<value>gbFTPS</value>
@ -3433,7 +3418,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpFTP.Text" xml:space="preserve">
<value>FTP / FTPS / SFTP</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpFTP.Name" xml:space="preserve">
<value>tpFTP</value>
@ -3571,7 +3555,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oauth2Dropbox</value>
</data>
<data name="&gt;&gt;oauth2Dropbox.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Dropbox.Parent" xml:space="preserve">
<value>tpDropbox</value>
@ -3593,7 +3577,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpDropbox.Text" xml:space="preserve">
<value>Dropbox</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpDropbox.Name" xml:space="preserve">
<value>tpDropbox</value>
@ -3704,7 +3687,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oAuth2OneDrive</value>
</data>
<data name="&gt;&gt;oAuth2OneDrive.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oAuth2OneDrive.Parent" xml:space="preserve">
<value>tpOneDrive</value>
@ -3726,7 +3709,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpOneDrive.Text" xml:space="preserve">
<value>OneDrive</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpOneDrive.Name" xml:space="preserve">
<value>tpOneDrive</value>
@ -3897,7 +3879,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>lvGoogleDriveFoldersList</value>
</data>
<data name="&gt;&gt;lvGoogleDriveFoldersList.Type" xml:space="preserve">
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvGoogleDriveFoldersList.Parent" xml:space="preserve">
<value>tpGoogleDrive</value>
@ -3978,7 +3960,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oauth2GoogleDrive</value>
</data>
<data name="&gt;&gt;oauth2GoogleDrive.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2GoogleDrive.Parent" xml:space="preserve">
<value>tpGoogleDrive</value>
@ -4000,7 +3982,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpGoogleDrive.Text" xml:space="preserve">
<value>Google Drive</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpGoogleDrive.Name" xml:space="preserve">
<value>tpGoogleDrive</value>
@ -4238,7 +4219,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpPuush.Text" xml:space="preserve">
<value>puush</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPuush.Name" xml:space="preserve">
<value>tpPuush</value>
@ -4385,7 +4365,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>lvBoxFolders</value>
</data>
<data name="&gt;&gt;lvBoxFolders.Type" xml:space="preserve">
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvBoxFolders.Parent" xml:space="preserve">
<value>tpBox</value>
@ -4466,7 +4446,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oauth2Box</value>
</data>
<data name="&gt;&gt;oauth2Box.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Box.Parent" xml:space="preserve">
<value>tpBox</value>
@ -4488,7 +4468,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpBox.Text" xml:space="preserve">
<value>Box</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpBox.Name" xml:space="preserve">
<value>tpBox</value>
@ -4747,7 +4726,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="btnAmazonS3StorageClassHelp.Text" xml:space="preserve">
<value>?</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;btnAmazonS3StorageClassHelp.Name" xml:space="preserve">
<value>btnAmazonS3StorageClassHelp</value>
@ -5012,7 +4990,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="btnAmazonS3BucketNameOpen.Text" xml:space="preserve">
<value>...</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;btnAmazonS3BucketNameOpen.Name" xml:space="preserve">
<value>btnAmazonS3BucketNameOpen</value>
@ -5040,7 +5017,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="btnAmazonS3AccessKeyOpen.Text" xml:space="preserve">
<value>...</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;btnAmazonS3AccessKeyOpen.Name" xml:space="preserve">
<value>btnAmazonS3AccessKeyOpen</value>
@ -5323,7 +5299,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpAmazonS3.Text" xml:space="preserve">
<value>Amazon S3</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpAmazonS3.Name" xml:space="preserve">
<value>tpAmazonS3</value>
@ -5737,7 +5712,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oauth2GoogleCloudStorage</value>
</data>
<data name="&gt;&gt;oauth2GoogleCloudStorage.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2GoogleCloudStorage.Parent" xml:space="preserve">
<value>tpGoogleCloudStorage</value>
@ -5759,7 +5734,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpGoogleCloudStorage.Text" xml:space="preserve">
<value>Google Cloud Storage</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpGoogleCloudStorage.Name" xml:space="preserve">
<value>tpGoogleCloudStorage</value>
@ -5886,19 +5860,15 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="cbAzureStorageEnvironment.Items" xml:space="preserve">
<value>blob.core.windows.net</value>
<comment>@Invariant</comment>
</data>
<data name="cbAzureStorageEnvironment.Items1" xml:space="preserve">
<value>blob.core.usgovcloudapi.net</value>
<comment>@Invariant</comment>
</data>
<data name="cbAzureStorageEnvironment.Items2" xml:space="preserve">
<value>blob.core.chinacloudapi.cn</value>
<comment>@Invariant</comment>
</data>
<data name="cbAzureStorageEnvironment.Items3" xml:space="preserve">
<value>blob.core.cloudapi.de</value>
<comment>@Invariant</comment>
</data>
<data name="cbAzureStorageEnvironment.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 173</value>
@ -5965,7 +5935,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="btnAzureStoragePortal.Text" xml:space="preserve">
<value>...</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;btnAzureStoragePortal.Name" xml:space="preserve">
<value>btnAzureStoragePortal</value>
@ -6203,7 +6172,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpAzureStorage.Text" xml:space="preserve">
<value>Azure Storage</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpAzureStorage.Name" xml:space="preserve">
<value>tpAzureStorage</value>
@ -6441,7 +6409,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpBackblazeB2.Text" xml:space="preserve">
<value>Backblaze B2</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpBackblazeB2.Name" xml:space="preserve">
<value>tpBackblazeB2</value>
@ -6579,7 +6546,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>atcGfycatAccountType</value>
</data>
<data name="&gt;&gt;atcGfycatAccountType.Type" xml:space="preserve">
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;atcGfycatAccountType.Parent" xml:space="preserve">
<value>tpGfycat</value>
@ -6600,7 +6567,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oauth2Gfycat</value>
</data>
<data name="&gt;&gt;oauth2Gfycat.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Gfycat.Parent" xml:space="preserve">
<value>tpGfycat</value>
@ -6622,7 +6589,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpGfycat.Text" xml:space="preserve">
<value>Gfycat</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpGfycat.Name" xml:space="preserve">
<value>tpGfycat</value>
@ -6941,7 +6907,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpMega.Text" xml:space="preserve">
<value>Mega</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpMega.Name" xml:space="preserve">
<value>tpMega</value>
@ -6955,6 +6920,36 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<data name="&gt;&gt;tpMega.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="cbOwnCloudAnimationFriendlyLinks.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbOwnCloudAnimationFriendlyLinks.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cbOwnCloudAnimationFriendlyLinks.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 304</value>
</data>
<data name="cbOwnCloudAnimationFriendlyLinks.Size" type="System.Drawing.Size, System.Drawing">
<value>132, 17</value>
</data>
<data name="cbOwnCloudAnimationFriendlyLinks.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="cbOwnCloudAnimationFriendlyLinks.Text" xml:space="preserve">
<value>Animation friendly links</value>
</data>
<data name="&gt;&gt;cbOwnCloudAnimationFriendlyLinks.Name" xml:space="preserve">
<value>cbOwnCloudAnimationFriendlyLinks</value>
</data>
<data name="&gt;&gt;cbOwnCloudAnimationFriendlyLinks.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbOwnCloudAnimationFriendlyLinks.Parent" xml:space="preserve">
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;cbOwnCloudAnimationFriendlyLinks.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="txtOwnCloudExpiryTime.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 224</value>
</data>
@ -6974,7 +6969,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;txtOwnCloudExpiryTime.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="cbOwnCloudAutoExpire.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -6983,7 +6978,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="cbOwnCloudAutoExpire.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 334</value>
<value>16, 352</value>
</data>
<data name="cbOwnCloudAutoExpire.Size" type="System.Drawing.Size, System.Drawing">
<value>138, 17</value>
@ -7004,7 +6999,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;cbOwnCloudAutoExpire.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="lblOwnCloudExpiryTime.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7034,7 +7029,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;lblOwnCloudExpiryTime.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="cbOwnCloudUsePreviewLinks.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7043,7 +7038,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="cbOwnCloudUsePreviewLinks.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 357</value>
<value>16, 376</value>
</data>
<data name="cbOwnCloudUsePreviewLinks.Size" type="System.Drawing.Size, System.Drawing">
<value>189, 17</value>
@ -7064,7 +7059,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;cbOwnCloudUsePreviewLinks.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="lblOwnCloudHostExample.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7094,7 +7089,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;lblOwnCloudHostExample.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="cbOwnCloud81Compatibility.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7103,7 +7098,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="cbOwnCloud81Compatibility.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 311</value>
<value>16, 328</value>
</data>
<data name="cbOwnCloud81Compatibility.Size" type="System.Drawing.Size, System.Drawing">
<value>157, 17</value>
@ -7124,7 +7119,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;cbOwnCloud81Compatibility.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="cbOwnCloudDirectLink.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7133,7 +7128,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="cbOwnCloudDirectLink.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 287</value>
<value>16, 280</value>
</data>
<data name="cbOwnCloudDirectLink.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 17</value>
@ -7154,7 +7149,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;cbOwnCloudDirectLink.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="cbOwnCloudCreateShare.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7163,7 +7158,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="cbOwnCloudCreateShare.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 263</value>
<value>16, 256</value>
</data>
<data name="cbOwnCloudCreateShare.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 17</value>
@ -7184,7 +7179,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;cbOwnCloudCreateShare.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="txtOwnCloudPath.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 176</value>
@ -7205,7 +7200,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;txtOwnCloudPath.ZOrder" xml:space="preserve">
<value>8</value>
<value>9</value>
</data>
<data name="txtOwnCloudPassword.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 128</value>
@ -7226,7 +7221,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;txtOwnCloudPassword.ZOrder" xml:space="preserve">
<value>9</value>
<value>10</value>
</data>
<data name="txtOwnCloudUsername.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 80</value>
@ -7247,7 +7242,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;txtOwnCloudUsername.ZOrder" xml:space="preserve">
<value>10</value>
<value>11</value>
</data>
<data name="txtOwnCloudHost.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 32</value>
@ -7268,7 +7263,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;txtOwnCloudHost.ZOrder" xml:space="preserve">
<value>11</value>
<value>12</value>
</data>
<data name="lblOwnCloudPath.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7298,7 +7293,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;lblOwnCloudPath.ZOrder" xml:space="preserve">
<value>12</value>
<value>13</value>
</data>
<data name="lblOwnCloudPassword.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7328,7 +7323,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;lblOwnCloudPassword.ZOrder" xml:space="preserve">
<value>13</value>
<value>14</value>
</data>
<data name="lblOwnCloudUsername.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7358,7 +7353,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;lblOwnCloudUsername.ZOrder" xml:space="preserve">
<value>14</value>
<value>15</value>
</data>
<data name="lblOwnCloudHost.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -7388,23 +7383,22 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpOwnCloud</value>
</data>
<data name="&gt;&gt;lblOwnCloudHost.ZOrder" xml:space="preserve">
<value>15</value>
<value>16</value>
</data>
<data name="tpOwnCloud.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 220</value>
<value>4, 58</value>
</data>
<data name="tpOwnCloud.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="tpOwnCloud.Size" type="System.Drawing.Size, System.Drawing">
<value>178, 0</value>
<value>803, 507</value>
</data>
<data name="tpOwnCloud.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="tpOwnCloud.Text" xml:space="preserve">
<value>ownCloud / Nextcloud</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpOwnCloud.Name" xml:space="preserve">
<value>tpOwnCloud</value>
@ -7615,7 +7609,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpMediaFire.Text" xml:space="preserve">
<value>MediaFire</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpMediaFire.Name" xml:space="preserve">
<value>tpMediaFire</value>
@ -7778,7 +7771,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpPushbullet.Text" xml:space="preserve">
<value>Pushbullet</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPushbullet.Name" xml:space="preserve">
<value>tpPushbullet</value>
@ -7934,7 +7926,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>atcSendSpaceAccountType</value>
</data>
<data name="&gt;&gt;atcSendSpaceAccountType.Type" xml:space="preserve">
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;atcSendSpaceAccountType.Parent" xml:space="preserve">
<value>tpSendSpace</value>
@ -7956,7 +7948,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpSendSpace.Text" xml:space="preserve">
<value>SendSpace</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpSendSpace.Name" xml:space="preserve">
<value>tpSendSpace</value>
@ -8116,7 +8107,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpHostr.Text" xml:space="preserve">
<value>Hostr</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpHostr.Name" xml:space="preserve">
<value>tpHostr</value>
@ -8141,7 +8131,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="txtJiraIssuePrefix.Text" xml:space="preserve">
<value>PROJECT-</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;txtJiraIssuePrefix.Name" xml:space="preserve">
<value>txtJiraIssuePrefix</value>
@ -8226,7 +8215,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="txtJiraHost.Text" xml:space="preserve">
<value>http://</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;txtJiraHost.Name" xml:space="preserve">
<value>txtJiraHost</value>
@ -8307,7 +8295,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oAuthJira</value>
</data>
<data name="&gt;&gt;oAuthJira.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oAuthJira.Parent" xml:space="preserve">
<value>tpJira</value>
@ -8326,7 +8314,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpJira.Text" xml:space="preserve">
<value>Atlassian Jira</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpJira.Name" xml:space="preserve">
<value>tpJira</value>
@ -8486,7 +8473,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpLambda.Text" xml:space="preserve">
<value>Lambda</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpLambda.Name" xml:space="preserve">
<value>tpLambda</value>
@ -8852,7 +8838,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>oauthTeknik</value>
</data>
<data name="&gt;&gt;oauthTeknik.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauthTeknik.Parent" xml:space="preserve">
<value>tpTeknik</value>
@ -8874,7 +8860,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpTeknik.Text" xml:space="preserve">
<value>Teknik</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpTeknik.Name" xml:space="preserve">
<value>tpTeknik</value>
@ -9004,7 +8989,6 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="tpPomf.Text" xml:space="preserve">
<value>Pomf</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPomf.Name" xml:space="preserve">
<value>tpPomf</value>
@ -9020,11 +9004,9 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
</data>
<data name="cbSeafileAPIURL.Items" xml:space="preserve">
<value>https://seacloud.cc/api2/</value>
<comment>@Invariant</comment>
</data>
<data name="cbSeafileAPIURL.Items1" xml:space="preserve">
<value>https://cloud.mein-seafile.de/api2/</value>
<comment>@Invariant</comment>
</data>
<data name="cbSeafileAPIURL.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 32</value>
@ -9279,7 +9261,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>lvSeafileLibraries</value>
</data>
<data name="&gt;&gt;lvSeafileLibraries.Type" xml:space="preserve">
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvSeafileLibraries.Parent" xml:space="preserve">
<value>tpSeafile</value>
@ -9998,7 +9980,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpSeafile.Text" xml:space="preserve">
<value>Seafile</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpSeafile.Name" xml:space="preserve">
<value>tpSeafile</value>
@ -10200,7 +10181,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpStreamable.Text" xml:space="preserve">
<value>Streamable</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpStreamable.Name" xml:space="preserve">
<value>tpStreamable</value>
@ -10306,7 +10286,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpSul.Text" xml:space="preserve">
<value>s-ul</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpSul.Name" xml:space="preserve">
<value>tpSul</value>
@ -10541,7 +10520,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpLithiio.Text" xml:space="preserve">
<value>Lithiio</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpLithiio.Name" xml:space="preserve">
<value>tpLithiio</value>
@ -11036,20 +11014,19 @@ Using an encrypted library disables sharing.</value>
<value>1</value>
</data>
<data name="tpPlik.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 58</value>
<value>4, 220</value>
</data>
<data name="tpPlik.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="tpPlik.Size" type="System.Drawing.Size, System.Drawing">
<value>803, 507</value>
<value>178, 0</value>
</data>
<data name="tpPlik.TabIndex" type="System.Int32, mscorlib">
<value>29</value>
</data>
<data name="tpPlik.Text" xml:space="preserve">
<value>Plik</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPlik.Name" xml:space="preserve">
<value>tpPlik</value>
@ -11157,7 +11134,7 @@ Using an encrypted library disables sharing.</value>
<value>oauth2YouTube</value>
</data>
<data name="&gt;&gt;oauth2YouTube.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2YouTube.Parent" xml:space="preserve">
<value>tpYouTube</value>
@ -11176,7 +11153,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpYouTube.Text" xml:space="preserve">
<value>YouTube</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpYouTube.Name" xml:space="preserve">
<value>tpYouTube</value>
@ -12419,7 +12395,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpPastebin.Text" xml:space="preserve">
<value>Pastebin</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPastebin.Name" xml:space="preserve">
<value>tpPastebin</value>
@ -12525,7 +12500,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpPaste_ee.Text" xml:space="preserve">
<value>Paste.ee</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPaste_ee.Name" xml:space="preserve">
<value>tpPaste_ee</value>
@ -12723,7 +12697,7 @@ Using an encrypted library disables sharing.</value>
<value>oAuth2Gist</value>
</data>
<data name="&gt;&gt;oAuth2Gist.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oAuth2Gist.Parent" xml:space="preserve">
<value>tpGist</value>
@ -12742,7 +12716,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpGist.Text" xml:space="preserve">
<value>GitHub Gist</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpGist.Name" xml:space="preserve">
<value>tpGist</value>
@ -12851,7 +12824,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpUpaste.Text" xml:space="preserve">
<value>uPaste</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpUpaste.Name" xml:space="preserve">
<value>tpUpaste</value>
@ -13011,7 +12983,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpHastebin.Text" xml:space="preserve">
<value>Hastebin</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpHastebin.Name" xml:space="preserve">
<value>tpHastebin</value>
@ -13141,7 +13112,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpOneTimeSecret.Text" xml:space="preserve">
<value>OneTimeSecret</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpOneTimeSecret.Name" xml:space="preserve">
<value>tpOneTimeSecret</value>
@ -13199,7 +13169,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpPastie.Text" xml:space="preserve">
<value>Pastie</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPastie.Name" xml:space="preserve">
<value>tpPastie</value>
@ -13367,7 +13336,7 @@ Using an encrypted library disables sharing.</value>
<value>atcImgurAccountType</value>
</data>
<data name="&gt;&gt;atcImgurAccountType.Type" xml:space="preserve">
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;atcImgurAccountType.Parent" xml:space="preserve">
<value>tpImgur</value>
@ -13388,7 +13357,7 @@ Using an encrypted library disables sharing.</value>
<value>oauth2Imgur</value>
</data>
<data name="&gt;&gt;oauth2Imgur.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Imgur.Parent" xml:space="preserve">
<value>tpImgur</value>
@ -13424,7 +13393,7 @@ Using an encrypted library disables sharing.</value>
<value>lvImgurAlbumList</value>
</data>
<data name="&gt;&gt;lvImgurAlbumList.Type" xml:space="preserve">
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvImgurAlbumList.Parent" xml:space="preserve">
<value>tpImgur</value>
@ -13527,7 +13496,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpImgur.Text" xml:space="preserve">
<value>Imgur</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpImgur.Name" xml:space="preserve">
<value>tpImgur</value>
@ -13768,7 +13736,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpImageShack.Text" xml:space="preserve">
<value>ImageShack</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpImageShack.Name" xml:space="preserve">
<value>tpImageShack</value>
@ -13825,7 +13792,7 @@ Using an encrypted library disables sharing.</value>
<value>oauthFlickr</value>
</data>
<data name="&gt;&gt;oauthFlickr.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauthFlickr.Parent" xml:space="preserve">
<value>tpFlickr</value>
@ -13847,7 +13814,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpFlickr.Text" xml:space="preserve">
<value>Flickr</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpFlickr.Name" xml:space="preserve">
<value>tpFlickr</value>
@ -14337,7 +14303,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpPhotobucket.Text" xml:space="preserve">
<value>Photobucket</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpPhotobucket.Name" xml:space="preserve">
<value>tpPhotobucket</value>
@ -14592,7 +14557,7 @@ Using an encrypted library disables sharing.</value>
<value>oauth2Picasa</value>
</data>
<data name="&gt;&gt;oauth2Picasa.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Picasa.Parent" xml:space="preserve">
<value>tpGooglePhotos</value>
@ -14614,7 +14579,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpGooglePhotos.Text" xml:space="preserve">
<value>Google Photos</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpGooglePhotos.Name" xml:space="preserve">
<value>tpGooglePhotos</value>
@ -14804,7 +14768,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpChevereto.Text" xml:space="preserve">
<value>Chevereto</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpChevereto.Name" xml:space="preserve">
<value>tpChevereto</value>
@ -14913,7 +14876,6 @@ Using an encrypted library disables sharing.</value>
</data>
<data name="tpVgyme.Text" xml:space="preserve">
<value>vgy.me</value>
<comment>@Invariant</comment>
</data>
<data name="&gt;&gt;tpVgyme.Name" xml:space="preserve">
<value>tpVgyme</value>
@ -15027,7 +14989,7 @@ Using an encrypted library disables sharing.</value>
<value>tttvMain</value>
</data>
<data name="&gt;&gt;tttvMain.Type" xml:space="preserve">
<value>ShareX.HelpersLib.TabToTreeView, ShareX.HelpersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.TabToTreeView, ShareX.HelpersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;tttvMain.Parent" xml:space="preserve">
<value>$this</value>
@ -15048,7 +15010,7 @@ Using an encrypted library disables sharing.</value>
<value>actRapidShareAccountType</value>
</data>
<data name="&gt;&gt;actRapidShareAccountType.Type" xml:space="preserve">
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=13.6.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=13.6.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>

View file

@ -298,6 +298,7 @@ public class UploadersConfig : SettingsBase<UploadersConfig>
public bool OwnCloudDirectLink { get; set; } = false;
public bool OwnCloud81Compatibility { get; set; } = true;
public bool OwnCloudUsePreviewLinks { get; set; } = false;
public bool OwnCloudAnimationFriendlyLinks { get; set; } = false;
public bool OwnCloudAutoExpire { get; set; } = false;
#endregion ownCloud / Nextcloud

View file

@ -98,7 +98,7 @@ protected ImageInfo ExecuteRegionCapture(TaskSettings taskSettings)
if (imageInfo.Image != null)
{
if (form.IsModified)
if (form.IsImageModified)
{
AllowAnnotation = false;
}