diff --git a/generateGui.go b/generateGui.go index 74403ca..ff113fd 100644 --- a/generateGui.go +++ b/generateGui.go @@ -193,15 +193,20 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " return sf") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddTimeFunc(title string, f func(*"+FRUIT+") time.Time) *"+FRUIT+"TimeFunc {") + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddTimeFunc(title string, f func(*"+FRUIT+") any) *"+FRUIT+"AnyFunc {") fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, title)") fmt.Fprintln(w, "") - fmt.Fprintln(w, " sf := new("+FRUIT+"TimeFunc)") + fmt.Fprintln(w, " sf := new("+FRUIT+"AnyFunc)") 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_TIME") + fmt.Fprintln(w, "") fmt.Fprintln(w, " t.order += 1") - fmt.Fprintln(w, " t.timeFuncs = append(t.timeFuncs, sf)") + fmt.Fprintln(w, " // t.timeFuncs = append(t.timeFuncs, sf)") + fmt.Fprintln(w, " t.anyFuncs = append(t.anyFuncs, sf)") fmt.Fprintln(w, " return sf") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") @@ -264,11 +269,12 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, "}") fmt.Fprintln(w, "") fmt.Fprintln(w, "type "+FRUIT+"AnyFunc struct {") - fmt.Fprintln(w, " title string") - fmt.Fprintln(w, " f func(*"+FRUIT+") any") + fmt.Fprintln(w, " title string") + fmt.Fprintln(w, " f func(*"+FRUIT+") any") fmt.Fprintln(w, " Custom func(*"+FRUIT+")") - fmt.Fprintln(w, " order int") - fmt.Fprintln(w, " Width int") + 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 "+FRUITS+"Table struct {") @@ -279,7 +285,7 @@ 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, " // timeFuncs []*"+FRUIT+"TimeFunc") fmt.Fprintln(w, " buttonFuncs []*"+FRUIT+"ButtonFunc") fmt.Fprintln(w, " anyFuncs []*"+FRUIT+"AnyFunc") fmt.Fprintln(w, "") @@ -359,6 +365,7 @@ 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 {") @@ -383,6 +390,34 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { 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 {") + 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, " var goTime time.Time") + fmt.Fprintln(w, " goTime = t.(time.Time)") + fmt.Fprintln(w, " tsProto := timestamppb.New(goTime)") + 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, "func (mt *"+FRUITS+"Table) MakeTable() {") fmt.Fprintln(w, " for _, name := range mt.pb.Order {") @@ -392,10 +427,13 @@ 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, " // 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, " }") - fmt.Fprintln(w, " if mt.doButtonFunc(name) {") + fmt.Fprintln(w, " if mt.doAnyFunc(name) {") fmt.Fprintln(w, " continue") fmt.Fprintln(w, " }") fmt.Fprintln(w, " }") @@ -445,9 +483,9 @@ 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, " // 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") @@ -517,6 +555,7 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) { 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") @@ -530,6 +569,7 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) { 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, "}") } diff --git a/main.go b/main.go index 5f7f6d4..e879de4 100644 --- a/main.go +++ b/main.go @@ -214,6 +214,9 @@ func main() { badExit(err) } } + log.Info("") + log.Info("you may have to run 'goimport -w *.go' on the new *pb.go files") + log.Info("") } func okExit(s string) {