starting the table window

This commit is contained in:
Jeff Carr 2025-02-19 06:54:36 -06:00
parent 57b6efd831
commit ad34230d67
3 changed files with 72 additions and 36 deletions

View File

@ -4,9 +4,6 @@
package main package main
import ( import (
// if you include more than just this import
// then your plugin might be doing something un-ideal (just a guess from 2023/02/27)
"github.com/awesome-gocui/gocui" "github.com/awesome-gocui/gocui"
"go.wit.com/log" "go.wit.com/log"
"go.wit.com/toolkits/tree" "go.wit.com/toolkits/tree"

View File

@ -21,6 +21,7 @@ import (
"go.wit.com/lib/protobuf/guipb" "go.wit.com/lib/protobuf/guipb"
log "go.wit.com/log" log "go.wit.com/log"
"go.wit.com/toolkits/tree" "go.wit.com/toolkits/tree"
"go.wit.com/widget"
) )
var initOnce sync.Once // run initPlugin() only once var initOnce sync.Once // run initPlugin() only once
@ -182,39 +183,40 @@ type colorT struct {
} }
type guiWidget struct { type guiWidget struct {
v *gocui.View // this is nil if the widget is not displayed v *gocui.View // this is nil if the widget is not displayed
cuiName string // what gocui uses to reference the widget (usually "TK <widgetId>" cuiName string // what gocui uses to reference the widget (usually "TK <widgetId>"
parent *guiWidget // mirrors the binary node tree parent *guiWidget // mirrors the binary node tree
children []*guiWidget // mirrors the binary node tree children []*guiWidget // mirrors the binary node tree
node *tree.Node // the pointer back to the tree node *tree.Node // the pointer back to the tree
pb *guipb.Widget // the guipb Widget pb *guipb.Widget // the guipb Widget
windowFrame *guiWidget // this is the frame for a window widget wtype widget.WidgetType // used for Tables for now. todo: fix this correctly
internal bool // indicates the widget is internal to gocui and should be treated differently windowFrame *guiWidget // this is the frame for a window widget
hasTabs bool // does the window have tabs? internal bool // indicates the widget is internal to gocui and should be treated differently
currentTab bool // the visible tab hasTabs bool // does the window have tabs?
window window // holds information specific only to Window widgets currentTab bool // the visible tab
value string // ? window window // holds information specific only to Window widgets
checked bool // ? value string // ?
labelN string // the actual text to display in the console checked bool // ?
vals []string // dropdown menu items labelN string // the actual text to display in the console
enable bool // ? vals []string // dropdown menu items
gocuiSize rectType // should mirror the real display size. todo: verify these are accurate. they are not yet enable bool // ?
full rectType // full size of children (used by widget.Window, etc) gocuiSize rectType // should mirror the real display size. todo: verify these are accurate. they are not yet
force rectType // force widget within these boundries (using this to debug window dragging) full rectType // full size of children (used by widget.Window, etc)
startW int // ? force rectType // force widget within these boundries (using this to debug window dragging)
startH int // ? startW int // ?
lastW int // used during mouse dragging startH int // ?
lastH int // used during mouse dragging lastW int // used during mouse dragging
isFake bool // widget types like 'box' are 'false' lastH int // used during mouse dragging
widths map[int]int // how tall each row in the grid is isFake bool // widget types like 'box' are 'false'
heights map[int]int // how wide each column in the grid is widths map[int]int // how tall each row in the grid is
tainted bool // ? heights map[int]int // how wide each column in the grid is
frame bool // ? tainted bool // ?
selectedTab *tree.Node // for a window, this is currently selected tab frame bool // ?
color *colorT // what color to use selectedTab *tree.Node // for a window, this is currently selected tab
colorLast colorT // the last color the widget had color *colorT // what color to use
defaultColor *colorT // the default colors // TODO: make a function for this instead colorLast colorT // the last color the widget had
isBG bool // means this is the background widget. There is only one of these defaultColor *colorT // the default colors // TODO: make a function for this instead
isBG bool // means this is the background widget. There is only one of these
} }
// THIS IS GO COMPILER MAGIC // THIS IS GO COMPILER MAGIC

View File

@ -4,6 +4,7 @@
package main package main
import ( import (
"fmt"
"slices" "slices"
"go.wit.com/lib/protobuf/guipb" "go.wit.com/lib/protobuf/guipb"
@ -12,12 +13,48 @@ import (
"go.wit.com/widget" "go.wit.com/widget"
) )
func initWindowPB(pb *guipb.Widget) *guiWidget {
var w *guiWidget
w = new(guiWidget)
w.pb = pb
w.parent = me.treeRoot.TK.(*guiWidget)
w.wtype = widget.Window
w.cuiName = fmt.Sprintf("%d %s", pb.Id, "TK")
w.labelN = pb.Name
return w
}
func initGridPB(pb *guipb.Widget) *guiWidget {
var w *guiWidget
w = new(guiWidget)
w.pb = pb
w.wtype = widget.Grid
w.cuiName = fmt.Sprintf("%d %s", pb.Id, "TK")
w.labelN = pb.Name
return w
}
func showTable(t *guipb.Table) { func showTable(t *guipb.Table) {
log.Info("gocui: should show table here") log.Info("gocui: should show table here")
if t == nil { if t == nil {
return return
} }
log.Info("gocui: table.Title", t.Title) log.Info("gocui: table.Title", t.Title)
if t.Window == nil {
log.Info("gocui: missing window widget. tree plugin error")
return
}
log.Info("gocui: need to add window here id =", t.Window.Id, t.Window.Name)
if t.Grid == nil {
log.Info("gocui: missing grid widget. tree plugin error")
return
}
log.Info("gocui: need to add grid here id =", t.Grid.Id)
win := initWindowPB(t.Window)
grid := initWindowPB(t.Window)
grid.parent = win
} }
func enableWidget(n *tree.Node) { func enableWidget(n *tree.Node) {