From 3f09b2b6e4b608350167199750d0bbe46d686c27 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 19 Feb 2025 03:33:04 -0600 Subject: [PATCH] refactor for protobuf --- size.go | 10 +++++----- treeWidget.go | 15 +++++++++++++++ view.go | 4 ++-- window.go | 24 ++++++++++-------------- 4 files changed, 32 insertions(+), 21 deletions(-) diff --git a/size.go b/size.go index 68dcf38..06c3a65 100644 --- a/size.go +++ b/size.go @@ -35,7 +35,7 @@ func (tk *guiWidget) Size() (int, int) { return 0, 0 } - switch tk.node.WidgetType { + switch tk.WidgetType() { case widget.Window: var maxH int = 0 var maxW int = 0 @@ -125,7 +125,7 @@ func (w *guiWidget) sizeGrid() (int, int) { } func (w *guiWidget) sizeBox() (int, int) { - if w.node.WidgetType != widget.Box { + if w.WidgetType() != widget.Box { return 0, 0 } if w.Hidden() { @@ -254,7 +254,7 @@ func (tk *guiWidget) setFullSize() bool { tk.full.h1 = r.h1 changed = true } - if tk.node.WidgetType == widget.Button { + if tk.WidgetType() == widget.Button { tk.full.h1 = tk.full.h0 + 1 } if tk.isWindowDense() && tk.isInGrid() { @@ -350,13 +350,13 @@ func (tk *guiWidget) getFullSize() rectType { return r } - if tk.node.WidgetType == widget.Grid { + if tk.WidgetType() == widget.Grid { return tk.gridFullSize() } // these are 'simple' widgets // the full size is exactly what gocui uses - switch tk.node.WidgetType { + switch tk.WidgetType() { case widget.Label: r := tk.buttonFullSize() r.w1 += 5 diff --git a/treeWidget.go b/treeWidget.go index 4d92abd..1559f68 100644 --- a/treeWidget.go +++ b/treeWidget.go @@ -152,3 +152,18 @@ func (tk *guiWidget) findWidgetByView(v *gocui.View) *guiWidget { } return nil } + +func (tk *guiWidget) WidgetType() widget.WidgetType { + if tk.node == nil { + return widget.Label + } + return tk.node.WidgetType +} + +func (tk *guiWidget) WidgetId() int { + return tk.node.WidgetId +} + +func (tk *guiWidget) GetLabel() string { + return tk.node.GetLabel() +} diff --git a/view.go b/view.go index d9ec8a6..7937791 100644 --- a/view.go +++ b/view.go @@ -24,7 +24,7 @@ func (tk *guiWidget) textResize() { } // todo: fix all this old code - if tk.node.WidgetType == widget.Textbox { + if tk.WidgetType() == widget.Textbox { if w < 5 { w = 5 } @@ -50,7 +50,7 @@ func (w *guiWidget) hideWidgets() { if w == nil { return } - switch w.node.WidgetType { + switch w.WidgetType() { case widget.Root: case widget.Flag: case widget.Window: diff --git a/window.go b/window.go index 543e0c6..51f40e1 100644 --- a/window.go +++ b/window.go @@ -13,7 +13,7 @@ import ( ) func (tk *guiWidget) setTitle(s string) { - if tk.node.WidgetType != widget.Window { + if tk.WidgetType() != widget.Window { return } if tk.v == nil { @@ -26,14 +26,13 @@ func (tk *guiWidget) setTitle(s string) { me.baseGui.SetView(tk.v.Name(), rect.w0-1, rect.h0, rect.w1+1, rect.h1, 0) tk.v.Clear() f := " %-" + fmt.Sprintf("%d", tk.full.Width()-3) + "s %s" - // tmp := tk.node.GetLabel() + " " + tk.v.Name() + " " + f - tmp := tk.node.GetLabel() + tmp := tk.GetLabel() labelN := fmt.Sprintf(f, tmp, "X") tk.v.WriteString(labelN) } func (tk *guiWidget) redrawWindow(w int, h int) { - if tk.node.WidgetType != widget.Window { + if tk.WidgetType() != widget.Window { return } // tk.dumpWidget(fmt.Sprintf("redrawWindow(%d,%d)", w, h)) @@ -43,8 +42,8 @@ func (tk *guiWidget) redrawWindow(w int, h int) { // pin the window to (w,h) tk.gocuiSize.w0 = w tk.gocuiSize.h0 = h - tk.gocuiSize.w1 = w + len(tk.node.GetLabel()) - tk.labelN = tk.node.GetLabel() // could set XX here also but don't have final size of window yet + tk.gocuiSize.w1 = w + len(tk.GetLabel()) + tk.labelN = tk.GetLabel() // could set XX here also but don't have final size of window yet tk.force.w0 = w tk.force.w1 = w tk.force.h0 = h @@ -77,8 +76,7 @@ func (tk *guiWidget) redrawWindow(w int, h int) { tk.showWidgets() if tk.windowFrame == nil { - tk.addWindowFrameTK(0 - tk.node.WidgetId) - tk.windowFrame.node.State.Label = "" // temporary name. blank out when ready for release + tk.addWindowFrameTK(0 - tk.WidgetId()) tk.windowFrame.makeTK([]string{""}) } @@ -106,7 +104,7 @@ func (tk *guiWidget) redrawWindow(w int, h int) { tk.showWidgets() // draw the window title - tk.setTitle(tk.node.GetLabel()) + tk.setTitle(tk.GetLabel()) } // re-draws the buttons for each of the windows @@ -154,8 +152,6 @@ func (win *guiWidget) addWindowFrame(wId int) *tree.Node { if tk.node.Parent == nil { tk.node.Parent = me.treeRoot } - // copy the data from the action message - tk.node.State.Label = "windowFrame" // set the name used by gocui to the id tk.cuiName = fmt.Sprintf("%d DR", wId) @@ -175,7 +171,7 @@ func (win *guiWidget) addWindowFrame(wId int) *tree.Node { } func (tk *guiWidget) isWindowActive() bool { - if !(tk.node.WidgetType == widget.Window || tk.node.WidgetType == widget.Stdout) { + if !(tk.WidgetType() == widget.Window || tk.WidgetType() == widget.Stdout) { // only allow Window or the Stdout widgets to be made active return false } @@ -184,12 +180,12 @@ func (tk *guiWidget) isWindowActive() bool { // always redraws at the corner of the gocuiSize box func (tk *guiWidget) makeWindowActive() { - if !(tk.node.WidgetType == widget.Window || tk.node.WidgetType == widget.Stdout) { + if !(tk.WidgetType() == widget.Window || tk.WidgetType() == widget.Stdout) { // only allow Window or the Stdout widgets to be made active return } - if tk.node.WidgetType == widget.Stdout { + if tk.WidgetType() == widget.Stdout { me.stdout.outputOnTop = true } else { // me.stdout.outputOnTop = false // ?