mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 17:02:51 +08:00
Support setting the static console
This commit is contained in:
parent
bff3438a5a
commit
29e6e34f83
@ -13,7 +13,10 @@ namespace Spectre.Console
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static void Record()
|
public static void Record()
|
||||||
{
|
{
|
||||||
_recorder = new Recorder(_console.Value);
|
if (_recorder == null)
|
||||||
|
{
|
||||||
|
_recorder = new Recorder(Console);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -7,7 +7,9 @@ namespace Spectre.Console
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static partial class AnsiConsole
|
public static partial class AnsiConsole
|
||||||
{
|
{
|
||||||
private static readonly Lazy<IAnsiConsole> _console = new Lazy<IAnsiConsole>(() =>
|
private static Recorder? _recorder;
|
||||||
|
private static Lazy<IAnsiConsole> _console = new Lazy<IAnsiConsole>(
|
||||||
|
() =>
|
||||||
{
|
{
|
||||||
var console = Create(new AnsiConsoleSettings
|
var console = Create(new AnsiConsoleSettings
|
||||||
{
|
{
|
||||||
@ -20,12 +22,28 @@ namespace Spectre.Console
|
|||||||
return console;
|
return console;
|
||||||
});
|
});
|
||||||
|
|
||||||
private static Recorder? _recorder;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the underlying <see cref="IAnsiConsole"/>.
|
/// Gets or sets the underlying <see cref="IAnsiConsole"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static IAnsiConsole Console => _recorder ?? _console.Value;
|
public static IAnsiConsole Console
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _recorder ?? _console.Value;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_console = new Lazy<IAnsiConsole>(() => value);
|
||||||
|
|
||||||
|
if (_recorder != null)
|
||||||
|
{
|
||||||
|
// Recreate the recorder
|
||||||
|
_recorder = _recorder.Clone(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
Created = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the <see cref="IAnsiConsoleCursor"/>.
|
/// Gets the <see cref="IAnsiConsoleCursor"/>.
|
||||||
|
@ -67,6 +67,13 @@ namespace Spectre.Console
|
|||||||
_console.Write(segments);
|
_console.Write(segments);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal Recorder Clone(IAnsiConsole console)
|
||||||
|
{
|
||||||
|
var recorder = new Recorder(console);
|
||||||
|
recorder.Recorded.AddRange(Recorded);
|
||||||
|
return recorder;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Records the specified segments.
|
/// Records the specified segments.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user