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) }