summaryrefslogtreecommitdiff
path: root/action.go
blob: f285b2b88a8af656d1e1431060d8a680eb7e24f8 (plain)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package main

/*
	a simple function to handle widget actions

	You can tie this into your toolkit here.
*/

import (
	"slices"

	"go.wit.com/lib/protobuf/guipb"
	"go.wit.com/log"
	"go.wit.com/toolkits/tree"
	"go.wit.com/widget"
)

func newAdd(n *tree.Node) {
	log.Log(INFO, "Add() END =", n.WidgetType, n.String())
	if n == nil {
		log.Warn("Tree Error: Add() sent n == nil")
		return
	}
	switch n.WidgetType {
	case widget.Root:
		me.treeRoot = n
		log.Log(INFO, "Add() found treeRoot")
		return
	}

	log.Log(INFO, "Add() END =", n.WidgetType, n.String())
}

func newaction(n *tree.Node, atype widget.ActionType) {
	log.Log(INFO, "newaction() START", atype)
	if n == nil {
		log.Warn("Tree Error: Add() sent n == nil")
		return
	}
	if n.TK == nil {
		log.Warn("Tree sent an action on a widget we didn't seem to have.")
		// do this init here again? Probably something
		// went wrong and we should reset the our while gocui.View tree
		// n.TK = initWidget(n)
	}
	// w := n.TK.(*guiWidget)
	switch atype {
	case widget.Show:
		log.Log(NOW, "Show() HERE. a.Hidden() was =", n.Hidden())
		// w.Show()
	case widget.Hide:
		log.Log(NOW, "Hide() HERE. a.State.Hidden was =", n.Hidden())
		// w.Hide()
	case widget.Move:
		log.Log(NOW, "attempt to move() =", atype, n.WidgetType, n.ProgName())
	case widget.Enable:
		// w.enable = true
		// w.enableColor()
	case widget.Disable:
		// w.enable = false
		// w.disableColor()
	case widget.Delete:
		log.Info("newaction() DeleteNode()")
		// n.DeleteNode()
	case widget.ToolkitClose:
		log.Info("newaction() toolkit closed. are the channels cleand up?")
		return
	default:
		log.Log(ERROR, "newaction() UNHANDLED Action Type =", atype, "WidgetType =", n.WidgetType, "Name =", n.ProgName())
	}
	log.Log(INFO, "newaction() END", atype, n.String())
}

func setTitle(n *tree.Node, s string) {
	setText(n, s)
}

func setLabel(n *tree.Node, s string) {
	setText(n, s)
}

func setText(n *tree.Node, s string) {
	if n == nil {
		log.Warn("Tree Error: Add() sent n == nil")
		return
	}
	if n.TK == nil {
		log.Warn("Tree sent an action on a widget we didn't seem to have.")
		return
	}
	// w := n.TK.(*guiWidget)
	// w.SetText(s)
	log.Info("SetText()", n.WidgetType, n.String())
}

func addText(n *tree.Node, s string) {
	if n == nil {
		log.Warn("Tree Error: Add() sent n == nil")
		return
	}
	if n.TK == nil {
		log.Warn("Tree sent an action on a widget we didn't seem to have.")
		return
	}
	log.Info("AddText()", n.WidgetType, n.String())
	// w := n.TK.(*guiWidget)
	// w.AddText(s)
}

func setChecked(n *tree.Node, b bool) {
	log.Info("do enable() here")
}

func toolkitClose() {
	log.Info("do enable() here")
}

func showTable(t *guipb.Table) {
	log.Info("gocui: should show table here")
	if t == nil {
		return
	}
	log.Info("gocui: table.Title", t.Title)
}

func enableWidget(n *tree.Node) {
	tk := n.TK.(*guiWidget)
	tk.Enable()
}

func disableWidget(n *tree.Node) {
	tk := n.TK.(*guiWidget)
	tk.Disable()
}

func showWidget(n *tree.Node) {
	tk := n.TK.(*guiWidget)
	tk.Show()
}

func hideWidget(n *tree.Node) {
	tk := n.TK.(*guiWidget)
	if n.WidgetType == widget.Window {
		// tk.windowFrame.Hide()
		// tk.hideWidgets()
	}
	tk.Hide()
	tk.deleteWidget()
}

func (tk *guiWidget) deleteWidget() {
	log.Info("gocui deleteWidget() looking for child to delete:", tk.cuiName)
	p := tk.parent
	for i, child := range p.children {
		if tk == child {
			log.Info("deleteWidget() found parent with child to delete:", i, child.cuiName)
			p.children = slices.Delete(p.children, i, i+1)
		}
	}
}