Made color methods in TextView protected virtual

This commit is contained in:
Thomas Nind
2021-06-13 08:30:03 +01:00
parent df7a7cdafe
commit fb5830ea9d
2 changed files with 101 additions and 6 deletions

View File

@@ -1333,17 +1333,46 @@ namespace Terminal.Gui {
}
}
void ColorNormal ()
/// <summary>
/// Sets the driver to the default color for the control where no text is being rendered. Defaults to <see cref="ColorScheme.Normal"/>.
/// </summary>
protected virtual void ColorNormal ()
{
Driver.SetAttribute (ColorScheme.Normal);
}
void ColorSelection ()
/// <summary>
/// Sets the <see cref="View.Driver"/> to an appropriate color for rendering the given <paramref name="idx"/> of the
/// current <paramref name="line"/>. Override to provide custom coloring by calling <see cref="ConsoleDriver.SetAttribute(Attribute)"/>
/// Defaults to <see cref="ColorScheme.Normal"/>.
/// </summary>
/// <param name="line"></param>
/// <param name="idx"></param>
protected virtual void ColorNormal (List<Rune> line, int idx)
{
Driver.SetAttribute (ColorScheme.Normal);
}
/// <summary>
/// Sets the <see cref="View.Driver"/> to an appropriate color for rendering the given <paramref name="idx"/> of the
/// current <paramref name="line"/>. Override to provide custom coloring by calling <see cref="ConsoleDriver.SetAttribute(Attribute)"/>
/// Defaults to <see cref="ColorScheme.Focus"/>.
/// </summary>
/// <param name="line"></param>
/// <param name="idx"></param>
protected virtual void ColorSelection (List<Rune> line, int idx)
{
Driver.SetAttribute (ColorScheme.Focus);
}
void ColorUsed ()
/// <summary>
/// Sets the <see cref="View.Driver"/> to an appropriate color for rendering the given <paramref name="idx"/> of the
/// current <paramref name="line"/>. Override to provide custom coloring by calling <see cref="ConsoleDriver.SetAttribute(Attribute)"/>
/// Defaults to <see cref="ColorScheme.HotFocus"/>.
/// </summary>
/// <param name="line"></param>
/// <param name="idx"></param>
protected virtual void ColorUsed (List<Rune> line, int idx)
{
Driver.SetAttribute (ColorScheme.HotFocus);
}
@@ -1667,12 +1696,12 @@ namespace Terminal.Gui {
var rune = idxCol >= lineRuneCount ? ' ' : line [idxCol];
var cols = Rune.ColumnWidth (rune);
if (idxCol < line.Count && selecting && PointInSelection (idxCol, idxRow)) {
ColorSelection ();
ColorSelection (line, idxCol);
} else if (idxCol == currentColumn && idxRow == currentRow && !selecting && !Used
&& HasFocus && idxCol < lineRuneCount) {
ColorUsed ();
ColorUsed (line, idxCol);
} else {
ColorNormal ();
ColorNormal (line,idxCol);
}
if (rune == '\t' && TabWidth > 0) {

View File

@@ -0,0 +1,66 @@

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Terminal.Gui;
using static UICatalog.Scenario;
namespace UICatalog.Scenarios {
[ScenarioMetadata (Name: "Syntax Highlighting", Description: "Text editor with keyword highlighting")]
[ScenarioCategory ("Controls")]
class SyntaxHighlighting : Scenario {
public override void Setup ()
{
Win.Title = this.GetName ();
Win.Y = 1; // menu
Win.Height = Dim.Fill (1); // status bar
Top.LayoutSubviews ();
var menu = new MenuBar (new MenuBarItem [] {
new MenuBarItem ("_File", new MenuItem [] {
new MenuItem ("_Quit", "", () => Quit()),
})
});
Top.Add (menu);
var textView = new SqlTextView () {
X = 0,
Y = 0,
Width = Dim.Fill (),
Height = Dim.Fill (1),
};
Win.Add (textView);
var statusBar = new StatusBar (new StatusItem [] {
new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
});
Top.Add (statusBar);
}
private void Quit ()
{
Application.RequestStop ();
}
private class SqlTextView : TextView{
protected override void ColorNormal (List<System.Rune> line, int idx)
{
Driver.SetAttribute (Driver.MakeAttribute (Color.Green, Color.Black));
}
}
}
}