diff --git a/generateGui.go b/generateGui.go index 8f344c4..6740a67 100644 --- a/generateGui.go +++ b/generateGui.go @@ -157,15 +157,21 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " return t") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddStringFunc(title string, f func(*"+FRUIT+") string) *"+FRUIT+"StringFunc {") + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddStringFunc(title string, f func(*"+FRUIT+") string) *"+FRUIT+"AnyFunc {") fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, title)") fmt.Fprintln(w, "") - fmt.Fprintln(w, " sf := new("+FRUIT+"StringFunc)") + fmt.Fprintln(w, " sf := new("+FRUIT+"AnyFunc)") fmt.Fprintln(w, " sf.title = title") - fmt.Fprintln(w, " sf.f = f") + fmt.Fprintln(w, " sf.f = func(x *"+FRUIT+") any {") + fmt.Fprintln(w, " return f(x)") + fmt.Fprintln(w, " }") fmt.Fprintln(w, " sf.order = t.order") + fmt.Fprintln(w, " sf.attr = new(guipb.ColAttr)") + fmt.Fprintln(w, " sf.attr.Width = int32(sf.Width)") + fmt.Fprintln(w, " sf.attr.Type = guipb.ColAttr_STRING") + fmt.Fprintln(w, "") fmt.Fprintln(w, " t.order += 1") - fmt.Fprintln(w, " t.stringFuncs = append(t.stringFuncs, sf)") + fmt.Fprintln(w, " t.anyFuncs = append(t.anyFuncs, sf)") fmt.Fprintln(w, " return sf") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") @@ -176,6 +182,11 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " sf.title = title") fmt.Fprintln(w, " sf.f = f") fmt.Fprintln(w, " sf.order = t.order") + fmt.Fprintln(w, " sf.attr = new(guipb.ColAttr)") + fmt.Fprintln(w, " sf.attr.Width = int32(sf.Width)") + fmt.Fprintln(w, " sf.attr.Type = guipb.ColAttr_STRING") + fmt.Fprintln(w, " sf.attr.Click = true") + fmt.Fprintln(w, "") fmt.Fprintln(w, " t.order += 1") fmt.Fprintln(w, " t.buttonFuncs = append(t.buttonFuncs, sf)") fmt.Fprintln(w, " return sf") @@ -188,6 +199,10 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " sf.title = title") fmt.Fprintln(w, " sf.f = f") fmt.Fprintln(w, " sf.order = t.order") + fmt.Fprintln(w, " sf.attr = new(guipb.ColAttr)") + fmt.Fprintln(w, " sf.attr.Width = int32(sf.Width)") + fmt.Fprintln(w, " sf.attr.Type = guipb.ColAttr_INT") + fmt.Fprintln(w, "") fmt.Fprintln(w, " t.order += 1") fmt.Fprintln(w, " t.intFuncs = append(t.intFuncs, sf)") fmt.Fprintln(w, " return sf") @@ -218,7 +233,7 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, "func (sf *"+FRUIT+"IntFunc) SetTitle(title string) {") fmt.Fprintln(w, " sf.title = title") fmt.Fprintln(w, "}") - fmt.Fprintln(w, "func (sf *"+FRUIT+"TimeFunc) SetTitle(title string) {") + fmt.Fprintln(w, "func (sf *"+FRUIT+"AnyFunc) SetTitle(title string) {") fmt.Fprintln(w, " sf.title = title") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") @@ -244,6 +259,7 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " Custom func(*"+FRUIT+")") fmt.Fprintln(w, " order int") fmt.Fprintln(w, " Width int") + fmt.Fprintln(w, " attr *guipb.ColAttr") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") fmt.Fprintln(w, "type "+FRUIT+"ButtonFunc struct {") @@ -252,6 +268,7 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " Custom func(*"+FRUIT+")") fmt.Fprintln(w, " order int") fmt.Fprintln(w, " Width int") + fmt.Fprintln(w, " attr *guipb.ColAttr") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") fmt.Fprintln(w, "type "+FRUIT+"IntFunc struct {") @@ -260,14 +277,7 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " Custom func(*"+FRUIT+")") fmt.Fprintln(w, " order int") fmt.Fprintln(w, " Width int") - fmt.Fprintln(w, "}") - fmt.Fprintln(w, "") - fmt.Fprintln(w, "type "+FRUIT+"TimeFunc struct {") - fmt.Fprintln(w, " title string") - fmt.Fprintln(w, " f func(*"+FRUIT+") time.Time") - fmt.Fprintln(w, " Custom func(*"+FRUIT+")") - fmt.Fprintln(w, " order int") - fmt.Fprintln(w, " Width int") + fmt.Fprintln(w, " attr *guipb.ColAttr") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") fmt.Fprintln(w, "type "+FRUIT+"AnyFunc struct {") @@ -287,7 +297,6 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, "") fmt.Fprintln(w, " stringFuncs []*"+FRUIT+"StringFunc") fmt.Fprintln(w, " intFuncs []*"+FRUIT+"IntFunc") - fmt.Fprintln(w, " // timeFuncs []*"+FRUIT+"TimeFunc") fmt.Fprintln(w, " buttonFuncs []*"+FRUIT+"ButtonFunc") fmt.Fprintln(w, " anyFuncs []*"+FRUIT+"AnyFunc") fmt.Fprintln(w, "") @@ -367,33 +376,6 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { fmt.Fprintln(w, " return false") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "/*") - fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) doTimeFunc(name string) bool {") - fmt.Fprintln(w, " for _, sf := range mt.timeFuncs {") - fmt.Fprintln(w, " if sf.title != name {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " r := new(guipb.AnyCol)") - fmt.Fprintln(w, " r.Header = new(guipb.Widget)") - fmt.Fprintln(w, " r.Header.Name = name") - fmt.Fprintln(w, " r.Attr = new(guipb.ColAttr)") - fmt.Fprintln(w, " r.Attr.Width = int32(sf.Width)") - fmt.Fprintln(w, " r.Attr.Type = guipb.ColAttr_TIME") - fmt.Fprintln(w, "") - fmt.Fprintln(w, " for m := range mt.x.IterAll() {") - fmt.Fprintln(w, " t := sf.f(m)") - fmt.Fprintln(w, " tsProto := timestamppb.New(t)") - fmt.Fprintln(w, " anyProto, err := anypb.New(tsProto)") - fmt.Fprintln(w, " _ = err // do something with err someday (?)") - fmt.Fprintln(w, " r.Vals = append(r.Vals, anyProto)") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " mt.pb.AnyCols = append(mt.pb.AnyCols, r)") - fmt.Fprintln(w, " return true") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " return false") - fmt.Fprintln(w, "}") - fmt.Fprintln(w, "*/") - fmt.Fprintln(w, "") fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) doAnyFunc(name string) bool {") fmt.Fprintln(w, " for _, sf := range mt.anyFuncs {") fmt.Fprintln(w, " if sf.title != name {") @@ -429,9 +411,6 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { fmt.Fprintln(w, " if mt.doIntFunc(name) {") fmt.Fprintln(w, " continue") fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // if mt.doTimeFunc(name) {") - fmt.Fprintln(w, " // continue") - fmt.Fprintln(w, " // }") fmt.Fprintln(w, " if mt.doButtonFunc(name) {") fmt.Fprintln(w, " continue") fmt.Fprintln(w, " }") @@ -444,7 +423,7 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { func guiAddStringFunc(w io.Writer, FRUITS string, FRUIT string, BRAND string) { fmt.Fprintln(w, "") - fmt.Fprintln(w, "func (t *"+FRUITS+"Table) Add"+BRAND+"() *"+FRUIT+"StringFunc {") + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) Add"+BRAND+"() *"+FRUIT+"AnyFunc {") fmt.Fprintln(w, " sf := t.AddStringFunc(\""+BRAND+"\", func(m *"+FRUIT+") string {") fmt.Fprintln(w, " return m."+BRAND+"") fmt.Fprintln(w, " })") @@ -485,9 +464,6 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " if mt.updateStringFunc(name) {") fmt.Fprintln(w, " continue") fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // if mt.updateTimeFunc(name) {") - fmt.Fprintln(w, " // continue") - fmt.Fprintln(w, " // }") fmt.Fprintln(w, " /*") fmt.Fprintln(w, " if mt.updateIntFunc(name) {") fmt.Fprintln(w, " continue") @@ -542,38 +518,6 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " return false") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) updateTimeFunc(name string) bool {") - fmt.Fprintln(w, " log.Info(\"LOOKING FOR TIME row\", name)") - fmt.Fprintln(w, " var found *guipb.TimeCol") - fmt.Fprintln(w, " for i, r := range mt.pb.TimeCols {") - fmt.Fprintln(w, " // log.Info(\"could use\", i, r.Header.Name, \"for name =\", name)") - fmt.Fprintln(w, " if r.Header.Name == name {") - fmt.Fprintln(w, " log.Info(\"found row\", i, r.Header.Name)") - fmt.Fprintln(w, " found = r") - fmt.Fprintln(w, " break") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " if found == nil {") - fmt.Fprintln(w, " log.Info(\"did not find time row\", name)") - fmt.Fprintln(w, " return false") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " /*") - fmt.Fprintln(w, " for _, sf := range mt.timeFuncs {") - fmt.Fprintln(w, " if sf.title != name {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // log.Info(\"updateTimeFunc() has row len =\", len(mt.x."+FRUITS+"))") - fmt.Fprintln(w, " // log.Info(\"virtpb: starting\", name, found.Vals)") - fmt.Fprintln(w, " for i, _ := range found.Vals {") - fmt.Fprintln(w, " newt := sf.f(mt.x."+FRUITS+"[i])") - fmt.Fprintln(w, " found.Vals[i] = timestamppb.New(newt) // convert to protobuf time") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // log.Info(\"virtpb: ending\", name, found.Vals)") - fmt.Fprintln(w, " return true") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " */") - fmt.Fprintln(w, " return false") - fmt.Fprintln(w, "}") } func guiTableDelete(w io.Writer, FRUITS string, FRUIT string) {