1use {
2 cursive::{view::*, views::*, *},
3 cursive_tree::*,
4};
5
6fn main() -> Result<(), ()> {
9 let mut cursive = default();
10
11 let mut tree = SimpleTreeBackend::tree_view();
12
13 tree.model.add_root(NodeKind::Leaf, (), "Hello");
16 tree.model.add_root(NodeKind::Branch, (), "World");
17
18 let world = tree.model.at_path_mut([1].into()).expect("at_path_mut");
21 for i in 0..10 {
22 world.add_child(NodeKind::Leaf, (), format!("Child #{}", i + 1));
23 }
24
25 let mut gc = 0;
29 for c in 4..10 {
30 let child = tree.model.at_path_mut([1, c].into()).expect("at_path_mut");
31 child.kind = NodeKind::Branch;
32 for _ in 0..10 {
33 child.add_child(NodeKind::Leaf, (), format!("Grandchild #{}", gc + 1));
34 gc += 1;
35 }
36 }
37
38 tree.model.expand(None)?;
41
42 cursive.add_fullscreen_layer(Panel::new(tree.scrollable()));
43 cursive.add_global_callback('q', |cursive| cursive.quit());
44
45 cursive.run();
46
47 Ok(())
48}