mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-06-19 13:28:16 +08:00
Add text prompt support
This commit is contained in:

committed by
Patrik Svensson

parent
380c6aca45
commit
0d209d8f18
@ -10,10 +10,12 @@ namespace Spectre.Console.Internal
|
||||
private readonly TextWriter _out;
|
||||
private readonly AnsiBuilder _ansiBuilder;
|
||||
private readonly AnsiCursor _cursor;
|
||||
private readonly ConsoleInput _input;
|
||||
|
||||
public Capabilities Capabilities { get; }
|
||||
public Encoding Encoding { get; }
|
||||
public IAnsiConsoleCursor Cursor => _cursor;
|
||||
public IAnsiConsoleInput Input => _input;
|
||||
|
||||
public int Width
|
||||
{
|
||||
@ -50,6 +52,7 @@ namespace Spectre.Console.Internal
|
||||
|
||||
_ansiBuilder = new AnsiBuilder(Capabilities, linkHasher);
|
||||
_cursor = new AnsiCursor(this);
|
||||
_input = new ConsoleInput();
|
||||
}
|
||||
|
||||
public void Clear(bool home)
|
||||
|
@ -9,11 +9,13 @@ namespace Spectre.Console.Internal
|
||||
{
|
||||
private readonly ColorSystem _system;
|
||||
private readonly FallbackCursor _cursor;
|
||||
private readonly ConsoleInput _input;
|
||||
private Style? _lastStyle;
|
||||
|
||||
public Capabilities Capabilities { get; }
|
||||
public Encoding Encoding { get; }
|
||||
public IAnsiConsoleCursor Cursor => _cursor;
|
||||
public IAnsiConsoleInput Input => _input;
|
||||
|
||||
public int Width
|
||||
{
|
||||
@ -34,6 +36,7 @@ namespace Spectre.Console.Internal
|
||||
|
||||
_system = capabilities.ColorSystem;
|
||||
_cursor = new FallbackCursor();
|
||||
_input = new ConsoleInput();
|
||||
|
||||
if (@out != System.Console.Out)
|
||||
{
|
||||
|
17
src/Spectre.Console/Internal/ConsoleInput.cs
Normal file
17
src/Spectre.Console/Internal/ConsoleInput.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using System;
|
||||
|
||||
namespace Spectre.Console.Internal
|
||||
{
|
||||
internal sealed class ConsoleInput : IAnsiConsoleInput
|
||||
{
|
||||
public ConsoleKeyInfo ReadKey(bool intercept)
|
||||
{
|
||||
if (!Environment.UserInteractive)
|
||||
{
|
||||
throw new InvalidOperationException("Failed to read input in non-interactive mode.");
|
||||
}
|
||||
|
||||
return System.Console.ReadKey(intercept);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user