Compare commits

...

5 Commits

Author SHA1 Message Date
Danny c87123cd2d
Merge 08abafe83a into 94e57208d3 2024-04-22 15:48:35 +08:00
Jaex 94e57208d3 Use googleapis.com/auth/drive.file scope 2024-04-22 09:00:17 +03:00
Jaex 019c9a7dae Code refactoring 2024-04-20 09:16:12 +03:00
Danny 08abafe83a
Fix typo with task setting name 2024-04-09 20:59:14 -04:00
Danny d860104a08
Fix toast notification settings not being respected in OCR 2024-04-09 20:20:23 -04:00
10 changed files with 155 additions and 92 deletions

View File

@ -260,24 +260,24 @@ namespace ShareX.HelpersLib
return null;
}
private static Bitmap ApplyCutOutEffect(Bitmap bmp, AnchorStyles effectEdge, CutOutEffectType effectType, int effectSize, Color cutOutBackgroundColor)
private static Bitmap ApplyCutOutEffect(Bitmap bmp, AnchorStyles effectEdge, CutOutEffectType effectType, int effectSize, Color backgroundColor)
{
switch (effectType)
{
case CutOutEffectType.None:
return bmp;
case CutOutEffectType.ZigZag:
return TornEdges(bmp, effectSize, effectSize, effectEdge, false, false, cutOutBackgroundColor);
return TornEdges(bmp, effectSize, effectSize, effectEdge, false, false, backgroundColor);
case CutOutEffectType.TornEdge:
return TornEdges(bmp, effectSize, effectSize * 2, effectEdge, false, true, cutOutBackgroundColor);
return TornEdges(bmp, effectSize, effectSize * 2, effectEdge, false, true, backgroundColor);
case CutOutEffectType.Wave:
return WavyEdges(bmp, effectSize, effectSize * 5, effectEdge, cutOutBackgroundColor);
return WavyEdges(bmp, effectSize, effectSize * 5, effectEdge, backgroundColor);
}
throw new NotImplementedException();
}
public static Bitmap CutOutBitmapMiddle(Bitmap bmp, Orientation orientation, int start, int size, CutOutEffectType effectType, int effectSize, Color cutOutBackgroundColor)
public static Bitmap CutOutBitmapMiddle(Bitmap bmp, Orientation orientation, int start, int size, CutOutEffectType effectType, int effectSize, Color backgroundColor)
{
if (bmp != null && size > 0)
{
@ -290,7 +290,7 @@ namespace ShareX.HelpersLib
: new Rectangle(0, 0, bmp.Width, Math.Min(start, bmp.Height));
firstPart = CropBitmap(bmp, r);
AnchorStyles effectEdge = orientation == Orientation.Horizontal ? AnchorStyles.Right : AnchorStyles.Bottom;
firstPart = ApplyCutOutEffect(firstPart, effectEdge, effectType, effectSize, cutOutBackgroundColor);
firstPart = ApplyCutOutEffect(firstPart, effectEdge, effectType, effectSize, backgroundColor);
}
int cutDimension = orientation == Orientation.Horizontal ? bmp.Width : bmp.Height;
@ -302,7 +302,7 @@ namespace ShareX.HelpersLib
: new Rectangle(0, end, bmp.Width, bmp.Height - end);
secondPart = CropBitmap(bmp, r);
AnchorStyles effectEdge = orientation == Orientation.Horizontal ? AnchorStyles.Left : AnchorStyles.Top;
secondPart = ApplyCutOutEffect(secondPart, effectEdge, effectType, effectSize, cutOutBackgroundColor);
secondPart = ApplyCutOutEffect(secondPart, effectEdge, effectType, effectSize, backgroundColor);
}
if (firstPart != null && secondPart != null)
@ -1844,7 +1844,12 @@ namespace ShareX.HelpersLib
}
}
public static Bitmap WavyEdges(Bitmap bmp, int waveDepth, int waveRange, AnchorStyles sides, Color cutOutBackgroundColor)
public static Bitmap WavyEdges(Bitmap bmp, int waveDepth, int waveRange, AnchorStyles sides)
{
return WavyEdges(bmp, waveDepth, waveRange, sides, Color.Transparent);
}
public static Bitmap WavyEdges(Bitmap bmp, int waveDepth, int waveRange, AnchorStyles sides, Color backgroundColor)
{
if (waveDepth < 1 || waveRange < 1 || sides == AnchorStyles.None)
{
@ -1928,22 +1933,31 @@ namespace ShareX.HelpersLib
}
Bitmap bmpResult = bmp.CreateEmptyBitmap();
using (bmp)
using (Graphics g = Graphics.FromImage(bmpResult))
using (TextureBrush brush = new TextureBrush(bmp))
{
if (backgroundColor.A > 0)
{
g.Clear(backgroundColor);
}
g.SetHighQuality();
g.PixelOffsetMode = PixelOffsetMode.Half;
if (cutOutBackgroundColor.A > 0)
{
g.Clear(cutOutBackgroundColor);
}
g.FillPolygon(brush, points.ToArray());
}
return bmpResult;
}
public static Bitmap TornEdges(Bitmap bmp, int tornDepth, int tornRange, AnchorStyles sides, bool curvedEdges, bool random, Color cutOutBackgroundColor)
public static Bitmap TornEdges(Bitmap bmp, int tornDepth, int tornRange, AnchorStyles sides, bool curvedEdges, bool random)
{
return TornEdges(bmp, tornDepth, tornRange, sides, curvedEdges, random, Color.Transparent);
}
public static Bitmap TornEdges(Bitmap bmp, int tornDepth, int tornRange, AnchorStyles sides, bool curvedEdges, bool random, Color backgroundColor)
{
if (tornDepth < 1 || tornRange < 1 || sides == AnchorStyles.None)
{
@ -2030,12 +2044,13 @@ namespace ShareX.HelpersLib
using (Graphics g = Graphics.FromImage(bmpResult))
using (TextureBrush brush = new TextureBrush(bmp))
{
if (backgroundColor.A > 0)
{
g.Clear(backgroundColor);
}
g.SetHighQuality();
g.PixelOffsetMode = PixelOffsetMode.Half;
if (cutOutBackgroundColor.A > 0)
{
g.Clear(cutOutBackgroundColor);
}
Point[] fillPoints = points.Distinct().ToArray();

View File

@ -26,7 +26,6 @@
using ShareX.HelpersLib;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
namespace ShareX.ImageEffectsLib
@ -46,9 +45,6 @@ namespace ShareX.ImageEffectsLib
[DefaultValue(true)]
public bool CurvedEdges { get; set; }
[DefaultValue(typeof(Color), "Transparent"), Editor(typeof(MyColorEditor), typeof(UITypeEditor)), TypeConverter(typeof(MyColorConverter))]
public Color CutOutBackgroundColor { get; set; }
public TornEdge()
{
this.ApplyDefaultPropertyValues();
@ -56,7 +52,7 @@ namespace ShareX.ImageEffectsLib
public override Bitmap Apply(Bitmap bmp)
{
return ImageHelpers.TornEdges(bmp, Depth, Range, Sides, CurvedEdges, true, CutOutBackgroundColor);
return ImageHelpers.TornEdges(bmp, Depth, Range, Sides, CurvedEdges, true);
}
protected override string GetSummary()

View File

@ -26,7 +26,6 @@
using ShareX.HelpersLib;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
namespace ShareX.ImageEffectsLib
@ -48,12 +47,9 @@ namespace ShareX.ImageEffectsLib
this.ApplyDefaultPropertyValues();
}
[DefaultValue(typeof(Color), "Transparent"), Editor(typeof(MyColorEditor), typeof(UITypeEditor)), TypeConverter(typeof(MyColorConverter))]
public Color CutOutBackgroundColor { get; set; }
public override Bitmap Apply(Bitmap bmp)
{
return ImageHelpers.WavyEdges(bmp, Depth, Range, Sides, CutOutBackgroundColor);
return ImageHelpers.WavyEdges(bmp, Depth, Range, Sides);
}
protected override string GetSummary()

View File

@ -324,7 +324,7 @@ namespace ShareX.ScreenCaptureLib.Properties {
}
/// <summary>
/// Looks up a localized string similar to Cut out background color.
/// Looks up a localized string similar to Cut out background color....
/// </summary>
internal static string CutOutBackgroundColor {
get {

View File

@ -831,6 +831,6 @@ Would you like to save the changes before closing the image editor?</value>
<value>..\Resources\control-record-green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CutOutBackgroundColor" xml:space="preserve">
<value>Cut out background color</value>
<value>Cut out background color...</value>
</data>
</root>

View File

@ -89,7 +89,7 @@ namespace ShareX.UploadersLib.FileUploaders
{
OAuth2 = new GoogleOAuth2(oauth, this)
{
Scope = "https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.profile"
Scope = "https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/userinfo.profile"
};
}

View File

@ -197,6 +197,7 @@ namespace ShareX.UploadersLib
this.cbOneDriveUseDirectLink = new System.Windows.Forms.CheckBox();
this.oAuth2OneDrive = new ShareX.UploadersLib.OAuthControl();
this.tpGoogleDrive = new System.Windows.Forms.TabPage();
this.btnGoogleDriveFolderIDHelp = new System.Windows.Forms.Button();
this.oauth2GoogleDrive = new ShareX.UploadersLib.OAuthLoopbackControl();
this.cbGoogleDriveSharedDrive = new System.Windows.Forms.ComboBox();
this.cbGoogleDriveDirectLink = new System.Windows.Forms.CheckBox();
@ -1756,6 +1757,7 @@ namespace ShareX.UploadersLib
// tpGoogleDrive
//
this.tpGoogleDrive.BackColor = System.Drawing.SystemColors.Window;
this.tpGoogleDrive.Controls.Add(this.btnGoogleDriveFolderIDHelp);
this.tpGoogleDrive.Controls.Add(this.oauth2GoogleDrive);
this.tpGoogleDrive.Controls.Add(this.cbGoogleDriveSharedDrive);
this.tpGoogleDrive.Controls.Add(this.cbGoogleDriveDirectLink);
@ -1768,6 +1770,13 @@ namespace ShareX.UploadersLib
resources.ApplyResources(this.tpGoogleDrive, "tpGoogleDrive");
this.tpGoogleDrive.Name = "tpGoogleDrive";
//
// btnGoogleDriveFolderIDHelp
//
resources.ApplyResources(this.btnGoogleDriveFolderIDHelp, "btnGoogleDriveFolderIDHelp");
this.btnGoogleDriveFolderIDHelp.Name = "btnGoogleDriveFolderIDHelp";
this.btnGoogleDriveFolderIDHelp.UseVisualStyleBackColor = true;
this.btnGoogleDriveFolderIDHelp.Click += new System.EventHandler(this.btnGoogleDriveFolderIDHelp_Click);
//
// oauth2GoogleDrive
//
resources.ApplyResources(this.oauth2GoogleDrive, "oauth2GoogleDrive");
@ -5495,5 +5504,6 @@ namespace ShareX.UploadersLib
private OAuthLoopbackControl oauth2GoogleCloudStorage;
private System.Windows.Forms.TextBox txtAzureStorageCacheControl;
private System.Windows.Forms.Label lblAzureStorageCacheControl;
private System.Windows.Forms.Button btnGoogleDriveFolderIDHelp;
}
}

View File

@ -385,22 +385,25 @@ namespace ShareX.UploadersLib
#region Google Drive
oauth2GoogleDrive.UpdateStatus(Config.GoogleDriveOAuth2Info, Config.GoogleDriveUserInfo);
btnGoogleDriveRefreshFolders.Enabled = oauth2GoogleDrive.Connected;
//btnGoogleDriveRefreshFolders.Enabled = oauth2GoogleDrive.Connected;
cbGoogleDriveIsPublic.Checked = Config.GoogleDriveIsPublic;
cbGoogleDriveDirectLink.Checked = Config.GoogleDriveDirectLink;
/*
cbGoogleDriveSharedDrive.Items.Clear();
cbGoogleDriveSharedDrive.Items.Add(GoogleDrive.MyDrive);
if (Config.GoogleDriveSelectedDrive?.id != GoogleDrive.MyDrive.id)
{
cbGoogleDriveSharedDrive.Items.Add(Config.GoogleDriveSelectedDrive);
}
*/
cbGoogleDriveUseFolder.Checked = Config.GoogleDriveUseFolder;
txtGoogleDriveFolderID.Enabled = Config.GoogleDriveUseFolder;
btnGoogleDriveFolderIDHelp.Enabled = Config.GoogleDriveUseFolder;
txtGoogleDriveFolderID.Text = Config.GoogleDriveFolderID;
GoogleDriveSelectConfigDrive();
//GoogleDriveSelectConfigDrive();
#endregion Google Drive
@ -1679,7 +1682,7 @@ namespace ShareX.UploadersLib
}
oauth2GoogleDrive.UpdateStatus(Config.GoogleDriveOAuth2Info, Config.GoogleDriveUserInfo);
btnGoogleDriveRefreshFolders.Enabled = oauth2GoogleDrive.Connected;
//btnGoogleDriveRefreshFolders.Enabled = oauth2GoogleDrive.Connected;
this.ForceActivate();
}
@ -1704,6 +1707,7 @@ namespace ShareX.UploadersLib
{
Config.GoogleDriveUseFolder = cbGoogleDriveUseFolder.Checked;
txtGoogleDriveFolderID.Enabled = Config.GoogleDriveUseFolder;
btnGoogleDriveFolderIDHelp.Enabled = Config.GoogleDriveUseFolder;
}
private void txtGoogleDriveFolderID_TextChanged(object sender, EventArgs e)
@ -1711,6 +1715,14 @@ namespace ShareX.UploadersLib
Config.GoogleDriveFolderID = txtGoogleDriveFolderID.Text;
}
private void btnGoogleDriveFolderIDHelp_Click(object sender, EventArgs e)
{
MessageBox.Show(@"Unfortunately, Google has forced us to use a more restrictive API scope, which does not allow us to see files or folders anymore. Because of this, we cannot provide folder listing and selection anymore.
However, there is a workaround. You can navigate to the Google Drive website in your browser, open the folder you want to upload to, and then copy the folder ID from the browser's address bar to here.",
"ShareX - Google Drive", MessageBoxButtons.OK, MessageBoxIcon.Question);
}
private void btnGoogleDriveRefreshFolders_Click(object sender, EventArgs e)
{
GoogleDriveRefreshFolders();

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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauthTwitter.Parent" xml:space="preserve">
<value>tpTwitter</value>
@ -714,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Bitly.Parent" xml:space="preserve">
<value>tpBitly</value>
@ -2349,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.ExportImportControl, ShareX.HelpersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;eiFTP.Parent" xml:space="preserve">
<value>gbFTPAccount</value>
@ -3555,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Dropbox.Parent" xml:space="preserve">
<value>tpDropbox</value>
@ -3714,7 +3714,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oAuth2OneDrive.Parent" xml:space="preserve">
<value>tpOneDrive</value>
@ -3723,13 +3723,13 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>4</value>
</data>
<data name="tpOneDrive.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 58</value>
<value>4, 220</value>
</data>
<data name="tpOneDrive.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="tpOneDrive.Size" type="System.Drawing.Size, System.Drawing">
<value>803, 507</value>
<value>178, 0</value>
</data>
<data name="tpOneDrive.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
@ -3749,6 +3749,30 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<data name="&gt;&gt;tpOneDrive.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="btnGoogleDriveFolderIDHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>424, 174</value>
</data>
<data name="btnGoogleDriveFolderIDHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 24</value>
</data>
<data name="btnGoogleDriveFolderIDHelp.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="btnGoogleDriveFolderIDHelp.Text" xml:space="preserve">
<value>?</value>
</data>
<data name="&gt;&gt;btnGoogleDriveFolderIDHelp.Name" xml:space="preserve">
<value>btnGoogleDriveFolderIDHelp</value>
</data>
<data name="&gt;&gt;btnGoogleDriveFolderIDHelp.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnGoogleDriveFolderIDHelp.Parent" xml:space="preserve">
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;btnGoogleDriveFolderIDHelp.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="oauth2GoogleDrive.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 8</value>
</data>
@ -3762,22 +3786,25 @@ 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.OAuthLoopbackControl, ShareX.UploadersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthLoopbackControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2GoogleDrive.Parent" xml:space="preserve">
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;oauth2GoogleDrive.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="cbGoogleDriveSharedDrive.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 136</value>
<value>16, 208</value>
</data>
<data name="cbGoogleDriveSharedDrive.Size" type="System.Drawing.Size, System.Drawing">
<value>256, 21</value>
</data>
<data name="cbGoogleDriveSharedDrive.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
<value>7</value>
</data>
<data name="cbGoogleDriveSharedDrive.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;cbGoogleDriveSharedDrive.Name" xml:space="preserve">
<value>cbGoogleDriveSharedDrive</value>
@ -3789,7 +3816,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;cbGoogleDriveSharedDrive.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="cbGoogleDriveDirectLink.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -3798,7 +3825,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="cbGoogleDriveDirectLink.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 111</value>
<value>16, 112</value>
</data>
<data name="cbGoogleDriveDirectLink.Size" type="System.Drawing.Size, System.Drawing">
<value>93, 17</value>
@ -3819,7 +3846,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;cbGoogleDriveDirectLink.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="cbGoogleDriveUseFolder.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -3828,13 +3855,13 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="cbGoogleDriveUseFolder.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 167</value>
<value>16, 136</value>
</data>
<data name="cbGoogleDriveUseFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>165, 17</value>
</data>
<data name="cbGoogleDriveUseFolder.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
<value>3</value>
</data>
<data name="cbGoogleDriveUseFolder.Text" xml:space="preserve">
<value>Upload files to selected folder</value>
@ -3849,16 +3876,16 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;cbGoogleDriveUseFolder.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="txtGoogleDriveFolderID.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 208</value>
<value>16, 176</value>
</data>
<data name="txtGoogleDriveFolderID.Size" type="System.Drawing.Size, System.Drawing">
<value>432, 20</value>
<value>400, 20</value>
</data>
<data name="txtGoogleDriveFolderID.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
<value>5</value>
</data>
<data name="&gt;&gt;txtGoogleDriveFolderID.Name" xml:space="preserve">
<value>txtGoogleDriveFolderID</value>
@ -3870,7 +3897,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;txtGoogleDriveFolderID.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="lblGoogleDriveFolderID.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -3879,13 +3906,13 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="lblGoogleDriveFolderID.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 191</value>
<value>13, 160</value>
</data>
<data name="lblGoogleDriveFolderID.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 13</value>
</data>
<data name="lblGoogleDriveFolderID.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
<value>4</value>
</data>
<data name="lblGoogleDriveFolderID.Text" xml:space="preserve">
<value>Folder ID:</value>
@ -3900,7 +3927,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;lblGoogleDriveFolderID.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="chGoogleDriveTitle.Text" xml:space="preserve">
<value>Title</value>
@ -3915,25 +3942,28 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>228</value>
</data>
<data name="lvGoogleDriveFoldersList.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 232</value>
<value>16, 240</value>
</data>
<data name="lvGoogleDriveFoldersList.Size" type="System.Drawing.Size, System.Drawing">
<value>432, 296</value>
</data>
<data name="lvGoogleDriveFoldersList.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
<value>9</value>
</data>
<data name="lvGoogleDriveFoldersList.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;lvGoogleDriveFoldersList.Name" xml:space="preserve">
<value>lvGoogleDriveFoldersList</value>
</data>
<data name="&gt;&gt;lvGoogleDriveFoldersList.Type" xml:space="preserve">
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvGoogleDriveFoldersList.Parent" xml:space="preserve">
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;lvGoogleDriveFoldersList.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="btnGoogleDriveRefreshFolders.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@ -3942,17 +3972,20 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>NoControl</value>
</data>
<data name="btnGoogleDriveRefreshFolders.Location" type="System.Drawing.Point, System.Drawing">
<value>280, 135</value>
<value>280, 208</value>
</data>
<data name="btnGoogleDriveRefreshFolders.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 23</value>
</data>
<data name="btnGoogleDriveRefreshFolders.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
<value>8</value>
</data>
<data name="btnGoogleDriveRefreshFolders.Text" xml:space="preserve">
<value>Refresh folders list</value>
</data>
<data name="btnGoogleDriveRefreshFolders.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;btnGoogleDriveRefreshFolders.Name" xml:space="preserve">
<value>btnGoogleDriveRefreshFolders</value>
</data>
@ -3963,7 +3996,7 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;btnGoogleDriveRefreshFolders.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="cbGoogleDriveIsPublic.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -3975,13 +4008,13 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>16, 88</value>
</data>
<data name="cbGoogleDriveIsPublic.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 17</value>
<value>90, 17</value>
</data>
<data name="cbGoogleDriveIsPublic.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="cbGoogleDriveIsPublic.Text" xml:space="preserve">
<value>Is public upload?</value>
<value>Public upload</value>
</data>
<data name="&gt;&gt;cbGoogleDriveIsPublic.Name" xml:space="preserve">
<value>cbGoogleDriveIsPublic</value>
@ -3993,16 +4026,16 @@ For example, if your bucket is called "bucket.example.com" then URL will be "htt
<value>tpGoogleDrive</value>
</data>
<data name="&gt;&gt;cbGoogleDriveIsPublic.ZOrder" xml:space="preserve">
<value>8</value>
<value>9</value>
</data>
<data name="tpGoogleDrive.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 220</value>
<value>4, 58</value>
</data>
<data name="tpGoogleDrive.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="tpGoogleDrive.Size" type="System.Drawing.Size, System.Drawing">
<value>178, 0</value>
<value>803, 507</value>
</data>
<data name="tpGoogleDrive.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -4392,7 +4425,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvBoxFolders.Parent" xml:space="preserve">
<value>tpBox</value>
@ -4473,7 +4506,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Box.Parent" xml:space="preserve">
<value>tpBox</value>
@ -5352,7 +5385,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.OAuthLoopbackControl, ShareX.UploadersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthLoopbackControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2GoogleCloudStorage.Parent" xml:space="preserve">
<value>tpGoogleCloudStorage</value>
@ -7824,7 +7857,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;atcSendSpaceAccountType.Parent" xml:space="preserve">
<value>tpSendSpace</value>
@ -8193,7 +8226,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oAuthJira.Parent" xml:space="preserve">
<value>tpJira</value>
@ -8772,7 +8805,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvSeafileLibraries.Parent" xml:space="preserve">
<value>tpSeafile</value>
@ -10531,7 +10564,7 @@ Using an encrypted library disables sharing.</value>
<value>oauth2YouTube</value>
</data>
<data name="&gt;&gt;oauth2YouTube.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthLoopbackControl, ShareX.UploadersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthLoopbackControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2YouTube.Parent" xml:space="preserve">
<value>tpYouTube</value>
@ -12265,7 +12298,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oAuth2Gist.Parent" xml:space="preserve">
<value>tpGist</value>
@ -12904,7 +12937,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;atcImgurAccountType.Parent" xml:space="preserve">
<value>tpImgur</value>
@ -12925,7 +12958,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2Imgur.Parent" xml:space="preserve">
<value>tpImgur</value>
@ -12961,7 +12994,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvImgurAlbumList.Parent" xml:space="preserve">
<value>tpImgur</value>
@ -13360,7 +13393,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauthFlickr.Parent" xml:space="preserve">
<value>tpFlickr</value>
@ -13897,7 +13930,7 @@ Using an encrypted library disables sharing.</value>
<value>oauth2GooglePhotos</value>
</data>
<data name="&gt;&gt;oauth2GooglePhotos.Type" xml:space="preserve">
<value>ShareX.UploadersLib.OAuthLoopbackControl, ShareX.UploadersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.OAuthLoopbackControl, ShareX.UploadersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;oauth2GooglePhotos.Parent" xml:space="preserve">
<value>tpGooglePhotos</value>
@ -14557,7 +14590,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.TabToTreeView, ShareX.HelpersLib, Version=16.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;tttvMain.Parent" xml:space="preserve">
<value>$this</value>
@ -14578,7 +14611,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=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.UploadersLib.AccountTypeControl, ShareX.UploadersLib, Version=16.0.3.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

@ -1312,10 +1312,11 @@ namespace ShareX
{
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
await OCRImage(bmp, taskSettings.CaptureSettingsReference.OCROptions, filePath);
bool notificationsEnabled = taskSettings.GeneralSettings.ShowToastNotificationAfterTaskCompleted;
await OCRImage(bmp, taskSettings.CaptureSettingsReference.OCROptions, filePath, notificationsEnabled);
}
private static async Task OCRImage(Bitmap bmp, OCROptions options, string filePath = null)
private static async Task OCRImage(Bitmap bmp, OCROptions options, string filePath = null, bool notificationsEnabled = true)
{
try
{
@ -1325,7 +1326,7 @@ namespace ShareX
{
if (options.Silent)
{
await AsyncOCRImage(bmp, options, filePath);
await AsyncOCRImage(bmp, options, filePath, notificationsEnabled);
}
else
{
@ -1348,9 +1349,9 @@ namespace ShareX
}
}
private static async Task AsyncOCRImage(Bitmap bmp, OCROptions options, string filePath = null)
private static async Task AsyncOCRImage(Bitmap bmp, OCROptions options, string filePath = null, bool notificationsEnabled = true)
{
ShowNotificationTip(Resources.OCRForm_AutoProcessing);
if (notificationsEnabled) ShowNotificationTip(Resources.OCRForm_AutoProcessing);
string result = null;
@ -1372,11 +1373,11 @@ namespace ShareX
File.WriteAllText(textFilePath, result, Encoding.UTF8);
}
ShowNotificationTip(Resources.OCRForm_AutoComplete);
if (notificationsEnabled) ShowNotificationTip(Resources.OCRForm_AutoComplete);
}
else
{
ShowNotificationTip(Resources.OCRForm_AutoCompleteFail);
if (notificationsEnabled) ShowNotificationTip(Resources.OCRForm_AutoCompleteFail);
}
}
@ -2182,4 +2183,4 @@ namespace ShareX
return true;
}
}
}
}