diff options
| author | Jeff Carr <[email protected]> | 2024-01-18 00:08:37 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-01-18 00:08:37 -0600 |
| commit | 3ac6b2486a7f17e96ea8d812437ed9bad8662260 (patch) | |
| tree | aaf29d4a1f6fc591a3738077e6cebf26fe637849 /color.go | |
init move into seperate repo. all history lost :(v0.0.1
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'color.go')
| -rw-r--r-- | color.go | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/color.go b/color.go new file mode 100644 index 0000000..45600c3 --- /dev/null +++ b/color.go @@ -0,0 +1,120 @@ +package main + +import ( + "github.com/awesome-gocui/gocui" + "math/rand" + + "go.wit.com/log" +) + +//w.v.SelBgColor = gocui.ColorCyan +//color.go: w.v.SelFgColor = gocui.ColorBlack +//color.go: w.v.BgColor = gocui.ColorGreen + +type colorT struct { + frame gocui.Attribute + fg gocui.Attribute + bg gocui.Attribute + selFg gocui.Attribute + selBg gocui.Attribute + name string +} + +var none gocui.Attribute = gocui.AttrNone +var lightPurple gocui.Attribute = gocui.GetColor("#DDDDDD") // light purple +var darkPurple gocui.Attribute = gocui.GetColor("#FFAA55") // Dark Purple +var heavyPurple gocui.Attribute = gocui.GetColor("#88AA55") // heavy purple +var powdererBlue gocui.Attribute = gocui.GetColor("#B0E0E6") // w3c 'powerder blue' +var superLightGrey gocui.Attribute = gocui.GetColor("#55AAFF") // super light grey + +// Standard defined colors from gocui: +// ColorBlack ColorRed ColorGreen ColorYellow ColorBlue ColorMagenta ColorCyan ColorWhite + +// v.BgColor = gocui.GetColor("#111111") // crazy red +// v.BgColor = gocui.GetColor("#FF9911") // heavy red +// v.SelBgColor = gocui.GetColor("#FFEE11") // blood red + +// v.BgColor = gocui.GetColor("#55AAFF") // super light grey +// v.BgColor = gocui.GetColor("#FFC0CB") // 'w3c pink' yellow + +// Normal Text On mouseover +// +// Widget Frame Text background Text background +var colorWindow colorT = colorT{none, gocui.ColorBlue, none, none, powdererBlue, "normal window"} +var colorActiveW colorT = colorT{none, none, powdererBlue, none, powdererBlue, "active window"} + +var colorTab colorT = colorT{gocui.ColorBlue, gocui.ColorBlue, none, none, powdererBlue, "normal tab"} +var colorActiveT colorT = colorT{gocui.ColorBlue, none, powdererBlue, none, powdererBlue, "active tab"} + +var colorButton colorT = colorT{gocui.ColorGreen, none, gocui.ColorWhite, gocui.ColorGreen, gocui.ColorBlack, "normal button"} +var colorLabel colorT = colorT{none, none, superLightGrey, none, superLightGrey, "normal label"} +var colorGroup colorT = colorT{none, none, superLightGrey, none, superLightGrey, "normal group"} + +// widget debugging colors. these widgets aren't displayed unless you are debugging +var colorRoot colorT = colorT{gocui.ColorRed, none, powdererBlue, none, gocui.ColorBlue, "debug root"} +var colorFlag colorT = colorT{gocui.ColorRed, none, powdererBlue, none, gocui.ColorGreen, "debug flag"} +var colorBox colorT = colorT{gocui.ColorRed, none, lightPurple, none, gocui.ColorCyan, "debug box"} +var colorGrid colorT = colorT{gocui.ColorRed, none, lightPurple, none, gocui.ColorRed, "debug grid"} +var colorNone colorT = colorT{none, none, none, none, none, "debug none"} + +// actually sets the colors for the gocui element +// the user will see the colors change when this runs +// TODO: add black/white only flag for ttyS0 +// TODO: or fix kvm/qemu serial console & SIGWINCH. +// TODO: and minicom and uboot and 5 million other things. +// TODO: maybe enough of us could actually do that if we made it a goal. +// TODO: start with riscv boards and fix it universally there +// TODO: so just a small little 'todo' item here +func (n *node) setColor(newColor *colorT) { + tk := n.tk + if tk.color == newColor { + // nothing to do since the colors have nto changed + return + } + tk.color = newColor + if tk.v == nil { + return + } + if tk.color == nil { + log.Log(NOW, "Set the node to color = nil") + tk.color = &colorNone + } + log.Log(NOW, "Set the node to color =", tk.color.name) + n.recreateView() +} + +func (n *node) setDefaultWidgetColor() { + n.showView() +} + +func (n *node) setDefaultHighlight() { + w := n.tk + if w.v == nil { + log.Log(ERROR, "SetColor() failed on view == nil") + return + } + w.v.SelBgColor = gocui.ColorGreen + w.v.SelFgColor = gocui.ColorBlack +} + +func randColor() gocui.Attribute { + colors := []string{"Green", "#FFAA55", "Yellow", "Blue", "Red", "Black", "White"} + i := rand.Intn(len(colors)) + log.Log(NOW, "randColor() i =", i) + return gocui.GetColor(colors[i]) +} + +func (n *node) redoColor(draw bool) { + w := n.tk + if w == nil { + return + } + + log.Sleep(.05) + n.setDefaultHighlight() + n.setDefaultWidgetColor() + + for _, child := range n.children { + child.redoColor(draw) + } +} |
