Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
443 changes: 443 additions & 0 deletions XrmToolBox.Extensibility/CustomTheme.cs

Large diffs are not rendered by default.

126 changes: 126 additions & 0 deletions XrmToolBox.Extensibility/DarkTheme.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
using System;
using System.Drawing;
using System.Windows.Forms;

namespace XrmToolBox.Extensibility
{
public class DarkProfessionalColors : ProfessionalColorTable
{
private Color Background;
private Color LightColor;
private Color MenuBackground;
private Color MenuItemBackground;
private Color MenuItemSelectedBackground;

public DarkProfessionalColors(CustomTheme theme)
{
Background = theme.Background1;
MenuBackground = theme.Background1;
MenuItemBackground = theme.Background1;
MenuItemSelectedBackground = theme.HighlightColor;
LightColor = theme.ForeColor1;
}

public override Color ButtonCheckedGradientBegin => MenuBackground;
public override Color ButtonCheckedGradientEnd => MenuBackground;
public override Color ButtonCheckedGradientMiddle => MenuBackground;
public override Color ButtonCheckedHighlight => MenuBackground;
public override Color ButtonCheckedHighlightBorder => MenuBackground;
public override Color ButtonPressedBorder => MenuBackground;
public override Color ButtonPressedGradientBegin => MenuBackground;
public override Color ButtonPressedGradientEnd => MenuBackground;
public override Color ButtonPressedGradientMiddle => MenuBackground;
public override Color ButtonPressedHighlight => MenuBackground;
public override Color ButtonPressedHighlightBorder => MenuBackground;
public override Color ButtonSelectedBorder => MenuBackground;
public override Color ButtonSelectedGradientBegin => MenuBackground;
public override Color ButtonSelectedGradientEnd => MenuBackground;
public override Color ButtonSelectedGradientMiddle => MenuBackground;
public override Color ButtonSelectedHighlight => MenuBackground;
public override Color ButtonSelectedHighlightBorder => MenuBackground;
public override Color CheckBackground => MenuBackground;
public override Color CheckPressedBackground => MenuBackground;
public override Color CheckSelectedBackground => MenuBackground;
public override Color GripDark => MenuBackground;
public override Color GripLight => MenuBackground;
public override Color ImageMarginGradientBegin => MenuItemBackground;

public override Color ImageMarginGradientEnd => MenuItemBackground;

public override Color ImageMarginGradientMiddle => MenuItemBackground;

public override Color ImageMarginRevealedGradientBegin => MenuItemBackground;

public override Color ImageMarginRevealedGradientEnd => MenuItemBackground;

public override Color ImageMarginRevealedGradientMiddle => MenuItemBackground;

public override Color MenuBorder => MenuItemBackground;

public override Color MenuItemBorder => MenuItemBackground;

public override Color MenuItemPressedGradientBegin => MenuItemBackground;

public override Color MenuItemPressedGradientEnd => MenuItemBackground;

public override Color MenuItemPressedGradientMiddle => MenuItemBackground;

public override Color MenuItemSelected => MenuItemSelectedBackground;

public override Color MenuItemSelectedGradientBegin => MenuItemBackground;

public override Color MenuItemSelectedGradientEnd => MenuItemBackground;

public override Color MenuStripGradientBegin => MenuItemBackground;

public override Color MenuStripGradientEnd => MenuItemBackground;

public override Color OverflowButtonGradientBegin => MenuBackground;
public override Color OverflowButtonGradientEnd => MenuBackground;
public override Color OverflowButtonGradientMiddle => MenuBackground;
public override Color RaftingContainerGradientBegin => MenuBackground;
public override Color RaftingContainerGradientEnd => MenuBackground;
public override Color SeparatorDark => LightColor;
public override Color SeparatorLight => MenuBackground;
public override Color StatusStripGradientBegin => MenuBackground;
public override Color StatusStripGradientEnd => MenuBackground;
public override Color ToolStripBorder => Background;

public override Color ToolStripContentPanelGradientBegin => MenuBackground;

public override Color ToolStripContentPanelGradientEnd => MenuBackground;

public override Color ToolStripDropDownBackground => MenuItemBackground;

public override Color ToolStripGradientBegin => MenuBackground;

public override Color ToolStripGradientEnd => MenuBackground;

public override Color ToolStripGradientMiddle => MenuBackground;

public override Color ToolStripPanelGradientBegin => MenuBackground;
public override Color ToolStripPanelGradientEnd => MenuBackground;
}

public class DarkTheme : CustomTheme
{
public DarkTheme()
{
Background1 = ColorTranslator.FromHtml("#212121");
Background2 = ColorTranslator.FromHtml("#424242");
Background3 = ColorTranslator.FromHtml("#616161");
Background4 = ColorTranslator.FromHtml("#757575");
Background5 = ColorTranslator.FromHtml("#9E9E9E");

ForeColor1 = ColorTranslator.FromHtml("#BDBDBD");
ForeColor2 = ColorTranslator.FromHtml("#E0E0E0");
ForeColor3 = ColorTranslator.FromHtml("#EEEEEE");
ForeColor4 = ColorTranslator.FromHtml("#F5F5F5");
ForeColor5 = ColorTranslator.FromHtml("#FAFAFA");

HighlightColor = ColorTranslator.FromHtml("#007ACC");

MenuColorTable = new DarkProfessionalColors(this);
}
}
}
17 changes: 17 additions & 0 deletions XrmToolBox.Extensibility/Extensions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Windows.Forms;
using XrmToolBox.Extensibility.Interfaces;
Expand Down Expand Up @@ -101,5 +102,21 @@ private static object GetAssemblyAttribute(Assembly assembly, Type attributeType
{
return assembly.GetCustomAttributes(attributeType, true)[0];
}
public static List<Control> GetAllControls(this Control page)
{
List<Control> controlList = new List<Control>();

foreach (Control c in page.Controls)
{
controlList.Add(c);

//if (c.HasChildren)
//{
// controlList.AddRange(GetAllControls(c));
//}
}

return controlList;
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

41 changes: 41 additions & 0 deletions XrmToolBox.Extensibility/UserControls/NotificationArea.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;

namespace XrmToolBox.Extensibility.UserControls
Expand All @@ -11,6 +12,46 @@ public partial class NotificationArea : UserControl
public NotificationArea()
{
InitializeComponent();


AddBackcolorChangedEvent(this);
AddForecolorChangedEvent(this);
}

private void AddBackcolorChangedEvent(Control control)
{
control.BackColorChanged += NotificationArea_BackColorChanged;
foreach (Control childControl in control.Controls)
{
childControl.BackColorChanged += NotificationArea_BackColorChanged;
AddBackcolorChangedEvent(childControl);
}
}

private void AddForecolorChangedEvent(Control control)
{
control.ForeColorChanged += NotificationArea_ForeColorChanged;
foreach (Control childControl in control.Controls)
{
childControl.ForeColorChanged += NotificationArea_ForeColorChanged;
AddForecolorChangedEvent(childControl);
}
}

private void NotificationArea_ForeColorChanged(object sender, EventArgs e)
{
var ctrl = (Control)sender;
ctrl.ForeColorChanged -= NotificationArea_ForeColorChanged;
ctrl.ForeColor = SystemColors.ControlText;
ctrl.ForeColorChanged += NotificationArea_ForeColorChanged;
}

private void NotificationArea_BackColorChanged(object sender, EventArgs e)
{
var ctrl = (Control)sender;
ctrl.BackColorChanged -= NotificationArea_BackColorChanged;
ctrl.BackColor = SystemColors.Info;
ctrl.BackColorChanged += NotificationArea_BackColorChanged;
}

private void Initialize(string message, Uri infoUri, int height = 30)
Expand Down
5 changes: 5 additions & 0 deletions XrmToolBox.Extensibility/XrmToolBox.Extensibility.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@
<HintPath>..\packages\Newtonsoft.Json.13.0.3-beta1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PresentationFramework" />
<Reference Include="ScintillaNET, Version=3.6.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\jacobslusser.ScintillaNET.3.6.3\lib\net40\ScintillaNET.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Activities" />
<Reference Include="System.Activities.Presentation" />
Expand Down Expand Up @@ -183,6 +186,8 @@
<Compile Include="Args\DuplicateToolArgs.cs" />
<Compile Include="Args\DuplicateToolWithConnectionArgs.cs" />
<Compile Include="Args\StatusBarMessageEventArgs.cs" />
<Compile Include="DarkTheme.cs" />
<Compile Include="CustomTheme.cs" />
<Compile Include="Extensions.cs">
<SubType>Code</SubType>
</Compile>
Expand Down
1 change: 1 addition & 0 deletions XrmToolBox.Extensibility/packages.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="jacobslusser.ScintillaNET" version="3.6.3" targetFramework="net48" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="7.0.0" targetFramework="net48" />
<package id="Microsoft.CrmSdk.CoreAssemblies" version="9.0.2.56" targetFramework="net48" />
<package id="Microsoft.CrmSdk.Deployment" version="9.0.2.34" targetFramework="net462" />
Expand Down
2 changes: 2 additions & 0 deletions XrmToolBox.ToolLibrary/Forms/ToolLibraryForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ public ToolLibraryForm(ToolLibrary toolLibrary, IToolLibrarySettings settings)
cbbToolSort.SelectedIndex = 0;

ShowRestartButton();

CustomTheme.Instance.ApplyTheme(this);
}

public event EventHandler PluginsClosingRequested;
Expand Down
3 changes: 3 additions & 0 deletions XrmToolBox.ToolLibrary/UserControls/ToolPackageProperties.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using XrmToolBox.Extensibility;
using XrmToolBox.ToolLibrary.AppCode;

namespace XrmToolBox.ToolLibrary.UserControls
Expand Down Expand Up @@ -37,6 +38,8 @@ public ToolPackageCtrl(XtbPlugin plugin, Version xrmToolBoxLastBreakVersion, Too
InitializeComponent();
SetControlsDisplay();
GetVersions();

CustomTheme.Instance.ApplyTheme(this);
}

public event EventHandler OnToolOpenRequested;
Expand Down
61 changes: 61 additions & 0 deletions XrmToolBox/AppCode/ThemeHelpers.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using XrmToolBox.Extensibility;

namespace XrmToolBox.AppCode
{
internal static class ThemeHelpers
{
static void RecursiveThemeCallback(object sender, ControlEventArgs e)
{
Debug.WriteLine($"recursive theme called: {DateTime.Now}");

CustomTheme.Instance.ApplyTheme(e.Control);

e.Control.ControlAdded += RecursiveThemeCallback;

foreach (Control c in e.Control.Controls)
{
c.ControlAdded += RecursiveThemeCallback;
}
}
static void RecursiveThemeAddCallback(Control control)
{
foreach (Control c in control.Controls)
{
c.ControlAdded += RecursiveThemeCallback;

RecursiveThemeAddCallback(c);
}
}
public static void ApplyThemeCallbacks(List<Control> controls, Control page)
{
foreach (Control c in controls)
{
c.ControlAdded += RecursiveThemeCallback;

RecursiveThemeAddCallback(c);
}

Task.Factory.StartNew(() =>
{
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5));
page.Invoke((MethodInvoker)delegate
{
var updatedControls = page.Controls;
foreach (Control c in updatedControls )
{
c.ControlAdded += RecursiveThemeCallback;

RecursiveThemeAddCallback(c);
}
});
});
}
}
}
Loading