Add live display support

This commit also adds functionality to LiveRenderable that should
fix some problems related to vertical overflow.

Closes #316
Closes #415
This commit is contained in:
Patrik Svensson
2021-05-20 12:05:47 +02:00
committed by Phil Scott
parent 5d68020abb
commit 3dea412785
22 changed files with 756 additions and 20 deletions

View File

@ -1,4 +1,4 @@
Title: Live Displays
Title: Live
Order: 4
---

View File

@ -0,0 +1,62 @@
Title: Live Display
Order: 0
---
Spectre.Console can update arbitrary widgets in-place.
<?# Alert ?>
The live display is not
thread safe, and using it together with other interactive components such as
prompts, status displays or other progress displays are not supported.
<?#/ Alert ?>
```csharp
var table = new Table().Centered();
AnsiConsole.Live(table)
.Start(ctx =>
{
table.AddColumn("Foo");
ctx.Refresh();
Thread.Sleep(1000);
table.AddColumn("Bar");
ctx.Refresh();
Thread.Sleep(1000);
});
```
## Asynchronous progress
If you prefer to use async/await, you can use `StartAsync` instead of `Start`.
```csharp
var table = new Table().Centered();
await AnsiConsole.Live(table)
.StartAsync(async ctx =>
{
table.AddColumn("Foo");
ctx.Refresh();
await Task.Delay(1000);
table.AddColumn("Bar");
ctx.Refresh();
await Task.Delay(1000);
});
```
## Configure
```csharp
var table = new Table().Centered();
AnsiConsole.Live(table)
.AutoClear(false) // Do not remove when done
.Overflow(VerticalOverflow.Ellipsis) // Show ellipsis when overflowing
.Cropping(VerticalOverflowCropping.Top) // Crop overflow at top
.Start(ctx =>
{
// Omitted
});
```

View File

@ -66,7 +66,6 @@ await AnsiConsole.Progress()
## Configure
```csharp
// Asynchronous
AnsiConsole.Progress()
.AutoRefresh(false) // Turn off auto refresh
.AutoClear(false) // Do not remove the task list when done

View File

@ -1,5 +1,5 @@
Title: Status
Order: 6
Order: 10
RedirectFrom: status
---