summaryrefslogtreecommitdiff
path: root/toolkit/gocui/tab.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/gocui/tab.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/gocui/tab.go')
-rw-r--r--toolkit/gocui/tab.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/toolkit/gocui/tab.go b/toolkit/gocui/tab.go
new file mode 100644
index 0000000..42e5127
--- /dev/null
+++ b/toolkit/gocui/tab.go
@@ -0,0 +1,88 @@
+package main
+
+// implements widgets 'Window' and 'Tab'
+
+import (
+ "git.wit.org/wit/gui/toolkit"
+// "github.com/awesome-gocui/gocui"
+)
+
+func (w *cuiWidget) hideWidgets() {
+ switch w.widgetType {
+ case toolkit.Root:
+ case toolkit.Flag:
+ case toolkit.Window:
+ case toolkit.Tab:
+ case toolkit.Box:
+ case toolkit.Grid:
+ default:
+ if (w.v != nil) {
+ me.baseGui.DeleteView(w.cuiName)
+ w.v = nil
+ }
+ }
+ for _, child := range w.children {
+ child.hideWidgets()
+ }
+}
+
+func (w *cuiWidget) showWidgets() {
+ w.drawView()
+ for _, child := range w.children {
+ child.showWidgets()
+ }
+}
+
+func (w *cuiWidget) redoTabs(draw bool) {
+ log(logNow, "redoTabs() START", w.name)
+ if (w == nil) {
+ return
+ }
+ if (w.widgetType == toolkit.Root) {
+ w.logicalSize.w0 = 0
+ w.logicalSize.h0 = 0
+ w.logicalSize.w1 = 0
+ w.logicalSize.h1 = 0
+
+ w.nextW = 2
+ w.nextH = 2
+ }
+
+ log(logNow, "redoTabs() about to check for window and tab ", w.name)
+ w.text = w.name
+ t := len(w.text)
+ if ((w.widgetType == toolkit.Window) || (w.widgetType == toolkit.Tab)) {
+ log(logNow, "redoTabs() in Window and Tab", w.name)
+ w.realWidth = t + 2
+ w.realHeight = me.defaultHeight
+
+ w.realSize.w0 = me.rootNode.logicalSize.w1
+ w.realSize.h0 = 0
+ w.realSize.w1 = w.realSize.w0 + w.realWidth
+ w.realSize.h1 = w.realHeight
+
+ w.logicalSize.w0 = 0
+ w.logicalSize.h0 = 0
+ w.logicalSize.w1 = 0
+ w.logicalSize.h1 = w.realHeight
+
+ // spaces right 1 space to next tab widget
+ // spaces down 1 line to the next widget
+ w.nextW = 2
+ w.nextH = w.realHeight + 1
+
+ me.rootNode.logicalSize.w1 = w.realSize.w1 + 1
+ me.rootNode.logicalSize.h1 = 0
+
+ me.baseGui.DeleteView(w.cuiName)
+ w.v = nil
+ w.drawView()
+ w.showWidgetPlacement(logNow, "redoTabs()")
+ }
+
+ log(logNow, "redoTabs() about to for loop children", w.name)
+ for _, child := range w.children {
+ log(logNow, "redoTabs() got to child", child.name)
+ child.redoTabs(draw)
+ }
+}