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