diff options
| author | Jeff Carr <[email protected]> | 2025-01-31 09:02:35 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-01-31 13:47:45 -0600 |
| commit | 9f38585892d08690dde1b67b9a01006af308a949 (patch) | |
| tree | 6f1d57dbee43651a85f7104fbfe9b08bb22afab0 /stdoutShow.go | |
| parent | 1a1881aa4e39e256126972c0cbe7f0db93ee20ec (diff) | |
I'm trying to make this clearer to understand
Diffstat (limited to 'stdoutShow.go')
| -rw-r--r-- | stdoutShow.go | 119 |
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 +} |
