From e396c9260f82b4cfc95711567756373ad21cd78e Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 25 Jul 2015 18:06:32 +0300 Subject: [PATCH] Added Greenlight button --- .../Controls/GreenlightButton.cs | 152 ++++++++++++++++++ .../Native/NativeMethods_Helpers.cs | 9 +- ShareX.HelpersLib/ShareX.HelpersLib.csproj | 3 + .../ShareX.UploadersLib.csproj | 20 +-- ShareX.UploadersLib/packages.config | 12 +- ShareX/ApplicationConfig.cs | 1 + ShareX/Forms/MainForm.Designer.cs | 16 +- ShareX/Forms/MainForm.cs | 20 +++ ShareX/Forms/MainForm.resx | 92 ++++------- 9 files changed, 237 insertions(+), 88 deletions(-) create mode 100644 ShareX.HelpersLib/Controls/GreenlightButton.cs diff --git a/ShareX.HelpersLib/Controls/GreenlightButton.cs b/ShareX.HelpersLib/Controls/GreenlightButton.cs new file mode 100644 index 000000000..507f022b5 --- /dev/null +++ b/ShareX.HelpersLib/Controls/GreenlightButton.cs @@ -0,0 +1,152 @@ +#region License Information (GPL v3) + +/* + ShareX - A program that allows you to take screenshots and share any file type + Copyright © 2007-2015 ShareX Developers + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Optionally you can also view the license at . +*/ + +#endregion License Information (GPL v3) + +using System; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Design; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +namespace ShareX.HelpersLib +{ + [DefaultEvent("MouseClick")] + public class GreenlightButton : Control + { + [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))] + public override string Text + { + get + { + return text; + } + set + { + if (value == null) + { + value = ""; + } + + if (text != value) + { + text = value; + + Refresh(); + } + } + } + + private string text; + private bool isHover; + private LinearGradientBrush backgroundBrush, backgroundHoverBrush, borderBrush; + private Pen borderPen; + private bool ready; + + public GreenlightButton() + { + SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.OptimizedDoubleBuffer | ControlStyles.SupportsTransparentBackColor, true); + } + + private void Prepare() + { + ForeColor = Color.White; + backgroundBrush = new LinearGradientBrush(new Rectangle(0, 0, ClientSize.Width, ClientSize.Height), Color.FromArgb(121, 153, 5), Color.FromArgb(83, 105, 5), + LinearGradientMode.Vertical); + backgroundHoverBrush = new LinearGradientBrush(new Rectangle(0, 0, ClientSize.Width, ClientSize.Height), Color.FromArgb(140, 170, 5), Color.FromArgb(93, 115, 5), + LinearGradientMode.Vertical); + borderBrush = new LinearGradientBrush(new Rectangle(0, 0, ClientSize.Width, ClientSize.Height), Color.White, Color.Black, LinearGradientMode.Vertical); + borderPen = new Pen(borderBrush); + Font = new Font("Arial", 12); + ready = true; + } + + protected override void OnPaint(PaintEventArgs pe) + { + base.OnPaint(pe); + + if (ready) + { + Graphics g = pe.Graphics; + + DrawBackground(g); + + if (!string.IsNullOrEmpty(Text)) + { + DrawText(g); + } + } + } + + protected override void OnMouseEnter(EventArgs e) + { + base.OnMouseEnter(e); + isHover = true; + Refresh(); + } + + protected override void OnMouseLeave(EventArgs e) + { + base.OnMouseLeave(e); + isHover = false; + Refresh(); + } + + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + Prepare(); + } + + private void DrawBackground(Graphics g) + { + g.SetHighQuality(); + + if (isHover) + { + g.DrawRoundedRectangle(backgroundHoverBrush, borderPen, new Rectangle(0, 0, ClientSize.Width - 1, ClientSize.Height - 1), 2); + } + else + { + g.DrawRoundedRectangle(backgroundBrush, borderPen, new Rectangle(0, 0, ClientSize.Width - 1, ClientSize.Height - 1), 2); + } + } + + private void DrawText(Graphics g) + { + TextRenderer.DrawText(g, Text, Font, new Rectangle(ClientRectangle.X, ClientRectangle.Y + 1, ClientRectangle.Width, ClientRectangle.Height + 1), Color.Black); + TextRenderer.DrawText(g, Text, Font, ClientRectangle, ForeColor); + } + + protected override void Dispose(bool disposing) + { + if (backgroundBrush != null) backgroundBrush.Dispose(); + if (backgroundHoverBrush != null) backgroundHoverBrush.Dispose(); + if (borderBrush != null) borderBrush.Dispose(); + if (borderPen != null) borderPen.Dispose(); + + base.Dispose(disposing); + } + } +} \ No newline at end of file diff --git a/ShareX.HelpersLib/Native/NativeMethods_Helpers.cs b/ShareX.HelpersLib/Native/NativeMethods_Helpers.cs index dc3191c5c..f5fafed23 100644 --- a/ShareX.HelpersLib/Native/NativeMethods_Helpers.cs +++ b/ShareX.HelpersLib/Native/NativeMethods_Helpers.cs @@ -448,20 +448,13 @@ public static string decode_mmioFOURCC(int code) public static bool Is64Bit() { - if (IntPtr.Size == 8 || (IntPtr.Size == 4 && Is32BitProcessOn64BitProcessor())) - { - return true; - } - - return false; + return IntPtr.Size == 8 || (IntPtr.Size == 4 && Is32BitProcessOn64BitProcessor()); } private static bool Is32BitProcessOn64BitProcessor() { bool retVal; - IsWow64Process(Process.GetCurrentProcess().Handle, out retVal); - return retVal; } } diff --git a/ShareX.HelpersLib/ShareX.HelpersLib.csproj b/ShareX.HelpersLib/ShareX.HelpersLib.csproj index b4c327cba..e5a84d266 100644 --- a/ShareX.HelpersLib/ShareX.HelpersLib.csproj +++ b/ShareX.HelpersLib/ShareX.HelpersLib.csproj @@ -103,6 +103,9 @@ + + Component + Component diff --git a/ShareX.UploadersLib/ShareX.UploadersLib.csproj b/ShareX.UploadersLib/ShareX.UploadersLib.csproj index 181686827..dab63d3c5 100644 --- a/ShareX.UploadersLib/ShareX.UploadersLib.csproj +++ b/ShareX.UploadersLib/ShareX.UploadersLib.csproj @@ -69,8 +69,8 @@ false - - ..\packages\AWSSDK.2.3.46.0\lib\net35\AWSSDK.dll + + ..\packages\AWSSDK.2.3.48.0\lib\net35\AWSSDK.dll True @@ -85,8 +85,8 @@ True - False - ..\packages\SSH.NET.2014.4.6-beta1\lib\net40\Renci.SshNet.dll + ..\packages\SSH.NET.2014.4.6-beta2\lib\net40\Renci.SshNet.dll + True @@ -692,12 +692,12 @@ - - - - - - + + + + + + diff --git a/ShareX.UploadersLib/packages.config b/ShareX.UploadersLib/packages.config index 43eb0af6f..ec88b2943 100644 --- a/ShareX.UploadersLib/packages.config +++ b/ShareX.UploadersLib/packages.config @@ -1,9 +1,9 @@  - - - - - - + + + + + + \ No newline at end of file diff --git a/ShareX/ApplicationConfig.cs b/ShareX/ApplicationConfig.cs index 1931a5b35..667dc44f7 100644 --- a/ShareX/ApplicationConfig.cs +++ b/ShareX/ApplicationConfig.cs @@ -40,6 +40,7 @@ public class ApplicationConfig : SettingsBase public bool ShowUploadWarning = true; // First time upload warning public bool ShowMultiUploadWarning = true; // More than 10 files upload warning public bool ShowTrayMiddleClickTip = true; // Tray icon middle click tip + public bool ShowGreenlightButton = true; public int NameParserAutoIncrementNumber = 0; public RecentItem[] RecentLinks = null; public bool DisableHotkeys = false; diff --git a/ShareX/Forms/MainForm.Designer.cs b/ShareX/Forms/MainForm.Designer.cs index b0d43d00e..c305ab557 100644 --- a/ShareX/Forms/MainForm.Designer.cs +++ b/ShareX/Forms/MainForm.Designer.cs @@ -43,8 +43,8 @@ private void InitializeComponent() this.chURL = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.pbPreview = new ShareX.HelpersLib.MyPictureBox(); this.pGreenlight = new System.Windows.Forms.Panel(); - this.btnGreenlightHide = new ShareX.HelpersLib.BlackStyleButton(); - this.btnGreenlightOpen = new ShareX.HelpersLib.BlackStyleButton(); + this.btnGreenlightHide = new ShareX.HelpersLib.GreenlightButton(); + this.btnGreenlightOpen = new ShareX.HelpersLib.GreenlightButton(); this.tsMain = new System.Windows.Forms.ToolStrip(); this.tsddbCapture = new System.Windows.Forms.ToolStripDropDownButton(); this.tsmiFullscreen = new System.Windows.Forms.ToolStripMenuItem(); @@ -263,7 +263,7 @@ private void InitializeComponent() // // lblSplitter // - this.lblSplitter.BackColor = System.Drawing.Color.Black; + this.lblSplitter.BackColor = System.Drawing.Color.Gray; resources.ApplyResources(this.lblSplitter, "lblSplitter"); this.lblSplitter.Name = "lblSplitter"; // @@ -340,15 +340,19 @@ private void InitializeComponent() // // btnGreenlightHide // + this.btnGreenlightHide.Cursor = System.Windows.Forms.Cursors.Hand; resources.ApplyResources(this.btnGreenlightHide, "btnGreenlightHide"); this.btnGreenlightHide.ForeColor = System.Drawing.Color.White; this.btnGreenlightHide.Name = "btnGreenlightHide"; + this.btnGreenlightHide.MouseClick += new System.Windows.Forms.MouseEventHandler(this.btnGreenlightHide_MouseClick); // // btnGreenlightOpen // + this.btnGreenlightOpen.Cursor = System.Windows.Forms.Cursors.Hand; resources.ApplyResources(this.btnGreenlightOpen, "btnGreenlightOpen"); this.btnGreenlightOpen.ForeColor = System.Drawing.Color.White; this.btnGreenlightOpen.Name = "btnGreenlightOpen"; + this.btnGreenlightOpen.MouseClick += new System.Windows.Forms.MouseEventHandler(this.btnGreenlightOpen_MouseClick); // // tsMain // @@ -1724,9 +1728,9 @@ private void InitializeComponent() this.AllowDrop = true; resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pGreenlight); this.Controls.Add(this.scMain); this.Controls.Add(this.tsMain); - this.Controls.Add(this.pGreenlight); this.DoubleBuffered = true; this.Name = "MainForm"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); @@ -1946,7 +1950,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem tsmiTrayWebpageCapture; private System.Windows.Forms.ToolStripMenuItem tsmiTrayToggleHotkeys; private System.Windows.Forms.Panel pGreenlight; - private HelpersLib.BlackStyleButton btnGreenlightHide; - private HelpersLib.BlackStyleButton btnGreenlightOpen; + private HelpersLib.GreenlightButton btnGreenlightOpen; + private HelpersLib.GreenlightButton btnGreenlightHide; } } \ No newline at end of file diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index ea17b2c2e..c5525c776 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -561,6 +561,8 @@ private void LoadSettings() UpdateToggleHotkeyButton(); TaskbarManager.Enabled = Program.Settings.TaskbarProgressEnabled; + + pGreenlight.Visible = Program.Settings.ShowGreenlightButton; } private void RegisterMenuClosing() @@ -1470,6 +1472,24 @@ private void tsmiImagePreviewAutomatic_Click(object sender, EventArgs e) UpdateControls(); } + private void btnGreenlightOpen_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + URLHelpers.OpenURL(""); + btnGreenlightOpen.Text = "Thanks for considering voting :)\r\nYou can hide these buttons by pressing hide button on the right side:"; + } + } + + private void btnGreenlightHide_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + pGreenlight.Visible = false; + Program.Settings.ShowGreenlightButton = false; + } + } + #endregion UploadInfoMenu events #endregion Form events diff --git a/ShareX/Forms/MainForm.resx b/ShareX/Forms/MainForm.resx index 52a441c9c..81f16de8e 100644 --- a/ShareX/Forms/MainForm.resx +++ b/ShareX/Forms/MainForm.resx @@ -274,7 +274,7 @@ $this - 2 + 3 Filename @@ -318,54 +318,6 @@ Bottom, Left - - btnGreenlightHide - - - ShareX.HelpersLib.BlackStyleButton, ShareX.HelpersLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - pGreenlight - - - 0 - - - btnGreenlightOpen - - - ShareX.HelpersLib.BlackStyleButton, ShareX.HelpersLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - pGreenlight - - - 1 - - - 170, 362 - - - 656, 45 - - - 3 - - - False - - - pGreenlight - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - Right @@ -373,13 +325,13 @@ Arial, 12pt - 553, 0 + 581, 0 - 103, 45 + 75, 56 - 1 + 3 Hide @@ -388,7 +340,7 @@ btnGreenlightHide - ShareX.HelpersLib.BlackStyleButton, ShareX.HelpersLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + ShareX.HelpersLib.GreenlightButton, ShareX.HelpersLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null pGreenlight @@ -406,20 +358,20 @@ 0, 0 - 560, 45 + 576, 56 - 0 + 2 - We need your help for us to be able to release ShareX in Steam! + We need your help to be able to release ShareX on Steam! If you would like to vote, click here to open our Steam Greenlight page. btnGreenlightOpen - ShareX.HelpersLib.BlackStyleButton, ShareX.HelpersLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + ShareX.HelpersLib.GreenlightButton, ShareX.HelpersLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null pGreenlight @@ -427,6 +379,30 @@ If you would like to vote, click here to open our Steam Greenlight page. 1 + + 170, 344 + + + 656, 56 + + + 3 + + + False + + + pGreenlight + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + 17, 17 @@ -458,7 +434,7 @@ If you would like to vote, click here to open our Steam Greenlight page. $this - 3 + 4 MiddleLeft