mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 08:52:50 +08:00

Fixes some tree rendering problems where lines were not properly drawn at some levels during some circumstances. * Change the API back to only allow one root. * Now uses a stack based approach to rendering instead of recursion. * Removes the need for measuring the whole tree in advance. Leave this up to each child to render.
70 lines
1.2 KiB
Markdown
70 lines
1.2 KiB
Markdown
Title: Tree
|
|
Order: 10
|
|
---
|
|
|
|
The `Tree` widget can be used to render hierarchical data.
|
|
|
|
<img src="../assets/images/tree.png" style="width: 100%;" />
|
|
|
|
# Usage
|
|
|
|
```csharp
|
|
// Create the tree
|
|
var tree = new Tree("Root");
|
|
|
|
// Add some nodes
|
|
var foo = tree.AddNode("[yellow]Foo[/]");
|
|
var table = foo.AddNode(new Table()
|
|
.RoundedBorder()
|
|
.AddColumn("First")
|
|
.AddColumn("Second")
|
|
.AddRow("1", "2")
|
|
.AddRow("3", "4")
|
|
.AddRow("5", "6"));
|
|
|
|
table.AddNode("[blue]Baz[/]");
|
|
foo.AddNode("Qux");
|
|
|
|
var bar = tree.AddNode("[yellow]Bar[/]");
|
|
bar.AddNode(new Calendar(2020, 12)
|
|
.AddCalendarEvent(2020, 12, 12)
|
|
.HideHeader());
|
|
|
|
// Render the tree
|
|
AnsiConsole.Render(root);
|
|
```
|
|
|
|
# Collapsing nodes
|
|
|
|
```csharp
|
|
root.AddNode("Label").Collapsed();
|
|
```
|
|
|
|
# Appearance
|
|
|
|
## Style
|
|
|
|
```csharp
|
|
var root = new Tree("Root")
|
|
.Style("white on red");
|
|
```
|
|
|
|
## Guide lines
|
|
|
|
```csharp
|
|
// ASCII guide lines
|
|
var root = new Tree("Root")
|
|
.Guide(TreeGuide.Ascii);
|
|
|
|
// Default guide lines
|
|
var root = new Tree("Root")
|
|
.Guide(TreeGuide.Line);
|
|
|
|
// Double guide lines
|
|
var root = new Tree("Root")
|
|
.Guide(TreeGuide.DoubleLine);
|
|
|
|
// Bold guide lines
|
|
var root = new Tree("Root")
|
|
.Guide(TreeGuide.BoldLine);
|
|
``` |