gocui: hmm. trying to reformat the layout

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2023-04-25 22:24:45 -05:00
parent 816ee16b67
commit 092ac51f5e
7 changed files with 62 additions and 53 deletions

View File

@ -5,21 +5,24 @@ import (
"git.wit.org/wit/gui/toolkit"
)
// TODO: make these defaults in config struct definition
var fakeStartWidth int = 40
var fakeStartHeight int = 3
func (w *cuiWidget) setFake() {
w.isFake = true
t := len(w.name)
// setup fake labels for non-visable things off screen
w.realWidth = t + 2
w.realHeight = me.defaultHeight
w.gocuiSize.width = t + 2
w.gocuiSize.height = me.defaultHeight
w.gocuiSize.width = t + me.PadW
w.gocuiSize.height = me.DefaultHeight + me.PadH
w.gocuiSize.w0 = fakeStartWidth
w.gocuiSize.h0 = fakeStartHeight
fakeStartHeight += 3
w.realWidth = w.gocuiSize.width + me.FramePadW
w.realHeight = w.gocuiSize.height + me.FramePadH
fakeStartHeight += w.realHeight
// TODO: use the actual max hight of the terminal window
if (fakeStartHeight > 24) {
fakeStartHeight = 3
fakeStartWidth += 20
@ -64,11 +67,11 @@ func (w *cuiWidget) addWidget() {
return
case toolkit.Group:
w.startW = w.parent.startW + 4
w.startH = w.parent.startH + 3
w.startH = w.parent.startH + me.DefaultHeight + me.FramePadH
t := len(w.text)
w.gocuiSize.width = t + me.buttonPadding
w.gocuiSize.height = me.defaultHeight
w.gocuiSize.width = t + me.FramePadW
w.gocuiSize.height = me.DefaultHeight + me.FramePadH
return
default:
w.startW = w.parent.startW

View File

@ -22,9 +22,9 @@ func makeWidget(a *toolkit.Action) *cuiWidget {
t := len(w.text)
w.realWidth = t + me.buttonPadding
w.realHeight = me.defaultHeight
w.realHeight = me.DefaultHeight
w.gocuiSize.width = t + me.buttonPadding
w.gocuiSize.height = me.defaultHeight
w.gocuiSize.height = me.DefaultHeight
w.widgetType = a.WidgetType
w.id = a.WidgetId
@ -33,6 +33,11 @@ func makeWidget(a *toolkit.Action) *cuiWidget {
// set the gocui view.Frame = true by default
w.frame = true
if (w.frame) {
w.realHeight += me.FramePadH
w.gocuiSize.height += me.FramePadH
}
if w.widgetType == toolkit.Root {
log(logInfo, "setupWidget() FOUND ROOT w.id =", w.id, "w.parent", w.parent, "ParentId =", a.ParentId)
w.id = 0

View File

@ -15,19 +15,15 @@ func init() {
log(logInfo, "Init() of awesome-gocui")
Set(&me, "default")
me.groupPadding = 4
me.buttonPadding = 3
// the raw beginning of each window (or tab)
me.rawW = 7
me.rawH = 3
// me.groupPadding = 4
// me.buttonPadding = 3
// todo, remove all of these
me.defaultWidth = 10
me.defaultHeight = 2 // this means by default one line of text in a button
// me.defaultWidth = 10
// me.defaultHeight = 2 // this means by default one line of text in a button
me.horizontalPadding = 20
me.horizontalPadding = 20
// me.horizontalPadding = 20
// me.horizontalPadding = 20
// todo, remove all of these
me.pluginChan = make(chan toolkit.Action)

View File

@ -88,10 +88,10 @@ func (w *cuiWidget) placeWidgets() {
switch w.widgetType {
case toolkit.Window:
for _, child := range w.children {
w.startW = me.rawW
w.startH = me.rawH
w.nextW = me.rawW
w.nextH = me.rawH
w.startW = me.RawW
w.startH = me.RawH
w.nextW = me.RawW
w.nextH = me.RawH
w.showWidgetPlacement(logNow, "place()")
child.placeWidgets()
if (w.realWidth < child.realWidth) {
@ -104,10 +104,10 @@ func (w *cuiWidget) placeWidgets() {
}
case toolkit.Tab:
for _, child := range w.children {
w.startW = me.rawW
w.startH = me.rawH
w.nextW = me.rawW
w.nextH = me.rawH
w.startW = me.RawW
w.startH = me.RawH
w.nextW = me.RawW
w.nextH = me.RawH
w.showWidgetPlacement(logNow, "place()")
child.placeWidgets()
if (w.realWidth < child.realWidth) {

View File

@ -35,18 +35,30 @@ type config struct {
helpLabel *gocui.View
DefaultBehavior bool `default:"true"`
defaultWidth int
defaultHeight int
// nextW int // where the next window or tab flag should go
// the amount to put between winodw tab widgets
TabPadW int `default:"4" dense:"2"`
// PadH int `default:"3" dense:"2"`
// Buttons, Group, Tabs, Windows, etc are by default assumed to be a single line
// as a default, we make buttons 8 chars wide
DefaultWidth int `default:"8"`
DefaultHeight int `default:"1"`
// When the widget has a frame, like a button, it adds 2 lines runes on each side
// so you need 3 char spacing in each direction to not have them overlap
// the amount of padding when there is a frame
FramePadW int `default:"4" dense:"0"`
FramePadH int `default:"1" dense:"0"`
PadW int `default:"1" dense:"0"`
PadH int `default:"1" dense:"0"`
// additional amount of space to put between window & tab widgets
TabPadW int `default:"2" dense:"0"`
// additional amount of space to indent on a group
GroupPadW int `default:"6" dense:"2"`
// the raw beginning of each window (or tab)
rawW int `default:"7"`
JWC int `default:"7"`
rawH int `default:"3"`
RawW int `default:"7"`
RawH int `default:"3"`
bookshelf bool // do you want things arranged in the box like a bookshelf or a stack?
canvas bool // if set to true, the windows are a raw canvas
@ -55,8 +67,8 @@ type config struct {
padded bool // add space between things like buttons
margin bool // add space around the frames of windows
horizontalPadding int
groupPadding int `default:"6" dense:"2"` // this is supposed to be how far to indent to the left
// horizontalPadding int
// groupPadding int `default:"6" dense:"2"` // this is supposed to be how far to indent to the left
buttonPadding int `default:"4" dense:"3"` // if 3, buttons slightly overlap
}

View File

@ -55,19 +55,17 @@ func (w *cuiWidget) showWidgets() {
func (w *cuiWidget) setTabWH() {
// set the start and size of the tab gocui button
t := len(w.text)
w.gocuiSize.width = t + me.buttonPadding
w.gocuiSize.height = me.defaultHeight
w.gocuiSize.width = t + me.PadW
w.gocuiSize.height = me.DefaultHeight + me.PadH
w.gocuiSize.w0 = me.rootNode.nextW
w.gocuiSize.h0 = me.rootNode.nextH
w.realWidth = w.gocuiSize.width + me.FramePadW
w.realHeight = w.gocuiSize.height + me.FramePadH
// move the rootNode width over for the next window or tab
me.rootNode.nextW += w.gocuiSize.width + me.TabPadW
w.startW = me.rawW
w.startH = me.rawH
w.nextW = me.rawW
w.nextH = me.rawH
w.setWH()
w.showWidgetPlacement(logNow, "setTabWH:")
}
@ -83,11 +81,6 @@ func (w *cuiWidget) setLabel() {
// move the rootNode width over for the next window or tab
me.rootNode.nextW += w.gocuiSize.width
w.startW = me.rawW
w.startH = me.rawH
w.nextW = me.rawW
w.nextH = me.rawH
w.setWH()
w.showWidgetPlacement(logNow, "setLabel:")
}

View File

@ -30,8 +30,8 @@ func (w *cuiWidget) textResize() {
}
height = i
}
w.gocuiSize.width = width + 3
w.gocuiSize.height = me.defaultHeight + height
w.gocuiSize.width = width + me.FramePadW
w.gocuiSize.height = height + me.FramePadH
w.setWH()
w.showWidgetPlacement(logNow, "textResize()")
}