diff --git a/toolkit/gocui/add.go b/toolkit/gocui/add.go index 345b913..b58189e 100644 --- a/toolkit/gocui/add.go +++ b/toolkit/gocui/add.go @@ -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 diff --git a/toolkit/gocui/common.go b/toolkit/gocui/common.go index 1b0d61f..09c58f0 100644 --- a/toolkit/gocui/common.go +++ b/toolkit/gocui/common.go @@ -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 diff --git a/toolkit/gocui/main.go b/toolkit/gocui/main.go index 273da4b..f1a0106 100644 --- a/toolkit/gocui/main.go +++ b/toolkit/gocui/main.go @@ -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) diff --git a/toolkit/gocui/place.go b/toolkit/gocui/place.go index 9036771..2ff791a 100644 --- a/toolkit/gocui/place.go +++ b/toolkit/gocui/place.go @@ -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) { diff --git a/toolkit/gocui/structs.go b/toolkit/gocui/structs.go index 5eea138..78ca36d 100644 --- a/toolkit/gocui/structs.go +++ b/toolkit/gocui/structs.go @@ -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 } diff --git a/toolkit/gocui/tab.go b/toolkit/gocui/tab.go index 7e25545..18f6ec7 100644 --- a/toolkit/gocui/tab.go +++ b/toolkit/gocui/tab.go @@ -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:") } diff --git a/toolkit/gocui/view.go b/toolkit/gocui/view.go index 82d0594..bc5848f 100644 --- a/toolkit/gocui/view.go +++ b/toolkit/gocui/view.go @@ -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()") }