nocui/action.go

90 lines
2.1 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/lib/widget"
// "go.wit.com/gui/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.Delete()
case widget.Move:
log.Warn("doAction() TODO: Move()")
default:
log.Log(ERROR, "doAction() Unknown =", a.ActionType, a.WidgetType)
}
log.Log(INFO, "doAction() END =", a.ActionType, a.WidgetType)
}