// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main import ( "fmt" "time" "go.wit.com/gui" "go.wit.com/lib/gadgets" "go.wit.com/lib/protobuf/zoopb" "go.wit.com/log" ) func addButtonForZooPB(grid *gui.Node) (*gui.Node, *gadgets.GenericWindow) { var win *gadgets.GenericWindow b := grid.NewButton("show zoo", func() { // if the window exists, just toggle it open or closed if win != nil { win.Toggle() return } win = gadgets.NewGenericWindow("Zoo Raw PB View", "Stuff") win.Win.Custom = func() { log.Info("test delete window here") } tbox := win.Bottom.Box().SetProgName("TBOX") grid := win.Group.RawGrid() var t *zoopb.MachinesTable grid.NewButton("Show", func() { if t != nil { t.Delete() t = nil } // display the protobuf t = AddMachinesPB(tbox, me.machines) f := func(m *zoopb.Machine) { log.Info("got to MachinesTable.Custom() ", m.Hostname) } t.Custom(f) log.Info("table has uuid", t.GetUuid()) }) grid.NewButton("update", func() { if t != nil { t.Delete() t = nil } t = AddMachinesPB(tbox, me.machines) log.Info("table has uuid", t.GetUuid()) }) grid.NewButton("ListChildren", func() { me.myGui.ListChildren(false) }) }) return b, win } func AddMachinesPB(tbox *gui.Node, pb *zoopb.Machines) *zoopb.MachinesTable { t := pb.NewTable("MachinesPB") t.NewUuid() t.SetParent(tbox) t.AddHostname() t.AddMemory() t.AddCpus() t.AddStringFunc("sMB", func(m *zoopb.Machine) string { return fmt.Sprintf("%d mb", m.Memory/(1024*1024)) }) t.AddStringFunc("zood", func(m *zoopb.Machine) string { return findVersion(m, "zood") }) t.AddTimeFunc("age", func(m *zoopb.Machine) time.Time { return m.Laststamp.AsTime() }) f := func(m *zoopb.Machine) string { log.Info("machine =", m.Hostname) return m.Hostname } t.AddButtonFunc("upgrade", f) t.ShowTable() return t }