Added a proposal for Tree.
This commit is contained in:
parent
7880514811
commit
39c0919652
|
@ -0,0 +1,35 @@
|
||||||
|
# Tree
|
||||||
|
|
||||||
|
Unlike Table, Tree can only store a set of a single data type. (Blame Windows.)
|
||||||
|
|
||||||
|
```go
|
||||||
|
type TreeData struct {
|
||||||
|
Checked bool
|
||||||
|
Image ImageIndex
|
||||||
|
Text string
|
||||||
|
Children []TreeData // TODO does this need to be *[]TreeData?
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
(the facilities for Images has yet to be designed)
|
||||||
|
|
||||||
|
Tree itself will operate similarly to Table:
|
||||||
|
|
||||||
|
```go
|
||||||
|
type Tree struct {
|
||||||
|
Control
|
||||||
|
sync.Locker // with Unlock() refreshing the view
|
||||||
|
Data() *[]TreeData
|
||||||
|
SetHasCheckboxes(bool)
|
||||||
|
SetHasImages(bool)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, a Tree only shows the Text field.
|
||||||
|
|
||||||
|
A Tree path is just an `[]int` with each element set to the consecutive index in Children. For example:
|
||||||
|
|
||||||
|
```go
|
||||||
|
i := []int{3, 4, 5}
|
||||||
|
value := tree.Data()[i[0]].Children[i[1]].Children[i[2]].Text
|
||||||
|
```
|
Loading…
Reference in New Issue