Colorers - any possible schemas?

SyntaxEditor for WPF Forum

Posted 11 months ago by StockSharp
Version: 22.1.4
Platform: .NET 6.0
Environment: Windows 11 (64-bit)
Avatar

Tried to see what kind of code colorers can use - https://i.gyazo.com/9c1964e07620c176acbf8b7d4cb6a2ab.mp4 . Seems themes and code colorers are different things. Can you please explain - how I can change code highlighting dynamically? Black mode seems to be fully unreadable.

Code for change themes:

ThemeManager.SetTheme(CodeEditor, (string)ThemeSelect.EditValue);

[Modified 11 months ago]

Comments (4)

Posted 11 months ago by Actipro Software Support - Cleveland, OH, USA
Avatar

Hello,

Yes, all Actipro control themes (managed by our ThemeManager) are a completely separate thing from the SyntaxEditor highlighting styles configuration.  This allows you to load any custom SyntaxEditor highlighting style set at any time, which is handy if your app wants to provide several different editor themes to choose from without altering the app theme.  Also of note, highlighting styles only support a single set of colors right now, and our defaults in the syntax languages are intended for light themes.

Please see this documentation topic, since it talks about how to recognize when a ThemeManager theme change occurs in your application, and how to update SyntaxEditor highlighting styles with colors for dark themes.  Our Sample Browser also shows an example of doing this where we load a full set of colors for dark themes.  When you change to a dark theme in our Sample Browser, we use the technique described in the documentation topic to make sure the SyntaxEditor instances render well.

We do recognize that this process could be made easier somehow and that is something we have on the TODO list to look into for the future.

[Modified 11 months ago]


Actipro Software Support

Posted 11 months ago by StockSharp
Avatar

Maybe you have some code snippet to show how to enable dark mode for SyntaxEditor?

I've put the code on theme change handler:

// Unregister all classification types
var classificationTypes = AmbientHighlightingStyleRegistry.Instance.ClassificationTypes.ToArray();
foreach (var classificationType in classificationTypes)
	AmbientHighlightingStyleRegistry.Instance.Unregister(classificationType);

// Re-register common classification types
new DisplayItemClassificationTypeProvider().RegisterAll();

// NOTE: Possibly load up syntax language instances you use so their various customized styles get registered

and all code highlighting turned off entirely.

[Modified 11 months ago]

Answer - Posted 11 months ago by Actipro Software Support - Cleveland, OH, USA
Avatar

Our Sample Browser has complete working code to demonstrate changing to a dark theme, so that's the best source of information. Specifically, there is a SyntaxEditorHelper class with UpdateHighlightingStyleRegistryForThemeChange method you can reference. Here's a link to that method from our open source repository:

https://github.com/Actipro/WPF-Controls/blob/develop/Samples/SampleBrowser/ProductSamples/SyntaxEditorSamples/Common/SyntaxEditorHelper.cs#L200

Our product installer also has the full source code of that project that you can step through in a debugger for additional insight.  You'll also find a method in the SyntaxEditorHelper class to switch the icon set to one suitable for dark themes.


Actipro Software Support

The latest build of this product (v23.1.4) was released 2 months ago, which was before the next post in this thread.
Posted 15 days ago by Actipro Software Support - Cleveland, OH, USA
Avatar

As promised, we've made this process of switching light/dark themes much easier! The next release of SyntaxEditor will include native support for light/dark themes and without the need for the change handler you previously posted. Please check out our announcement post if you'd like to validate the new functionality in a preview release and provide feedback before it is finalized.


Actipro Software Support

Add Comment

Please log in to a validated account to post comments.