diff --git a/generateGui.go b/generateGui.go index b9cd5a5..02c62c8 100644 --- a/generateGui.go +++ b/generateGui.go @@ -52,36 +52,6 @@ func (pb *Files) makeGuiFile(pf *File) error { log.Printf("Added GUI functions for protobuf '%s' with record '%s' using mutex '%s'\n", msg.Name, msg.GuiVarName, color.Lockname) } } - // os.Exit(-1) - - /* - guiMain(newf, pf.Bases.Name, pf.Base.Name) - guiStringFuncs(newf, pf.Package, pf.Bases.Name, pf.Base.Name) - - for _, v := range pf.Base.Vars { - if v.IsRepeated { - // can't work against slices - continue - } - if v.VarType == "string" { - log.Printf("make Add function here %s %s %s\n", pf.Bases.Name, pf.Base.Name, v.VarName) - guiAddStringFunc(newf, pf.Bases.Name, pf.Base.Name, v.VarName) - continue - } - if v.VarType == "int64" { - log.Printf("make Add function here %s %s %s\n", pf.Bases.Name, pf.Base.Name, v.VarName) - guiAddIntFunc(newf, pf.Bases.Name, pf.Base.Name, v.VarName) - continue - } - } - FRUITS := pf.Bases.Name - FRUIT := pf.Base.Name - fRUITS := untitle(pf.Bases.Name) - fRUIT := untitle(pf.Base.Name) - guiUpdate(newf, FRUITS, FRUIT) - guiTableDelete(newf, FRUITS, FRUIT) - guiTableCustom(newf, FRUITS, fRUITS, FRUIT, fRUIT) - */ fmt.Fprintf(newf, "\n") fmt.Fprintf(newf, "// END GUI\n") @@ -175,12 +145,14 @@ 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) AddButtonFunc(title string, f func(*"+FRUIT+") string) *"+FRUIT+"ButtonFunc {") + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddButtonFunc(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+"ButtonFunc)") + 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)") @@ -188,23 +160,25 @@ func guiMain(w io.Writer, FRUITS string, FRUIT 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, " t.anyFuncs = append(t.anyFuncs, sf)") fmt.Fprintln(w, " return sf") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddIntFunc(title string, f func(*"+FRUIT+") int) *"+FRUIT+"IntFunc {") + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddIntFunc(title string, f func(*"+FRUIT+") int) *"+FRUIT+"AnyFunc {") fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, title)") fmt.Fprintln(w, "") - fmt.Fprintln(w, " sf := new("+FRUIT+"IntFunc)") + 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_INT") fmt.Fprintln(w, "") fmt.Fprintln(w, " t.order += 1") - fmt.Fprintln(w, " t.intFuncs = append(t.intFuncs, sf)") + fmt.Fprintln(w, " t.anyFuncs = append(t.anyFuncs, sf)") fmt.Fprintln(w, " return sf") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") @@ -295,9 +269,9 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " x *"+FRUITS+"") fmt.Fprintln(w, " hostnames []string") fmt.Fprintln(w, "") - fmt.Fprintln(w, " stringFuncs []*"+FRUIT+"StringFunc") - fmt.Fprintln(w, " intFuncs []*"+FRUIT+"IntFunc") - fmt.Fprintln(w, " buttonFuncs []*"+FRUIT+"ButtonFunc") + fmt.Fprintln(w, " // stringFuncs []*"+FRUIT+"StringFunc") + fmt.Fprintln(w, " // intFuncs []*"+FRUIT+"IntFunc") + fmt.Fprintln(w, " // buttonFuncs []*"+FRUIT+"ButtonFunc") fmt.Fprintln(w, " anyFuncs []*"+FRUIT+"AnyFunc") fmt.Fprintln(w, "") fmt.Fprintln(w, " CustomFunc func(*"+FRUIT+")") @@ -306,76 +280,6 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) { } func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { - fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) doStringFunc(name string) bool {") - fmt.Fprintln(w, " for _, sf := range mt.stringFuncs {") - fmt.Fprintln(w, " if sf.title != name {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // log.Info(\""+ZOOPB+": found stringfunc name:\", name)") - fmt.Fprintln(w, " r := new(guipb.StringCol)") - 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_STRING") - fmt.Fprintln(w, "") - fmt.Fprintln(w, " for m := range mt.x.IterAll() {") - fmt.Fprintln(w, " r.Vals = append(r.Vals, sf.f(m))") - fmt.Fprintln(w, " // log.Info(\""+ZOOPB+": adding\", name, r.Vals)") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " mt.pb.StringCols = append(mt.pb.StringCols, 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) doButtonFunc(name string) bool {") - fmt.Fprintln(w, " for _, sf := range mt.buttonFuncs {") - fmt.Fprintln(w, " if sf.title != name {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // log.Info(\""+ZOOPB+": found stringfunc name:\", name)") - fmt.Fprintln(w, " r := new(guipb.ButtonCol)") - 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_STRING") - fmt.Fprintln(w, " r.Attr.Click = true") - fmt.Fprintln(w, "") - fmt.Fprintln(w, " for m := range mt.x.IterAll() {") - fmt.Fprintln(w, " r.Vals = append(r.Vals, sf.f(m))") - fmt.Fprintln(w, " // log.Info(\""+ZOOPB+": adding\", name, r.Vals)") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " mt.pb.ButtonCols = append(mt.pb.ButtonCols, 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) doIntFunc(name string) bool {") - fmt.Fprintln(w, " for _, sf := range mt.intFuncs {") - fmt.Fprintln(w, " if sf.title != name {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // log.Info(\""+ZOOPB+": found intfunc name:\", name)") - fmt.Fprintln(w, " r := new(guipb.IntCol)") - 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_INT") - fmt.Fprintln(w, "") - fmt.Fprintln(w, " for m := range mt.x.IterAll() {") - fmt.Fprintln(w, " r.Vals = append(r.Vals, int64(sf.f(m)))") - fmt.Fprintln(w, " // log.Info(\""+ZOOPB+": adding\", name, r.Vals)") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " mt.pb.IntCols = append(mt.pb.IntCols, 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) doAnyFunc(name string) bool {") fmt.Fprintln(w, " for _, sf := range mt.anyFuncs {") fmt.Fprintln(w, " if sf.title != name {") @@ -385,9 +289,6 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { fmt.Fprintln(w, " r.Header = new(guipb.Widget)") fmt.Fprintln(w, " r.Header.Name = name") fmt.Fprintln(w, " r.Attr = proto.Clone(sf.attr).(*guipb.ColAttr)") - 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() {") @@ -401,19 +302,11 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { fmt.Fprintln(w, " r.Vals = append(r.Vals, anyProto)") fmt.Fprintln(w, " // return col.Vals[row] true") fmt.Fprintln(w, " case guipb.ColAttr_INT:") - fmt.Fprintln(w, " // var finalInt int32") - fmt.Fprintln(w, " // // 1. Check if the Any contains an Int32Value") - fmt.Fprintln(w, " // if anyVal.MessageIs(&wrapperspb.Int32Value{}) {") - fmt.Fprintln(w, " // var intValue wrapperspb.Int32Value") - fmt.Fprintln(w, " // // 2. Unmarshal into the wrapper") - fmt.Fprintln(w, " // if err := anyVal.UnmarshalTo(&intValue); err == nil {") - fmt.Fprintln(w, " // // 3. Get the native Go int32 from the wrapper") - fmt.Fprintln(w, " // finalInt = intValue.GetValue()") - fmt.Fprintln(w, " // }") - fmt.Fprintln(w, " // }") - fmt.Fprintln(w, "") - sfmt := "\"" + "%" + "d" + "\"" - fmt.Fprintln(w, " // return fmt.Sprintf("+sfmt+", finalInt), true") + fmt.Fprintln(w, " var finalInt int") + fmt.Fprintln(w, " finalInt = t.(int)") + fmt.Fprintln(w, " intVal := wrapperspb.Int32(int32(finalInt))") + fmt.Fprintln(w, " anyProto, _ := anypb.New(intVal)") + fmt.Fprintln(w, " r.Vals = append(r.Vals, anyProto)") fmt.Fprintln(w, " case guipb.ColAttr_DURATION:") fmt.Fprintln(w, " case guipb.ColAttr_TIME:") fmt.Fprintln(w, " var goTime time.Time") @@ -438,15 +331,15 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { fmt.Fprintln(w, "") fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) MakeTable() {") fmt.Fprintln(w, " for _, name := range mt.pb.Order {") - fmt.Fprintln(w, " if mt.doStringFunc(name) {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " if mt.doIntFunc(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.doStringFunc(name) {") + fmt.Fprintln(w, " // continue") + fmt.Fprintln(w, " // }") + fmt.Fprintln(w, " // if mt.doIntFunc(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.doAnyFunc(name) {") fmt.Fprintln(w, " continue") fmt.Fprintln(w, " }") @@ -466,22 +359,12 @@ func guiAddStringFunc(w io.Writer, FRUITS string, FRUIT string, BRAND string) { func guiAddIntFunc(w io.Writer, FRUITS string, FRUIT string, BRAND string) { fmt.Fprintln(w, "") - fmt.Fprintln(w, "func (t *"+FRUITS+"Table) Add"+BRAND+"() {") - fmt.Fprintln(w, " t.AddIntFunc(\""+BRAND+"\", func(m *"+FRUIT+") int {") + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) Add"+BRAND+"() *"+FRUIT+"AnyFunc {") + fmt.Fprintln(w, " custf := t.AddIntFunc(\""+BRAND+"\", func(m *"+FRUIT+") int {") fmt.Fprintln(w, " return int(m."+BRAND+")") fmt.Fprintln(w, " })") + fmt.Fprintln(w, " return custf") fmt.Fprintln(w, "}") - /* - // examples of what these look like - fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddMemory() {") - fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, \"Memory\")") - fmt.Fprintln(w, "}") - fmt.Fprintln(w, "") - fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddCpus() {") - fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, \"Cpus\")") - fmt.Fprintln(w, "}") - fmt.Fprintln(w, "") - */ } func guiUpdate(w io.Writer, FRUITS string, FRUIT string) { @@ -491,21 +374,6 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, "") fmt.Fprintln(w, "// START TABLE UPDATE") - fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) todoUpdate() {") - fmt.Fprintln(w, " for _, name := range mt.pb.Order {") - fmt.Fprintln(w, " // log.Info(\""+FRUIT+"pb: trying to update row()\", name)") - fmt.Fprintln(w, " if mt.updateStringFunc(name) {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " /*") - fmt.Fprintln(w, " if mt.updateIntFunc(name) {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " */") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // mt.dumpStringFunc(\"Hostname\")") - fmt.Fprintln(w, " mt.parent.UpdateTable(mt.pb)") - fmt.Fprintln(w, "}") fmt.Fprintln(w, "") fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) dumpStringFunc(name string) {") fmt.Fprintln(w, " for i, r := range mt.pb.StringCols {") @@ -517,40 +385,6 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) { fmt.Fprintln(w, " }") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) updateStringFunc(name string) bool {") - fmt.Fprintln(w, " // log.Info(\"LOOKING FOR STRING row\", name)") - fmt.Fprintln(w, " var found *guipb.StringCol") - fmt.Fprintln(w, " for _, r := range mt.pb.StringCols {") - 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 string row\", name)") - fmt.Fprintln(w, " return false") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " for _, sf := range mt.stringFuncs {") - fmt.Fprintln(w, " if sf.title != name {") - fmt.Fprintln(w, " continue") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // log.Info(\""+FRUIT+"pb: starting\", name, found.Vals)") - fmt.Fprintln(w, " for i, _ := range found.Vals {") - fmt.Fprintln(w, " tmp := sf.f(mt.x."+FRUITS+"[i])") - fmt.Fprintln(w, " if tmp == \"www.wit.com\" {") - fmt.Fprintln(w, " log.Info(\"virtpb: FOUND WWW\", i)") - fmt.Fprintln(w, " tmp = \"new.www\"") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " found.Vals[i] = tmp") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " // log.Info(\""+FRUIT+"pb: ending\", name, found.Vals)") - fmt.Fprintln(w, " return true") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " return false") - fmt.Fprintln(w, "}") - fmt.Fprintln(w, "") } func guiTableDelete(w io.Writer, FRUITS string, FRUIT string) { @@ -571,7 +405,7 @@ func guiTableCustom(w io.Writer, FRUITS string, fRUITS string, FRUIT string, fRU fmt.Fprintln(w, " row := mt.x."+FRUITS+"[w.Location.Y-1]") fmt.Fprintln(w, " // log.Info(\"got to "+fRUITS+"Custom() with\", w.Location.X, w.Location.Y-1)") fmt.Fprintln(w, "") - fmt.Fprintln(w, " for _, sf := range mt.buttonFuncs {") + fmt.Fprintln(w, " for _, sf := range mt.anyFuncs {") fmt.Fprintln(w, " if sf.order == int(w.Location.X) {") fmt.Fprintln(w, " // log.Info(\"found order\", sf.order)") fmt.Fprintln(w, " if sf.Custom != nil {")