diff --git a/toolkit/gocui/click.go b/toolkit/gocui/click.go index 6df3278..795b13e 100644 --- a/toolkit/gocui/click.go +++ b/toolkit/gocui/click.go @@ -18,17 +18,20 @@ func (w *cuiWidget) doWidgetClick() { case toolkit.Flag: me.rootNode.redoColor(true) case toolkit.Window: + me.rootNode.hideWidgets() w.drawBox() - w.toggleTree() + w.showWidgets() case toolkit.Tab: + me.rootNode.hideWidgets() w.drawBox() - w.toggleTree() + w.showWidgets() case toolkit.Group: w.drawBox() w.toggleTree() case toolkit.Grid: + me.rootNode.hideWidgets() w.drawGrid() - w.toggleTree() + w.showWidgets() case toolkit.Box: // w.showWidgetPlacement(logNow, "drawTree()") if (w.horizontal) { @@ -139,9 +142,9 @@ func ctrlDown(g *gocui.Gui, v *gocui.View) error { f(me.rootNode) var t string for _, widget := range widgets { - log(logNow, "ctrlDown() FOUND widget", widget.id, widget.name) + // log(logNow, "ctrlDown() FOUND widget", widget.id, widget.name) t += widget.cuiName + " " + widget.name + "\n" - // widget.showWidgetPlacement(logNow, "drawTree()") + widget.showWidgetPlacement(logNow, "ctrlDown() FOUND") } t = strings.TrimSpace(t) if (me.ctrlDown == nil) { @@ -153,10 +156,11 @@ func ctrlDown(g *gocui.Gui, v *gocui.View) error { if (found == nil) { found = me.rootNode } - me.ctrlDown.gocuiSize.startW = found.gocuiSize.startW - me.ctrlDown.gocuiSize.startH = found.gocuiSize.startH - me.ctrlDown.gocuiSize.width = found.gocuiSize.startW - me.ctrlDown.gocuiSize.height = found.gocuiSize.startH + me.ctrlDown.gocuiSize.startW = found.startW + me.ctrlDown.gocuiSize.startH = found.startH + me.ctrlDown.gocuiSize.width = found.realWidth + me.ctrlDown.gocuiSize.height = found.realHeight + me.ctrlDown.setWH() if (me.ctrlDown.v == nil) { me.ctrlDown.text = found.text diff --git a/toolkit/gocui/main.go b/toolkit/gocui/main.go index 11df910..ab50237 100644 --- a/toolkit/gocui/main.go +++ b/toolkit/gocui/main.go @@ -11,12 +11,20 @@ import ( func Init() { log(logInfo, "Init() of awesome-gocui") me.defaultWidth = 10 - me.defaultHeight = 2 + me.defaultHeight = 2 // this means by default one line of text in a button me.defaultBehavior = true me.horizontalPadding = 20 - me.groupPadding = 2 - me.buttonPadding = 2 + me.horizontalPadding = 20 + me.groupPadding = 4 + me.buttonPadding = 3 + + // the raw beginning of each window (or tab) + me.rawW = 7 + me.rawH = 3 + + me.padW = 3 + me.padH = 3 } func Exit() { diff --git a/toolkit/gocui/structs.go b/toolkit/gocui/structs.go index 62a481f..106e719 100644 --- a/toolkit/gocui/structs.go +++ b/toolkit/gocui/structs.go @@ -31,7 +31,14 @@ type config struct { defaultBehavior bool defaultWidth int defaultHeight int - nextW int // where the next window or tab flag should go + // nextW int // where the next window or tab flag should go + + padW int + padH int + + // where the raw corner is + rawW int + rawH int 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 diff --git a/toolkit/gocui/tab.go b/toolkit/gocui/tab.go index d2e604c..7628333 100644 --- a/toolkit/gocui/tab.go +++ b/toolkit/gocui/tab.go @@ -42,7 +42,11 @@ func (w *cuiWidget) showFake() { } func (w *cuiWidget) showWidgets() { - w.drawView() + if (w.isFake) { + // don't display by default + } else { + w.drawView() + } for _, child := range w.children { child.showWidgets() } @@ -57,20 +61,25 @@ func (w *cuiWidget) setTabWH() { w.gocuiSize.startW = me.rootNode.startW w.gocuiSize.startH = me.rootNode.startH - w.startW = w.gocuiSize.startW + 2 - w.startH = w.gocuiSize.startH + 3 + w.startW = me.rawW + w.startH = me.rawH - for _, child := range me.rootNode.children { - if (child.isFake) { - continue - } - if (w == child) { - w.setWH() - w.showWidgetPlacement(logNow, "setTABWH:") + var f func (widget *cuiWidget) + + // find buttons that are below where the mouse button click + f = func(widget *cuiWidget) { + if (widget == w) { return } - w.gocuiSize.startW += child.realWidth + if ((widget.widgetType == toolkit.Window) || (widget.widgetType == toolkit.Tab)) { + w.gocuiSize.startW += widget.gocuiSize.width + me.padW + } + + for _, child := range widget.children { + f(child) + } } + f(me.rootNode) w.setWH() w.showWidgetPlacement(logNow, "setTabWH:")