Use dark themed menus in main window and tray menu

This commit is contained in:
Jaex 2019-05-16 02:05:32 +03:00
parent ccc20fce0a
commit 0aca109705
13 changed files with 344 additions and 19 deletions

View file

@ -0,0 +1,258 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2019 ShareX Team
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 <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using System.Drawing;
using System.Windows.Forms;
namespace ShareX.HelpersLib
{
public class DarkColorTable : ProfessionalColorTable
{
public override Color ButtonSelectedHighlight
{
get { return ButtonSelectedGradientMiddle; }
}
public override Color ButtonSelectedHighlightBorder
{
get { return ButtonSelectedBorder; }
}
public override Color ButtonPressedHighlight
{
get { return ButtonPressedGradientMiddle; }
}
public override Color ButtonPressedHighlightBorder
{
get { return ButtonPressedBorder; }
}
public override Color ButtonCheckedHighlight
{
get { return ButtonCheckedGradientMiddle; }
}
public override Color ButtonCheckedHighlightBorder
{
get { return ButtonSelectedBorder; }
}
public override Color ButtonPressedBorder
{
get { return ButtonSelectedBorder; }
}
public override Color ButtonSelectedBorder
{
get { return Color.FromArgb(255, 116, 129, 152); }
}
public override Color ButtonCheckedGradientBegin
{
get { return Color.FromArgb(255, 55, 63, 74); }
}
public override Color ButtonCheckedGradientMiddle
{
get { return Color.FromArgb(255, 55, 63, 74); }
}
public override Color ButtonCheckedGradientEnd
{
get { return Color.FromArgb(255, 55, 63, 74); }
}
public override Color ButtonSelectedGradientBegin
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color ButtonSelectedGradientMiddle
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color ButtonSelectedGradientEnd
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color ButtonPressedGradientBegin
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color ButtonPressedGradientMiddle
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color ButtonPressedGradientEnd
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color CheckBackground
{
get { return Color.FromArgb(255, 74, 83, 100); }
}
public override Color CheckSelectedBackground
{
get { return Color.FromArgb(255, 74, 83, 100); }
}
public override Color CheckPressedBackground
{
get { return Color.FromArgb(255, 74, 83, 100); }
}
public override Color GripDark
{
get { return Color.FromArgb(255, 22, 26, 31); }
}
public override Color GripLight
{
get { return Color.FromArgb(255, 74, 83, 100); }
}
public override Color ImageMarginGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ImageMarginGradientMiddle
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ImageMarginGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ImageMarginRevealedGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ImageMarginRevealedGradientMiddle
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ImageMarginRevealedGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color MenuStripGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color MenuStripGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color MenuItemSelected
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color MenuItemBorder
{
get { return Color.FromArgb(255, 22, 26, 31); }
}
public override Color MenuBorder
{
get { return Color.FromArgb(255, 22, 26, 31); }
}
public override Color MenuItemSelectedGradientBegin
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color MenuItemSelectedGradientEnd
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color MenuItemPressedGradientBegin
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color MenuItemPressedGradientMiddle
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color MenuItemPressedGradientEnd
{
get { return Color.FromArgb(255, 30, 34, 40); }
}
public override Color RaftingContainerGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color RaftingContainerGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color SeparatorDark
{
get { return Color.FromArgb(255, 22, 26, 31); }
}
public override Color SeparatorLight
{
get { return Color.FromArgb(255, 56, 64, 75); }
}
public override Color StatusStripGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color StatusStripGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripBorder
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripDropDownBackground
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripGradientMiddle
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripContentPanelGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripContentPanelGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripPanelGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color ToolStripPanelGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color OverflowButtonGradientBegin
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color OverflowButtonGradientMiddle
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
public override Color OverflowButtonGradientEnd
{
get { return Color.FromArgb(255, 42, 47, 56); }
}
}
}

View file

