93 lines
2.2 KiB
Go
93 lines
2.2 KiB
Go
package main
|
|
|
|
/*
|
|
a simple function to handle widget actions
|
|
|
|
You can tie this into your toolkit here.
|
|
*/
|
|
|
|
import (
|
|
"go.wit.com/log"
|
|
"go.wit.com/widget"
|
|
// "go.wit.com/toolkits/tree"
|
|
)
|
|
|
|
func doAction(a widget.Action) {
|
|
log.Log(INFO, "doAction() START a.ActionType =", a.ActionType)
|
|
log.Log(INFO, "doAction() START a.ProgName =", a.ProgName)
|
|
|
|
if a.ActionType == widget.ToolkitInit {
|
|
return
|
|
}
|
|
|
|
log.Log(INFO, "doAction() START a.WidgetId =", a.WidgetId, "a.ParentId =", a.ParentId)
|
|
switch a.WidgetType {
|
|
case widget.Root:
|
|
me.treeRoot = me.myTree.AddNode(&a)
|
|
log.Log(INFO, "doAction() found treeRoot")
|
|
return
|
|
}
|
|
|
|
switch a.ActionType {
|
|
case widget.Add:
|
|
me.myTree.AddNode(&a)
|
|
return
|
|
}
|
|
|
|
n := me.treeRoot.FindWidgetId(a.WidgetId)
|
|
if n == nil {
|
|
log.Warn("FindId() n == nil", a.WidgetId, a.ActionType)
|
|
log.Warn("FindId() n == nil", a.WidgetId, a.ActionType)
|
|
log.Warn("FindId() n == nil", a.WidgetId, a.ActionType)
|
|
log.Warn("Aaaaa!, return")
|
|
return
|
|
}
|
|
|
|
switch a.ActionType {
|
|
case widget.Show:
|
|
n.State.Visable = true
|
|
case widget.Hide:
|
|
n.State.Visable = false
|
|
case widget.Enable:
|
|
n.State.Visable = true
|
|
case widget.Disable:
|
|
n.State.Visable = false
|
|
case widget.Get:
|
|
log.Warn("value =", n.State.Value)
|
|
case widget.GetText:
|
|
log.Warn("value =", n.String())
|
|
case widget.Set:
|
|
n.State.Value = a.State.Value
|
|
case widget.SetText:
|
|
log.Warn("GOT TO SetText()", a.WidgetId)
|
|
log.Warn("GOT TO SetText()", a.WidgetId)
|
|
log.Warn("GOT TO SetText()", a.WidgetId)
|
|
log.Warn("GOT TO SetText()", a.WidgetId)
|
|
if n == nil {
|
|
log.Warn("HOT DIGGITY. n == nil")
|
|
}
|
|
n.State.Value = a.State.Value
|
|
case widget.AddText:
|
|
n.State.Strings = append(a.State.Strings, widget.GetString(a.State.Value))
|
|
case widget.Margin:
|
|
n.State.Pad = true
|
|
case widget.Unmargin:
|
|
n.State.Pad = false
|
|
case widget.Pad:
|
|
n.State.Pad = true
|
|
case widget.Unpad:
|
|
n.State.Pad = false
|
|
case widget.Delete:
|
|
log.Warn("doAction() TODO: Delete()")
|
|
n.DeleteNode()
|
|
case widget.Move:
|
|
log.Warn("doAction() TODO: Move()")
|
|
case widget.ToolkitClose:
|
|
log.Warn("doAction() toolkit closed. are the channels cleand up?")
|
|
return
|
|
default:
|
|
log.Log(ERROR, "doAction() Unknown =", a.ActionType, a.WidgetType)
|
|
}
|
|
log.Log(INFO, "doAction() END =", a.ActionType, a.WidgetType)
|
|
}
|