diff options
| author | Jeff Carr <[email protected]> | 2025-03-10 09:11:48 -0500 | 
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-03-10 09:11:48 -0500 | 
| commit | 9449b5699e5fba0fffefc3917a7eb15615677966 (patch) | |
| tree | 1095b0d5528ad6e2953f06995c202fe7ed0d73d9 | |
| parent | 68bf08bd6ca9ecbb3c5c846c908cd89450fbd96e (diff) | |
staandard protobuf droplets window
| -rw-r--r-- | windowDroplets.go | 117 | 
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 +}  | 
