summaryrefslogtreecommitdiff
path: root/stdoutShow.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-31 09:02:35 -0600
committerJeff Carr <[email protected]>2025-01-31 13:47:45 -0600
commit9f38585892d08690dde1b67b9a01006af308a949 (patch)
tree6f1d57dbee43651a85f7104fbfe9b08bb22afab0 /stdoutShow.go
parent1a1881aa4e39e256126972c0cbe7f0db93ee20ec (diff)
I'm trying to make this clearer to understand
Diffstat (limited to 'stdoutShow.go')
-rw-r--r--stdoutShow.go119
1 files changed, 119 insertions, 0 deletions
diff --git a/stdoutShow.go b/stdoutShow.go
new file mode 100644
index 0000000..4950e68
--- /dev/null
+++ b/stdoutShow.go
@@ -0,0 +1,119 @@
+package main
+
+import (
+ "errors"
+ "fmt"
+
+ "github.com/awesome-gocui/gocui"
+
+ "go.wit.com/log"
+ "go.wit.com/widget"
+)
+
+var outputW int = 180
+var outputH int = 40
+
+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+outputW, my-yOffset+outputH+me.FramePadH, 0)
+ me.startOutputW = mx - xOffset
+ me.startOutputH = my - yOffset
+ g.SetViewOnBottom("msg")
+}
+
+func showMsg(g *gocui.Gui, v *gocui.View) error {
+ var l string
+ var err error
+
+ log.Log(NOW, "showMsg() v.name =", v.Name())
+ if _, err := g.SetCurrentView(v.Name()); err != nil {
+ return err
+ }
+
+ _, cy := v.Cursor()
+ if l, err = v.Line(cy); err != nil {
+ l = ""
+ }
+
+ outv := makeOutputWidget(g, l)
+ outv.Write([]byte("test out2"))
+ log.Info("test out2")
+ return nil
+}
+
+func makeOutputWidget(g *gocui.Gui, stringFromMouseClick string) *gocui.View {
+ maxX, maxY := g.Size()
+
+ if me.treeRoot == nil {
+ // keep skipping this until the binary tree is initialized
+ return nil
+ }
+
+ if me.logStdout == nil {
+ a := new(widget.Action)
+ a.ProgName = "stdout"
+ a.WidgetType = widget.Stdout
+ a.WidgetId = -3
+ a.ParentId = 0
+ // n := addNode(a)
+ n := me.myTree.AddNode(a)
+ n.TK = initWidget(n)
+ me.logStdout = n
+
+ var tk *guiWidget
+ tk = me.logStdout.TK.(*guiWidget)
+ // tk.gocuiSize.w0 = maxX - 32
+ // tk.gocuiSize.h0 = maxY / 2
+ tk.gocuiSize.w0 = me.startOutputW
+ tk.gocuiSize.h0 = me.startOutputH
+ tk.gocuiSize.w1 = tk.gocuiSize.w0 + outputW
+ tk.gocuiSize.h1 = tk.gocuiSize.h0 + outputH
+ }
+ v, err := g.View("msg")
+ if v == nil {
+ log.Log(NOW, "makeoutputwindow() this is supposed to happen. v == nil", err)
+ } else {
+ log.Log(NOW, "makeoutputwindow() msg != nil. WTF now? err =", err)
+ }
+
+ // help, err := g.SetView("help", maxX-32, 0, maxX-1, 13, 0)
+ // v, err = g.SetView("msg", 3, 3, 30, 30, 0)
+
+ if me.startOutputW == 0 {
+ me.startOutputW = maxX - 32
+ }
+ if me.startOutputW == 0 {
+ me.startOutputH = maxY / 2
+ }
+
+ // v, err = g.SetView("msg", maxX-32, maxY/2, maxX/2+outputW, maxY/2+outputH, 0)
+ v, err = g.SetView("msg", me.startOutputW, me.startOutputH, maxX/2+outputW, maxY/2+outputH, 0)
+ if errors.Is(err, gocui.ErrUnknownView) {
+ log.Log(NOW, "makeoutputwindow() this is supposed to happen?", err)
+ }
+
+ if err != nil {
+ log.Log(NOW, "makeoutputwindow() create output window failed", err)
+ return nil
+ }
+
+ if v == nil {
+ log.Log(NOW, "makeoutputwindow() msg == nil. WTF now? err =", err)
+ return nil
+ } else {
+ var tk *guiWidget
+ tk = me.logStdout.TK.(*guiWidget)
+ tk.v = v
+ }
+
+ v.Clear()
+ v.SelBgColor = gocui.ColorCyan
+ v.SelFgColor = gocui.ColorBlack
+ fmt.Fprintln(v, "figure out how to capture STDOUT to here\n"+stringFromMouseClick)
+ g.SetViewOnBottom("msg")
+ // g.SetViewOnBottom(v.Name())
+ return v
+}