diff options
| author | Jeff Carr <[email protected]> | 2024-02-05 03:09:41 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-02-05 03:09:41 -0600 |
| commit | a907a4418a1f1d027b288b1bbd91a43b103f29f9 (patch) | |
| tree | 2fca47d404d84ad831995f0172a0cf3d4e6e0afd /draw.go | |
| parent | 07ddc4e44d6acacc7f253c8bd9da7f7248cafa94 (diff) | |
move code blocks around
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'draw.go')
| -rw-r--r-- | draw.go | 76 |
1 files changed, 76 insertions, 0 deletions
@@ -1,5 +1,14 @@ package main +import ( + "errors" + "fmt" + "strconv" + + "github.com/awesome-gocui/gocui" + log "go.wit.com/log" +) + var toggle bool = true func (w *guiWidget) DrawAt(offsetW, offsetH int) { @@ -36,3 +45,70 @@ func (w *guiWidget) drawTree(draw bool) { child.drawTree(draw) } } + +// display's the text of the widget in gocui +// create or recreate the gocui widget visible +// will create a new gocui view if there isn't one or if it has been moved +// deletes the old view if it exists and recreates it +func (w *guiWidget) recreateView() { + var err error + log.Log(INFO, "recreateView() START", w.WidgetType, w.String()) + if me.baseGui == nil { + log.Log(ERROR, "recreateView() ERROR: me.baseGui == nil", w) + return + } + + if w.cuiName == "" { + log.Log(ERROR, "recreateView() w.cuiName was not set for widget", w) + w.cuiName = strconv.Itoa(w.node.WidgetId) + " TK" + } + log.Log(INFO, "recreateView() labelN =", w.labelN) + + // this deletes the button from gocui + me.baseGui.DeleteView(w.cuiName) + w.v = nil + + w.textResize() + a := w.gocuiSize.w0 + b := w.gocuiSize.h0 + c := w.gocuiSize.w1 + d := w.gocuiSize.h1 + + w.v, err = me.baseGui.SetView(w.cuiName, a, b, c, d, 0) + if err == nil { + w.showWidgetPlacement("recreateView()") + log.Log(ERROR, "recreateView() internal plugin error err = nil") + return + } + if !errors.Is(err, gocui.ErrUnknownView) { + w.showWidgetPlacement("recreateView()") + log.Log(ERROR, "recreateView() internal plugin error error.IS()", err) + return + } + + // this sets up the keybinding for the name of the window + // does this really need to be done? I think we probably already + // know everything about where all the widgets are so we could bypass + // the gocui package and just handle all the mouse events internally here (?) + // for now, the w.v.Name is a string "1", "2", "3", etc from the widgetId + + // set the binding for this gocui view now that it has been created + // gocui handles overlaps of views so it will run on the view that is clicked on + me.baseGui.SetKeybinding(w.v.Name(), gocui.MouseLeft, gocui.ModNone, click) + + // this actually sends the text to display to gocui + w.v.Wrap = true + w.v.Frame = w.frame + w.v.Clear() + fmt.Fprint(w.v, w.labelN) + + // if you don't do this here, it will be black & white only + if w.color != nil { + w.v.FrameColor = w.color.frame + w.v.FgColor = w.color.fg + w.v.BgColor = w.color.bg + w.v.SelFgColor = w.color.selFg + w.v.SelBgColor = w.color.selBg + } + log.Log(INFO, "recreateView() END") +} |
