summaryrefslogtreecommitdiff
path: root/color.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-01-18 00:08:37 -0600
committerJeff Carr <[email protected]>2024-01-18 00:08:37 -0600
commit3ac6b2486a7f17e96ea8d812437ed9bad8662260 (patch)
treeaaf29d4a1f6fc591a3738077e6cebf26fe637849 /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.go120
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)
+ }
+}