summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2023-04-03 11:52:54 -0500
committerJeff Carr <[email protected]>2023-04-03 11:52:54 -0500
commit55c7b44594096f338676d1b133acd4c649d1d6b8 (patch)
treed3872f5230ee1ddde24aa61efa48b6703f81b644
parent4b6207743b90968d6b822032a4355e43b6ce6da9 (diff)
gocui: more color cleanups
Signed-off-by: Jeff Carr <[email protected]>
-rw-r--r--toolkit/gocui/,191
-rw-r--r--toolkit/gocui/click.go10
-rw-r--r--toolkit/gocui/color.go16
-rw-r--r--toolkit/gocui/common.go7
-rw-r--r--toolkit/gocui/debug.go1
-rw-r--r--toolkit/gocui/keybindings.go9
-rw-r--r--toolkit/gocui/place.go19
-rw-r--r--toolkit/gocui/plugin.go2
-rw-r--r--toolkit/gocui/structs.go3
-rw-r--r--toolkit/gocui/tab.go25
-rw-r--r--toolkit/gocui/view.go4
11 files changed, 65 insertions, 222 deletions
diff --git a/toolkit/gocui/, b/toolkit/gocui/,
deleted file mode 100644
index 762f8eb..0000000
--- a/toolkit/gocui/,
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright 2014 The gocui Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
- "errors"
- "fmt"
- "log"
-
- "github.com/awesome-gocui/gocui"
-)
-
-func main() {
- g, err := gocui.NewGui(gocui.OutputNormal, true)
- if err != nil {
- log.Panicln(err)
- }
- defer g.Close()
-
- g.Cursor = false
- g.Mouse = true
-
- g.SetManagerFunc(layout)
-
- if err := keybindings(g); err != nil {
- log.Panicln(err)
- }
-
- if err := g.MainLoop(); err != nil && !errors.Is(err, gocui.ErrQuit) {
- log.Panicln(err)
- }
-}
-
-var initialMouseX, initialMouseY, xOffset, yOffset int
-var globalMouseDown, msgMouseDown, movingMsg bool
-
-func layout(g *gocui.Gui) error {
- maxX, maxY := g.Size()
- if _, err := g.View("msg"); msgMouseDown && err == nil {
- moveMsg(g)
- }
- if v, err := g.SetView("global", -1, -1, maxX, maxY, 0); err != nil {
- if !errors.Is(err, gocui.ErrUnknownView) {
- return err
- }
- v.Frame = false
- }
- if v, err := g.SetView("but1", 2, 2, 22, 7, 0); err != nil {
- if !errors.Is(err, gocui.ErrUnknownView) {
- return err
- }
- v.SelBgColor = gocui.ColorGreen
- v.SelFgColor = gocui.ColorBlack
- fmt.Fprintln(v, "Button 1 - line 1")
- fmt.Fprintln(v, "Button 1 - line 2")
- fmt.Fprintln(v, "Button 1 - line 3")
- fmt.Fprintln(v, "Button 1 - line 4")
- if _, err := g.SetCurrentView("but1"); err != nil {
- return err
- }
- }
- if v, err := g.SetView("but2", 24, 2, 44, 4, 0); err != nil {
- if !errors.Is(err, gocui.ErrUnknownView) {
- return err
- }
- v.SelBgColor = gocui.ColorGreen
- v.SelFgColor = gocui.ColorBlack
- fmt.Fprintln(v, "Button 2 - line 1")
- }
- updateHighlightedView(g)
- return nil
-}
-
-func keybindings(g *gocui.Gui) error {
- if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
- return err
- }
- for _, n := range []string{"but1", "but2"} {
- if err := g.SetKeybinding(n, gocui.MouseLeft, gocui.ModNone, showMsg); err != nil {
- return err
- }
- }
- if err := g.SetKeybinding("", gocui.MouseRelease, gocui.ModNone, mouseUp); err != nil {
- return err
- }
- if err := g.SetKeybinding("", gocui.MouseLeft, gocui.ModNone, globalDown); err != nil {
- return err
- }
- if err := g.SetKeybinding("msg", gocui.MouseLeft, gocui.ModNone, msgDown); err != nil {
- return err
- }
- return nil
-}
-
-func quit(g *gocui.Gui, v *gocui.View) error {
- return gocui.ErrQuit
-}
-
-func showMsg(g *gocui.Gui, v *gocui.View) error {
- var l string
- var err error
-
- if _, err := g.SetCurrentView(v.Name()); err != nil {
- return err
- }
-
- _, cy := v.Cursor()
- if l, err = v.Line(cy); err != nil {
- l = ""
- }
-
- maxX, maxY := g.Size()
- if v, err := g.SetView("msg", maxX/2-10, maxY/2, maxX/2+10, maxY/2+2, 0); err == nil || errors.Is(err, gocui.ErrUnknownView) {
- v.Clear()
- v.SelBgColor = gocui.ColorCyan
- v.SelFgColor = gocui.ColorBlack
- fmt.Fprintln(v, l)
- }
- return nil
-}
-
-func updateHighlightedView(g *gocui.Gui) {
- mx, my := g.MousePosition()
- for _, view := range g.Views() {
- view.Highlight = false
- }
- if v, err := g.ViewByPosition(mx, my); err == nil {
- v.Highlight = true
- }
-}
-
-func moveMsg(g *gocui.Gui) {
- mx, my := g.MousePosition()
- if !movingMsg && (mx != initialMouseX || my != initialMouseY) {
- movingMsg = true
- }
- g.SetView("msg", mx-xOffset, my-yOffset, mx-xOffset+20, my-yOffset+2, 0)
-}
-
-func msgDown(g *gocui.Gui, v *gocui.View) error {
- initialMouseX, initialMouseY = g.MousePosition()
- if vx, vy, _, _, err := g.ViewPosition("msg"); err == nil {
- xOffset = initialMouseX - vx
- yOffset = initialMouseY - vy
- msgMouseDown = true
- }
- return nil
-}
-
-func globalDown(g *gocui.Gui, v *gocui.View) error {
- mx, my := g.MousePosition()
- if vx0, vy0, vx1, vy1, err := g.ViewPosition("msg"); err == nil {
- if mx >= vx0 && mx <= vx1 && my >= vy0 && my <= vy1 {
- return msgDown(g, v)
- }
- }
- globalMouseDown = true
- maxX, _ := g.Size()
- msg := fmt.Sprintf("Mouse down at: %d,%d", mx, my)
- x := mx - len(msg)/2
- if x < 0 {
- x = 0
- } else if x+len(msg)+1 > maxX-1 {
- x = maxX - 1 - len(msg) - 1
- }
- if v, err := g.SetView("globalDown", x, my-1, x+len(msg)+1, my+1, 0); err != nil {
- if !errors.Is(err, gocui.ErrUnknownView) {
- return err
- }
- v.WriteString(msg)
- }
- return nil
-}
-
-func mouseUp(g *gocui.Gui, v *gocui.View) error {
- if msgMouseDown {
- msgMouseDown = false
- if movingMsg {
- movingMsg = false
- return nil
- } else {
- g.DeleteView("msg")
- }
- } else if globalMouseDown {
- globalMouseDown = false
- g.DeleteView("globalDown")
- }
- return nil
-}
diff --git a/toolkit/gocui/click.go b/toolkit/gocui/click.go
index 9dc1a42..bcc6b85 100644
--- a/toolkit/gocui/click.go
+++ b/toolkit/gocui/click.go
@@ -18,15 +18,14 @@ func (w *cuiWidget) doWidgetClick() {
case toolkit.Flag:
me.rootNode.redoColor(true)
case toolkit.Window:
- me.rootNode.redoTabs(true)
w.redoBox(true)
w.toggleTree()
- me.rootNode.redoColor(true)
case toolkit.Tab:
- me.rootNode.redoTabs(true)
w.redoBox(true)
w.toggleTree()
- me.rootNode.redoColor(true)
+
+ // w.toggleTree()
+ // me.rootNode.redoColor(true)
case toolkit.Box:
w.showWidgetPlacement(logNow, "drawTree()")
if (w.horizontal) {
@@ -63,8 +62,7 @@ func (w *cuiWidget) drawTree(draw bool) {
w.textResize()
w.drawView()
} else {
- me.baseGui.DeleteView(w.cuiName)
- w.v = nil
+ w.deleteView()
}
for _, child := range w.children {
diff --git a/toolkit/gocui/color.go b/toolkit/gocui/color.go
index efe44dd..c1216f0 100644
--- a/toolkit/gocui/color.go
+++ b/toolkit/gocui/color.go
@@ -8,13 +8,14 @@ import (
// ColorBlack ColorRed ColorGreen ColorYellow ColorBlue ColorMagenta ColorCyan ColorWhite
// gocui.GetColor("#FFAA55") // Dark Purple
-func (w *cuiWidget) SetDefaultWidgetColor() {
- log(logInfo, "SetDefaultWidgetColor() on", w.widgetType, w.name)
+func (w *cuiWidget) setDefaultWidgetColor() {
+ log(logInfo, "setDefaultWidgetColor() on", w.widgetType, w.name)
v, _ := me.baseGui.View(w.cuiName)
if (v == nil) {
- log(logError, "SetDefaultWidgetColor() failed on view == nil")
+ log(logError, "setDefaultWidgetColor() failed on view == nil")
return
}
+ sleep(.05)
// v.BgColor = gocui.GetColor("#FFAA55") // Dark Purple
// v.BgColor = gocui.GetColor("#88AA55") // heavy purple
// v.BgColor = gocui.GetColor("#111111") // crazy red
@@ -83,13 +84,13 @@ func (w *cuiWidget) SetColor(c string) {
}
}
-func (w *cuiWidget) SetDefaultHighlight() {
+func (w *cuiWidget) setDefaultHighlight() {
if (w.v == nil) {
log(logError, "SetColor() failed on view == nil")
return
}
-// w.v.SelBgColor = gocui.ColorGreen
-// w.v.SelFgColor = gocui.ColorBlack
+ w.v.SelBgColor = gocui.ColorGreen
+ w.v.SelFgColor = gocui.ColorBlack
}
func randColor() gocui.Attribute {
@@ -105,7 +106,8 @@ func (w *cuiWidget) redoColor(draw bool) {
}
sleep(.05)
- w.SetDefaultWidgetColor()
+ w.setDefaultHighlight()
+ // w.setDefaultWidgetColor()
for _, child := range w.children {
child.redoColor(draw)
diff --git a/toolkit/gocui/common.go b/toolkit/gocui/common.go
index 2fe82cb..08f8e3c 100644
--- a/toolkit/gocui/common.go
+++ b/toolkit/gocui/common.go
@@ -70,6 +70,13 @@ func setupCtrlDownWidget() {
// me.rootNode.Append(w)
}
+func (w *cuiWidget) deleteView() {
+ if (w.v != nil) {
+ me.baseGui.DeleteView(w.cuiName)
+ }
+ w.v = nil
+}
+
func (n *cuiWidget) Append(child *cuiWidget) {
n.children = append(n.children, child)
// child.parent = n
diff --git a/toolkit/gocui/debug.go b/toolkit/gocui/debug.go
index 3ecdfdd..d6ba494 100644
--- a/toolkit/gocui/debug.go
+++ b/toolkit/gocui/debug.go
@@ -22,7 +22,6 @@ func actionDump(b bool, a *toolkit.Action) {
}
func (w *cuiWidget) dumpTree(draw bool) {
- log(logNow, "dumpTree() START", w)
if (w == nil) {
return
}
diff --git a/toolkit/gocui/keybindings.go b/toolkit/gocui/keybindings.go
index 18d3097..c449906 100644
--- a/toolkit/gocui/keybindings.go
+++ b/toolkit/gocui/keybindings.go
@@ -38,6 +38,8 @@ func defaultKeybindings(g *gocui.Gui) error {
return nil
}
+var showDebug bool = true
+
// dump out the widgets
func addDebugKeys(g *gocui.Gui) {
// dump all widget info to the log
@@ -45,6 +47,13 @@ func addDebugKeys(g *gocui.Gui) {
func(g *gocui.Gui, v *gocui.View) error {
log(logNow, "gocui.SetKeyBinding() dumpTree() START")
me.rootNode.dumpTree(true)
+ if (showDebug) {
+ me.rootNode.showFake()
+ showDebug = false
+ } else {
+ me.rootNode.hideFake()
+ showDebug = true
+ }
return nil
})
diff --git a/toolkit/gocui/place.go b/toolkit/gocui/place.go
index 905ebed..9445e40 100644
--- a/toolkit/gocui/place.go
+++ b/toolkit/gocui/place.go
@@ -5,10 +5,10 @@ import (
"git.wit.org/wit/gui/toolkit"
)
-var fakeStartWidth int = 80
-var fakeStartHeight int = 0
+var fakeStartWidth int = 10
+var fakeStartHeight int = 3
func (w *cuiWidget) setFake() {
- if (w.visable) {
+ if (w.isFake == false) {
return
}
t := len(w.name)
@@ -21,29 +21,30 @@ func (w *cuiWidget) setFake() {
w.realSize.h1 = w.realSize.h0 + w.realHeight
fakeStartHeight += 3
if (fakeStartHeight > 24) {
- fakeStartHeight = 0
+ fakeStartHeight = 3
fakeStartWidth += 20
}
w.showWidgetPlacement(logNow, "setFake()")
}
func findPlace(w *cuiWidget) {
+ w.isFake = false
w.visable = true
switch w.widgetType {
case toolkit.Root:
- w.visable = false
+ w.isFake = true
w.setFake()
case toolkit.Flag:
- w.visable = false
+ w.isFake = true
w.setFake()
case toolkit.Grid:
- w.visable = false
+ w.isFake = true
w.setFake()
case toolkit.Box:
- w.visable = false
+ w.isFake = true
w.setFake()
default:
- w.redoBox(true)
+ // w.redoBox(true)
}
}
diff --git a/toolkit/gocui/plugin.go b/toolkit/gocui/plugin.go
index 7c4eee5..01579ab 100644
--- a/toolkit/gocui/plugin.go
+++ b/toolkit/gocui/plugin.go
@@ -58,7 +58,7 @@ func (w *cuiWidget) SetText(text string) {
w.text = text
w.s = text
w.textResize()
- me.baseGui.DeleteView(w.cuiName)
+ w.deleteView()
w.drawView()
}
diff --git a/toolkit/gocui/structs.go b/toolkit/gocui/structs.go
index a3f0207..2b91de4 100644
--- a/toolkit/gocui/structs.go
+++ b/toolkit/gocui/structs.go
@@ -87,7 +87,8 @@ type cuiWidget struct {
vals []string // dropdown menu options
- visable bool // widget types like 'box' are 'false'
+ visable bool // track if it's currently supposed to be shown
+ isFake bool // widget types like 'box' are 'false'
realWidth int // the real width
realHeight int // the real height
realSize rectType // the display size of this widget
diff --git a/toolkit/gocui/tab.go b/toolkit/gocui/tab.go
index 42e5127..0a0656e 100644
--- a/toolkit/gocui/tab.go
+++ b/toolkit/gocui/tab.go
@@ -16,16 +16,31 @@ func (w *cuiWidget) hideWidgets() {
case toolkit.Box:
case toolkit.Grid:
default:
- if (w.v != nil) {
- me.baseGui.DeleteView(w.cuiName)
- w.v = nil
- }
+ w.deleteView()
}
for _, child := range w.children {
child.hideWidgets()
}
}
+func (w *cuiWidget) hideFake() {
+ if (w.isFake) {
+ w.deleteView()
+ }
+ for _, child := range w.children {
+ child.hideFake()
+ }
+}
+
+func (w *cuiWidget) showFake() {
+ if (w.isFake) {
+ w.drawView()
+ }
+ for _, child := range w.children {
+ child.showFake()
+ }
+}
+
func (w *cuiWidget) showWidgets() {
w.drawView()
for _, child := range w.children {
@@ -74,7 +89,7 @@ func (w *cuiWidget) redoTabs(draw bool) {
me.rootNode.logicalSize.w1 = w.realSize.w1 + 1
me.rootNode.logicalSize.h1 = 0
- me.baseGui.DeleteView(w.cuiName)
+ w.deleteView()
w.v = nil
w.drawView()
w.showWidgetPlacement(logNow, "redoTabs()")
diff --git a/toolkit/gocui/view.go b/toolkit/gocui/view.go
index d1d4b51..4b73bb0 100644
--- a/toolkit/gocui/view.go
+++ b/toolkit/gocui/view.go
@@ -69,10 +69,12 @@ func (w *cuiWidget) drawView() {
w.v, err = me.baseGui.SetView(w.cuiName, a, b, c, d, 0)
if err == nil {
+ w.showWidgetPlacement(logError, "drawView()")
log(logError, "drawView() internal plugin error err = nil")
return
}
if !errors.Is(err, gocui.ErrUnknownView) {
+ w.showWidgetPlacement(logError, "drawView()")
log(logError, "drawView() internal plugin error error.IS()", err)
return
}
@@ -82,5 +84,5 @@ func (w *cuiWidget) drawView() {
w.v.Wrap = true
fmt.Fprintln(w.v, " " + w.text)
- // w.SetDefaultWidgetColor()
+ w.setDefaultWidgetColor()
}