in src/StructuredLogViewer/Controls/TextViewerControl.xaml.cs [137:213]
public void SetText(string text)
{
Text = text;
textEditor.Text = text;
if (text.Length > 200 && !text.Contains("\n"))
{
wordWrap.IsChecked = true;
}
if (solutionFileRegex.IsMatch(text))
{
IsXml = false;
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("StructuredLogViewer.Resources.SolutionFile.xshd"))
using (var reader = XmlReader.Create(stream))
{
textEditor.SyntaxHighlighting = HighlightingLoader.Load(reader, HighlightingManager.Instance);
}
return;
}
bool looksLikeXml = Utilities.LooksLikeXml(text);
if (looksLikeXml && !IsXml)
{
IsXml = true;
var highlighting = HighlightingManager.Instance.GetDefinition("XML");
if (SettingsService.UseDarkTheme)
{
SetColor("Comment", "#57A64A");
SetColor("CData", "#E9D585");
SetColor("DocType", "#92CAF4");
SetColor("XmlDeclaration", "#92CAF4");
SetColor("XmlTag", "#569CD6");
SetColor("AttributeName", "#92CAF4");
SetColor("AttributeValue", "#C8C8C8");
SetColor("Entity", "#92CAF4");
SetColor("BrokenEntity", "#92CAF4");
}
else
{
SetColor("Comment", "#008000");
SetColor("CData", "#808080");
SetColor("DocType", "#0000FF");
SetColor("XmlDeclaration", "#0000FF");
SetColorRgb("XmlTag", 163, 21, 21);
SetColor("AttributeName", "#FF0000");
SetColor("AttributeValue", "#0000FF");
SetColor("Entity", "#FF0000");
SetColor("BrokenEntity", "#FF0000");
}
void SetColorRgb(string name, byte r, byte g, byte b)
{
highlighting.GetNamedColor(name).Foreground = new SimpleHighlightingBrush(Color.FromRgb(r, g, b));
}
void SetColor(string name, string hex)
{
var color = (Color)ColorConverter.ConvertFromString(hex);
SetColorRgb(name, color.R, color.G, color.B);
}
textEditor.SyntaxHighlighting = highlighting;
var foldingStrategy = new XmlFoldingStrategy();
foldingStrategy.UpdateFoldings(foldingManager, textEditor.Document);
}
else if (!looksLikeXml && IsXml)
{
IsXml = false;
textEditor.SyntaxHighlighting = null;
}
}