-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathui.go
70 lines (56 loc) · 1.79 KB
/
ui.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package main
import (
"strings"
"github.com/mappu/miqt/qt6"
)
func CreateQTreeContents(t *TopicTree) ([]*qt6.QTreeWidgetItem, map[string]*qt6.QTreeWidgetItem) {
itemList := make([]*qt6.QTreeWidgetItem, 0)
treeItemPointers := make(map[string]*qt6.QTreeWidgetItem)
for k, v := range *t {
newItem := qt6.NewQTreeWidgetItem()
treeItemPointers[v.TopicCanonical()] = newItem
newItem.SetText(0, k)
newItem.SetText(1, string(v.Value))
newItem.SetToolTip(0, v.TopicCanonical())
// newItem.TreeWidget().SetContextMenuPolicy(qt6.CustomContextMenu)
// newItem.TreeWidget().OnCustomContextMenuRequested(func(pos *qt6.QPoint) {
// fmt.Println(pos)
// // menu := qt6.NewQMenu2()
// // me
// })
itemList = append(itemList, newItem)
subItems, subPointers := CreateQTreeContents(&v.Children)
newItem.AddChildren(subItems)
for k, v := range subPointers {
treeItemPointers[k] = v
}
}
return itemList, treeItemPointers
}
func ExpandParents(item *qt6.QTreeWidgetItem) {
if item.Parent() != nil {
item.Parent().SetExpanded(true)
ExpandParents(item.Parent())
}
}
func IsParentOfAChildWithTopicPart(maybeParent *qt6.QTreeWidgetItem, filter string) bool {
isMatchingContent := strings.Contains(maybeParent.Text(0), filter)
if maybeParent.ChildCount() == 0 {
return isMatchingContent
}
for childIndex := 0; childIndex < maybeParent.ChildCount(); childIndex++ {
if IsParentOfAChildWithTopicPart(maybeParent.Child(childIndex), filter) {
return true
}
}
return isMatchingContent
}
// func populateQTreeItem(qTreeItem *qt6.QTreeWidgetItem, tt *TopicTree) {
// for k, v := range *tt {
// newItem := qt6.NewQTreeWidgetItem()
// newItem.SetText(0, k)
// newItem.SetText(1, string(v.Value))
// qTreeItem.AddChild(newItem)
// populateQTreeItem(newItem, &v.Children)
// }
// }