gocui: preliminary log() output window

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2023-04-13 07:04:41 -05:00
parent 74bdf03b76
commit 2fec7356ea
2 changed files with 24 additions and 2 deletions

View File

@ -1,7 +1,9 @@
package main package main
import ( import (
"fmt"
"os" "os"
"strings"
witlog "git.wit.org/wit/gui/log" witlog "git.wit.org/wit/gui/log"
) )
@ -12,9 +14,24 @@ var logWarn bool = false
var logInfo bool = false var logInfo bool = false
var logVerbose bool = false var logVerbose bool = false
var outputS []string
func log(a ...any) { func log(a ...any) {
witlog.Where = "wit/gocui" witlog.Where = "wit/gocui"
witlog.Log(a...) witlog.Log(a...)
s := fmt.Sprint(a...)
tmp := strings.Split(s, "\n")
outputS = append(outputS, tmp...)
if (len(outputS) > 50) {
outputS = outputS[10:]
}
if (me.baseGui != nil) {
v, _ := me.baseGui.View("msg")
if (v != nil) {
v.Clear()
fmt.Fprintln(v, strings.Join(outputS, "\n"))
}
}
} }
func sleep(a ...any) { func sleep(a ...any) {

View File

@ -11,12 +11,15 @@ import (
"github.com/awesome-gocui/gocui" "github.com/awesome-gocui/gocui"
) )
var outputW int = 80
var outputH int = 24
func moveMsg(g *gocui.Gui) { func moveMsg(g *gocui.Gui) {
mx, my := g.MousePosition() mx, my := g.MousePosition()
if !movingMsg && (mx != initialMouseX || my != initialMouseY) { if !movingMsg && (mx != initialMouseX || my != initialMouseY) {
movingMsg = true movingMsg = true
} }
g.SetView("msg", mx-xOffset, my-yOffset, mx-xOffset+20, my-yOffset+7, 0) g.SetView("msg", mx-xOffset, my-yOffset, mx-xOffset+outputW, my-yOffset+outputH, 0)
} }
func showMsg(g *gocui.Gui, v *gocui.View) error { func showMsg(g *gocui.Gui, v *gocui.View) error {
@ -31,14 +34,16 @@ func showMsg(g *gocui.Gui, v *gocui.View) error {
if l, err = v.Line(cy); err != nil { if l, err = v.Line(cy); err != nil {
l = "" l = ""
} }
// setOutput(me.rootNode)
maxX, maxY := g.Size() maxX, maxY := g.Size()
if v, err := g.SetView("msg", maxX/2-10, maxY/2, maxX/2+10, maxY/2+7, 0); err == nil || errors.Is(err, gocui.ErrUnknownView) { if v, err := g.SetView("msg", maxX/2, maxY/2, maxX/2+outputW, maxY/2+outputH, 0); err == nil || errors.Is(err, gocui.ErrUnknownView) {
v.Clear() v.Clear()
v.SelBgColor = gocui.ColorCyan v.SelBgColor = gocui.ColorCyan
v.SelFgColor = gocui.ColorBlack v.SelFgColor = gocui.ColorBlack
l += "foo\n" + "bar\n" l += "foo\n" + "bar\n"
fmt.Fprintln(v, l) fmt.Fprintln(v, l)
} }
g.SetViewOnTop("msg")
return nil return nil
} }