move code to better homes
This commit is contained in:
parent
6a0fd773f4
commit
f1eefc9a06
|
@ -27,7 +27,7 @@ func (tk *guiWidget) doWidgetClick(w int, h int) {
|
|||
me.currentWindow.isCurrent = true
|
||||
tk.active = false
|
||||
|
||||
tk.redrawWindow(w, h)
|
||||
tk.redrawWindow(w-2, h-2) // TODO: fix these hard coded things with offsets
|
||||
return
|
||||
case widget.Group:
|
||||
if tk.active {
|
||||
|
|
|
@ -93,7 +93,7 @@ func (tk *guiWidget) moveNew() {
|
|||
w, h := me.baseGui.MousePosition()
|
||||
if tk.node.WidgetType == widget.Window {
|
||||
tk.DrawAt(w, h)
|
||||
tk.redrawWindow(w, h)
|
||||
tk.redrawWindow(w-2, h-2) // TODO: fix these hard coded things with offsets
|
||||
// tk.dumpWidget(fmt.Sprintf("move(%dx%d) %s WIN", w, h, tk.cuiName))
|
||||
return
|
||||
}
|
||||
|
|
203
find.go
203
find.go
|
@ -4,8 +4,6 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/awesome-gocui/gocui"
|
||||
"go.wit.com/widget"
|
||||
)
|
||||
|
@ -93,207 +91,6 @@ func (tk *guiWidget) findWindows() []*guiWidget {
|
|||
return found
|
||||
}
|
||||
|
||||
/*
|
||||
var wtf bool
|
||||
|
||||
func (tk *guiWidget) verifyRect() bool {
|
||||
if !tk.Visible() {
|
||||
// log.Info("verifyRect() tk is not visible", tk.cuiName)
|
||||
return false
|
||||
}
|
||||
vw0, vh0, vw1, vh1, err := me.baseGui.ViewPosition(tk.cuiName)
|
||||
if err != nil {
|
||||
// log.Printf("verifyRect() gocui err=%v cuiName=%s v.Name=%s", err, tk.cuiName, tk.v.Name())
|
||||
vw0, vh0, vw1, vh1, err = me.baseGui.ViewPosition(tk.v.Name())
|
||||
if err != nil {
|
||||
log.Printf("verifyRect() ACTUAL FAIL gocui err=%v cuiName=%s v.Name=%s", err, tk.cuiName, tk.v.Name())
|
||||
return false
|
||||
}
|
||||
// return false
|
||||
}
|
||||
var ok bool = true
|
||||
if vw0 != tk.full.w0 {
|
||||
// log.Info("verifyRect() FIXING w0", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.w0, "w0 =", vw0)
|
||||
tk.full.w0 = vw0
|
||||
ok = false
|
||||
}
|
||||
if vw1 != tk.full.w1 {
|
||||
// log.Info("verifyRect() FIXING w1", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.w1, "w1 =", vw1)
|
||||
tk.full.w1 = vw1
|
||||
ok = false
|
||||
}
|
||||
if vh0 != tk.full.h0 {
|
||||
// log.Info("verifyRect() FIXING h0", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.h0)
|
||||
tk.full.h0 = vh0
|
||||
ok = false
|
||||
}
|
||||
if vh1 != tk.full.h1 {
|
||||
// log.Info("verifyRect() FIXING h1", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.h1)
|
||||
tk.full.h1 = vh1
|
||||
ok = false
|
||||
}
|
||||
if !ok {
|
||||
// log.Info("verifyRect() NEED TO FIX RECT HERE", tk.cuiName)
|
||||
// tk.dumpWidget("verifyRect() FIXME")
|
||||
}
|
||||
// log.Printf("verifyRect() OK cuiName=%s v.Name=%s", tk.cuiName, tk.v.Name())
|
||||
return true
|
||||
}
|
||||
*/
|
||||
|
||||
func (tk *guiWidget) setFullSize() bool {
|
||||
r := tk.getFullSize()
|
||||
|
||||
var changed bool
|
||||
if tk.full.w0 != r.w0 {
|
||||
tk.full.w0 = r.w0
|
||||
changed = true
|
||||
}
|
||||
if tk.full.w1 != r.w1 {
|
||||
tk.full.w1 = r.w1
|
||||
changed = true
|
||||
}
|
||||
if tk.full.h0 != r.h0 {
|
||||
tk.full.h0 = r.h0
|
||||
changed = true
|
||||
}
|
||||
if tk.full.h1 != r.h1 {
|
||||
tk.full.h1 = r.h1
|
||||
changed = true
|
||||
}
|
||||
if changed {
|
||||
tk.dumpWidget(fmt.Sprintf("setFullSize(changed)"))
|
||||
}
|
||||
return changed
|
||||
}
|
||||
|
||||
func (tk *guiWidget) gridFullSize() rectType {
|
||||
var r rectType
|
||||
var first bool = true
|
||||
for _, child := range tk.children {
|
||||
cr := child.getFullSize()
|
||||
if cr.Width() == 0 && cr.Height() == 0 {
|
||||
// ignore widgets of zero size?
|
||||
continue
|
||||
}
|
||||
if first {
|
||||
// use the lowest width and hight from children widgets
|
||||
r.w0 = cr.w0
|
||||
r.h0 = cr.h0
|
||||
r.w1 = cr.w1
|
||||
r.h1 = cr.h1
|
||||
first = false
|
||||
// child.dumpWidget(fmt.Sprintf("grid(f)"))
|
||||
continue
|
||||
}
|
||||
// child.dumpWidget(fmt.Sprintf("grid()"))
|
||||
// use the lowest width and hight from children widgets
|
||||
if r.w0 > cr.w0 {
|
||||
r.w0 = cr.w0
|
||||
}
|
||||
if r.h0 > cr.h0 {
|
||||
r.h0 = cr.h0
|
||||
}
|
||||
// use the highest width and hight from children widgets
|
||||
if r.w1 < cr.w1 {
|
||||
r.w1 = cr.w1
|
||||
}
|
||||
if r.h1 < cr.h1 {
|
||||
r.h1 = cr.h1
|
||||
}
|
||||
}
|
||||
tk.full.w0 = r.w0
|
||||
tk.full.w1 = r.w1
|
||||
tk.full.h0 = r.h0
|
||||
tk.full.h1 = r.h1
|
||||
return r
|
||||
}
|
||||
|
||||
func (tk *guiWidget) buttonFullSize() rectType {
|
||||
var r rectType
|
||||
r.w0 = tk.gocuiSize.w0
|
||||
r.w1 = tk.gocuiSize.w1
|
||||
r.h0 = tk.gocuiSize.h0
|
||||
r.h1 = tk.gocuiSize.h1
|
||||
|
||||
// try setting the full values here ? is this right?
|
||||
tk.full.w0 = r.w0
|
||||
tk.full.w1 = r.w1
|
||||
tk.full.h0 = r.h0
|
||||
tk.full.h1 = r.h1
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
// this checks a widget to see if it is under (W,H), then checks the widget's children
|
||||
// anything that matches is passed back as an array of widgets
|
||||
func (tk *guiWidget) getFullSize() rectType {
|
||||
var r rectType
|
||||
|
||||
if tk.node.WidgetType == widget.Grid {
|
||||
return tk.gridFullSize()
|
||||
}
|
||||
|
||||
// these are 'simple' widgets
|
||||
// the full size is exactly what gocui uses
|
||||
switch tk.node.WidgetType {
|
||||
case widget.Label:
|
||||
return tk.buttonFullSize()
|
||||
case widget.Button:
|
||||
return tk.buttonFullSize()
|
||||
case widget.Checkbox:
|
||||
return tk.buttonFullSize()
|
||||
case widget.Dropdown:
|
||||
return tk.buttonFullSize()
|
||||
default:
|
||||
}
|
||||
|
||||
if tk.v == nil {
|
||||
r.w0 = tk.full.w0
|
||||
r.w1 = tk.full.w1
|
||||
r.h0 = tk.full.h0
|
||||
r.h1 = tk.full.h1
|
||||
} else {
|
||||
r.w0 = tk.gocuiSize.w0
|
||||
r.w1 = tk.gocuiSize.w1
|
||||
r.h0 = tk.gocuiSize.h0
|
||||
r.h1 = tk.gocuiSize.h1
|
||||
}
|
||||
|
||||
// search through the children widgets in the binary tree
|
||||
for _, child := range tk.children {
|
||||
cr := child.getFullSize()
|
||||
/* this didn't make things work either
|
||||
if child.v == nil {
|
||||
continue
|
||||
}
|
||||
*/
|
||||
// use the lowest width and hight from children widgets
|
||||
if r.w0 > cr.w0 {
|
||||
r.w0 = cr.w0
|
||||
}
|
||||
if r.h0 > cr.h0 {
|
||||
r.h0 = cr.h0
|
||||
}
|
||||
// use the highest width and hight from children widgets
|
||||
if r.w1 < cr.w1 {
|
||||
r.w1 = cr.w1
|
||||
}
|
||||
if r.h1 < cr.h1 {
|
||||
r.h1 = cr.h1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// try setting the full values here ? is this right?
|
||||
tk.full.w0 = r.w0
|
||||
tk.full.w1 = r.w1
|
||||
tk.full.h0 = r.h0
|
||||
tk.full.h1 = r.h1
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
// returns the "highest priority widget under the mouse
|
||||
func findUnderMouse() *guiWidget {
|
||||
w, h := me.baseGui.MousePosition()
|
||||
|
|
203
size.go
203
size.go
|
@ -4,6 +4,8 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"go.wit.com/widget"
|
||||
)
|
||||
|
||||
|
@ -133,3 +135,204 @@ func (w *guiWidget) sizeBox() (int, int) {
|
|||
}
|
||||
return maxW + me.BoxPadW, maxH
|
||||
}
|
||||
|
||||
/*
|
||||
var wtf bool
|
||||
|
||||
func (tk *guiWidget) verifyRect() bool {
|
||||
if !tk.Visible() {
|
||||
// log.Info("verifyRect() tk is not visible", tk.cuiName)
|
||||
return false
|
||||
}
|
||||
vw0, vh0, vw1, vh1, err := me.baseGui.ViewPosition(tk.cuiName)
|
||||
if err != nil {
|
||||
// log.Printf("verifyRect() gocui err=%v cuiName=%s v.Name=%s", err, tk.cuiName, tk.v.Name())
|
||||
vw0, vh0, vw1, vh1, err = me.baseGui.ViewPosition(tk.v.Name())
|
||||
if err != nil {
|
||||
log.Printf("verifyRect() ACTUAL FAIL gocui err=%v cuiName=%s v.Name=%s", err, tk.cuiName, tk.v.Name())
|
||||
return false
|
||||
}
|
||||
// return false
|
||||
}
|
||||
var ok bool = true
|
||||
if vw0 != tk.full.w0 {
|
||||
// log.Info("verifyRect() FIXING w0", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.w0, "w0 =", vw0)
|
||||
tk.full.w0 = vw0
|
||||
ok = false
|
||||
}
|
||||
if vw1 != tk.full.w1 {
|
||||
// log.Info("verifyRect() FIXING w1", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.w1, "w1 =", vw1)
|
||||
tk.full.w1 = vw1
|
||||
ok = false
|
||||
}
|
||||
if vh0 != tk.full.h0 {
|
||||
// log.Info("verifyRect() FIXING h0", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.h0)
|
||||
tk.full.h0 = vh0
|
||||
ok = false
|
||||
}
|
||||
if vh1 != tk.full.h1 {
|
||||
// log.Info("verifyRect() FIXING h1", tk.cuiName, vw0, vw1, vh0, vh1, tk.gocuiSize.h1)
|
||||
tk.full.h1 = vh1
|
||||
ok = false
|
||||
}
|
||||
if !ok {
|
||||
// log.Info("verifyRect() NEED TO FIX RECT HERE", tk.cuiName)
|
||||
// tk.dumpWidget("verifyRect() FIXME")
|
||||
}
|
||||
// log.Printf("verifyRect() OK cuiName=%s v.Name=%s", tk.cuiName, tk.v.Name())
|
||||
return true
|
||||
}
|
||||
*/
|
||||
|
||||
func (tk *guiWidget) setFullSize() bool {
|
||||
r := tk.getFullSize()
|
||||
|
||||
var changed bool
|
||||
if tk.full.w0 != r.w0 {
|
||||
tk.full.w0 = r.w0
|
||||
changed = true
|
||||
}
|
||||
if tk.full.w1 != r.w1 {
|
||||
tk.full.w1 = r.w1
|
||||
changed = true
|
||||
}
|
||||
if tk.full.h0 != r.h0 {
|
||||
tk.full.h0 = r.h0
|
||||
changed = true
|
||||
}
|
||||
if tk.full.h1 != r.h1 {
|
||||
tk.full.h1 = r.h1
|
||||
changed = true
|
||||
}
|
||||
if changed {
|
||||
tk.dumpWidget(fmt.Sprintf("setFullSize(changed)"))
|
||||
}
|
||||
return changed
|
||||
}
|
||||
|
||||
func (tk *guiWidget) gridFullSize() rectType {
|
||||
var r rectType
|
||||
var first bool = true
|
||||
for _, child := range tk.children {
|
||||
cr := child.getFullSize()
|
||||
if cr.Width() == 0 && cr.Height() == 0 {
|
||||
// ignore widgets of zero size?
|
||||
continue
|
||||
}
|
||||
if first {
|
||||
// use the lowest width and hight from children widgets
|
||||
r.w0 = cr.w0
|
||||
r.h0 = cr.h0
|
||||
r.w1 = cr.w1
|
||||
r.h1 = cr.h1
|
||||
first = false
|
||||
// child.dumpWidget(fmt.Sprintf("grid(f)"))
|
||||
continue
|
||||
}
|
||||
// child.dumpWidget(fmt.Sprintf("grid()"))
|
||||
// use the lowest width and hight from children widgets
|
||||
if r.w0 > cr.w0 {
|
||||
r.w0 = cr.w0
|
||||
}
|
||||
if r.h0 > cr.h0 {
|
||||
r.h0 = cr.h0
|
||||
}
|
||||
// use the highest width and hight from children widgets
|
||||
if r.w1 < cr.w1 {
|
||||
r.w1 = cr.w1
|
||||
}
|
||||
if r.h1 < cr.h1 {
|
||||
r.h1 = cr.h1
|
||||
}
|
||||
}
|
||||
tk.full.w0 = r.w0
|
||||
tk.full.w1 = r.w1
|
||||
tk.full.h0 = r.h0
|
||||
tk.full.h1 = r.h1
|
||||
return r
|
||||
}
|
||||
|
||||
func (tk *guiWidget) buttonFullSize() rectType {
|
||||
var r rectType
|
||||
r.w0 = tk.gocuiSize.w0
|
||||
r.w1 = tk.gocuiSize.w1
|
||||
r.h0 = tk.gocuiSize.h0
|
||||
r.h1 = tk.gocuiSize.h1
|
||||
|
||||
// try setting the full values here ? is this right?
|
||||
tk.full.w0 = r.w0
|
||||
tk.full.w1 = r.w1
|
||||
tk.full.h0 = r.h0
|
||||
tk.full.h1 = r.h1
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
// this checks a widget to see if it is under (W,H), then checks the widget's children
|
||||
// anything that matches is passed back as an array of widgets
|
||||
func (tk *guiWidget) getFullSize() rectType {
|
||||
var r rectType
|
||||
|
||||
if tk.node.WidgetType == widget.Grid {
|
||||
return tk.gridFullSize()
|
||||
}
|
||||
|
||||
// these are 'simple' widgets
|
||||
// the full size is exactly what gocui uses
|
||||
switch tk.node.WidgetType {
|
||||
case widget.Label:
|
||||
return tk.buttonFullSize()
|
||||
case widget.Button:
|
||||
return tk.buttonFullSize()
|
||||
case widget.Checkbox:
|
||||
return tk.buttonFullSize()
|
||||
case widget.Dropdown:
|
||||
return tk.buttonFullSize()
|
||||
default:
|
||||
}
|
||||
|
||||
if tk.v == nil {
|
||||
r.w0 = tk.full.w0
|
||||
r.w1 = tk.full.w1
|
||||
r.h0 = tk.full.h0
|
||||
r.h1 = tk.full.h1
|
||||
} else {
|
||||
r.w0 = tk.gocuiSize.w0
|
||||
r.w1 = tk.gocuiSize.w1
|
||||
r.h0 = tk.gocuiSize.h0
|
||||
r.h1 = tk.gocuiSize.h1
|
||||
}
|
||||
|
||||
// search through the children widgets in the binary tree
|
||||
for _, child := range tk.children {
|
||||
cr := child.getFullSize()
|
||||
/* this didn't make things work either
|
||||
if child.v == nil {
|
||||
continue
|
||||
}
|
||||
*/
|
||||
// use the lowest width and hight from children widgets
|
||||
if r.w0 > cr.w0 {
|
||||
r.w0 = cr.w0
|
||||
}
|
||||
if r.h0 > cr.h0 {
|
||||
r.h0 = cr.h0
|
||||
}
|
||||
// use the highest width and hight from children widgets
|
||||
if r.w1 < cr.w1 {
|
||||
r.w1 = cr.w1
|
||||
}
|
||||
if r.h1 < cr.h1 {
|
||||
r.h1 = cr.h1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// try setting the full values here ? is this right?
|
||||
tk.full.w0 = r.w0
|
||||
tk.full.w1 = r.w1
|
||||
tk.full.h0 = r.h0
|
||||
tk.full.h1 = r.h1
|
||||
|
||||
return r
|
||||
}
|
||||
|
|
|
@ -110,6 +110,7 @@ type guiWidget struct {
|
|||
defaultColor *colorT // store the color to go back to
|
||||
gocuiSize rectType // should mirror the real display size. todo: verify these are accurate. they are not yet
|
||||
full rectType // full size of children (used by widget.Window, etc)
|
||||
force rectType // force widget within these boundries (using this to debug window dragging)
|
||||
startW int // ?
|
||||
startH int // ?
|
||||
isCurrent bool // is this the currently displayed Window or Tab?
|
||||
|
|
15
window.go
15
window.go
|
@ -13,8 +13,13 @@ func (tk *guiWidget) redrawWindow(w int, h int) {
|
|||
if tk.node.WidgetType != widget.Window {
|
||||
return
|
||||
}
|
||||
tk.gocuiSize.w0 = w - 2
|
||||
tk.gocuiSize.h0 = h - 1
|
||||
// pin the window to (w,h)
|
||||
tk.gocuiSize.w0 = w
|
||||
tk.gocuiSize.h0 = h
|
||||
tk.force.w0 = w
|
||||
tk.force.w1 = w
|
||||
tk.force.h0 = h
|
||||
tk.force.h1 = h
|
||||
|
||||
tk.setFullSize() // might make the green box the right size
|
||||
|
||||
|
@ -34,14 +39,12 @@ func (tk *guiWidget) redrawWindow(w int, h int) {
|
|||
// re-draws the buttons for each of the windows
|
||||
func redoWindows(nextW int, nextH int) {
|
||||
for _, win := range findWindows() {
|
||||
win.gocuiSize.w0 = nextW
|
||||
win.gocuiSize.h0 = nextH
|
||||
|
||||
win.dumpWidget(fmt.Sprintf("redoWindowsS (%d,%d)", nextW, nextH))
|
||||
win.redrawWindow(nextW, nextH)
|
||||
win.dumpWidget(fmt.Sprintf("redoWindowsE (%d,%d)", nextW, nextH))
|
||||
|
||||
// increment the width for the next window
|
||||
nextW += win.gocuiSize.Width() + 4
|
||||
nextW += 40
|
||||
nextH += 10
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue