summaryrefslogtreecommitdiff
path: root/toolkit/democui/view.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2023-04-03 10:26:47 -0500
committerJeff Carr <[email protected]>2023-04-03 10:26:47 -0500
commit4b6207743b90968d6b822032a4355e43b6ce6da9 (patch)
tree2cb9f13d5e95f14e165f8e41e8484320b7454177 /toolkit/democui/view.go
parent0320ebe4bb49ea80761d77af80fa208157ffdb89 (diff)
gocui: working towards correct layout
make a gocui widget binary tree more debugging cleanups sample button app displays in gocui geometry logic closer to correct improvements in gocui layout continued attempts to clean up tabs dump binary tree moving towards proper chan callback() deprecate Widget.Name Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'toolkit/democui/view.go')
-rw-r--r--toolkit/democui/view.go349
1 files changed, 0 insertions, 349 deletions
diff --git a/toolkit/democui/view.go b/toolkit/democui/view.go
deleted file mode 100644
index 5ff44ad..0000000
--- a/toolkit/democui/view.go
+++ /dev/null
@@ -1,349 +0,0 @@
-package main
-
-import (
- "fmt"
- "errors"
- "strconv"
-
- "github.com/awesome-gocui/gocui"
- "git.wit.org/wit/gui/toolkit"
-)
-
-var adjusted bool = false
-
-// expands the logical size of the parents
-func (w *cuiWidget) setParentLogical(p *cuiWidget) {
- if (w.visable) {
- // expand the parent logicalsize to include the widget realSize
- if (p.logicalSize.w0 > w.realSize.w0) {
- p.logicalSize.w0 = w.realSize.w0
- adjusted = true
- }
- if (p.logicalSize.h0 > w.realSize.h0) {
- p.logicalSize.h0 = w.realSize.h0
- adjusted = true
- }
- if (p.logicalSize.w1 < w.realSize.w1) {
- p.logicalSize.w1 = w.realSize.w1
- adjusted = true
- }
- if (p.logicalSize.h1 < w.realSize.h1) {
- p.logicalSize.h1 = w.realSize.h1
- adjusted = true
- }
- } else {
- // expand the parent logicalsize to include the widget logicalsize
- if (p.logicalSize.w0 > w.logicalSize.w0) {
- p.logicalSize.w0 = w.logicalSize.w0
- adjusted = true
- }
- if (p.logicalSize.h0 > w.logicalSize.h0) {
- p.logicalSize.h0 = w.logicalSize.h0
- adjusted = true
- }
- if (p.logicalSize.w1 < w.logicalSize.w1) {
- p.logicalSize.w1 = w.logicalSize.w1
- adjusted = true
- }
- if (p.logicalSize.h1 < w.logicalSize.h1) {
- p.logicalSize.h1 = w.logicalSize.h1
- adjusted = true
- }
- }
- if (w.visable) {
- // adjust the widget realSize to the top left corner of the logicalsize
- if (w.logicalSize.w0 > w.realSize.w0) {
- w.realSize.w0 = w.logicalSize.w0
- w.realSize.w1 = w.realSize.w0 + w.realWidth
- adjusted = true
- }
- if (w.logicalSize.h0 > w.realSize.h0) {
- w.realSize.h0 = w.logicalSize.h0
- w.realSize.h1 = w.realSize.h0 + w.realHeight
- adjusted = true
- }
- }
- w.showWidgetPlacement(logNow, "setParentLogical() widget")
- p.showWidgetPlacement(logNow, "setParentLogical() parent")
- if (w.id == 0) || (p.id == 0) {
- // stop resizing when you hit the root widget
- return
- }
- // pass the logical resizing up
- pP := me.widgets[p.parentId]
- if (pP != nil) {
- p.setParentLogical(pP)
- }
-}
-
-var fakeStartWidth int = 80
-var fakeStartHeight int = 0
-func (w *cuiWidget) setFake() {
- if (w.visable) {
- return
- }
- // setup fake labels for non-visable things off screen
- w.realWidth = me.defaultWidth
- w.realHeight = me.defaultHeight
- w.realSize.w0 = fakeStartWidth
- w.realSize.h0 = fakeStartHeight
- w.realSize.w1 = w.realSize.w0 + me.defaultWidth
- w.realSize.h1 = w.realSize.h0 + me.defaultHeight
- fakeStartHeight += 2
- w.showWidgetPlacement(logNow, "setFake()")
-}
-
-func drawView(w *cuiWidget) *gocui.View {
- var newName string = ""
- newName = strconv.Itoa(w.id)
- if (me.baseGui == nil) {
- log(logError, "drawView() me.baseGui == nil")
- return nil
- }
-
- a := w.realSize.w0
- b := w.realSize.h0
- c := w.realSize.w1
- d := w.realSize.h1
- v, err := me.baseGui.SetView(newName, a, b, c, d, 0)
- if err == nil {
- log(logError, "drawView() internal plugin error err = nil")
- return nil
- }
- if !errors.Is(err, gocui.ErrUnknownView) {
- log(logError, "drawView() internal plugin error error.IS()", err)
- return nil
- }
- w.v = v
-
- return v
-}
-
-func boxedPlace(w *cuiWidget) {
- t := len(w.name)
- if (w.id == 0) {
- w.realWidth = 0
- w.realHeight = 0
- return
- }
- p := me.widgets[w.parentId]
- if (p == nil) {
- log(logError, "ERRRRRRRRRRRORRRRRRRRRRRRR: parentId widget == nil")
- return
- }
-
- switch p.widgetType {
- case toolkit.Box:
- w.realWidth = t + 3
- w.realHeight = me.defaultHeight
- w.realSize.w0 = p.nextX
- w.realSize.h0 = p.nextY
- w.realSize.w1 = p.nextX + w.realWidth
- w.realSize.h1 = p.nextY + w.realHeight
-
- w.logicalSize.w0 = p.nextX
- w.logicalSize.h0 = p.nextY
- w.logicalSize.w1 = p.nextX + w.realWidth
- w.logicalSize.h1 = p.nextY + w.realHeight
-
- w.nextX = p.nextX
- w.nextY = p.nextY
- if (w.horizontal) {
- log(logNow, "PARENT BOX IS HORIZONTAL")
- p.nextX += w.realWidth
- } else {
- log(logNow, "PARENT BOX IS VERTICAL")
- p.nextY += w.realHeight
- }
- case toolkit.Group:
- w.realWidth = t + 3
- w.realHeight = me.defaultHeight
-
- w.realSize.w0 = p.nextX
- w.realSize.h0 = p.nextY
- w.realSize.w1 = p.nextX + w.realWidth
- w.realSize.h1 = p.nextY + w.realHeight
-
- w.logicalSize.w0 = p.nextX
- w.logicalSize.h0 = p.nextY
- w.logicalSize.w1 = p.nextX + w.realWidth
- w.logicalSize.h1 = p.nextY + w.realHeight
-
- w.nextX = w.logicalSize.w0 + 3 // default group padding
- w.nextY = w.logicalSize.h1
-
- // increment parent
- p.nextY += w.realHeight
- default:
- w.realWidth = t + 3
- w.realHeight = me.defaultHeight
- w.realSize.w0 = p.nextX
- w.realSize.h0 = p.nextY
- w.realSize.w1 = w.realSize.w0 + w.realWidth
- w.realSize.h1 = w.realSize.h0 + w.realHeight
-
- // increment parent
- p.nextY += w.realHeight
- }
- p.showWidgetPlacement(logNow, "bP parent")
- w.showWidgetPlacement(logNow, "bP widget")
-}
-
-func findPlace(w *cuiWidget, a *toolkit.Action) {
- t := len(w.name)
- w.visable = true
- switch w.widgetType {
- case toolkit.Root:
- w.visable = false
- w.setFake()
- w.showWidgetPlacement(logNow, "Root:")
- case toolkit.Flag:
- w.visable = false
- w.setFake()
- w.showWidgetPlacement(logNow, "Flag:")
- case toolkit.Window:
- w.realWidth = t + 3
- w.realHeight = me.defaultHeight
-
- w.realSize.w0 = me.nextW
- w.realSize.h0 = 0
- w.realSize.w1 = w.realSize.w0 + w.realWidth
- w.realSize.h1 = w.realHeight
-
- w.logicalSize.w0 = me.nextW
- w.logicalSize.h0 = 0
- w.logicalSize.w1 = w.logicalSize.w0 + w.realWidth
- w.logicalSize.h1 = w.realHeight
-
- w.nextX = w.logicalSize.w0 + t // default group padding
- w.nextY = w.logicalSize.h1
-
- me.nextW += w.realWidth
- w.showWidgetPlacement(logNow, "window:")
- case toolkit.Tab:
- w.realWidth = t + 3
- w.realHeight = me.defaultHeight
-
- w.realSize.w0 = me.nextW
- w.realSize.h0 = 0
- w.realSize.w1 = w.realSize.w0 + w.realWidth
- w.realSize.h1 = w.realHeight
-
- w.logicalSize.w0 = me.nextW
- w.logicalSize.h0 = 0
- w.logicalSize.w1 = w.logicalSize.w0 + w.realWidth
- w.logicalSize.h1 = w.realHeight
-
- w.nextX = w.logicalSize.w0 + t // default group padding
- w.nextY = w.logicalSize.h1
- me.nextW += w.realWidth
- w.showWidgetPlacement(logNow, "tab:")
- case toolkit.Grid:
- p := me.widgets[w.parentId]
- w.horizontal = a.B
- w.visable = false
- w.setFake()
-
- if (p == nil) {
- log(logError, "ERRRRRRRRRRRORRRRRRRRRRRRR: parentId widget == nil")
- return
- }
- w.logicalSize.w0 = p.nextX
- w.logicalSize.h0 = p.nextY
- w.logicalSize.w1 = p.nextX
- w.logicalSize.h1 = p.nextY
-
- w.nextX = p.nextX
- w.nextY = p.nextY
- w.showWidgetPlacement(logNow, "grid:")
- case toolkit.Box:
- p := me.widgets[w.parentId]
- w.horizontal = a.B
- w.visable = false
- w.setFake()
-
- if (p == nil) {
- log(logError, "ERRRRRRRRRRRORRRRRRRRRRRRR: parentId widget == nil")
- return
- }
- w.logicalSize.w0 = p.nextX
- w.logicalSize.h0 = p.nextY
- w.logicalSize.w1 = p.nextX
- w.logicalSize.h1 = p.nextY
-
- w.nextX = p.nextX
- w.nextY = p.nextY
- w.showWidgetPlacement(logNow, "box:")
- case toolkit.Group:
- p := me.widgets[w.parentId]
- w.horizontal = a.B
- w.visable = false
- w.setFake()
-
- if (p == nil) {
- log(logError, "ERRRRRRRRRRRORRRRRRRRRRRRR: parentId widget == nil")
- return
- }
- w.logicalSize.w0 = p.nextX
- w.logicalSize.h0 = p.nextY
- w.logicalSize.w1 = p.nextX
- w.logicalSize.h1 = p.nextY
-
- w.nextX = p.nextX
- w.nextY = p.nextY
- w.showWidgetPlacement(logNow, "group:")
- default:
- boxedPlace(w)
- }
-}
-
-func place(w *cuiWidget, a *toolkit.Action) {
- log(logInfo, "place() START")
- findPlace(w, a)
- v := drawView(w)
- if (v == nil) {
- log(logError, "place() drawView(w) returned nil")
- return
- }
- me.baseGui.SetKeybinding(v.Name(), gocui.MouseLeft, gocui.ModNone, click)
-
- v.Wrap = true
- fmt.Fprintln(v, " " + w.name)
-
- w.SetDefaultWidgetColor()
-
- log(logInfo, "place() END")
- return
-}
-
-func (w *cuiWidget) drawView() {
- var err error
- if (me.baseGui == nil) {
- log(logError, "drawView() me.baseGui == nil")
- return
- }
-
- a := w.realSize.w0
- b := w.realSize.h0
- c := w.realSize.w1
- d := w.realSize.h1
-
- var newName string = ""
- newName = strconv.Itoa(w.id)
- w.v, err = me.baseGui.SetView(newName, a, b, c, d, 0)
- if err == nil {
- log(logError, "drawView() internal plugin error err = nil")
- return
- }
- if !errors.Is(err, gocui.ErrUnknownView) {
- log(logError, "drawView() internal plugin error error.IS()", err)
- return
- }
-
- me.baseGui.SetKeybinding(w.v.Name(), gocui.MouseLeft, gocui.ModNone, click)
-
- w.v.Wrap = true
- fmt.Fprintln(w.v, " " + w.text)
-
- w.SetDefaultWidgetColor()
-}