184 lines
7.2 KiB
C#
184 lines
7.2 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Windows.Forms;
|
|
using System.Drawing;
|
|
using System.Drawing.Drawing2D;
|
|
|
|
namespace Toolbox.Library.Forms
|
|
{
|
|
public class STToolStripItem : ToolStripMenuItem
|
|
{
|
|
public STToolStripItem()
|
|
{
|
|
this.ForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
}
|
|
public STToolStripItem(string Name, System.EventHandler eventHandler)
|
|
{
|
|
this.Text = Name;
|
|
this.Click += eventHandler;
|
|
}
|
|
public STToolStripItem(string Name)
|
|
{
|
|
this.Text = Name;
|
|
}
|
|
}
|
|
|
|
public class STMenuStrip : MenuStrip
|
|
{
|
|
private static Color titlebarBackColor = FormThemes.BaseTheme.FormContextMenuBackColor;
|
|
private static Color titlebarForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
private static Color borderColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
private static Color borderItemColor = Color.Black;
|
|
private static Color menuSelectItemColor = FormThemes.BaseTheme.FormContextMenuSelectColor;
|
|
|
|
public bool HighlightSelectedTab
|
|
{
|
|
get {
|
|
if (Renderer == null || !(Renderer is MenuRenderer))
|
|
return false;
|
|
|
|
return ((MenuRenderer)this.Renderer).HighlightMenuBar;
|
|
}
|
|
set {
|
|
if (Renderer == null || !(Renderer is MenuRenderer))
|
|
((MenuRenderer)this.Renderer).HighlightMenuBar = value;
|
|
}
|
|
}
|
|
|
|
public STMenuStrip()
|
|
{
|
|
if (FormThemes.ActivePreset != FormThemes.Preset.White)
|
|
{
|
|
this.BackColor = titlebarBackColor;
|
|
this.ForeColor = titlebarForeColor;
|
|
this.Renderer = new MenuRenderer();
|
|
}
|
|
}
|
|
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
{
|
|
base.OnPaint(e);
|
|
}
|
|
}
|
|
|
|
public class STContextMenuStrip : ContextMenuStrip
|
|
{
|
|
private static Color titlebarBackColor = FormThemes.BaseTheme.FormContextMenuBackColor;
|
|
private static Color titlebarForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
private static Color borderColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
private static Color borderItemColor = Color.Black;
|
|
private static Color menuSelectItemColor = FormThemes.BaseTheme.FormContextMenuSelectColor;
|
|
|
|
public STContextMenuStrip()
|
|
{
|
|
if (FormThemes.ActivePreset != FormThemes.Preset.White)
|
|
{
|
|
this.BackColor = titlebarBackColor;
|
|
this.ForeColor = titlebarForeColor;
|
|
this.Renderer = new MenuRenderer();
|
|
}
|
|
}
|
|
|
|
public STContextMenuStrip(IContainer container)
|
|
{
|
|
this.ForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
|
|
if (FormThemes.ActivePreset != FormThemes.Preset.White)
|
|
{
|
|
this.BackColor = titlebarBackColor;
|
|
this.ForeColor = titlebarForeColor;
|
|
this.Renderer = new MenuRenderer();
|
|
}
|
|
}
|
|
}
|
|
|
|
public class MenuRenderer : ToolStripProfessionalRenderer
|
|
{
|
|
private static Color titlebarForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
|
|
public bool HighlightMenuBar
|
|
{
|
|
get { return ((ColorTable)ColorTable).HighlightMenuBar; }
|
|
set { ((ColorTable)ColorTable).HighlightMenuBar = value; }
|
|
}
|
|
|
|
public MenuRenderer() : base(new ColorTable())
|
|
{
|
|
}
|
|
|
|
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
|
|
{
|
|
if (e.ToolStrip.GetType() == typeof(ToolStrip))
|
|
{
|
|
// skip render border
|
|
}
|
|
else
|
|
{
|
|
// do render border
|
|
base.OnRenderToolStripBorder(e);
|
|
}
|
|
}
|
|
|
|
protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
|
|
{
|
|
var tsMenuItem = e.Item as ToolStripMenuItem;
|
|
if (tsMenuItem != null)
|
|
e.ArrowColor = Color.White;
|
|
base.OnRenderArrow(e);
|
|
}
|
|
|
|
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
|
|
{
|
|
e.TextColor = titlebarForeColor;
|
|
base.OnRenderItemText(e);
|
|
}
|
|
}
|
|
|
|
public class ColorTable : ProfessionalColorTable
|
|
{
|
|
public bool HighlightMenuBar = false;
|
|
|
|
private static Color titlebarBackColor = FormThemes.BaseTheme.FormContextMenuBackColor;
|
|
private static Color titlebarForeColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
private static Color borderColor = FormThemes.BaseTheme.FormContextMenuForeColor;
|
|
private static Color borderItemColor = Color.Black;
|
|
private static Color menuSelectItemColor = FormThemes.BaseTheme.FormContextMenuSelectColor;
|
|
private static Color checkedHighlightBackColor = FormThemes.BaseTheme.CheckBoxEnabledBackColor;
|
|
|
|
|
|
public override Color ToolStripDropDownBackground => titlebarBackColor;
|
|
public override Color ToolStripBorder => titlebarBackColor;
|
|
public override Color ToolStripContentPanelGradientBegin => titlebarBackColor;
|
|
public override Color ToolStripContentPanelGradientEnd => titlebarBackColor;
|
|
public override Color ToolStripPanelGradientBegin => titlebarBackColor;
|
|
public override Color ToolStripPanelGradientEnd => titlebarBackColor;
|
|
public override Color ToolStripGradientBegin => titlebarBackColor;
|
|
public override Color ToolStripGradientMiddle => titlebarBackColor;
|
|
public override Color ToolStripGradientEnd => titlebarBackColor;
|
|
|
|
public override Color ImageMarginGradientBegin => titlebarBackColor;
|
|
public override Color ImageMarginGradientMiddle => titlebarBackColor;
|
|
public override Color ImageMarginGradientEnd => titlebarBackColor;
|
|
|
|
public override Color MenuBorder => borderColor;
|
|
public override Color MenuItemBorder => borderItemColor;
|
|
public override Color MenuItemSelected => menuSelectItemColor;
|
|
|
|
public override Color MenuStripGradientBegin => titlebarBackColor;
|
|
public override Color MenuStripGradientEnd => titlebarBackColor;
|
|
|
|
public override Color MenuItemSelectedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : menuSelectItemColor;
|
|
public override Color MenuItemSelectedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : menuSelectItemColor;
|
|
|
|
|
|
public override Color MenuItemPressedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
|
|
public override Color MenuItemPressedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
|
|
|
|
public override Color ButtonCheckedGradientBegin => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
|
|
public override Color ButtonCheckedGradientEnd => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
|
|
public override Color ButtonCheckedGradientMiddle => HighlightMenuBar ? checkedHighlightBackColor : titlebarBackColor;
|
|
}
|
|
} |