2025-02-01 11:42:31 -06:00
|
|
|
// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
|
|
|
|
// Use of this source code is governed by the GPL 3.0
|
|
|
|
|
2024-01-18 00:08:37 -06:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/awesome-gocui/gocui"
|
|
|
|
|
|
|
|
"go.wit.com/log"
|
2024-01-18 04:10:08 -06:00
|
|
|
"go.wit.com/widget"
|
2024-01-18 00:08:37 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
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 = ""
|
|
|
|
}
|
|
|
|
|
2024-11-13 21:03:50 -06:00
|
|
|
outv := makeOutputWidget(g, l)
|
|
|
|
outv.Write([]byte("test out2"))
|
|
|
|
log.Info("test out2")
|
2024-01-18 00:08:37 -06:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func makeOutputWidget(g *gocui.Gui, stringFromMouseClick string) *gocui.View {
|
2024-01-28 02:20:31 -06:00
|
|
|
if me.treeRoot == nil {
|
2024-01-18 00:08:37 -06:00
|
|
|
// keep skipping this until the binary tree is initialized
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-02-06 02:49:21 -06:00
|
|
|
if me.stdout.tk == nil {
|
2024-01-18 00:08:37 -06:00
|
|
|
a := new(widget.Action)
|
|
|
|
a.ProgName = "stdout"
|
|
|
|
a.WidgetType = widget.Stdout
|
|
|
|
a.WidgetId = -3
|
|
|
|
a.ParentId = 0
|
2024-01-28 02:20:31 -06:00
|
|
|
// n := addNode(a)
|
|
|
|
n := me.myTree.AddNode(a)
|
2025-02-06 02:49:21 -06:00
|
|
|
me.stdout.tk = initWidget(n)
|
2024-01-28 02:20:31 -06:00
|
|
|
|
2025-02-06 02:49:21 -06:00
|
|
|
tk := me.stdout.tk
|
|
|
|
tk.gocuiSize.w0 = me.stdout.offsetW
|
|
|
|
tk.gocuiSize.h0 = me.stdout.offsetH
|
2025-02-06 02:40:44 -06:00
|
|
|
tk.gocuiSize.w1 = tk.gocuiSize.w0 + me.stdout.w
|
|
|
|
tk.gocuiSize.h1 = tk.gocuiSize.h0 + me.stdout.h
|
|
|
|
|
2024-01-18 00:08:37 -06:00
|
|
|
}
|
2025-02-06 02:40:44 -06:00
|
|
|
|
2024-01-18 00:08:37 -06:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
|
2025-02-06 02:49:21 -06:00
|
|
|
rect := me.stdout.tk.gocuiSize
|
|
|
|
v, err = g.SetView("msg", rect.w0, rect.h0, rect.w1, rect.h1, 0)
|
|
|
|
|
2024-01-18 00:08:37 -06:00
|
|
|
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 {
|
2025-02-06 02:49:21 -06:00
|
|
|
me.stdout.tk.v = v
|
2024-01-18 00:08:37 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
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")
|
2025-02-01 19:42:04 -06:00
|
|
|
|
2025-02-06 02:49:21 -06:00
|
|
|
me.stdout.tk.v = v
|
|
|
|
me.stdout.tk.DrawAt(me.stdout.offsetW, me.stdout.offsetH)
|
2024-01-18 00:08:37 -06:00
|
|
|
return v
|
|
|
|
}
|