summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toolkit/gocui/add.go19
-rw-r--r--toolkit/gocui/common.go9
-rw-r--r--toolkit/gocui/main.go16
-rw-r--r--toolkit/gocui/place.go16
-rw-r--r--toolkit/gocui/structs.go34
-rw-r--r--toolkit/gocui/tab.go17
-rw-r--r--toolkit/gocui/view.go4
7 files changed, 62 insertions, 53 deletions
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()")
}