Fix a few minor issues regarding "DarkTheme"

This commit is contained in:
Nikolaj Olsson 2019-11-28 16:50:04 +01:00
parent d4f1e4f28f
commit 13ed5a66d3
3 changed files with 140 additions and 30 deletions

View File

@ -8635,7 +8635,7 @@ namespace Nikse.SubtitleEdit.Forms
}
else
{
charsPerSecond.ForeColor = Color.Black;
charsPerSecond.ForeColor = UiUtil.ForeColor;
}
charsPerSecond.Text = string.Format(_language.CharactersPerSecond, charactersPerSecond);
@ -8644,7 +8644,7 @@ namespace Nikse.SubtitleEdit.Forms
{
if (Configuration.Settings.Tools.ListViewSyntaxColorDurationSmall)
{
charsPerSecond.ForeColor = Color.Black;
charsPerSecond.ForeColor = UiUtil.ForeColor;
}
else
{
@ -8701,7 +8701,7 @@ namespace Nikse.SubtitleEdit.Forms
}
else if (s.Length <= Configuration.Settings.General.SubtitleLineMaximumLength * Math.Max(numberOfLines, 2))
{
lineTotal.ForeColor = Color.Black;
lineTotal.ForeColor = UiUtil.ForeColor;
if (!textBoxHasFocus)
{
lineTotal.Text = string.Format(_languageGeneral.TotalLengthX, s.Length);
@ -19242,6 +19242,11 @@ namespace Nikse.SubtitleEdit.Forms
SubtitleListview1.Focus();
}
UiUtil.FixFonts(toolStripComboBoxWaveform);
UiUtil.FixFonts(toolStripComboBoxFrameRate);
UiUtil.FixFonts(comboBoxSubtitleFormats);
UiUtil.FixFonts(comboBoxEncoding);
UiUtil.FixFonts(toolStripSplitButtonPlayRate);
_lastTextKeyDownTicks = DateTime.UtcNow.Ticks;
ShowSubtitleTimer.Start();
}
@ -19249,9 +19254,11 @@ namespace Nikse.SubtitleEdit.Forms
private void InitializePlayRateDropDown()
{
toolStripSplitButtonPlayRate.DropDownItems.Clear();
var foreColor = UiUtil.ForeColor;
var backColor = UiUtil.BackColor;
for (int i = 30; i <= 300; i += 10)
{
toolStripSplitButtonPlayRate.DropDownItems.Add(new ToolStripMenuItem(i + "%", null, SetPlayRate) { Checked = i == 100 });
toolStripSplitButtonPlayRate.DropDownItems.Add(new ToolStripMenuItem(i + "%", null, SetPlayRate) { Checked = i == 100, BackColor = backColor, ForeColor = foreColor });
}
}

View File

@ -13,23 +13,23 @@ namespace Nikse.SubtitleEdit.Logic
{
public static IEnumerable<Control> GetAllControlByType(Control control, Type type)
{
var controls = control.Controls.Cast<Control>();
var controls = control.Controls.Cast<Control>().ToList();
return controls.SelectMany(ctrl => GetAllControlByType(ctrl, type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
static readonly Color BackColor = Color.FromArgb(52, 52, 45);
static readonly Color ForeColor = Color.FromArgb(150, 150, 150);
internal static readonly Color BackColor = Color.FromArgb(52, 52, 45);
internal static readonly Color ForeColor = Color.FromArgb(150, 150, 150);
private static void TabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
var sz = e.Graphics.MeasureString((sender as TabControl)?.TabPages[e.Index].Text, e.Font);
using (Brush br = new SolidBrush(BackColor))
{
e.Graphics.FillRectangle(br, e.Bounds);
SizeF sz = e.Graphics.MeasureString((sender as TabControl).TabPages[e.Index].Text, e.Font);
e.Graphics.DrawString((sender as TabControl).TabPages[e.Index].Text, e.Font, Brushes.WhiteSmoke, e.Bounds.Left + (e.Bounds.Width - sz.Width) / 2, e.Bounds.Top + (e.Bounds.Height - sz.Height) / 2 + 1);
e.Graphics.DrawString((sender as TabControl)?.TabPages[e.Index].Text, e.Font, Brushes.WhiteSmoke, e.Bounds.Left + (e.Bounds.Width - sz.Width) / 2, e.Bounds.Top + (e.Bounds.Height - sz.Height) / 2 + 1);
Rectangle rect = e.Bounds;
rect.Offset(0, 1);
@ -39,7 +39,7 @@ namespace Nikse.SubtitleEdit.Logic
}
}
private static void Tabpage_Paint(object sender, PaintEventArgs e)
private static void TabPage_Paint(object sender, PaintEventArgs e)
{
using (SolidBrush fillBrush = new SolidBrush(BackColor))
{
@ -51,7 +51,7 @@ namespace Nikse.SubtitleEdit.Logic
{
var type = c.GetType();
var fields = type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
var contextMenus = fields.Where(f => f != null && f.GetValue(c) != null &&
var contextMenus = fields.Where(f => f.GetValue(c) != null &&
(f.GetValue(c).GetType().IsSubclassOf(typeof(T)) || f.GetValue(c).GetType() == typeof(T)));
var menus = contextMenus.Select(f => f.GetValue(c));
return menus.Cast<T>().ToList();
@ -67,7 +67,7 @@ namespace Nikse.SubtitleEdit.Logic
Configuration.Settings.General.SubtitleFontColor = ForeColor;
Configuration.Settings.VideoControls.WaveformBackgroundColor = BackColor;
Configuration.Settings.VideoControls.WaveformGridColor = Color.FromArgb(62, 62, 60);
// prevent re assignings
// prevent re-assignments
_isConfigUpdated = true;
}
@ -77,9 +77,72 @@ namespace Nikse.SubtitleEdit.Logic
return;
}
if (ctrl is Form)
if (ctrl is Form form) // https://www.dreamincode.net/forums/topic/64981-designing-a-custom-title-bar/
{
var contextMenus = GetSubControls<ContextMenuStrip>(ctrl);
//form.FormBorderStyle = FormBorderStyle.None;
//var title = new PictureBox
//{
// Location = new Point(0,0),
// Width = form.Width,
// Height = 50,
// BackColor = Color.Black,
// Anchor = AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left
//};
//form.Controls.Add(title);
//title.SendToBack();
//title.MouseDown += (o, i) => { form.WindowState = FormWindowState.Minimized; };
//title.MouseUp += (o, i) => { form.WindowState = FormWindowState.Maximized; };
//title.MouseMove += (o, i) => { form.WindowState = FormWindowState.Normal; };
//var minimize = new Label
//{
// Text = "🗕",
// Location = new Point(form.Width - 60, 5),
// ForeColor = ForeColor,
// BackColor = Color.Black, // BackColor,
// Width = 15,
// Height = 15,
// Anchor = AnchorStyles.Top | AnchorStyles.Right
//};
//minimize.Click += (o, i) => { form.WindowState = FormWindowState.Minimized; };
//form.Controls.Add(minimize);
//minimize.BringToFront();
//var maximize = new Label
//{
// Text = "🗗", //🗗 Overlap or 🗖 maximize
// Location = new Point(form.Width - 40, 5),
// ForeColor = ForeColor,
// BackColor = Color.Black, // BackColor,
// Width = 15,
// Height = 15,
// Anchor = AnchorStyles.Top | AnchorStyles.Right
//};
//maximize.Click += (o, i) =>
//{
// form.WindowState = form.WindowState == FormWindowState.Maximized ? FormWindowState.Normal : FormWindowState.Maximized;
// maximize.Text = form.WindowState == FormWindowState.Maximized ? "🗗" : "🗖";
//};
//form.Controls.Add(maximize);
//maximize.BringToFront();
//var close = new Label
//{
// Text = "🗙",
// Location = new Point(form.Width - 20, 5),
// ForeColor = ForeColor,
// BackColor = Color.Black, // BackColor,
// Width = 15,
// Height = 15,
// Anchor = AnchorStyles.Top | AnchorStyles.Right
//};
//close.Click += (o, i) => { form.Close(); };
//form.Controls.Add(close);
//close.BringToFront();
var contextMenus = GetSubControls<ContextMenuStrip>(form);
foreach (ContextMenuStrip cms in contextMenus)
{
cms.BackColor = BackColor;
@ -93,28 +156,28 @@ namespace Nikse.SubtitleEdit.Logic
}
}
var toolStrips = GetSubControls<ToolStrip>(ctrl);
var toolStrips = GetSubControls<ToolStrip>(form);
foreach (ToolStrip c in toolStrips)
{
c.BackColor = BackColor;
c.ForeColor = ForeColor;
}
var toolStripContentPanels = GetSubControls<ToolStripContentPanel>(ctrl);
var toolStripContentPanels = GetSubControls<ToolStripContentPanel>(form);
foreach (ToolStripContentPanel c in toolStripContentPanels)
{
c.BackColor = BackColor;
c.ForeColor = ForeColor;
}
var toolStripContainers = GetSubControls<ToolStripContainer>(ctrl);
var toolStripContainers = GetSubControls<ToolStripContainer>(form);
foreach (ToolStripContainer c in toolStripContainers)
{
c.BackColor = BackColor;
c.ForeColor = ForeColor;
}
var toolStripDropDownMenus = GetSubControls<ToolStripDropDownMenu>(ctrl);
var toolStripDropDownMenus = GetSubControls<ToolStripDropDownMenu>(form);
foreach (ToolStripDropDownMenu c in toolStripDropDownMenus)
{
c.BackColor = BackColor;
@ -126,14 +189,14 @@ namespace Nikse.SubtitleEdit.Logic
}
}
var toolStripMenuItems = GetSubControls<ToolStripMenuItem>(ctrl);
var toolStripMenuItems = GetSubControls<ToolStripMenuItem>(form);
foreach (ToolStripMenuItem c in toolStripMenuItems)
{
c.BackColor = BackColor;
c.ForeColor = ForeColor;
}
var toolStripSeparators = GetSubControls<ToolStripSeparator>(ctrl);
var toolStripSeparators = GetSubControls<ToolStripSeparator>(form);
foreach (ToolStripSeparator c in toolStripSeparators)
{
if (c.GetCurrentParent() is ToolStripDropDownMenu p)
@ -156,7 +219,7 @@ namespace Nikse.SubtitleEdit.Logic
tc.DrawItem += TabControl1_DrawItem;
foreach (TabPage tabPage in tc.TabPages)
{
tabPage.Paint += Tabpage_Paint;
tabPage.Paint += TabPage_Paint;
}
}
FixControl(c);
@ -200,6 +263,22 @@ namespace Nikse.SubtitleEdit.Logic
}
}
private static void xxx(object sender, PaintEventArgs e)
{
// Get the separator's width and height.
TrackBar toolStripSeparator = (TrackBar)sender;
int width = toolStripSeparator.Width;
int height = toolStripSeparator.Height;
// Fill the background.
e.Graphics.FillRectangle(new SolidBrush(BackColor), 0, 0, width, height);
// Draw the line.
e.Graphics.DrawLine(new Pen(ForeColor), 4, height / 2, width - 4, height / 2);
}
private static void lv_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
var lv = (ListView)sender;
@ -230,14 +309,6 @@ namespace Nikse.SubtitleEdit.Logic
private class MyRenderer : ToolStripProfessionalRenderer
{
// protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
// {
// Rectangle rc = new Rectangle(Point.Empty, e.Item.Size);
//// Color c = e.Item.Selected ? Color.Azure : Color.Beige;
// using (SolidBrush brush = new SolidBrush(BackColor))
// e.Graphics.FillRectangle(brush, rc);
// }
protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
{
using (SolidBrush brush = new SolidBrush(BackColor))
@ -251,6 +322,25 @@ namespace Nikse.SubtitleEdit.Logic
{
item.BackColor = BackColor;
item.ForeColor = ForeColor;
if (item is ToolStripSeparator)
{
item.Paint += ToolStripSeparatorPaint;
}
}
private static void ToolStripSeparatorPaint(object sender, PaintEventArgs e)
{
// Get the separator's width and height.
ToolStripSeparator toolStripSeparator = (ToolStripSeparator)sender;
int width = toolStripSeparator.Width;
int height = toolStripSeparator.Height;
// Fill the background.
e.Graphics.FillRectangle(new SolidBrush(BackColor), 0, 0, width, height);
// Draw the line.
e.Graphics.DrawLine(new Pen(ForeColor), 4, height / 2, width - 4, height / 2);
}
}
}

View File

@ -524,6 +524,15 @@ namespace Nikse.SubtitleEdit.Logic
}
}
internal static void FixFonts(ToolStripComboBox item)
{
item.Font = GetDefaultFont();
if (Configuration.Settings.General.UseDarkTheme)
{
DarkTheme.SetDarkTheme(item);
}
}
private static void FixFontsInner(Control form, int iterations = 5)
{
if (iterations < 1)
@ -574,7 +583,7 @@ namespace Nikse.SubtitleEdit.Logic
public static void GetLineLengths(Label label, string text)
{
label.ForeColor = Color.Black;
label.ForeColor = ForeColor;
var lines = text.SplitToLines();
const int max = 3;
var sb = new StringBuilder();
@ -966,5 +975,9 @@ namespace Nikse.SubtitleEdit.Logic
}
}
}
public static Color BackColor => Configuration.Settings.General.UseDarkTheme ? DarkTheme.BackColor : Control.DefaultBackColor;
public static Color ForeColor => Configuration.Settings.General.UseDarkTheme ? DarkTheme.ForeColor : Control.DefaultForeColor;
}
}