diff options
Diffstat (limited to 'view.go')
| -rw-r--r-- | view.go | 104 |
1 files changed, 49 insertions, 55 deletions
@@ -21,12 +21,12 @@ func splitLines(s string) []string { return lines } -func (n *node) textResize() bool { - w := n.tk +func (w *guiWidget) textResize() bool { + // w := n.tk var width, height int = 0, 0 var changed bool = false - for i, s := range splitLines(n.tk.label) { + for i, s := range splitLines(w.label) { log.Log(INFO, "textResize() len =", len(s), i, s) if width < len(s) { width = len(s) @@ -42,78 +42,76 @@ func (n *node) textResize() bool { changed = true } if changed { - n.showWidgetPlacement(true, "textResize() changed") + showWidgetPlacement(w.node, true, "textResize() changed") } return changed } -func (n *node) hideView() { - n.SetVisible(false) +func (w *guiWidget) hideView() { + SetVisible(w.node, false) } // display's the text of the widget in gocui // will create a new gocui view if there isn't one or if it has been moved -func (n *node) showView() { +func (w *guiWidget) showView() { var err error - w := n.tk if w.cuiName == "" { log.Log(ERROR, "showView() w.cuiName was not set for widget", w) - w.cuiName = string(n.WidgetId) + w.cuiName = string(w.node.WidgetId) } // if the gocui element doesn't exist, create it if w.v == nil { - n.recreateView() + w.recreateView() } x0, y0, x1, y1, err := me.baseGui.ViewPosition(w.cuiName) - log.Log(INFO, "showView() w.v already defined for widget", n.progname, err) + log.Log(INFO, "showView() w.v already defined for widget", w.String(), err) // n.smartGocuiSize() - changed := n.textResize() + changed := w.textResize() if changed { log.Log(NOW, "showView() textResize() changed. Should recreateView here wId =", w.cuiName) } else { log.Log(NOW, "showView() Clear() and Fprint() here wId =", w.cuiName) w.v.Clear() - fmt.Fprint(w.v, n.tk.label) - n.SetVisible(false) - n.SetVisible(true) + fmt.Fprint(w.v, w.label) + w.SetVisible(false) + w.SetVisible(true) return } // if the gocui element has changed where it is supposed to be on the screen // recreate it if x0 != w.gocuiSize.w0 { - n.recreateView() + w.recreateView() return } if y0 != w.gocuiSize.h0 { log.Log(ERROR, "showView() start hight mismatch id=", w.cuiName, "gocui h vs computed h =", w.gocuiSize.h0, y0) - n.recreateView() + w.recreateView() return } if x1 != w.gocuiSize.w1 { log.Log(ERROR, "showView() too wide", w.cuiName, "w,w", w.gocuiSize.w1, x1) - n.recreateView() + w.recreateView() return } if y1 != w.gocuiSize.h1 { log.Log(ERROR, "showView() too high", w.cuiName, "h,h", w.gocuiSize.h1, y1) - n.recreateView() + w.recreateView() return } - n.SetVisible(true) + w.SetVisible(true) } // create or recreate the gocui widget visible // deletes the old view if it exists and recreates it -func (n *node) recreateView() { +func (w *guiWidget) recreateView() { var err error - w := n.tk - log.Log(ERROR, "recreateView() START", n.WidgetType, n.progname) + log.Log(ERROR, "recreateView() START", w.WidgetType, w.String()) if me.baseGui == nil { log.Log(ERROR, "recreateView() ERROR: me.baseGui == nil", w) return @@ -123,11 +121,11 @@ func (n *node) recreateView() { me.baseGui.DeleteView(w.cuiName) w.v = nil - if n.progname == "CLOUDFLARE_EMAIL" { - n.showWidgetPlacement(true, "n.progname="+n.progname+" n.tk.label="+n.tk.label+" "+w.cuiName) - n.dumpWidget("jwc") - n.textResize() - n.showWidgetPlacement(true, "n.progname="+n.progname+" n.tk.label="+n.tk.label+" "+w.cuiName) + if w.String() == "CLOUDFLARE_EMAIL" { + w.showWidgetPlacement(true, "n.String()="+w.String()+" n.tk.label="+w.label+" "+w.cuiName) + // w.dumpWidget("jwc") + w.textResize() + w.showWidgetPlacement(true, "n.String()="+w.String()+" n.tk.label="+w.label+" "+w.cuiName) } a := w.gocuiSize.w0 @@ -137,12 +135,12 @@ func (n *node) recreateView() { w.v, err = me.baseGui.SetView(w.cuiName, a, b, c, d, 0) if err == nil { - n.showWidgetPlacement(true, "recreateView()") + showWidgetPlacement(w.node, true, "recreateView()") log.Log(ERROR, "recreateView() internal plugin error err = nil") return } if !errors.Is(err, gocui.ErrUnknownView) { - n.showWidgetPlacement(true, "recreateView()") + showWidgetPlacement(w.node, true, "recreateView()") log.Log(ERROR, "recreateView() internal plugin error error.IS()", err) return } @@ -161,8 +159,8 @@ func (n *node) recreateView() { w.v.Wrap = true w.v.Frame = w.frame w.v.Clear() - fmt.Fprint(w.v, n.tk.label) - // n.showWidgetPlacement(true, "n.progname=" + n.progname + " n.tk.label=" + n.tk.label + " " + w.cuiName) + fmt.Fprint(w.v, w.label) + // n.showWidgetPlacement(true, "n.String()=" + n.String() + " n.tk.label=" + n.tk.label + " " + w.cuiName) // n.dumpWidget("jwc 2") // if you don't do this here, it will be black & white only @@ -173,61 +171,57 @@ func (n *node) recreateView() { w.v.SelFgColor = w.color.selFg w.v.SelBgColor = w.color.selBg } - if n.progname == "CLOUDFLARE_EMAIL" { - n.showWidgetPlacement(true, "n.progname="+n.progname+" n.tk.label="+n.tk.label+" "+w.cuiName) - n.dumpTree(true) + if w.String() == "CLOUDFLARE_EMAIL" { + w.showWidgetPlacement(true, "w.String()="+w.String()+" w.label="+w.label+" "+w.cuiName) + dumpTree(w.node, true) } log.Log(ERROR, "recreateView() END") } -func (n *node) hideWidgets() { - w := n.tk +func (w *guiWidget) hideWidgets() { w.isCurrent = false - switch n.WidgetType { + switch w.node.WidgetType { case widget.Root: case widget.Flag: case widget.Window: case widget.Box: case widget.Grid: default: - n.hideView() + w.hideView() } - for _, child := range n.children { + for _, child := range w.children { child.hideWidgets() } } -func (n *node) hideFake() { - w := n.tk +func (w *guiWidget) hideFake() { if w.isFake { - n.hideView() + w.hideView() } - for _, child := range n.children { + for _, child := range w.children { child.hideFake() } } -func (n *node) showFake() { - w := n.tk +func (w *guiWidget) showFake() { if w.isFake { - n.setFake() - n.showWidgetPlacement(true, "showFake:") - n.showView() + // w.setFake() + w.showWidgetPlacement(true, "showFake:") + w.showView() } - for _, child := range n.children { + for _, child := range w.children { child.showFake() } } -func (n *node) showWidgets() { - w := n.tk +func (w *guiWidget) showWidgets() { if w.isFake { // don't display by default } else { - n.showWidgetPlacement(true, "current:") - n.showView() + w.showWidgetPlacement(true, "current:") + w.showView() } - for _, child := range n.children { + for _, child := range w.children { child.showWidgets() } } |
