spectre.console/docs/input/live/live-display.md
Patrik Svensson 3dea412785 Add live display support
This commit also adds functionality to LiveRenderable that should
fix some problems related to vertical overflow.

Closes #316
Closes #415
2021-05-20 19:41:10 -04:00

62 lines
1.3 KiB
Markdown

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
});
```