moved to 'go.wit.com/log'

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-08 21:19:42 -06:00
parent 3c2da3f096
commit 02d1d9e50c
20 changed files with 172 additions and 217 deletions

View File

@ -3,6 +3,8 @@ package main
import ( import (
"strconv" "strconv"
"github.com/andlabs/ui" "github.com/andlabs/ui"
"go.wit.com/log"
"go.wit.com/gui/widget" "go.wit.com/gui/widget"
) )
@ -38,11 +40,11 @@ func (n *node) enable(b bool) {
} }
func (n *node) pad(at widget.ActionType) { func (n *node) pad(at widget.ActionType) {
log(logInfo, "pad() on WidgetId =", n.WidgetId) log.Log(INFO, "pad() on WidgetId =", n.WidgetId)
t := n.tk t := n.tk
if (t == nil) { if (t == nil) {
log(logError, "pad() toolkit struct == nil. for", n.WidgetId) log.Log(ERROR, "pad() toolkit struct == nil. for", n.WidgetId)
return return
} }
@ -103,9 +105,9 @@ func (n *node) pad(at widget.ActionType) {
t.uiBox.SetPadded(false) t.uiBox.SetPadded(false)
} }
case widget.Textbox: case widget.Textbox:
log(debugError, "TODO: implement ActionType =", at) log.Log(ERROR, "TODO: implement ActionType =", at)
default: default:
log(debugError, "TODO: implement pad() for", at) log.Log(ERROR, "TODO: implement pad() for", at)
} }
} }
@ -121,29 +123,29 @@ func (n *node) move(newParent *node) {
case widget.Grid: case widget.Grid:
// t.uiGrid.SetPadded(true) // t.uiGrid.SetPadded(true)
case widget.Box: case widget.Box:
log(logInfo, "TODO: move() where =", p.ParentId) log.Log(INFO, "TODO: move() where =", p.ParentId)
log(logInfo, "TODO: move() for widget =", n.WidgetId) log.Log(INFO, "TODO: move() for widget =", n.WidgetId)
stretchy = true stretchy = true
if (p.tk.uiBox != nil) { if (p.tk.uiBox != nil) {
p.tk.uiBox.Append(n.tk.uiControl, stretchy) p.tk.uiBox.Append(n.tk.uiControl, stretchy)
} }
// log(debugNow, "is there a tParent parent? =", tParent.parent) // log.Log(NOW, "is there a tParent parent? =", tParent.parent)
// tParent.uiBox.Delete(0) // tParent.uiBox.Delete(0)
// this didn't work: // this didn't work:
// tWidget.uiControl.Disable() // tWidget.uiControl.Disable()
// sleep(.8) // sleep(.8)
default: default:
log(logError, "TODO: need to implement move() for type =", n.WidgetType) log.Log(ERROR, "TODO: need to implement move() for type =", n.WidgetType)
log(logError, "TODO: need to implement move() for where =", p.ParentId) log.Log(ERROR, "TODO: need to implement move() for where =", p.ParentId)
log(logError, "TODO: need to implement move() for widget =", n.WidgetId) log.Log(ERROR, "TODO: need to implement move() for widget =", n.WidgetId)
} }
} }
func (n *node) Delete() { func (n *node) Delete() {
p := n.parent p := n.parent
log(debugNow, "uiDelete()", n.WidgetId, "to", p.WidgetId) log.Log(NOW, "uiDelete()", n.WidgetId, "to", p.WidgetId)
switch p.WidgetType { switch p.WidgetType {
case widget.Group: case widget.Group:
@ -155,10 +157,10 @@ func (n *node) Delete() {
case widget.Grid: case widget.Grid:
// t.uiGrid.SetPadded(true) // t.uiGrid.SetPadded(true)
case widget.Box: case widget.Box:
log(debugNow, "tWidget.boxC =", p.Name) log.Log(NOW, "tWidget.boxC =", p.Name)
log(debugNow, "is there a tParent parent? =", p.parent) log.Log(NOW, "is there a tParent parent? =", p.parent)
if (p.tk.boxC < 1) { if (p.tk.boxC < 1) {
log(debugNow, "Can not delete from Box. already empty. tWidget.boxC =", p.tk.boxC) log.Log(NOW, "Can not delete from Box. already empty. tWidget.boxC =", p.tk.boxC)
return return
} }
p.tk.uiBox.Delete(0) p.tk.uiBox.Delete(0)
@ -169,14 +171,14 @@ func (n *node) Delete() {
// sleep(.8) // sleep(.8)
// tParent.uiBox.Append(tWidget.uiControl, stretchy) // tParent.uiBox.Append(tWidget.uiControl, stretchy)
default: default:
log(debugError, "TODO: need to implement uiDelete() for widget =", n.WidgetId, n.WidgetType) log.Log(ERROR, "TODO: need to implement uiDelete() for widget =", n.WidgetId, n.WidgetType)
log(debugError, "TODO: need to implement uiDelete() for parent =", p.WidgetId, p.WidgetType) log.Log(ERROR, "TODO: need to implement uiDelete() for parent =", p.WidgetId, p.WidgetType)
} }
} }
func rawAction(a *widget.Action) { func rawAction(a *widget.Action) {
log(logInfo, "rawAction() START a.ActionType =", a.ActionType) log.Log(INFO, "rawAction() START a.ActionType =", a.ActionType)
log(logInfo, "rawAction() START a.S =", a.S) log.Log(INFO, "rawAction() START a.S =", a.S)
if (a.ActionType == widget.InitToolkit) { if (a.ActionType == widget.InitToolkit) {
// TODO: make sure to only do this once // TODO: make sure to only do this once
@ -188,10 +190,10 @@ func rawAction(a *widget.Action) {
return return
} }
log(logInfo, "rawAction() START a.WidgetId =", a.WidgetId, "a.ParentId =", a.ParentId) log.Log(INFO, "rawAction() START a.WidgetId =", a.WidgetId, "a.ParentId =", a.ParentId)
switch a.WidgetType { switch a.WidgetType {
case widget.Flag: case widget.Flag:
flag(a) log.Log(ERROR, "rawAction() RE-IMPLEMENT LOG FLAGS")
return return
} }
@ -207,17 +209,17 @@ func rawAction(a *widget.Action) {
} }
if (a.ActionType == widget.Dump) { if (a.ActionType == widget.Dump) {
log(debugNow, "rawAction() Dump =", a.ActionType, a.WidgetType, n.Name) log.Log(NOW, "rawAction() Dump =", a.ActionType, a.WidgetType, n.Name)
me.rootNode.listChildren(true) me.rootNode.listChildren(true)
return return
} }
if (n == nil) { if (n == nil) {
me.rootNode.listChildren(true) me.rootNode.listChildren(true)
log(true, "rawAction() ERROR findWidgetId found nil", a.ActionType, a.WidgetType) log.Log(NOW, "rawAction() ERROR findWidgetId found nil", a.ActionType, a.WidgetType)
log(true, "rawAction() ERROR findWidgetId found nil for id =", a.WidgetId) log.Log(NOW, "rawAction() ERROR findWidgetId found nil for id =", a.WidgetId)
log(true, "rawAction() ERROR findWidgetId found nil", a.ActionType, a.WidgetType) log.Log(NOW, "rawAction() ERROR findWidgetId found nil", a.ActionType, a.WidgetType)
log(true, "rawAction() ERROR findWidgetId found nil for id =", a.WidgetId) log.Log(NOW, "rawAction() ERROR findWidgetId found nil for id =", a.WidgetId)
return return
panic("findWidgetId found nil for id = " + strconv.Itoa(a.WidgetId)) panic("findWidgetId found nil for id = " + strconv.Itoa(a.WidgetId))
} }
@ -255,11 +257,11 @@ func rawAction(a *widget.Action) {
case widget.Delete: case widget.Delete:
n.Delete() n.Delete()
case widget.Move: case widget.Move:
log(debugNow, "rawAction() attempt to move() =", a.ActionType, a.WidgetType) log.Log(NOW, "rawAction() attempt to move() =", a.ActionType, a.WidgetType)
newParent := me.rootNode.findWidgetId(a.ParentId) newParent := me.rootNode.findWidgetId(a.ParentId)
n.move(newParent) n.move(newParent)
default: default:
log(debugError, "rawAction() Unknown =", a.ActionType, a.WidgetType) log.Log(ERROR, "rawAction() Unknown =", a.ActionType, a.WidgetType)
} }
log(logInfo, "rawAction() END =", a.ActionType, a.WidgetType) log.Log(INFO, "rawAction() END =", a.ActionType, a.WidgetType)
} }

View File

@ -4,15 +4,16 @@ import (
"github.com/andlabs/ui" "github.com/andlabs/ui"
_ "github.com/andlabs/ui/winmanifest" _ "github.com/andlabs/ui/winmanifest"
"go.wit.com/log"
"go.wit.com/gui/widget" "go.wit.com/gui/widget"
) )
func actionDump(b bool, a *widget.Action) { func actionDump(b bool, a *widget.Action) {
log(b, "actionDump() Widget.Type =", a.ActionType) log.Log(NOW, "actionDump() Widget.Type =", a.ActionType)
log(b, "actionDump() Widget.S =", a.S) log.Log(NOW, "actionDump() Widget.S =", a.S)
log(b, "actionDump() Widget.I =", a.I) log.Log(NOW, "actionDump() Widget.I =", a.I)
log(b, "actionDump() WidgetId =", a.WidgetId) log.Log(NOW, "actionDump() WidgetId =", a.WidgetId)
log(b, "actionDump() ParentId =", a.ParentId) log.Log(NOW, "actionDump() ParentId =", a.ParentId)
} }
func add(a *widget.Action) { func add(a *widget.Action) {
@ -67,7 +68,7 @@ func add(a *widget.Action) {
p.newImage(n) p.newImage(n)
return return
default: default:
log(debugError, "add() error TODO: ", n.WidgetType, n.Name) log.Log(ERROR, "add() error TODO: ", n.WidgetType, n.Name)
} }
} }
@ -96,21 +97,21 @@ func add(a *widget.Action) {
// -- (0,1) -- (1,1) -- (1,1) -- // -- (0,1) -- (1,1) -- (1,1) --
// ----------------------------- // -----------------------------
func (p *node) place(n *node) bool { func (p *node) place(n *node) bool {
log(logInfo, "place() START", n.WidgetType, n.Name) log.Log(INFO, "place() START", n.WidgetType, n.Name)
if (p.tk == nil) { if (p.tk == nil) {
log(logError, "p.tk == nil", p.Name, p.ParentId, p.WidgetType, p.tk) log.Log(ERROR, "p.tk == nil", p.Name, p.ParentId, p.WidgetType, p.tk)
log(logError, "n = ", n.Name, n.ParentId, n.WidgetType, n.tk) log.Log(ERROR, "n = ", n.Name, n.ParentId, n.WidgetType, n.tk)
panic("p.tk == nil") panic("p.tk == nil")
} }
log(logInfo, "place() switch", p.WidgetType) log.Log(INFO, "place() switch", p.WidgetType)
switch p.WidgetType { switch p.WidgetType {
case widget.Grid: case widget.Grid:
log(logInfo, "place() Grid try at Parent X,Y =", n.X, n.Y) log.Log(INFO, "place() Grid try at Parent X,Y =", n.X, n.Y)
n.tk.gridX = n.AtW - 1 n.tk.gridX = n.AtW - 1
n.tk.gridY = n.AtH - 1 n.tk.gridY = n.AtH - 1
log(logInfo, "place() Grid try at gridX,gridY", n.tk.gridX, n.tk.gridY) log.Log(INFO, "place() Grid try at gridX,gridY", n.tk.gridX, n.tk.gridY)
// at the very end, subtract 1 from X & Y since andlabs/ui starts counting at zero // at the very end, subtract 1 from X & Y since andlabs/ui starts counting at zero
p.tk.uiGrid.Append(n.tk.uiControl, p.tk.uiGrid.Append(n.tk.uiControl,
n.tk.gridX, n.tk.gridY, 1, 1, n.tk.gridX, n.tk.gridY, 1, 1,
@ -119,7 +120,7 @@ func (p *node) place(n *node) bool {
case widget.Group: case widget.Group:
if (p.tk.uiBox == nil) { if (p.tk.uiBox == nil) {
p.tk.uiGroup.SetChild(n.tk.uiControl) p.tk.uiGroup.SetChild(n.tk.uiControl)
log(logInfo, "place() hack Group to use this as the box?", n.Name, n.WidgetType) log.Log(INFO, "place() hack Group to use this as the box?", n.Name, n.WidgetType)
p.tk.uiBox = n.tk.uiBox p.tk.uiBox = n.tk.uiBox
} else { } else {
p.tk.uiBox.Append(n.tk.uiControl, stretchy) p.tk.uiBox.Append(n.tk.uiControl, stretchy)
@ -127,23 +128,23 @@ func (p *node) place(n *node) bool {
return true return true
case widget.Tab: case widget.Tab:
if (p.tk.uiTab == nil) { if (p.tk.uiTab == nil) {
log(logError, "p.tk.uiTab == nil for n.WidgetId =", n.WidgetId, "p.tk =", p.tk) log.Log(ERROR, "p.tk.uiTab == nil for n.WidgetId =", n.WidgetId, "p.tk =", p.tk)
panic("p.tk.uiTab == nil") panic("p.tk.uiTab == nil")
} }
if (n.tk.uiControl == nil) { if (n.tk.uiControl == nil) {
log(logError, "n.tk.uiControl == nil for n.WidgetId =", n.WidgetId, "n.tk =", n.tk) log.Log(ERROR, "n.tk.uiControl == nil for n.WidgetId =", n.WidgetId, "n.tk =", n.tk)
panic("n.tk.uiControl == nil") panic("n.tk.uiControl == nil")
} }
log(logError, "CHECK LOGIC ON THIS. APPENDING directly into a window without a tab") log.Log(ERROR, "CHECK LOGIC ON THIS. APPENDING directly into a window without a tab")
// log(logError, "THIS SHOULD NEVER HAPPEN ??????? trying to place() node=", n.WidgetId, n.Name, n.Text, n.WidgetType) // log.Log(ERROR, "THIS SHOULD NEVER HAPPEN ??????? trying to place() node=", n.WidgetId, n.Name, n.Text, n.WidgetType)
// log(logError, "THIS SHOULD NEVER HAPPEN ??????? trying to place() on parent=", p.WidgetId, p.Name, p.Text, p.WidgetType) // log.Log(ERROR, "THIS SHOULD NEVER HAPPEN ??????? trying to place() on parent=", p.WidgetId, p.Name, p.Text, p.WidgetType)
// panic("n.tk.uiControl == nil") // panic("n.tk.uiControl == nil")
p.tk.uiTab.Append(n.Text, n.tk.uiControl) p.tk.uiTab.Append(n.Text, n.tk.uiControl)
p.tk.boxC += 1 p.tk.boxC += 1
return true return true
case widget.Box: case widget.Box:
log(logInfo, "place() uiBox =", p.tk.uiBox) log.Log(INFO, "place() uiBox =", p.tk.uiBox)
log(logInfo, "place() uiControl =", n.tk.uiControl) log.Log(INFO, "place() uiControl =", n.tk.uiControl)
p.tk.uiBox.Append(n.tk.uiControl, stretchy) p.tk.uiBox.Append(n.tk.uiControl, stretchy)
p.tk.boxC += 1 p.tk.boxC += 1
return true return true
@ -151,7 +152,7 @@ func (p *node) place(n *node) bool {
p.tk.uiWindow.SetChild(n.tk.uiControl) p.tk.uiWindow.SetChild(n.tk.uiControl)
return true return true
default: default:
log(debugError, "place() how? Parent =", p.WidgetId, p.WidgetType) log.Log(ERROR, "place() how? Parent =", p.WidgetId, p.WidgetType)
} }
return false return false
} }

View File

@ -7,13 +7,9 @@ import (
// make new Box here // make new Box here
func (p *node) newBox(n *node) { func (p *node) newBox(n *node) {
log(debugToolkit, "newBox()", n.Name)
newt := new(guiWidget) newt := new(guiWidget)
var box *ui.Box var box *ui.Box
log(debugToolkit, "rawBox() create", n.Name)
if (n.B) { if (n.B) {
box = ui.NewHorizontalBox() box = ui.NewHorizontalBox()
} else { } else {

View File

@ -6,14 +6,7 @@ import (
) )
func (p *node) newButton(n *node) { func (p *node) newButton(n *node) {
log(debugToolkit, "newButton() START", n.Name)
t := p.tk t := p.tk
if (t == nil) {
log(debugToolkit, "newButton() toolkit struct == nil. name=", n.Name)
return
}
newt := new(guiWidget) newt := new(guiWidget)
b := ui.NewButton(n.Text) b := ui.NewButton(n.Text)
@ -27,5 +20,4 @@ func (p *node) newButton(n *node) {
n.tk = newt n.tk = newt
p.place(n) p.place(n)
log(debugToolkit, "newButton() END", n.Name)
} }

View File

@ -7,14 +7,12 @@ import (
func (p *node) newCheckbox(n *node) { func (p *node) newCheckbox(n *node) {
newt := new(guiWidget) newt := new(guiWidget)
log(debugToolkit, "newCheckbox()", n.Name, n.WidgetType)
newt.uiCheckbox = ui.NewCheckbox(n.Text) newt.uiCheckbox = ui.NewCheckbox(n.Text)
newt.uiControl = newt.uiCheckbox newt.uiControl = newt.uiCheckbox
newt.uiCheckbox.OnToggled(func(spin *ui.Checkbox) { newt.uiCheckbox.OnToggled(func(spin *ui.Checkbox) {
n.B = newt.checked() n.B = newt.checked()
log(debugChange, "val =", n.B)
n.doUserEvent() n.doUserEvent()
}) })

View File

@ -7,7 +7,6 @@ import (
func (p *node) newCombobox(n *node) { func (p *node) newCombobox(n *node) {
newt := new(guiWidget) newt := new(guiWidget)
log(debugToolkit, "newCombobox() START", n.Name)
cb := ui.NewEditableCombobox() cb := ui.NewEditableCombobox()
newt.uiEditableCombobox = cb newt.uiEditableCombobox = cb
@ -29,7 +28,6 @@ func (p *node) newCombobox(n *node) {
func (t *guiWidget) AddComboboxName(title string) { func (t *guiWidget) AddComboboxName(title string) {
t.uiEditableCombobox.Append(title) t.uiEditableCombobox.Append(title)
if (t.val == nil) { if (t.val == nil) {
log(debugToolkit, "make map didn't work")
return return
} }
t.val[t.c] = title t.val[t.c] = title

View File

@ -2,7 +2,9 @@ package main
import ( import (
"strconv" "strconv"
"go.wit.com/gui/widget"
"go.wit.com/log"
// "go.wit.com/gui/widget"
) )
var defaultBehavior bool = true var defaultBehavior bool = true
@ -27,8 +29,8 @@ var debugError bool = true
func setDefaultBehavior(s bool) { func setDefaultBehavior(s bool) {
defaultBehavior = s defaultBehavior = s
if (defaultBehavior) { if (defaultBehavior) {
log(debugToolkit, "Setting this toolkit to use the default behavior.") log.Log(NOW, "Setting this toolkit to use the default behavior.")
log(debugToolkit, "This is the 'guessing' part as defined by the wit/gui 'Principles'. Refer to the docs.") log.Log(NOW, "This is the 'guessing' part as defined by the wit/gui 'Principles'. Refer to the docs.")
stretchy = false stretchy = false
padded = true padded = true
menubar = true menubar = true
@ -36,53 +38,44 @@ func setDefaultBehavior(s bool) {
canvas = false canvas = false
bookshelf = true // 99% of the time, things make a vertical stack of objects bookshelf = true // 99% of the time, things make a vertical stack of objects
} else { } else {
log(debugToolkit, "This toolkit is set to ignore the default behavior.") log.Log(NOW, "This toolkit is set to ignore the default behavior.")
} }
} }
func ShowDebug () {
log(true, "debugToolkit =", debugToolkit)
log(true, "debugChange =", debugChange)
log(true, "debugAction =", debugPlugin)
log(true, "debugFlags =", debugFlags)
log(true, "debugNow =", debugNow)
log(true, "debugError =", debugError)
}
func (t *guiWidget) Dump(b bool) { func (t *guiWidget) Dump(b bool) {
if ! b { if ! b {
return return
} }
log(b, "Name = ", t.Width, t.Height) log.Log(NOW, "Name = ", t.Width, t.Height)
if (t.uiBox != nil) { if (t.uiBox != nil) {
log(b, "uiBox =", t.uiBox) log.Log(NOW, "uiBox =", t.uiBox)
} }
if (t.uiButton != nil) { if (t.uiButton != nil) {
log(b, "uiButton =", t.uiButton) log.Log(NOW, "uiButton =", t.uiButton)
} }
if (t.uiCombobox != nil) { if (t.uiCombobox != nil) {
log(b, "uiCombobox =", t.uiCombobox) log.Log(NOW, "uiCombobox =", t.uiCombobox)
} }
if (t.uiWindow != nil) { if (t.uiWindow != nil) {
log(b, "uiWindow =", t.uiWindow) log.Log(NOW, "uiWindow =", t.uiWindow)
} }
if (t.uiTab != nil) { if (t.uiTab != nil) {
log(b, "uiTab =", t.uiTab) log.Log(NOW, "uiTab =", t.uiTab)
} }
if (t.uiGroup != nil) { if (t.uiGroup != nil) {
log(b, "uiGroup =", t.uiGroup) log.Log(NOW, "uiGroup =", t.uiGroup)
} }
if (t.uiEntry != nil) { if (t.uiEntry != nil) {
log(b, "uiEntry =", t.uiEntry) log.Log(NOW, "uiEntry =", t.uiEntry)
} }
if (t.uiMultilineEntry != nil) { if (t.uiMultilineEntry != nil) {
log(b, "uiMultilineEntry =", t.uiMultilineEntry) log.Log(NOW, "uiMultilineEntry =", t.uiMultilineEntry)
} }
if (t.uiSlider != nil) { if (t.uiSlider != nil) {
log(b, "uiSlider =", t.uiSlider) log.Log(NOW, "uiSlider =", t.uiSlider)
} }
if (t.uiCheckbox != nil) { if (t.uiCheckbox != nil) {
log(b, "uiCheckbox =", t.uiCheckbox) log.Log(NOW, "uiCheckbox =", t.uiCheckbox)
} }
} }
@ -92,49 +85,11 @@ func GetDebugToolkit () bool {
} }
*/ */
func flag(a *widget.Action) {
// should set the checkbox to this value
switch a.S {
case "Quiet":
logInfo = a.B
logVerbose = a.B
logWarn = a.B
logError = a.B
case "Error":
logError = a.B
case "Info":
logInfo = a.B
case "Verbose":
logInfo = a.B
logVerbose = a.B
logWarn = a.B
logError = a.B
debugToolkit = a.B
debugChange = a.B
debugPlugin = a.B
debugFlags = a.B
case "Toolkit":
debugToolkit = a.B
case "Change":
debugChange = a.B
case "Plugin":
debugPlugin = a.B
case "Flags":
debugFlags = a.B
case "Now":
debugNow = a.B
case "Show":
ShowDebug()
default:
log(debugError, "Can't set unknown flag", a.S)
}
}
func (n *node) dumpWidget(b bool) { func (n *node) dumpWidget(b bool) {
var info, d string var info, d string
if (n == nil) { if (n == nil) {
log(debugError, "dumpWidget() node == nil") log.Log(ERROR, "dumpWidget() node == nil")
return return
} }
info = n.WidgetType.String() info = n.WidgetType.String()
@ -145,7 +100,7 @@ func (n *node) dumpWidget(b bool) {
for i := 0; i < listChildrenDepth; i++ { for i := 0; i < listChildrenDepth; i++ {
tabs = tabs + defaultPadding tabs = tabs + defaultPadding
} }
log(b, tabs + d) log.Log(NOW, tabs + d)
} }
var defaultPadding string = " " var defaultPadding string = " "

View File

@ -2,19 +2,22 @@ package main
// if you include more than just this import // if you include more than just this import
// then your plugin might be doing something un-ideal (just a guess from 2023/02/27) // then your plugin might be doing something un-ideal (just a guess from 2023/02/27)
import "go.wit.com/gui/widget" import (
"go.wit.com/log"
"go.wit.com/gui/widget"
)
// delete the child widget from the parent // delete the child widget from the parent
// p = parent, c = child // p = parent, c = child
func (n *node) destroy() { func (n *node) destroy() {
pId := n.parent.WidgetId pId := n.parent.WidgetId
cId := n.WidgetId cId := n.WidgetId
log(logNow, "delete()", pId, cId) log.Log(NOW, "delete()", pId, cId)
pt := n.parent.tk pt := n.parent.tk
ct := n.tk ct := n.tk
if (ct == nil) { if (ct == nil) {
log(true, "delete FAILED (ct = mapToolkit[c] == nil) for c", pId, cId) log.Log(NOW, "delete FAILED (ct = mapToolkit[c] == nil) for c", pId, cId)
// this pukes out a whole universe of shit // this pukes out a whole universe of shit
// listMap() // listMap()
return return
@ -22,15 +25,15 @@ func (n *node) destroy() {
switch n.WidgetType { switch n.WidgetType {
case widget.Button: case widget.Button:
log(true, "Should delete Button here:", n.Name) log.Log(NOW, "Should delete Button here:", n.Name)
log(true, "Parent:") log.Log(NOW, "Parent:")
pt.Dump(true) pt.Dump(true)
log(true, "Child:") log.Log(NOW, "Child:")
ct.Dump(true) ct.Dump(true)
if (pt.uiBox == nil) { if (pt.uiBox == nil) {
log(true, "Don't know how to destroy this") log.Log(NOW, "Don't know how to destroy this")
} else { } else {
log(true, "Fuck it, destroy the whole box", n.parent.Name) log.Log(NOW, "Fuck it, destroy the whole box", n.parent.Name)
// pt.uiBox.Destroy() // You have a bug: You cannot destroy a uiControl while it still has a parent. // pt.uiBox.Destroy() // You have a bug: You cannot destroy a uiControl while it still has a parent.
pt.uiBox.SetPadded(false) pt.uiBox.SetPadded(false)
pt.uiBox.Delete(4) pt.uiBox.Delete(4)
@ -40,9 +43,9 @@ func (n *node) destroy() {
} }
case widget.Window: case widget.Window:
log(true, "Should delete Window here:", n.Name) log.Log(NOW, "Should delete Window here:", n.Name)
default: default:
log(true, "Fuckit, let's destroy a button") log.Log(NOW, "Fuckit, let's destroy a button")
if (ct.uiButton != nil) { if (ct.uiButton != nil) {
pt.uiBox.Delete(4) pt.uiBox.Delete(4)
ct.uiButton.Destroy() ct.uiButton.Destroy()

View File

@ -1,7 +1,11 @@
package main package main
import "github.com/andlabs/ui" import (
import _ "github.com/andlabs/ui/winmanifest" "github.com/andlabs/ui"
_ "github.com/andlabs/ui/winmanifest"
"go.wit.com/log"
)
/* /*
This is a code example taken directly from the toolkit andlabs/ui This is a code example taken directly from the toolkit andlabs/ui
@ -20,7 +24,7 @@ func BlankWindow(w *ui.Window) *ui.Box {
func (t *guiWidget) DemoNumbersPage() { func (t *guiWidget) DemoNumbersPage() {
var w *ui.Window var w *ui.Window
log(debugToolkit, "Starting wit/gui toolkit andlabs/ui DemoNumbersPage()") log.Log(NOW, "Starting wit/gui toolkit andlabs/ui DemoNumbersPage()")
w = t.uiWindow w = t.uiWindow
t.uiBox = makeNumbersPage() t.uiBox = makeNumbersPage()

View File

@ -4,12 +4,13 @@ import (
"github.com/andlabs/ui" "github.com/andlabs/ui"
_ "github.com/andlabs/ui/winmanifest" _ "github.com/andlabs/ui/winmanifest"
"go.wit.com/log"
"go.wit.com/gui/widget" "go.wit.com/gui/widget"
) )
func (p *node) newDropdown(n *node) { func (p *node) newDropdown(n *node) {
newt := new(guiWidget) newt := new(guiWidget)
log(debugToolkit, "gui.Toolbox.newDropdown() START", n.Name) log.Log(INFO, "gui.Toolbox.newDropdown() START", n.Name)
cb := ui.NewCombobox() cb := ui.NewCombobox()
newt.uiCombobox = cb newt.uiCombobox = cb
@ -22,7 +23,7 @@ func (p *node) newDropdown(n *node) {
cb.OnSelected(func(spin *ui.Combobox) { cb.OnSelected(func(spin *ui.Combobox) {
i := spin.Selected() i := spin.Selected()
if (newt.val == nil) { if (newt.val == nil) {
log(logError, "make map didn't work") log.Log(ERROR, "make map didn't work")
n.S = "map did not work. ui.Combobox error" n.S = "map did not work. ui.Combobox error"
} else { } else {
n.S = newt.val[i] n.S = newt.val[i]
@ -37,14 +38,14 @@ func (p *node) newDropdown(n *node) {
func (t *guiWidget) addDropdownName(title string) { func (t *guiWidget) addDropdownName(title string) {
t.uiCombobox.Append(title) t.uiCombobox.Append(title)
if (t.val == nil) { if (t.val == nil) {
log(debugToolkit, "make map didn't work") log.Log(INFO, "make map didn't work")
return return
} }
t.val[t.c] = title t.val[t.c] = title
// If this is the first menu added, set the dropdown to it // If this is the first menu added, set the dropdown to it
if (t.c == 0) { if (t.c == 0) {
log(debugChange, "THIS IS THE FIRST Dropdown", title) log.Log(INFO, "THIS IS THE FIRST Dropdown", title)
t.uiCombobox.SetSelected(0) t.uiCombobox.SetSelected(0)
} }
t.c = t.c + 1 t.c = t.c + 1
@ -55,22 +56,22 @@ func (t *guiWidget) SetDropdown(i int) {
} }
func (n *node) AddDropdownName(s string) { func (n *node) AddDropdownName(s string) {
log(logInfo, "AddDropdownName()", n.WidgetId, "add:", s) log.Log(INFO, "AddDropdownName()", n.WidgetId, "add:", s)
t := n.tk t := n.tk
if (t == nil) { if (t == nil) {
log(logInfo, "AddDropdownName() toolkit struct == nil. name=", n.Name, s) log.Log(INFO, "AddDropdownName() toolkit struct == nil. name=", n.Name, s)
return return
} }
t.addDropdownName(s) t.addDropdownName(s)
} }
func (n *node) SetDropdownName(a *widget.Action, s string) { func (n *node) SetDropdownName(a *widget.Action, s string) {
log(logInfo, "SetDropdown()", n.WidgetId, ",", s) log.Log(INFO, "SetDropdown()", n.WidgetId, ",", s)
t := n.tk t := n.tk
if (t == nil) { if (t == nil) {
log(debugError, "SetDropdown() FAILED mapToolkits[w] == nil. name=", n.WidgetId, s) log.Log(ERROR, "SetDropdown() FAILED mapToolkits[w] == nil. name=", n.WidgetId, s)
return return
} }
t.SetDropdown(1) t.SetDropdown(1)

View File

@ -12,7 +12,6 @@ import (
// ----------------------------- // -----------------------------
func (p *node) newGrid(n *node) { func (p *node) newGrid(n *node) {
var newt *guiWidget var newt *guiWidget
log(debugToolkit, "newGrid()", n.WidgetId, "to", n.ParentId)
newt = new(guiWidget) newt = new(guiWidget)

View File

@ -6,12 +6,8 @@ import (
) )
func (p *node) newGroup(n *node) { func (p *node) newGroup(n *node) {
log(debugToolkit, "NewGroup()", n.Name)
newt := new(guiWidget) newt := new(guiWidget)
log(debugToolkit, "NewGroup() create", n.Name)
g := ui.NewGroup(n.Name) g := ui.NewGroup(n.Name)
g.SetMargined(margin) g.SetMargined(margin)
newt.uiGroup = g newt.uiGroup = g

View File

@ -10,8 +10,6 @@ func (p *node) newImage(n *node) {
newt := new(guiWidget) newt := new(guiWidget)
var img *ui.Image var img *ui.Image
log(debugToolkit, "rawImage() create", n.Name)
img = ui.NewImage(16, 16) img = ui.NewImage(16, 16)
newt.uiImage = img newt.uiImage = img

View File

@ -6,8 +6,6 @@ import (
) )
func (p *node) newLabel(n *node) { func (p *node) newLabel(n *node) {
log(logInfo, "NewLabel()", n.Name)
newt := new(guiWidget) newt := new(guiWidget)
c := ui.NewLabel(n.Name) c := ui.NewLabel(n.Name)
newt.uiLabel = c newt.uiLabel = c

View File

@ -1,24 +1,34 @@
package main package main
/*
this enables command line options from other packages like 'gui' and 'log'
*/
import ( import (
witlog "go.wit.com/log" log "go.wit.com/log"
) )
// various debugging flags var NOW log.LogFlag
var logNow bool = true // useful for active development var INFO log.LogFlag
var logError bool = true
var logWarn bool = true
var logInfo bool = false
var logVerbose bool = false
func log(b *witlog.LogFlag, a ...any) { var SPEW log.LogFlag
witlog.Log(b, a...) var WARN log.LogFlag
}
func sleep(a ...any) { var ERROR log.LogFlag
witlog.Sleep(a...) var CHANGE log.LogFlag
} var TOOLKIT log.LogFlag
func exit(a ...any) { func init() {
witlog.Exit(a...) full := "toolkit/nocui"
short := "nocui"
NOW.NewFlag( "NOW", true, full, short, "temp debugging stuff")
INFO.NewFlag("INFO", false, full, short, "normal debugging stuff")
WARN.NewFlag("WARN", true, full, short, "bad things")
SPEW.NewFlag("SPEW", false, full, short, "spew stuff")
ERROR.NewFlag("ERROR", false, full, short, "toolkit errors")
CHANGE.NewFlag("ERROR", false, full, short, "show when the user does things")
TOOLKIT.NewFlag("ERROR", false, full, short, "andlabs specific stuff")
} }

View File

@ -2,6 +2,7 @@ package main
import ( import (
"sync" "sync"
"go.wit.com/log"
"go.wit.com/gui/widget" "go.wit.com/gui/widget"
"github.com/andlabs/ui" "github.com/andlabs/ui"
@ -14,30 +15,30 @@ var uiMain sync.Once
var muAction sync.Mutex var muAction sync.Mutex
func catchActionChannel() { func catchActionChannel() {
log(logInfo, "catchActionChannel() START") log.Log(INFO, "catchActionChannel() START")
for { for {
log(logInfo, "catchActionChannel() for loop") log.Log(INFO, "catchActionChannel() for loop")
select { select {
case a := <-pluginChan: case a := <-pluginChan:
log(logInfo, "catchActionChannel() SELECT widget id =", a.WidgetId, a.Name) log.Log(INFO, "catchActionChannel() SELECT widget id =", a.WidgetId, a.Name)
log(logInfo, "catchActionChannel() STUFF", a.WidgetId, a.ActionType, a.WidgetType) log.Log(INFO, "catchActionChannel() STUFF", a.WidgetId, a.ActionType, a.WidgetType)
muAction.Lock() muAction.Lock()
// TODO ui.QueueMain(f) // TODO ui.QueueMain(f)
// TODO ui.QueueMain( func() {rawAction(a)} ) // TODO ui.QueueMain( func() {rawAction(a)} )
ui.QueueMain( func() {rawAction(&a)} ) ui.QueueMain( func() {rawAction(&a)} )
// rawAction(a) // rawAction(a)
muAction.Unlock() muAction.Unlock()
log(logInfo, "catchActionChannel() STUFF END", a.WidgetId, a.ActionType, a.WidgetType) log.Log(INFO, "catchActionChannel() STUFF END", a.WidgetId, a.ActionType, a.WidgetType)
} }
} }
} }
// This is important. This sets the defaults for the gui. Without this, there isn't correct padding, etc // This is important. This sets the defaults for the gui. Without this, there isn't correct padding, etc
func init() { func init() {
log(logNow, "Init() START") log.Log(INFO, "Init() START")
log(debugToolkit, "Init()") log.Log(INFO, "Init()")
// Can you pass values to a plugin init() ? Otherwise, there is no way to safely print // Can you pass values to a plugin init() ? Otherwise, there is no way to safely print
// log(debugToolkit, "init() Setting defaultBehavior = true") // log.Log(INFO, "init() Setting defaultBehavior = true")
setDefaultBehavior(true) setDefaultBehavior(true)
@ -51,7 +52,7 @@ func init() {
// andlabs = make(map[int]*andlabsT) // andlabs = make(map[int]*andlabsT)
pluginChan = make(chan widget.Action, 1) pluginChan = make(chan widget.Action, 1)
log(logNow, "Init() start channel reciever") log.Log(INFO, "Init() start channel reciever")
go catchActionChannel() go catchActionChannel()
log(logNow, "Init() END") log.Log(INFO, "Init() END")
} }

View File

@ -1,18 +1,19 @@
package main package main
import ( import (
"go.wit.com/log"
"go.wit.com/gui/widget" "go.wit.com/gui/widget"
) )
func (n *node) setText(a *widget.Action) { func (n *node) setText(a *widget.Action) {
log(debugChange, "setText() START with a.S =", a.S) log.Log(CHANGE, "setText() START with a.S =", a.S)
t := n.tk t := n.tk
if (t == nil) { if (t == nil) {
log(debugError, "setText error. tk == nil", n.Name, n.WidgetId) log.Log(ERROR, "setText error. tk == nil", n.Name, n.WidgetId)
actionDump(debugError, a) actionDump(debugError, a)
return return
} }
log(debugChange, "setText() Attempt on", n.WidgetType, "with", a.S) log.Log(CHANGE, "setText() Attempt on", n.WidgetType, "with", a.S)
switch n.WidgetType { switch n.WidgetType {
case widget.Window: case widget.Window:
@ -30,7 +31,7 @@ func (n *node) setText(a *widget.Action) {
// TODO: commented out while working on chan // TODO: commented out while working on chan
t.uiCheckbox.SetChecked(a.B) t.uiCheckbox.SetChecked(a.B)
default: default:
log(debugError, "setText() unknown", a.ActionType, "on checkbox", n.Name) log.Log(ERROR, "setText() unknown", a.ActionType, "on checkbox", n.Name)
} }
case widget.Textbox: case widget.Textbox:
switch a.ActionType { switch a.ActionType {
@ -49,7 +50,7 @@ func (n *node) setText(a *widget.Action) {
t.uiMultilineEntry.SetText(a.S) t.uiMultilineEntry.SetText(a.S)
} }
default: default:
log(debugError, "setText() unknown", a.ActionType, "on checkbox", n.Name) log.Log(ERROR, "setText() unknown", a.ActionType, "on checkbox", n.Name)
} }
case widget.Label: case widget.Label:
t.uiLabel.SetText(a.S) t.uiLabel.SetText(a.S)
@ -62,7 +63,7 @@ func (n *node) setText(a *widget.Action) {
case widget.Set: case widget.Set:
t.uiSlider.SetValue(a.I) t.uiSlider.SetValue(a.I)
default: default:
log(debugError, "setText() unknown", a.ActionType, "on checkbox", n.Name) log.Log(ERROR, "setText() unknown", a.ActionType, "on checkbox", n.Name)
} }
case widget.Spinner: case widget.Spinner:
switch a.ActionType { switch a.ActionType {
@ -71,7 +72,7 @@ func (n *node) setText(a *widget.Action) {
case widget.Set: case widget.Set:
t.uiSpinbox.SetValue(a.I) t.uiSpinbox.SetValue(a.I)
default: default:
log(debugError, "setText() unknown", a.ActionType, "on checkbox", n.Name) log.Log(ERROR, "setText() unknown", a.ActionType, "on checkbox", n.Name)
} }
case widget.Dropdown: case widget.Dropdown:
switch a.ActionType { switch a.ActionType {
@ -82,17 +83,17 @@ func (n *node) setText(a *widget.Action) {
var i int = -1 var i int = -1
var s string var s string
orig = t.uiCombobox.Selected() orig = t.uiCombobox.Selected()
log(debugChange, "try to set the Dropdown to", a.S, "from", orig) log.Log(CHANGE, "try to set the Dropdown to", a.S, "from", orig)
// try to find the string // try to find the string
for i, s = range t.val { for i, s = range t.val {
log(debugChange, "i, s", i, s) log.Log(CHANGE, "i, s", i, s)
if (a.S == s) { if (a.S == s) {
t.uiCombobox.SetSelected(i) t.uiCombobox.SetSelected(i)
log(debugChange, "setText() Dropdown worked.", n.S) log.Log(CHANGE, "setText() Dropdown worked.", n.S)
return return
} }
} }
log(debugError, "setText() Dropdown did not find:", a.S) log.Log(ERROR, "setText() Dropdown did not find:", a.S)
// if i == -1, then there are not any things in the menu to select // if i == -1, then there are not any things in the menu to select
if (i == -1) { if (i == -1) {
return return
@ -106,7 +107,7 @@ func (n *node) setText(a *widget.Action) {
case widget.GetText: case widget.GetText:
// t.S = t.s // t.S = t.s
default: default:
log(debugError, "setText() unknown", a.ActionType, "on checkbox", n.Name) log.Log(ERROR, "setText() unknown", a.ActionType, "on checkbox", n.Name)
} }
case widget.Combobox: case widget.Combobox:
switch a.ActionType { switch a.ActionType {
@ -119,10 +120,10 @@ func (n *node) setText(a *widget.Action) {
t.uiEditableCombobox.SetText(a.S) t.uiEditableCombobox.SetText(a.S)
n.S = a.S n.S = a.S
default: default:
log(debugError, "setText() unknown", a.ActionType, "on checkbox", n.Name) log.Log(ERROR, "setText() unknown", a.ActionType, "on checkbox", n.Name)
} }
default: default:
log(debugError, "plugin Send() Don't know how to setText on", n.WidgetType, "yet", a.ActionType) log.Log(ERROR, "plugin Send() Don't know how to setText on", n.WidgetType, "yet", a.ActionType)
} }
log(debugChange, "setText() END with a.S =", a.S) log.Log(CHANGE, "setText() END with a.S =", a.S)
} }

View File

@ -1,6 +1,7 @@
package main package main
import ( import (
"go.wit.com/log"
"go.wit.com/gui/widget" "go.wit.com/gui/widget"
"github.com/andlabs/ui" "github.com/andlabs/ui"
@ -23,24 +24,24 @@ func (p *node) newTab(n *node) {
var newt *guiWidget var newt *guiWidget
if (p == nil) { if (p == nil) {
log(debugError, "newTab() p == nil. how the fuck does this happen?", n.WidgetId, n.ParentId) log.Log(ERROR, "newTab() p == nil. how the fuck does this happen?", n.WidgetId, n.ParentId)
} }
if (p.WidgetType != widget.Window) { if (p.WidgetType != widget.Window) {
log(debugError, "newTab() uiWindow == nil. I can't add a toolbar without window", n.WidgetId, n.ParentId) log.Log(ERROR, "newTab() uiWindow == nil. I can't add a toolbar without window", n.WidgetId, n.ParentId)
return return
} }
t := p.tk t := p.tk
log(debugToolkit, "newTab() START", n.WidgetId, n.ParentId) log.Log(TOOLKIT, "newTab() START", n.WidgetId, n.ParentId)
if (t.uiTab == nil) { if (t.uiTab == nil) {
// this means you have to make a new tab // this means you have to make a new tab
log(debugToolkit, "newTab() GOOD. This should be the first tab:", n.WidgetId, n.ParentId) log.Log(TOOLKIT, "newTab() GOOD. This should be the first tab:", n.WidgetId, n.ParentId)
newt = rawTab(t.uiWindow, n.Text) newt = rawTab(t.uiWindow, n.Text)
t.uiTab = newt.uiTab t.uiTab = newt.uiTab
} else { } else {
// this means you have to append a tab // this means you have to append a tab
log(debugToolkit, "newTab() GOOD. This should be an additional tab:", n.WidgetId, n.ParentId) log.Log(TOOLKIT, "newTab() GOOD. This should be an additional tab:", n.WidgetId, n.ParentId)
if (n.WidgetType == widget.Tab) { if (n.WidgetType == widget.Tab) {
// andlabs doesn't have multiple tab widgets so make a fake one? // andlabs doesn't have multiple tab widgets so make a fake one?
// this makes a guiWidget internal structure with the parent values // this makes a guiWidget internal structure with the parent values
@ -61,19 +62,19 @@ func (p *node) newTab(n *node) {
func tabSetMargined(tab *ui.Tab, b bool) { func tabSetMargined(tab *ui.Tab, b bool) {
c := tab.NumPages() c := tab.NumPages()
for i := 0; i < c; i++ { for i := 0; i < c; i++ {
log(debugToolkit, "SetMargined", i, b) log.Log(TOOLKIT, "SetMargined", i, b)
tab.SetMargined(i, b) tab.SetMargined(i, b)
} }
} }
func rawTab(w *ui.Window, name string) *guiWidget { func rawTab(w *ui.Window, name string) *guiWidget {
var newt guiWidget var newt guiWidget
log(debugToolkit, "rawTab() START", name) log.Log(TOOLKIT, "rawTab() START", name)
if (w == nil) { if (w == nil) {
log(debugError, "UiWindow == nil. I can't add a tab without a window") log.Log(ERROR, "UiWindow == nil. I can't add a tab without a window")
log(debugError, "UiWindow == nil. I can't add a tab without a window") log.Log(ERROR, "UiWindow == nil. I can't add a tab without a window")
log(debugError, "UiWindow == nil. I can't add a tab without a window") log.Log(ERROR, "UiWindow == nil. I can't add a tab without a window")
// sleep(1) // sleep(1)
return nil return nil
} }
@ -82,19 +83,19 @@ func rawTab(w *ui.Window, name string) *guiWidget {
w.SetChild(tab) w.SetChild(tab)
newt.uiTab = tab newt.uiTab = tab
newt.uiControl = tab newt.uiControl = tab
log(debugToolkit, "rawTab() END", name) log.Log(TOOLKIT, "rawTab() END", name)
return &newt return &newt
} }
func (t *guiWidget) appendTab(name string) *guiWidget { func (t *guiWidget) appendTab(name string) *guiWidget {
var newT guiWidget var newT guiWidget
log(debugToolkit, "appendTab() ADD", name) log.Log(TOOLKIT, "appendTab() ADD", name)
if (t.uiTab == nil) { if (t.uiTab == nil) {
log(debugToolkit, "UiWindow == nil. I can't add a widget without a place to put it") log.Log(TOOLKIT, "UiWindow == nil. I can't add a widget without a place to put it")
panic("should never have happened. wit/gui/toolkit has ui.Tab == nil") panic("should never have happened. wit/gui/toolkit has ui.Tab == nil")
} }
log(debugToolkit, "appendTab() START name =", name) log.Log(TOOLKIT, "appendTab() START name =", name)
var hbox *ui.Box var hbox *ui.Box
if (defaultBehavior) { if (defaultBehavior) {

View File

@ -11,7 +11,6 @@ func initWidget(n *node) *guiWidget {
// Set(w, "default") // Set(w, "default")
if n.WidgetType == widget.Root { if n.WidgetType == widget.Root {
log(logInfo, "setupWidget() FOUND ROOT w.id =", n.WidgetId)
n.WidgetId = 0 n.WidgetId = 0
me.rootNode = n me.rootNode = n
return w return w

View File

@ -3,6 +3,8 @@ package main
import ( import (
"github.com/andlabs/ui" "github.com/andlabs/ui"
_ "github.com/andlabs/ui/winmanifest" _ "github.com/andlabs/ui/winmanifest"
"go.wit.com/log"
) )
func (t *guiWidget) MessageWindow(msg1 string, msg2 string) { func (t *guiWidget) MessageWindow(msg1 string, msg2 string) {
@ -35,12 +37,12 @@ func newWindow(n *node) {
} }
func (n *node) SetWindowTitle(title string) { func (n *node) SetWindowTitle(title string) {
log(debugToolkit, "toolkit NewWindow", n.Text, "title", title) log.Log(CHANGE, "toolkit NewWindow", n.Text, "title", title)
win := n.tk.uiWindow win := n.tk.uiWindow
if (win == nil) { if (win == nil) {
log(debugError, "Error: no window", n.WidgetId) log.Log(ERROR, "Error: no window", n.WidgetId)
} else { } else {
win.SetTitle(title) win.SetTitle(title)
log(debugToolkit, "Setting the window title", title) log.Log(CHANGE, "Setting the window title", title)
} }
} }