logsettings/draw.go

147 lines
3.0 KiB
Go
Raw Normal View History

2024-01-15 15:17:51 -06:00
package logsettings
import (
"go.wit.com/gui"
"go.wit.com/lib/gadgets"
"go.wit.com/log"
2024-01-15 15:17:51 -06:00
)
// TODO: make sure this works without needing to be shown
// apparently due to me once committing v0.9.2 as go.wit.com/gui
// every version number must start above that
// this is a test commit to tag this as v0.10
2024-01-15 15:17:51 -06:00
func (d *LogSettings) Show() {
if !d.Ready() {
return
}
2024-01-15 15:17:51 -06:00
d.win.Show()
}
func (d *LogSettings) Hide() {
if !d.Ready() {
return
}
2024-01-15 15:17:51 -06:00
d.win.Hide()
}
// alternates between showing and hiding the window
func (d *LogSettings) Toggle() {
if !d.Ready() {
return
}
2024-01-15 15:17:51 -06:00
d.win.Toggle()
}
// 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 (d *LogSettings) draw() {
var g *gui.Node
d.win = gadgets.NewBasicWindow(d.parent, "Debug Flags")
d.win.Make()
d.win.Draw()
2024-01-15 15:17:51 -06:00
g = d.win.Box().NewGroup("Show").Pad()
g = g.NewBox("bw vbox", false)
d.buttonG = g
g.NewButton("Redirect STDOUT to /tmp/", func() {
2024-02-12 15:22:38 -06:00
// log.SetTmp()
2024-01-15 15:17:51 -06:00
})
g.NewButton("restore defaults", func() {
2024-01-15 15:17:51 -06:00
for _, wg := range myLogGui.groups {
for _, f := range wg.flags {
f.RestoreDefault()
2024-01-15 15:17:51 -06:00
}
}
})
g.NewButton("all on", func() {
2024-01-15 15:17:51 -06:00
for _, wg := range myLogGui.groups {
for _, f := range wg.flags {
f.SetValue(true)
2024-01-15 15:17:51 -06:00
}
}
})
g.NewButton("all off", func() {
2024-01-15 15:17:51 -06:00
for _, wg := range myLogGui.groups {
for _, f := range wg.flags {
f.SetValue(false)
2024-01-15 15:17:51 -06:00
}
}
})
g.NewButton("Dump Flags", func() {
2024-01-15 15:17:51 -06:00
// ShowDebugValues()
log.ShowFlags()
for s, wg := range myLogGui.groups {
log.Info("Dump Flags", s)
for _, f := range wg.flags {
log.Info("Dump Flags\t", f.Bool(), f.GetName(), ":", f.GetDesc())
2024-01-15 15:17:51 -06:00
}
}
})
d.flagG = d.win.Box().NewGroup("Subsystem (aka package)")
d.flagG = d.flagG.NewBox("bw vbox", false)
g.NewButton("Add all Flags", func() {
2024-01-15 15:17:51 -06:00
flags := log.ShowFlags()
for _, f := range flags {
addFlag(d.flagG, f)
}
})
g.NewButton("Close", func() {
2024-01-15 15:17:51 -06:00
d.Hide()
})
flags := log.ShowFlags()
for _, f := range flags {
addFlag(d.flagG, f)
}
}
func addFlag(p *gui.Node, newf *log.LogFlag) {
var flagWidgets *flagGroup
if newf == nil {
return
}
if p == nil {
return
}
2024-01-15 15:17:51 -06:00
subsys := newf.GetSubsystem()
if myLogGui.groups[subsys] == nil {
flagWidgets = new(flagGroup)
flagWidgets.parent = p
flagWidgets.group = p.NewGroup(newf.GetSubsystem())
2024-01-15 15:17:51 -06:00
flagWidgets.grid = flagWidgets.group.NewGrid("flags grid", 3, 1)
myLogGui.groups[subsys] = flagWidgets
} else {
flagWidgets = myLogGui.groups[subsys]
}
for _, f := range flagWidgets.flags {
if f.GetName() == newf.GetName() {
2024-01-15 15:17:51 -06:00
log.Info("addFlag() FOUND FLAG", f)
return
}
}
log.Info("addFlag() Adding new flag:", newf.GetSubsystem(), newf.GetName())
2024-01-15 15:17:51 -06:00
newWidget := gadgets.NewLogFlag(flagWidgets.grid, newf)
flagWidgets.flags = append(flagWidgets.flags, newWidget)
}
type flagGroup struct {
parent *gui.Node // where to draw our group
group *gui.Node
grid *gui.Node
2024-01-15 15:17:51 -06:00
// the widget for each flag
flags []*gadgets.LogFlag
}