@ -30,13 +30,18 @@ namespace ShareX.HelpersLib
{ {
public class ToolStripBorderRight : ToolStrip public class ToolStripBorderRight : ToolStrip
{ {
public bool DrawCustomBorder { get; set; } = true;
protected override void OnPaint(PaintEventArgs e) protected override void OnPaint(PaintEventArgs e)
{ {
base.OnPaint(e); base.OnPaint(e);
using (Pen pen = new Pen(ProfessionalColors.SeparatorDark)) if (DrawCustomBorder)
{ {
e.Graphics.DrawLine(pen, new Point(ClientSize.Width - 1, 0), new Point(ClientSize.Width - 1, ClientSize.Height - 1)); using (Pen pen = new Pen(ProfessionalColors.SeparatorDark))
{
e.Graphics.DrawLine(pen, new Point(ClientSize.Width - 1, 0), new Point(ClientSize.Width - 1, ClientSize.Height - 1));
}
} }
} }

View file

@ -28,18 +28,17 @@
namespace ShareX.HelpersLib namespace ShareX.HelpersLib
{ {
public class ToolStripCheckedBoldRenderer : ToolStripProfessionalRenderer public class ToolStripCustomRenderer : ToolStripRoundedEdgeRenderer
{ {
public ToolStripCheckedBoldRenderer() public ToolStripCustomRenderer(ProfessionalColorTable professionalColorTable) : base(professionalColorTable)
{ {
RoundedEdges = false;
} }
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{ {
if (e.Item is ToolStripMenuItem && ((ToolStripMenuItem)e.Item).Checked) if (e.Item is ToolStripMenuItem tsmi && tsmi.Checked)
{ {
e.TextFont = new Font(e.Item.Font, FontStyle.Bold); e.TextFont = new Font(tsmi.Font, FontStyle.Bold);
} }
base.OnRenderItemText(e); base.OnRenderItemText(e);
@ -47,7 +46,7 @@ protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e) protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
{ {
if (e.Item is ToolStripDropDownButton && ((ToolStripDropDownButton)e.Item).Owner is ToolStripBorderRight) if (e.Item is ToolStripDropDownButton tsddb && tsddb.Owner is ToolStripBorderRight)
{ {
e.Direction = ArrowDirection.Right; e.Direction = ArrowDirection.Right;
} }

View file

@ -0,0 +1,53 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2019 ShareX Team
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 <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using System.Drawing;
using System.Windows.Forms;
namespace ShareX.HelpersLib
{
public class ToolStripDarkRenderer : ToolStripCustomRenderer
{
public static Color LightColor { get; } = Color.FromArgb(235, 235, 235);
public ToolStripDarkRenderer() : base(new DarkColorTable())
{
}
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{
e.TextColor = LightColor;
base.OnRenderItemText(e);
}
protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
{
e.ArrowColor = LightColor;
base.OnRenderArrow(e);
}
}
}

View file

@ -27,9 +27,14 @@
namespace ShareX.HelpersLib namespace ShareX.HelpersLib
{ {
public class CustomToolStripProfessionalRenderer : ToolStripProfessionalRenderer public class ToolStripRoundedEdgeRenderer : ToolStripProfessionalRenderer
{ {
public CustomToolStripProfessionalRenderer() public ToolStripRoundedEdgeRenderer()
{
RoundedEdges = false;
}
public ToolStripRoundedEdgeRenderer(ProfessionalColorTable professionalColorTable) : base(professionalColorTable)
{ {
RoundedEdges = false; RoundedEdges = false;
} }

View file

@ -108,7 +108,8 @@
<Compile Include="..\SharedAssemblyInfo.cs"> <Compile Include="..\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link> <Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile> </Compile>
<Compile Include="Controls\CustomToolStripProfessionalRenderer.cs" /> <Compile Include="Controls\ToolStripRoundedEdgeRenderer.cs" />
<Compile Include="Controls\DarkColorTable.cs" />
<Compile Include="Controls\HotkeySelectionButton.cs"> <Compile Include="Controls\HotkeySelectionButton.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
@ -130,6 +131,7 @@
<Compile Include="Controls\ToolStripButtonExtraImage.cs"> <Compile Include="Controls\ToolStripButtonExtraImage.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
<Compile Include="Controls\ToolStripDarkRenderer.cs" />
<Compile Include="Controls\ToolStripEx.cs"> <Compile Include="Controls\ToolStripEx.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
@ -188,7 +190,7 @@
<Compile Include="Controls\LabelNoCopy.cs"> <Compile Include="Controls\LabelNoCopy.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
<Compile Include="Controls\ToolStripCheckedBoldRenderer.cs" /> <Compile Include="Controls\ToolStripCustomRenderer.cs" />
<Compile Include="Controls\ToolStripButtonColorAnimation.cs"> <Compile Include="Controls\ToolStripButtonColorAnimation.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>

View file

@ -53,7 +53,7 @@ public ImageHistoryForm(string historyPath, ImageHistorySettings settings, Actio
HistoryPath = historyPath; HistoryPath = historyPath;
Settings = settings; Settings = settings;
tsMain.Renderer = new CustomToolStripProfessionalRenderer(); tsMain.Renderer = new ToolStripRoundedEdgeRenderer();
ilvImages.View = (View)Settings.ViewMode; ilvImages.View = (View)Settings.ViewMode;
ilvImages.ThumbnailSize = Settings.ThumbnailSize; ilvImages.ThumbnailSize = Settings.ThumbnailSize;

View file

@ -50,7 +50,7 @@ public StickerForm(List<StickerPackInfo> stickerPacks, int selectedStickerPack,
InitializeComponent(); InitializeComponent();
Icon = ShareXResources.Icon; Icon = ShareXResources.Icon;
tsMain.Renderer = new CustomToolStripProfessionalRenderer(); tsMain.Renderer = new ToolStripRoundedEdgeRenderer();
tsnudSize.NumericUpDownControl.Minimum = 16; tsnudSize.NumericUpDownControl.Minimum = 16;
tsnudSize.NumericUpDownControl.Maximum = 256; tsnudSize.NumericUpDownControl.Maximum = 256;
tsnudSize.NumericUpDownControl.Increment = 16; tsnudSize.NumericUpDownControl.Increment = 16;

View file

@ -91,7 +91,7 @@ internal void CreateToolbar()
Location = new Point(0, 0), Location = new Point(0, 0),
MinimumSize = new Size(10, 30), MinimumSize = new Size(10, 30),
Padding = Form.IsEditorMode ? new Padding(5, 1, 3, 0) : new Padding(0, 1, 0, 0), Padding = Form.IsEditorMode ? new Padding(5, 1, 3, 0) : new Padding(0, 1, 0, 0),
Renderer = new CustomToolStripProfessionalRenderer(), Renderer = new ToolStripRoundedEdgeRenderer(),
TabIndex = 0, TabIndex = 0,
ShowItemToolTips = false ShowItemToolTips = false
}; };

View file

@ -87,7 +87,7 @@ private void InitializeComponent()
this.lblFilename.AutoEllipsis = true; this.lblFilename.AutoEllipsis = true;
this.lblFilename.BackColor = System.Drawing.Color.Transparent; this.lblFilename.BackColor = System.Drawing.Color.Transparent;
this.lblFilename.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblFilename.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblFilename.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(228)))), ((int)(((byte)(228)))), ((int)(((byte)(228))))); this.lblFilename.ForeColor = System.Drawing.Color.White;
this.lblFilename.Location = new System.Drawing.Point(0, 0); this.lblFilename.Location = new System.Drawing.Point(0, 0);
this.lblFilename.Name = "lblFilename"; this.lblFilename.Name = "lblFilename";
this.lblFilename.Size = new System.Drawing.Size(256, 22); this.lblFilename.Size = new System.Drawing.Size(256, 22);

View file

@ -135,6 +135,7 @@ public bool ProgressVisible
public TaskPanel(WorkerTask task) public TaskPanel(WorkerTask task)
{ {
InitializeComponent(); InitializeComponent();
lblFilename.ForeColor = ToolStripDarkRenderer.LightColor;
Task = task; Task = task;
UpdateFilename(); UpdateFilename();

View file

@ -96,7 +96,7 @@ private void InitializeComponent()
Margin = new Padding(1), Margin = new Padding(1),
MinimumSize = new Size(10, 30), MinimumSize = new Size(10, 30),
Padding = new Padding(0, 1, 0, 0), Padding = new Padding(0, 1, 0, 0),
Renderer = new CustomToolStripProfessionalRenderer(), Renderer = new ToolStripRoundedEdgeRenderer(),
TabIndex = 0, TabIndex = 0,
ShowItemToolTips = false ShowItemToolTips = false
}; };

View file

@ -78,9 +78,11 @@ private void InitializeControls()
niTray.Icon = ShareXResources.Icon; niTray.Icon = ShareXResources.Icon;
Text = Program.Title; Text = Program.Title;
tsMain.Renderer = new ToolStripCheckedBoldRenderer(); tsMain.Renderer = new ToolStripDarkRenderer();
cmsTray.Renderer = new ToolStripCheckedBoldRenderer(); tsMain.DrawCustomBorder = false;
cmsTray.Renderer = new ToolStripDarkRenderer();
cmsTray.IgnoreSeparatorClick(); cmsTray.IgnoreSeparatorClick();
cmsTaskInfo.Renderer = new ToolStripDarkRenderer();
cmsTaskInfo.IgnoreSeparatorClick(); cmsTaskInfo.IgnoreSeparatorClick();
tsddbWorkflows.HideImageMargin(); tsddbWorkflows.HideImageMargin();