mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 17:56:51 +13:00
Added delay setting to webpage capture, saving this settings to application config
This commit is contained in:
parent
773b626d2b
commit
a3d654269a
8 changed files with 177 additions and 39 deletions
|
@ -24,6 +24,7 @@ You should have received a copy of the GNU General Public License
|
|||
#endregion License Information (GPL v3)
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ShareX.HelpersLib
|
||||
|
@ -50,5 +51,17 @@ public static Task Run(Action thread, Action completed, bool completedInFormThre
|
|||
|
||||
return Run(thread).ContinueWith(task => completed(), taskScheduler);
|
||||
}
|
||||
|
||||
public static void RunDelayed(Action thread, int delay)
|
||||
{
|
||||
if (delay > 0)
|
||||
{
|
||||
Run(() => Thread.Sleep(delay), thread);
|
||||
}
|
||||
else
|
||||
{
|
||||
thread();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -55,12 +55,6 @@
|
|||
<Compile Include="Forms\RectangleTransparent.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\WebpageCaptureForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\WebpageCaptureForm.Designer.cs">
|
||||
<DependentUpon>WebpageCaptureForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MonitorRegion.cs" />
|
||||
<Compile Include="MonitorRegionDefaultCreator.cs" />
|
||||
<Compile Include="RectangleAnnotateOptions.cs" />
|
||||
|
@ -135,9 +129,6 @@
|
|||
<Content Include="Resources\Crosshair.cur" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Forms\WebpageCaptureForm.resx">
|
||||
<DependentUpon>WebpageCaptureForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.de.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
|
|
|
@ -29,6 +29,7 @@ You should have received a copy of the GNU General Public License
|
|||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ShareX.ScreenCaptureLib
|
||||
|
@ -37,6 +38,8 @@ public class WebpageCapture : IDisposable
|
|||
{
|
||||
public event Action<Bitmap> CaptureCompleted;
|
||||
|
||||
public int CaptureDelay { get; set; }
|
||||
|
||||
private WebBrowser webBrowser;
|
||||
|
||||
public WebpageCapture()
|
||||
|
@ -62,6 +65,14 @@ public void CapturePage(string url, Size browserSize)
|
|||
}
|
||||
|
||||
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
|
||||
{
|
||||
if (webBrowser.ReadyState == WebBrowserReadyState.Complete)
|
||||
{
|
||||
TaskEx.RunDelayed(GetWebpageBitmap, CaptureDelay);
|
||||
}
|
||||
}
|
||||
|
||||
private void GetWebpageBitmap()
|
||||
{
|
||||
Rectangle rect = webBrowser.Document.Body.ScrollRectangle;
|
||||
webBrowser.Size = new Size(rect.Width, rect.Height);
|
||||
|
|
|
@ -212,5 +212,12 @@ public ApplicationConfig()
|
|||
public List<ScriptInfo> AutomateScripts = new List<ScriptInfo>();
|
||||
|
||||
#endregion Automate Form
|
||||
|
||||
#region Webpage Capture Form
|
||||
|
||||
public Size WebpageCaptureBrowserSize = Size.Empty;
|
||||
public float WebpageCaptureDelay = 0f;
|
||||
|
||||
#endregion Webpage Capture Form
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
namespace ShareX.ScreenCaptureLib
|
||||
namespace ShareX
|
||||
{
|
||||
partial class WebpageCaptureForm
|
||||
{
|
||||
|
@ -44,10 +44,13 @@ private void InitializeComponent()
|
|||
this.nudWebpageWidth = new System.Windows.Forms.NumericUpDown();
|
||||
this.nudWebpageHeight = new System.Windows.Forms.NumericUpDown();
|
||||
this.lblWebpageX = new System.Windows.Forms.Label();
|
||||
this.lblCaptureDelay = new System.Windows.Forms.Label();
|
||||
this.nudCaptureDelay = new System.Windows.Forms.NumericUpDown();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbResult)).BeginInit();
|
||||
this.pResult.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudWebpageWidth)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudWebpageHeight)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudCaptureDelay)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// txtURL
|
||||
|
@ -107,6 +110,7 @@ private void InitializeComponent()
|
|||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudWebpageWidth.ValueChanged += new System.EventHandler(this.nudWebpageWidth_ValueChanged);
|
||||
//
|
||||
// nudWebpageHeight
|
||||
//
|
||||
|
@ -127,17 +131,42 @@ private void InitializeComponent()
|
|||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudWebpageHeight.ValueChanged += new System.EventHandler(this.nudWebpageHeight_ValueChanged);
|
||||
//
|
||||
// lblWebpageX
|
||||
//
|
||||
resources.ApplyResources(this.lblWebpageX, "lblWebpageX");
|
||||
this.lblWebpageX.Name = "lblWebpageX";
|
||||
//
|
||||
// lblCaptureDelay
|
||||
//
|
||||
resources.ApplyResources(this.lblCaptureDelay, "lblCaptureDelay");
|
||||
this.lblCaptureDelay.Name = "lblCaptureDelay";
|
||||
//
|
||||
// nudCaptureDelay
|
||||
//
|
||||
this.nudCaptureDelay.DecimalPlaces = 1;
|
||||
this.nudCaptureDelay.Increment = new decimal(new int[] {
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
resources.ApplyResources(this.nudCaptureDelay, "nudCaptureDelay");
|
||||
this.nudCaptureDelay.Maximum = new decimal(new int[] {
|
||||
10,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudCaptureDelay.Name = "nudCaptureDelay";
|
||||
this.nudCaptureDelay.ValueChanged += new System.EventHandler(this.nudCaptureDelay_ValueChanged);
|
||||
//
|
||||
// WebpageCaptureForm
|
||||
//
|
||||
this.AcceptButton = this.btnCapture;
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.nudCaptureDelay);
|
||||
this.Controls.Add(this.lblCaptureDelay);
|
||||
this.Controls.Add(this.nudWebpageHeight);
|
||||
this.Controls.Add(this.lblWebpageX);
|
||||
this.Controls.Add(this.nudWebpageWidth);
|
||||
|
@ -152,6 +181,7 @@ private void InitializeComponent()
|
|||
this.pResult.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudWebpageWidth)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudWebpageHeight)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudCaptureDelay)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
|
@ -168,5 +198,7 @@ private void InitializeComponent()
|
|||
private System.Windows.Forms.NumericUpDown nudWebpageWidth;
|
||||
private System.Windows.Forms.NumericUpDown nudWebpageHeight;
|
||||
private System.Windows.Forms.Label lblWebpageX;
|
||||
private System.Windows.Forms.Label lblCaptureDelay;
|
||||
private System.Windows.Forms.NumericUpDown nudCaptureDelay;
|
||||
}
|
||||
}
|
|
@ -24,6 +24,7 @@ You should have received a copy of the GNU General Public License
|
|||
#endregion License Information (GPL v3)
|
||||
|
||||
using ShareX.HelpersLib;
|
||||
using ShareX.ScreenCaptureLib;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
@ -33,7 +34,7 @@ You should have received a copy of the GNU General Public License
|
|||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ShareX.ScreenCaptureLib
|
||||
namespace ShareX
|
||||
{
|
||||
public partial class WebpageCaptureForm : Form
|
||||
{
|
||||
|
@ -45,14 +46,12 @@ public WebpageCaptureForm()
|
|||
{
|
||||
InitializeComponent();
|
||||
Icon = ShareXResources.Icon;
|
||||
CheckClipboard();
|
||||
nudWebpageWidth.Value = Screen.PrimaryScreen.Bounds.Width.Between((int)nudWebpageWidth.Minimum, (int)nudWebpageWidth.Maximum);
|
||||
nudWebpageHeight.Value = Screen.PrimaryScreen.Bounds.Height.Between((int)nudWebpageHeight.Minimum, (int)nudWebpageHeight.Maximum);
|
||||
LoadSettings();
|
||||
webpageCapture = new WebpageCapture();
|
||||
webpageCapture.CaptureCompleted += webpageCapture_CaptureCompleted;
|
||||
}
|
||||
|
||||
private void CheckClipboard()
|
||||
private void LoadSettings()
|
||||
{
|
||||
if (Clipboard.ContainsText())
|
||||
{
|
||||
|
@ -63,6 +62,43 @@ private void CheckClipboard()
|
|||
txtURL.Text = text;
|
||||
}
|
||||
}
|
||||
|
||||
Size browserSize = Program.Settings.WebpageCaptureBrowserSize;
|
||||
if (browserSize.Width == 0) browserSize.Width = Screen.PrimaryScreen.Bounds.Width;
|
||||
nudWebpageWidth.Value = browserSize.Width.Between((int)nudWebpageWidth.Minimum, (int)nudWebpageWidth.Maximum);
|
||||
if (browserSize.Height == 0) browserSize.Height = Screen.PrimaryScreen.Bounds.Height;
|
||||
nudWebpageHeight.Value = browserSize.Height.Between((int)nudWebpageHeight.Minimum, (int)nudWebpageHeight.Maximum);
|
||||
|
||||
nudCaptureDelay.Value = (decimal)Program.Settings.WebpageCaptureDelay.Between((float)nudCaptureDelay.Minimum, (float)nudCaptureDelay.Maximum);
|
||||
|
||||
btnCapture.Enabled = txtURL.TextLength > 0;
|
||||
}
|
||||
|
||||
private void webpageCapture_CaptureCompleted(Bitmap bmp)
|
||||
{
|
||||
pbResult.Image = bmp;
|
||||
IsBusy = false;
|
||||
btnCapture.Enabled = txtURL.Enabled = !IsBusy;
|
||||
}
|
||||
|
||||
private void txtURL_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
btnCapture.Enabled = txtURL.TextLength > 0;
|
||||
}
|
||||
|
||||
private void nudWebpageWidth_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
Program.Settings.WebpageCaptureBrowserSize.Width = (int)nudWebpageWidth.Value;
|
||||
}
|
||||
|
||||
private void nudWebpageHeight_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
Program.Settings.WebpageCaptureBrowserSize.Height = (int)nudWebpageHeight.Value;
|
||||
}
|
||||
|
||||
private void nudCaptureDelay_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
Program.Settings.WebpageCaptureDelay = (float)nudCaptureDelay.Value;
|
||||
}
|
||||
|
||||
private void btnCapture_Click(object sender, EventArgs e)
|
||||
|
@ -75,20 +111,8 @@ private void btnCapture_Click(object sender, EventArgs e)
|
|||
pbResult.Image = null;
|
||||
}
|
||||
|
||||
webpageCapture.CaptureDelay = (int)nudCaptureDelay.Value * 1000;
|
||||
webpageCapture.CapturePage(txtURL.Text, new Size((int)nudWebpageWidth.Value, (int)nudWebpageWidth.Value));
|
||||
}
|
||||
|
||||
private void webpageCapture_CaptureCompleted(Bitmap bmp)
|
||||
{
|
||||
pbResult.Image = bmp;
|
||||
|
||||
IsBusy = false;
|
||||
btnCapture.Enabled = txtURL.Enabled = !IsBusy;
|
||||
}
|
||||
|
||||
private void txtURL_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
btnCapture.Enabled = txtURL.TextLength > 0;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -142,7 +142,7 @@
|
|||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>txtURL.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="lblURL.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
|
@ -169,10 +169,10 @@
|
|||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>lblURL.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="btnCapture.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>249, 35</value>
|
||||
<value>336, 35</value>
|
||||
</data>
|
||||
<data name="btnCapture.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>112, 23</value>
|
||||
|
@ -193,7 +193,7 @@
|
|||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnCapture.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="pbResult.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
|
@ -244,7 +244,7 @@
|
|||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>pResult.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="lblWebpageSize.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
|
@ -271,10 +271,10 @@
|
|||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>lblWebpageSize.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="nudWebpageWidth.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>88, 36</value>
|
||||
<value>80, 36</value>
|
||||
</data>
|
||||
<data name="nudWebpageWidth.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>64, 20</value>
|
||||
|
@ -295,10 +295,10 @@
|
|||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>nudWebpageWidth.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="nudWebpageHeight.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>176, 36</value>
|
||||
<value>168, 36</value>
|
||||
</data>
|
||||
<data name="nudWebpageHeight.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>64, 20</value>
|
||||
|
@ -319,7 +319,7 @@
|
|||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>nudWebpageHeight.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="lblWebpageX.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
|
@ -328,7 +328,7 @@
|
|||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="lblWebpageX.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>159, 40</value>
|
||||
<value>151, 40</value>
|
||||
</data>
|
||||
<data name="lblWebpageX.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>12, 13</value>
|
||||
|
@ -349,8 +349,59 @@
|
|||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>lblWebpageX.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="lblCaptureDelay.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="lblCaptureDelay.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>240, 40</value>
|
||||
</data>
|
||||
<data name="lblCaptureDelay.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>37, 13</value>
|
||||
</data>
|
||||
<data name="lblCaptureDelay.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="lblCaptureDelay.Text" xml:space="preserve">
|
||||
<value>Delay:</value>
|
||||
</data>
|
||||
<data name=">>lblCaptureDelay.Name" xml:space="preserve">
|
||||
<value>lblCaptureDelay</value>
|
||||
</data>
|
||||
<data name=">>lblCaptureDelay.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lblCaptureDelay.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>lblCaptureDelay.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="nudCaptureDelay.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>280, 36</value>
|
||||
</data>
|
||||
<data name="nudCaptureDelay.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>48, 20</value>
|
||||
</data>
|
||||
<data name="nudCaptureDelay.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="nudCaptureDelay.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name=">>nudCaptureDelay.Name" xml:space="preserve">
|
||||
<value>nudCaptureDelay</value>
|
||||
</data>
|
||||
<data name=">>nudCaptureDelay.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>nudCaptureDelay.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>nudCaptureDelay.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
|
@ -179,6 +179,12 @@
|
|||
<Compile Include="Forms\AfterUploadForm.designer.cs">
|
||||
<DependentUpon>AfterUploadForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\WebpageCaptureForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\WebpageCaptureForm.Designer.cs">
|
||||
<DependentUpon>WebpageCaptureForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="HotkeysConfig.cs" />
|
||||
<Compile Include="HotkeyManager.cs" />
|
||||
<Compile Include="HotkeySettings.cs" />
|
||||
|
@ -718,6 +724,9 @@
|
|||
<EmbeddedResource Include="Forms\WatchFolderForm.zh-CN.resx">
|
||||
<DependentUpon>WatchFolderForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\WebpageCaptureForm.resx">
|
||||
<DependentUpon>WebpageCaptureForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.de.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.es.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.fr.resx" />
|
||||
|
|
Loading…
Reference in a new issue