parent
70f5c88640
commit
d5be773817
146
click.go
146
click.go
|
@ -10,7 +10,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// set isCurrent = false everywhere
|
// set isCurrent = false everywhere
|
||||||
func unsetCurrent(w *guiWidget) {
|
func (w *guiWidget) unsetCurrent() {
|
||||||
w.isCurrent = false
|
w.isCurrent = false
|
||||||
|
|
||||||
if w.node.WidgetType == widget.Tab {
|
if w.node.WidgetType == widget.Tab {
|
||||||
|
@ -19,56 +19,51 @@ func unsetCurrent(w *guiWidget) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, child := range w.children {
|
for _, child := range w.children {
|
||||||
unsetCurrent(child)
|
child.unsetCurrent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// when adding a new widget, this will update the display
|
// when adding a new widget, this will update the display
|
||||||
// of the current widgets if that widget is supposed
|
// of the current widgets if that widget is supposed
|
||||||
// to be in current display
|
// to be in current display
|
||||||
func updateCurrent(n *tree.Node) {
|
func (w *guiWidget) updateCurrent() {
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
|
|
||||||
log.Log(NOW, "updateCurrent()", w.String())
|
log.Log(NOW, "updateCurrent()", w.String())
|
||||||
if n.WidgetType == widget.Tab {
|
if w.WidgetType == widget.Tab {
|
||||||
if w.IsCurrent() {
|
if w.IsCurrent() {
|
||||||
// n.tk.color = &colorActiveT
|
// n.tk.color = &colorActiveT
|
||||||
setColor(n, &colorActiveT)
|
w.setColor(&colorActiveT)
|
||||||
w.hideView()
|
w.hideView()
|
||||||
w.showView()
|
w.showView()
|
||||||
setCurrentTab(n)
|
w.setCurrentTab()
|
||||||
} else {
|
} else {
|
||||||
// n.tk.color = &colorTab
|
// n.tk.color = &colorTab
|
||||||
// n.setColor()
|
// n.setColor()
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if n.WidgetType == widget.Window {
|
if w.WidgetType == widget.Window {
|
||||||
if w.IsCurrent() {
|
if w.IsCurrent() {
|
||||||
// setCurrentWindow(n)
|
// setCurrentWindow(n)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if n.WidgetType == widget.Root {
|
if w.WidgetType == widget.Root {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
updateCurrent(n.Parent)
|
w.parent.updateCurrent()
|
||||||
}
|
}
|
||||||
|
|
||||||
// shows the widgets in a window
|
// shows the widgets in a window
|
||||||
func setCurrentWindow(n *tree.Node) {
|
func (w *guiWidget) setCurrentWindow() {
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
if w.IsCurrent() {
|
if w.IsCurrent() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if n.WidgetType != widget.Window {
|
if w.WidgetType != widget.Window {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var rootTK *guiWidget
|
var rootTK *guiWidget
|
||||||
rootTK = me.treeRoot.TK.(*guiWidget)
|
rootTK = me.treeRoot.TK.(*guiWidget)
|
||||||
unsetCurrent(rootTK)
|
rootTK.unsetCurrent()
|
||||||
|
|
||||||
if w.hasTabs {
|
if w.hasTabs {
|
||||||
// set isCurrent = true on the first tab
|
// set isCurrent = true on the first tab
|
||||||
|
@ -82,53 +77,49 @@ func setCurrentWindow(n *tree.Node) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// shows the widgets in a tab
|
// shows the widgets in a tab
|
||||||
func setCurrentTab(n *tree.Node) {
|
func (w *guiWidget) setCurrentTab() {
|
||||||
var w, p, rootTK *guiWidget
|
var p, rootTK *guiWidget
|
||||||
w = n.TK.(*guiWidget)
|
if w.WidgetType != widget.Tab {
|
||||||
if n.WidgetType != widget.Tab {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
rootTK = me.treeRoot.TK.(*guiWidget)
|
rootTK = me.treeRoot.TK.(*guiWidget)
|
||||||
unsetCurrent(rootTK)
|
rootTK.unsetCurrent()
|
||||||
w.isCurrent = true
|
w.isCurrent = true
|
||||||
p = n.Parent.TK.(*guiWidget)
|
p = w.parent
|
||||||
p.isCurrent = true
|
p.isCurrent = true
|
||||||
log.Log(NOW, "setCurrent()", n.String())
|
log.Log(NOW, "setCurrent()", w.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
func doWidgetClick(n *tree.Node) {
|
func (w *guiWidget) doWidgetClick() {
|
||||||
switch n.WidgetType {
|
switch w.WidgetType {
|
||||||
case widget.Root:
|
case widget.Root:
|
||||||
// THIS IS THE BEGINING OF THE LAYOUT
|
// THIS IS THE BEGINING OF THE LAYOUT
|
||||||
log.Log(NOW, "doWidgetClick()", n.String())
|
log.Log(NOW, "doWidgetClick()", w.String())
|
||||||
redoWindows(0, 0)
|
redoWindows(0, 0)
|
||||||
case widget.Flag:
|
case widget.Flag:
|
||||||
log.Log(NOW, "doWidgetClick() FLAG widget name =", n.String())
|
log.Log(NOW, "doWidgetClick() FLAG widget name =", w.String())
|
||||||
log.Log(NOW, "doWidgetClick() if this is the dropdown menu, handle it here?")
|
log.Log(NOW, "doWidgetClick() if this is the dropdown menu, handle it here?")
|
||||||
case widget.Window:
|
case widget.Window:
|
||||||
if me.currentWindow == n {
|
if me.currentWindow == w.node {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if me.currentWindow != nil {
|
if me.currentWindow != nil {
|
||||||
var w *guiWidget
|
var curw *guiWidget
|
||||||
w = me.currentWindow.TK.(*guiWidget)
|
curw = me.currentWindow.TK.(*guiWidget)
|
||||||
unsetCurrent(w)
|
curw.unsetCurrent()
|
||||||
setColor(me.currentWindow, &colorWindow)
|
curw.setColor(&colorWindow)
|
||||||
w.hideWidgets()
|
curw.hideWidgets()
|
||||||
}
|
}
|
||||||
me.currentWindow = n
|
me.currentWindow = w.node
|
||||||
// setCurrentWindow(n) // probably delete this
|
|
||||||
setColor(n, &colorActiveW)
|
|
||||||
|
|
||||||
var w *guiWidget
|
w.setColor(&colorActiveW)
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
w.hideWidgets()
|
w.hideWidgets()
|
||||||
w.redoTabs(me.TabW, me.TabH)
|
w.redoTabs(me.TabW, me.TabH)
|
||||||
for _, child := range w.children {
|
for _, child := range w.children {
|
||||||
if child.currentTab == true {
|
if child.currentTab == true {
|
||||||
log.Log(NOW, "FOUND CURRENT TAB", child.String())
|
log.Log(NOW, "FOUND CURRENT TAB", child.String())
|
||||||
setCurrentTab(child.node)
|
child.setCurrentTab()
|
||||||
placeWidgets(child.node, me.RawW, me.RawH)
|
child.placeWidgets(me.RawW, me.RawH)
|
||||||
child.showWidgets()
|
child.showWidgets()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -138,37 +129,31 @@ func doWidgetClick(n *tree.Node) {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
case widget.Tab:
|
case widget.Tab:
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
if w.IsCurrent() {
|
if w.IsCurrent() {
|
||||||
return // do nothing if you reclick on the already selected tab
|
return // do nothing if you reclick on the already selected tab
|
||||||
}
|
}
|
||||||
// find the window and disable the active tab
|
// find the window and disable the active tab
|
||||||
p := n.Parent
|
p := w.parent
|
||||||
if p != nil {
|
if p != nil {
|
||||||
var w *guiWidget
|
p.hideWidgets()
|
||||||
w = p.TK.(*guiWidget)
|
p.redoTabs(me.TabW, me.TabH)
|
||||||
w.hideWidgets()
|
p.unsetCurrent()
|
||||||
w.redoTabs(me.TabW, me.TabH)
|
|
||||||
unsetCurrent(w)
|
|
||||||
for _, child := range w.children {
|
for _, child := range w.children {
|
||||||
if child.node.WidgetType == widget.Tab {
|
if child.WidgetType == widget.Tab {
|
||||||
setColor(child.node, &colorTab)
|
child.setColor(&colorTab)
|
||||||
child.currentTab = false
|
child.currentTab = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
w.currentTab = true
|
w.currentTab = true
|
||||||
setColor(n, &colorActiveT)
|
w.setColor(&colorActiveT)
|
||||||
setCurrentTab(n)
|
w.setCurrentTab()
|
||||||
placeWidgets(n, me.RawW, me.RawH)
|
w.placeWidgets(me.RawW, me.RawH)
|
||||||
w.showWidgets()
|
w.showWidgets()
|
||||||
case widget.Group:
|
case widget.Group:
|
||||||
// n.placeWidgets(p.tk.startH, newH)
|
// n.placeWidgets(p.tk.startH, newH)
|
||||||
toggleTree(n)
|
w.toggleTree()
|
||||||
case widget.Checkbox:
|
case widget.Checkbox:
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
if widget.GetBool(w.value) {
|
if widget.GetBool(w.value) {
|
||||||
w.setCheckbox(false)
|
w.setCheckbox(false)
|
||||||
} else {
|
} else {
|
||||||
|
@ -177,30 +162,26 @@ func doWidgetClick(n *tree.Node) {
|
||||||
// n.doUserEvent()
|
// n.doUserEvent()
|
||||||
me.myTree.SendUserEvent(me.treeRoot)
|
me.myTree.SendUserEvent(me.treeRoot)
|
||||||
case widget.Grid:
|
case widget.Grid:
|
||||||
newR := realGocuiSize(n)
|
newR := w.realGocuiSize()
|
||||||
|
|
||||||
// w,h := n.logicalSize()
|
// w,h := n.logicalSize()
|
||||||
// w := newR.w1 - newR.w0
|
// w := newR.w1 - newR.w0
|
||||||
// h := newR.h1 - newR.h0
|
// h := newR.h1 - newR.h0
|
||||||
|
|
||||||
placeGrid(n, newR.w0, newR.h0)
|
w.placeGrid(newR.w0, newR.h0)
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
w.showWidgets()
|
w.showWidgets()
|
||||||
case widget.Box:
|
case widget.Box:
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
// w.showWidgetPlacement(logNow, "drawTree()")
|
// w.showWidgetPlacement(logNow, "drawTree()")
|
||||||
if w.direction == widget.Horizontal {
|
if w.direction == widget.Horizontal {
|
||||||
log.Log(NOW, "BOX IS HORIZONTAL", n.String())
|
log.Log(NOW, "BOX IS HORIZONTAL", w.String())
|
||||||
} else {
|
} else {
|
||||||
log.Log(NOW, "BOX IS VERTICAL", n.String())
|
log.Log(NOW, "BOX IS VERTICAL", w.String())
|
||||||
}
|
}
|
||||||
placeWidgets(n, me.RawW, me.RawH)
|
w.placeWidgets(me.RawW, me.RawH)
|
||||||
toggleTree(n)
|
w.toggleTree()
|
||||||
case widget.Button:
|
case widget.Button:
|
||||||
// doUserEvent(n)
|
// doUserEvent(n)
|
||||||
me.myTree.SendUserEvent(n)
|
me.myTree.SendUserEvent(w.node)
|
||||||
case widget.Dropdown:
|
case widget.Dropdown:
|
||||||
log.Log(NOW, "do the dropdown here")
|
log.Log(NOW, "do the dropdown here")
|
||||||
if me.ddview == nil {
|
if me.ddview == nil {
|
||||||
|
@ -235,10 +216,10 @@ func doWidgetClick(n *tree.Node) {
|
||||||
} else {
|
} else {
|
||||||
var dnsList string
|
var dnsList string
|
||||||
for i, s := range tk.vals {
|
for i, s := range tk.vals {
|
||||||
log.Log(NOW, "AddText()", n.String(), i, s)
|
log.Log(NOW, "AddText()", w.String(), i, s)
|
||||||
dnsList += s + "\n"
|
dnsList += s + "\n"
|
||||||
}
|
}
|
||||||
me.ddNode = n
|
me.ddNode = w.node
|
||||||
log.Log(NOW, "new dns list should be set to:", dnsList)
|
log.Log(NOW, "new dns list should be set to:", dnsList)
|
||||||
tk.labelN = dnsList
|
tk.labelN = dnsList
|
||||||
tk.SetText(dnsList)
|
tk.SetText(dnsList)
|
||||||
|
@ -253,11 +234,9 @@ func doWidgetClick(n *tree.Node) {
|
||||||
|
|
||||||
var toggle bool = true
|
var toggle bool = true
|
||||||
|
|
||||||
func toggleTree(n *tree.Node) {
|
func (w *guiWidget) toggleTree() {
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
if toggle {
|
if toggle {
|
||||||
drawTree(n, toggle)
|
w.drawTree(toggle)
|
||||||
toggle = false
|
toggle = false
|
||||||
} else {
|
} else {
|
||||||
w.hideWidgets()
|
w.hideWidgets()
|
||||||
|
@ -266,13 +245,11 @@ func toggleTree(n *tree.Node) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// display the widgets in the binary tree
|
// display the widgets in the binary tree
|
||||||
func drawTree(n *tree.Node, draw bool) {
|
func (w *guiWidget) drawTree(draw bool) {
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
if w == nil {
|
if w == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
showWidgetPlacement(n, true, "drawTree()")
|
w.showWidgetPlacement(true, "drawTree()")
|
||||||
if draw {
|
if draw {
|
||||||
// w.textResize()
|
// w.textResize()
|
||||||
w.showView()
|
w.showView()
|
||||||
|
@ -281,7 +258,7 @@ func drawTree(n *tree.Node, draw bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, child := range w.children {
|
for _, child := range w.children {
|
||||||
drawTree(child.node, draw)
|
child.drawTree(draw)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,14 +271,14 @@ func click(g *gocui.Gui, v *gocui.View) error {
|
||||||
n := findUnderMouse()
|
n := findUnderMouse()
|
||||||
var w *guiWidget
|
var w *guiWidget
|
||||||
w = n.TK.(*guiWidget)
|
w = n.TK.(*guiWidget)
|
||||||
if n != nil {
|
if w != nil {
|
||||||
log.Log(NOW, "click() Found widget =", n.WidgetId, n.String(), ",", w.labelN)
|
log.Log(NOW, "click() Found widget =", w.node.WidgetId, w.String(), ",", w.labelN)
|
||||||
if n.String() == "DropBox" {
|
if w.String() == "DropBox" {
|
||||||
log.Log(NOW, "click() this is the dropdown menu. set a flag here what did I click? where is the mouse?")
|
log.Log(NOW, "click() this is the dropdown menu. set a flag here what did I click? where is the mouse?")
|
||||||
log.Log(NOW, "click() set a global dropdown clicked flag=true here")
|
log.Log(NOW, "click() set a global dropdown clicked flag=true here")
|
||||||
me.ddClicked = true
|
me.ddClicked = true
|
||||||
}
|
}
|
||||||
doWidgetClick(n)
|
w.doWidgetClick()
|
||||||
} else {
|
} else {
|
||||||
log.Log(NOW, "click() could not find node name =", v.Name())
|
log.Log(NOW, "click() could not find node name =", v.Name())
|
||||||
}
|
}
|
||||||
|
@ -381,7 +358,8 @@ func ctrlDown(g *gocui.Gui, v *gocui.View) error {
|
||||||
found = me.treeRoot
|
found = me.treeRoot
|
||||||
}
|
}
|
||||||
tk.labelN = found.String()
|
tk.labelN = found.String()
|
||||||
newR := realGocuiSize(found)
|
foundtk := found.TK.(*guiWidget)
|
||||||
|
newR := foundtk.realGocuiSize()
|
||||||
tk.gocuiSize.w0 = newR.w0
|
tk.gocuiSize.w0 = newR.w0
|
||||||
tk.gocuiSize.h0 = newR.h0
|
tk.gocuiSize.h0 = newR.h0
|
||||||
tk.gocuiSize.w1 = newR.w1
|
tk.gocuiSize.w1 = newR.w1
|
||||||
|
|
18
color.go
18
color.go
|
@ -6,7 +6,6 @@ import (
|
||||||
"github.com/awesome-gocui/gocui"
|
"github.com/awesome-gocui/gocui"
|
||||||
|
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
"go.wit.com/toolkits/tree"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//w.v.SelBgColor = gocui.ColorCyan
|
//w.v.SelBgColor = gocui.ColorCyan
|
||||||
|
@ -67,10 +66,7 @@ var colorNone colorT = colorT{none, none, none, none, none, "debug none"}
|
||||||
// TODO: maybe enough of us could actually do that if we made it a goal.
|
// TODO: maybe enough of us could actually do that if we made it a goal.
|
||||||
// TODO: start with riscv boards and fix it universally there
|
// TODO: start with riscv boards and fix it universally there
|
||||||
// TODO: so just a small little 'todo' item here
|
// TODO: so just a small little 'todo' item here
|
||||||
func setColor(n *tree.Node, newColor *colorT) {
|
func (tk *guiWidget) setColor(newColor *colorT) {
|
||||||
var tk *guiWidget
|
|
||||||
tk = n.TK.(*guiWidget)
|
|
||||||
|
|
||||||
if tk.color == newColor {
|
if tk.color == newColor {
|
||||||
// nothing to do since the colors have nto changed
|
// nothing to do since the colors have nto changed
|
||||||
return
|
return
|
||||||
|
@ -87,15 +83,11 @@ func setColor(n *tree.Node, newColor *colorT) {
|
||||||
tk.recreateView()
|
tk.recreateView()
|
||||||
}
|
}
|
||||||
|
|
||||||
func setDefaultWidgetColor(n *tree.Node) {
|
func (w *guiWidget) setDefaultWidgetColor() {
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
w.showView()
|
w.showView()
|
||||||
}
|
}
|
||||||
|
|
||||||
func setDefaultHighlight(n *tree.Node) {
|
func (w *guiWidget) setDefaultHighlight() {
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
if w.v == nil {
|
if w.v == nil {
|
||||||
log.Log(ERROR, "SetColor() failed on view == nil")
|
log.Log(ERROR, "SetColor() failed on view == nil")
|
||||||
return
|
return
|
||||||
|
@ -117,8 +109,8 @@ func (w *guiWidget) redoColor(draw bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Sleep(.05)
|
log.Sleep(.05)
|
||||||
setDefaultHighlight(w.node)
|
w.setDefaultHighlight()
|
||||||
setDefaultWidgetColor(w.node)
|
w.setDefaultWidgetColor()
|
||||||
|
|
||||||
for _, child := range w.children {
|
for _, child := range w.children {
|
||||||
child.redoColor(draw)
|
child.redoColor(draw)
|
||||||
|
|
72
place.go
72
place.go
|
@ -8,29 +8,26 @@ import (
|
||||||
"go.wit.com/widget"
|
"go.wit.com/widget"
|
||||||
)
|
)
|
||||||
|
|
||||||
func placeBox(n *tree.Node, startW int, startH int) {
|
func (tk *guiWidget) placeBox(startW int, startH int) {
|
||||||
var tk *guiWidget
|
if tk.WidgetType != widget.Box {
|
||||||
tk = n.TK.(*guiWidget)
|
|
||||||
|
|
||||||
if n.WidgetType != widget.Box {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
showWidgetPlacement(n, true, "boxS()")
|
tk.showWidgetPlacement(true, "boxS()")
|
||||||
|
|
||||||
newW := startW
|
newW := startW
|
||||||
newH := startH
|
newH := startH
|
||||||
for _, child := range tk.children {
|
for _, child := range tk.children {
|
||||||
placeWidgets(child.node, newW, newH)
|
child.placeWidgets(newW, newH)
|
||||||
// n.showWidgetPlacement(logNow, "boxS()")
|
// n.showWidgetPlacement(logNow, "boxS()")
|
||||||
newR := realGocuiSize(child.node)
|
newR := child.realGocuiSize()
|
||||||
w := newR.w1 - newR.w0
|
w := newR.w1 - newR.w0
|
||||||
h := newR.h1 - newR.h0
|
h := newR.h1 - newR.h0
|
||||||
if child.direction == widget.Horizontal {
|
if child.direction == widget.Horizontal {
|
||||||
log.Log(NOW, "BOX IS HORIZONTAL", n.String(), "newWH()", newW, newH, "child()", w, h, child.String())
|
log.Log(NOW, "BOX IS HORIZONTAL", tk.String(), "newWH()", newW, newH, "child()", w, h, child.String())
|
||||||
// expand based on the child width
|
// expand based on the child width
|
||||||
newW += w
|
newW += w
|
||||||
} else {
|
} else {
|
||||||
log.Log(NOW, "BOX IS VERTICAL ", n.String(), "newWH()", newW, newH, "child()", w, h, child.String())
|
log.Log(NOW, "BOX IS VERTICAL ", tk.String(), "newWH()", newW, newH, "child()", w, h, child.String())
|
||||||
// expand based on the child height
|
// expand based on the child height
|
||||||
newH += h
|
newH += h
|
||||||
}
|
}
|
||||||
|
@ -39,46 +36,43 @@ func placeBox(n *tree.Node, startW int, startH int) {
|
||||||
// just compute this every time?
|
// just compute this every time?
|
||||||
// newR := n.realGocuiSize()
|
// newR := n.realGocuiSize()
|
||||||
|
|
||||||
showWidgetPlacement(n, true, "boxE()")
|
tk.showWidgetPlacement(true, "boxE()")
|
||||||
}
|
}
|
||||||
|
|
||||||
func placeWidgets(n *tree.Node, startW int, startH int) {
|
func (tk *guiWidget) placeWidgets(startW int, startH int) {
|
||||||
if n == nil {
|
if tk == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if me.treeRoot == nil {
|
if me.treeRoot == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var tk *guiWidget
|
switch tk.WidgetType {
|
||||||
tk = n.TK.(*guiWidget)
|
|
||||||
|
|
||||||
switch n.WidgetType {
|
|
||||||
case widget.Window:
|
case widget.Window:
|
||||||
for _, child := range tk.children {
|
for _, child := range tk.children {
|
||||||
placeWidgets(child.node, me.RawW, me.RawH)
|
child.placeWidgets(me.RawW, me.RawH)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case widget.Tab:
|
case widget.Tab:
|
||||||
for _, child := range tk.children {
|
for _, child := range tk.children {
|
||||||
placeWidgets(child.node, me.RawW, me.RawH)
|
child.placeWidgets(me.RawW, me.RawH)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case widget.Grid:
|
case widget.Grid:
|
||||||
placeGrid(n, startW, startH)
|
tk.placeGrid(startW, startH)
|
||||||
case widget.Box:
|
case widget.Box:
|
||||||
placeBox(n, startW, startH)
|
tk.placeBox(startW, startH)
|
||||||
case widget.Group:
|
case widget.Group:
|
||||||
// move the group to the parent's next location
|
// move the group to the parent's next location
|
||||||
tk.gocuiSetWH(startW, startH)
|
tk.gocuiSetWH(startW, startH)
|
||||||
showWidgetPlacement(n, true, "group()")
|
tk.showWidgetPlacement(true, "group()")
|
||||||
|
|
||||||
newW := startW + me.GroupPadW
|
newW := startW + me.GroupPadW
|
||||||
newH := startH + 3 // normal hight of the group label
|
newH := startH + 3 // normal hight of the group label
|
||||||
// now move all the children aka: run place() on them
|
// now move all the children aka: run place() on them
|
||||||
for _, child := range tk.children {
|
for _, child := range tk.children {
|
||||||
placeWidgets(child.node, newW, newH)
|
child.placeWidgets(newW, newH)
|
||||||
newR := realGocuiSize(child.node)
|
newR := child.realGocuiSize()
|
||||||
// w := newR.w1 - newR.w0
|
// w := newR.w1 - newR.w0
|
||||||
h := newR.h1 - newR.h0
|
h := newR.h1 - newR.h0
|
||||||
|
|
||||||
|
@ -91,17 +85,15 @@ func placeWidgets(n *tree.Node, startW int, startH int) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func placeGrid(n *tree.Node, startW int, startH int) {
|
func (w *guiWidget) placeGrid(startW int, startH int) {
|
||||||
var w *guiWidget
|
w.showWidgetPlacement(true, "grid0:")
|
||||||
w = n.TK.(*guiWidget)
|
if w.WidgetType != widget.Grid {
|
||||||
showWidgetPlacement(n, true, "grid0:")
|
|
||||||
if n.WidgetType != widget.Grid {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// first compute the max sizes of the rows and columns
|
// first compute the max sizes of the rows and columns
|
||||||
for _, child := range w.children {
|
for _, child := range w.children {
|
||||||
newR := realGocuiSize(child.node)
|
newR := child.realGocuiSize()
|
||||||
childW := newR.w1 - newR.w0
|
childW := newR.w1 - newR.w0
|
||||||
childH := newR.h1 - newR.h0
|
childH := newR.h1 - newR.h0
|
||||||
|
|
||||||
|
@ -118,7 +110,7 @@ func placeGrid(n *tree.Node, startW int, startH int) {
|
||||||
|
|
||||||
// find the width and height offset of the grid for AtW,AtH
|
// find the width and height offset of the grid for AtW,AtH
|
||||||
for _, child := range w.children {
|
for _, child := range w.children {
|
||||||
showWidgetPlacement(w.node, true, "grid1:")
|
child.showWidgetPlacement(true, "grid1:")
|
||||||
|
|
||||||
var totalW, totalH int
|
var totalW, totalH int
|
||||||
for i, w := range w.widths {
|
for i, w := range w.widths {
|
||||||
|
@ -137,15 +129,15 @@ func placeGrid(n *tree.Node, startW int, startH int) {
|
||||||
newH := startH + totalH
|
newH := startH + totalH
|
||||||
|
|
||||||
log.Log(INFO, "placeGrid:", child.String(), "new()", newW, newH, "At()", child.AtW, child.AtH)
|
log.Log(INFO, "placeGrid:", child.String(), "new()", newW, newH, "At()", child.AtW, child.AtH)
|
||||||
placeWidgets(child.node, newW, newH)
|
child.placeWidgets(newW, newH)
|
||||||
showWidgetPlacement(child.node, true, "grid2:")
|
child.showWidgetPlacement(true, "grid2:")
|
||||||
}
|
}
|
||||||
showWidgetPlacement(n, true, "grid3:")
|
w.showWidgetPlacement(true, "grid3:")
|
||||||
}
|
}
|
||||||
|
|
||||||
// computes the real, actual size of all the gocli objects in a widget
|
// computes the real, actual size of all the gocli objects in a widget
|
||||||
func realGocuiSize(n *tree.Node) *rectType {
|
func (w *guiWidget) realGocuiSize() *rectType {
|
||||||
var f func(n *tree.Node, r *rectType)
|
var f func(tk *guiWidget, r *rectType)
|
||||||
newR := new(rectType)
|
newR := new(rectType)
|
||||||
// initialize the values to opposite
|
// initialize the values to opposite
|
||||||
newR.w0 = 80
|
newR.w0 = 80
|
||||||
|
@ -159,9 +151,7 @@ func realGocuiSize(n *tree.Node) *rectType {
|
||||||
newR.h1 = 0
|
newR.h1 = 0
|
||||||
|
|
||||||
// expand the rectangle to the biggest thing displayed
|
// expand the rectangle to the biggest thing displayed
|
||||||
f = func(n *tree.Node, r *rectType) {
|
f = func(tk *guiWidget, r *rectType) {
|
||||||
var tk *guiWidget
|
|
||||||
tk = n.TK.(*guiWidget)
|
|
||||||
newR := tk.gocuiSize
|
newR := tk.gocuiSize
|
||||||
if !tk.isFake {
|
if !tk.isFake {
|
||||||
if r.w0 > newR.w0 {
|
if r.w0 > newR.w0 {
|
||||||
|
@ -178,10 +168,10 @@ func realGocuiSize(n *tree.Node) *rectType {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, child := range tk.children {
|
for _, child := range tk.children {
|
||||||
f(child.node, r)
|
f(child, r)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f(n, newR)
|
f(w, newR)
|
||||||
return newR
|
return newR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
35
widget.go
35
widget.go
|
@ -72,27 +72,6 @@ func (w *guiWidget) deleteView() {
|
||||||
w.v = nil
|
w.v = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
// searches the binary tree for a WidgetId
|
|
||||||
func findWidgetName(n *tree.Node, name string) *node {
|
|
||||||
if n == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if n.tk.cuiName == name {
|
|
||||||
return n
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, child := range n.children {
|
|
||||||
newN := child.findWidgetName(name)
|
|
||||||
if newN != nil {
|
|
||||||
return newN
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
func (w *guiWidget) IsCurrent() bool {
|
func (w *guiWidget) IsCurrent() bool {
|
||||||
if w.node.WidgetType == widget.Tab {
|
if w.node.WidgetType == widget.Tab {
|
||||||
return w.isCurrent
|
return w.isCurrent
|
||||||
|
@ -120,20 +99,6 @@ func (tk *guiWidget) Visible() bool {
|
||||||
return tk.v.Visible
|
return tk.v.Visible
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
func Visible(n *tree.Node) bool {
|
|
||||||
if n == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if n.TK == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
var w *guiWidget
|
|
||||||
w = n.TK.(*guiWidget)
|
|
||||||
return w.Visible()
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
func (w *guiWidget) SetVisible(b bool) {
|
func (w *guiWidget) SetVisible(b bool) {
|
||||||
if w.v == nil {
|
if w.v == nil {
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue