summaryrefslogtreecommitdiff
path: root/toolkit/gocui/view.go
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/gocui/view.go')
-rw-r--r--toolkit/gocui/view.go132
1 files changed, 101 insertions, 31 deletions
diff --git a/toolkit/gocui/view.go b/toolkit/gocui/view.go
index b47c075..e2c76aa 100644
--- a/toolkit/gocui/view.go
+++ b/toolkit/gocui/view.go
@@ -20,10 +20,11 @@ func splitLines(s string) []string {
return lines
}
-func (w *cuiWidget) textResize() {
+func (n *node) textResize() {
+ w := n.tk
var width, height int
- for i, s := range splitLines(w.text) {
+ for i, s := range splitLines(n.Text) {
log(logNow, "textResize() len =", len(s), i, s)
if (width < len(s)) {
width = len(s)
@@ -32,38 +33,52 @@ func (w *cuiWidget) textResize() {
}
w.gocuiSize.w1 = w.gocuiSize.w0 + width + me.FramePadW
w.gocuiSize.h1 = w.gocuiSize.h0 + height + me.FramePadH
- w.showWidgetPlacement(logNow, "textResize()")
+ n.showWidgetPlacement(logNow, "textResize()")
}
// display's the text of the widget in gocui
-func (w *cuiWidget) showView() {
+func (n *node) showView() {
var err error
+ w := n.tk
+
if (w.cuiName == "") {
- log(logError, "drawView() w.cuiName was not set for widget", w)
- w.cuiName = strconv.Itoa(w.id)
+ log(logError, "showView() w.cuiName was not set for widget", w)
+ w.cuiName = strconv.Itoa(n.WidgetId)
}
- if (w.v != nil) {
- log(logInfo, "drawView() w.v already defined for widget", w)
- v, _ := me.baseGui.View(w.cuiName)
- if (v == nil) {
- log(logError, "drawView() ERROR view does not really exist", w)
- w.v = nil
- } else {
- return
- }
+ if (w.v == nil) {
+ n.updateView()
+ }
+ x0, y0, x1, y1, err := me.baseGui.ViewPosition(w.cuiName)
+ log(logInfo, "showView() w.v already defined for widget", n.Name, err)
+ if (x0 != w.gocuiSize.w0) || (y0 != w.gocuiSize.h0) {
+ log(logError, "showView() w.v.w0 != x0", n.Name, w.gocuiSize.w0, x0)
+ log(logError, "showView() w.v.h0 != y0", n.Name, w.gocuiSize.h0, y0)
+ n.updateView()
+ return
}
-
- if (me.baseGui == nil) {
- log(logError, "drawView() ERROR: me.baseGui == nil", w)
+ if (x1 != w.gocuiSize.w1) || (y1 != w.gocuiSize.h1) {
+ log(logError, "showView() w.v.w1 != x1", n.Name, w.gocuiSize.w1, x1)
+ log(logError, "showView() w.v.h1 != y1", n.Name, w.gocuiSize.h1, y1)
+ n.updateView()
return
}
- v, _ := me.baseGui.View(w.cuiName)
- if (v != nil) {
- log(logError, "drawView() already defined for name", w.cuiName)
- w.v = v
+
+ if (w.v.Visible == false) {
+ log(logInfo, "showView() w.v.Visible set to true ", n.Name)
+ w.v.Visible = true
+ }
+}
+
+func (n *node) updateView() {
+ var err error
+ w := n.tk
+ if (me.baseGui == nil) {
+ log(logError, "showView() ERROR: me.baseGui == nil", w)
return
}
+ me.baseGui.DeleteView(w.cuiName)
+ w.v = nil
a := w.gocuiSize.w0
b := w.gocuiSize.h0
@@ -72,12 +87,12 @@ func (w *cuiWidget) showView() {
w.v, err = me.baseGui.SetView(w.cuiName, a, b, c, d, 0)
if err == nil {
- w.showWidgetPlacement(logError, "drawView()")
+ n.showWidgetPlacement(logError, "drawView()")
log(logError, "drawView() internal plugin error err = nil")
return
}
if !errors.Is(err, gocui.ErrUnknownView) {
- w.showWidgetPlacement(logError, "drawView()")
+ n.showWidgetPlacement(logError, "drawView()")
log(logError, "drawView() internal plugin error error.IS()", err)
return
}
@@ -85,13 +100,68 @@ func (w *cuiWidget) showView() {
me.baseGui.SetKeybinding(w.v.Name(), gocui.MouseLeft, gocui.ModNone, click)
w.v.Wrap = true
- if (w.widgetType == toolkit.Window) {
- w.v.Frame = w.frame
- w.v.Clear()
- fmt.Fprint(w.v, w.text)
- } else {
- fmt.Fprintln(w.v, w.text)
+ w.v.Frame = w.frame
+ w.v.Clear()
+ fmt.Fprint(w.v, n.Text)
+ n.showWidgetPlacement(logNow, "Window: " + n.Text)
+
+ n.setDefaultHighlight()
+ n.setDefaultWidgetColor()
+}
+
+func (n *node) hideWidgets() {
+ w := n.tk
+ w.isCurrent = false
+ switch n.WidgetType {
+ case toolkit.Root:
+ case toolkit.Flag:
+ case toolkit.Window:
+ case toolkit.Box:
+ case toolkit.Grid:
+ default:
+ n.deleteView()
}
+ for _, child := range n.children {
+ child.hideWidgets()
+ }
+}
+
+func (n *node) hideFake() {
+ w := n.tk
+ if (w.isFake) {
+ n.deleteView()
+ }
+ for _, child := range n.children {
+ child.hideFake()
+ }
+}
- w.setDefaultWidgetColor()
+func (n *node) showFake() {
+ w := n.tk
+ if (w.isFake) {
+ n.setFake()
+ n.showWidgetPlacement(logNow, "showFake:")
+ n.showView()
+ }
+ for _, child := range n.children {
+ child.showFake()
+ }
+}
+
+func (n *node) showWidgets() {
+ w := n.tk
+ if (w.isFake) {
+ // don't display by default
+ } else {
+ if n.IsCurrent() {
+ n.showWidgetPlacement(logInfo, "current:")
+ n.showView()
+ } else {
+ n.showWidgetPlacement(logInfo, "not:")
+ // w.drawView()
+ }
+ }
+ for _, child := range n.children {
+ child.showWidgets()
+ }
}