summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--windowDroplets.go117
1 files changed, 117 insertions, 0 deletions
diff --git a/windowDroplets.go b/windowDroplets.go
new file mode 100644
index 0000000..58752e1
--- /dev/null
+++ b/windowDroplets.go
@@ -0,0 +1,117 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "sync"
+
+ "go.wit.com/gui"
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/lib/protobuf/virtpb"
+ "go.wit.com/log"
+)
+
+type stdDropletTableWin struct {
+ sync.Mutex
+ win *gadgets.GenericWindow // the machines gui window
+ box *gui.Node // the machines gui parent box widget
+ TB *virtpb.DropletsTable // the gui table buffer
+ update bool // if the window should be updated
+}
+
+func (w *stdDropletTableWin) Toggle() {
+ if w == nil {
+ return
+ }
+ if w.win == nil {
+ return
+ }
+ w.win.Toggle()
+}
+
+func makeDropletsWin() *stdDropletTableWin {
+ dwin := new(stdDropletTableWin)
+ dwin.win = gadgets.NewGenericWindow("virtigo current droplets", "who is squirreling around?")
+ dwin.win.Custom = func() {
+ log.Info("test delete window here")
+ }
+ grid := dwin.win.Group.RawGrid()
+
+ grid.NewButton("show droplets", func() {
+ var count int
+ found := virtpb.NewDroplets()
+ all := me.droplets.All()
+ for all.Scan() {
+ e := all.Next()
+ count += 1
+ found.Append(e)
+ if count > 20 {
+ break
+ }
+ }
+ dwin.doDropletsTable(found)
+ })
+
+ /*
+ grid.NewButton("Save Current", func() {
+ log.Info("droplets len =", me.droplets.Len())
+ me.droplets.Save()
+ })
+ */
+
+ // make a box at the bottom of the window for the protobuf table
+ dwin.box = dwin.win.Bottom.Box().SetProgName("TBOX")
+ // doTable(me.droplets)
+
+ return dwin
+}
+
+func (dwin *stdDropletTableWin) doDropletsTable(currentDroplets *virtpb.Droplets) {
+ dwin.Lock()
+ defer dwin.Unlock()
+ if dwin.TB != nil {
+ dwin.TB.Delete()
+ dwin.TB = nil
+ }
+
+ // display the protobuf
+ dwin.TB = AddDropletsPB(dwin.box, currentDroplets)
+ f := func(e *Droplet) {
+ log.Info("Triggered. do something here", e.Hostname)
+ // m.Enabled = true
+ }
+ dwin.TB.Custom(f)
+}
+
+func AddDropletsPB(tbox *gui.Node, pb *virtpb.Droplets) *virtpb.DropletsTable {
+ t := pb.NewTable("DropletsPB")
+ t.NewUuid()
+ t.SetParent(tbox)
+
+ /*
+ ctimef := func(e *virtpb.Droplet) string {
+ ctime := e.Ctime.AsTime()
+ return ctime.Format("2006/01/02 15:04")
+ }
+ t.AddStringFunc("ctime", ctimef)
+
+ etimef := func(e *virtpb.Droplet) string {
+ etime := e.Etime.AsTime()
+ s := etime.Format("2006/01/02 15:04")
+ if strings.HasPrefix(s, "1970/") {
+ // just show a blank if it's not set
+ return ""
+ }
+ return s
+ }
+ t.AddStringFunc("etime", etimef)
+ */
+
+ t.AddHostname()
+ // t.AddAddress()
+ // t.AddWhere()
+ // t.AddLocalPort()
+ t.ShowTable()
+ return t
+}