show/set flags from go.wit.com/log package

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2023-12-30 20:47:35 -06:00
parent ff20e79426
commit a7640472cb
3 changed files with 137 additions and 46 deletions

View File

@ -1,10 +1,51 @@
package gui
import (
newlog "go.wit.com/log"
)
type LogSettings struct {
ready bool
hidden bool
err error
name string
parent *Node // should be the root of the 'gui' package binary tree
window *Node // our window for displaying the log package settings
group *Node //
grid *Node //
checkbox *Node
label *Node
}
func (ls *LogSettings) Set(b bool) {
newlog.Set(ls.name, b)
ls.checkbox.Set(b)
}
func (p *Node) NewLogFlag(name string) *LogSettings {
ls := new(LogSettings)
ls.parent = p
ls.ready = false
ls.name = name
ls.checkbox = p.NewCheckbox(name)
ls.label = p.NewLabel("Enable log." + name)
ls.checkbox.Set(newlog.Get(name))
ls.checkbox.Custom = func() {
newlog.Set(name, ls.checkbox.B)
}
return ls
}
// Let's you toggle on and off the various types of debugging output
// These checkboxes should be in the same order as the are printed
func (n *Node) DebugFlags(makeWindow bool) {
var w, g *Node
logGadgets := make(map[string]*LogSettings)
// Either:
// make a new window
// make a new tab in the existing window
@ -17,6 +58,22 @@ func (n *Node) DebugFlags(makeWindow bool) {
g = w.NewGroup("Show")
g.NewButton("log.SetTmp()", func () {
newlog.SetTmp()
})
g.NewButton("log.All(true)", func () {
for _, lf := range logGadgets {
lf.Set(true)
}
})
g.NewButton("log.All(false)", func () {
for _, lf := range logGadgets {
lf.Set(false)
}
})
g.NewButton("Dump Flags", func () {
ShowDebugValues()
})
@ -31,6 +88,12 @@ func (n *Node) DebugFlags(makeWindow bool) {
g = w.NewGroup("List")
g = g.NewGrid("flags grid", 2, 2)
logGadgets["INFO"] = g.NewLogFlag("INFO")
logGadgets["WARN"] = g.NewLogFlag("WARN")
logGadgets["SPEW"] = g.NewLogFlag("SPEW")
logGadgets["ERROR"] = g.NewLogFlag("ERROR")
// generally useful debugging
cb1 := g.NewCheckbox("debug Gui")
g.NewLabel("like verbose=1")
@ -39,47 +102,6 @@ func (n *Node) DebugFlags(makeWindow bool) {
log(debugGui, "Custom() n.widget =", cb1.Name, cb1.B)
}
// errors. by default these always output somewhere
cbE := g.NewCheckbox("debug Error")
g.NewLabel("(bad things. default=true)")
cbE.Custom = func() {
SetFlag("Error", cbE.B)
}
// debugging that will show you things like mouse clicks, user inputing text, etc
// also set toolkit.DebugChange
cb2 := g.NewCheckbox("debug Change")
g.NewLabel("keyboard and mouse events")
cb2.Custom = func() {
SetFlag("Change", cb2.B)
}
// supposed to tell if you are going to dump full variable output
cb3 := g.NewCheckbox("debug Dump")
g.NewLabel("show lots of output")
cb3.Custom = func() {
SetFlag("Dump", cbE.B)
}
cb4 := g.NewCheckbox("debug Tabs")
g.NewLabel("tabs and windows")
cb4.Custom = func() {
SetFlag("Tabs", cb4.B)
}
cb6 := g.NewCheckbox("debug Node")
g.NewLabel("the binary tree)")
cb6.Custom = func() {
SetFlag("Node", cb6.B)
}
// should show you when things go into or come back from the plugin
cb5 := g.NewCheckbox("debug Plugin")
g.NewLabel("plugin interaction)")
cb5.Custom = func() {
SetFlag("Plugin", cb5.B)
}
// turns on debugging inside the plugin toolkit
cb7 := g.NewCheckbox("debug Toolkit")
g.NewLabel("the plugin internals)")

View File

@ -1,9 +1,5 @@
package gui
import (
// "go.wit.com/gui/toolkit"
)
// TODO: move all this shit into somewhere not global
// main debugging window
@ -26,6 +22,7 @@ func DebugWindow() {
func (n *Node) DebugTab(title string) *Node {
var newN, gog, g1 *Node
// var logSettings *gadgets.LogSettings
// time.Sleep(1 * time.Second)
newN = n.NewTab(title)
@ -42,7 +39,7 @@ func (n *Node) DebugTab(title string) *Node {
makeTabs = false
cb.Set(false)
gog.NewButton("Debug Flags", func () {
gog.NewButton("logging", func () {
bugWin.DebugFlags(makeTabs)
})
gog.NewButton("Debug Widgets", func () {

72
gadgets/logSettings.go Normal file
View File

@ -0,0 +1,72 @@
package gadgets
import (
"go.wit.com/log"
"go.wit.com/gui"
)
var myLogGui *LogSettings
type LogSettings struct {
ready bool
hidden bool
err error
parent *gui.Node // should be the root of the 'gui' package binary tree
window *gui.Node // our window for displaying the log package settings
group *gui.Node //
grid *gui.Node //
// Primary Directives
status *OneLiner
summary *OneLiner
}
// This is initializes the main DO object
// You can only have one of these
func NewLogSettings(p *gui.Node) *LogSettings {
if myLogGui != nil {return myLogGui}
myLogGui = new(LogSettings)
myLogGui.parent = p
myLogGui.ready = false
myLogGui.window = p.NewWindow("Log Settings")
// make a group label and a grid
myLogGui.group = myLogGui.window.NewGroup("droplets:").Pad()
myLogGui.grid = myLogGui.group.NewGrid("grid", 2, 1).Pad()
myLogGui.ready = true
myLogGui.Hide()
return myLogGui
}
// Returns true if the status is valid
func (d *LogSettings) Ready() bool {
if d == nil {return false}
return d.ready
}
func (d *LogSettings) Show() {
if ! d.Ready() {return}
log.Info("LogSettings.Show() window")
if d.hidden {
d.window.Show()
}
d.hidden = false
}
func (d *LogSettings) Hide() {
if ! d.Ready() {return}
log.Info("LogSettings.Hide() window")
if ! d.hidden {
d.window.Hide()
}
d.hidden = true
}
func (d *LogSettings) Update() bool {
if ! d.Ready() {return false}
return true
}