summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-03-17 08:18:56 -0500
committerJeff Carr <[email protected]>2025-03-22 09:46:16 -0500
commita97379d76fa34265221b9ab05a38c802f4a09cda (patch)
tree138952f89d78721b7babcee92d8db4f502f6d4d5
parent46472fa86881b91786e13b0c68fe95c7fbe70775 (diff)
move to more common code
-rw-r--r--doGui.go88
-rw-r--r--windowGeneric.go107
-rw-r--r--windowHypervisors.go59
3 files changed, 88 insertions, 166 deletions
diff --git a/doGui.go b/doGui.go
index f94a768..14f6954 100644
--- a/doGui.go
+++ b/doGui.go
@@ -52,16 +52,33 @@ func drawWindow(win *gadgets.BasicWindow) {
group1 := vbox.NewGroup("Virtigo Settings")
grid := group1.NewGrid("buildOptions", 0, 0)
- var hyperWin *GenericWindow
- grid.NewButton("hypervisors", func() {
- if hyperWin != nil {
- hyperWin.Toggle()
+ /*
+ var hyperWin *gadgets.GenericWindow
+ grid.NewButton("hypervisors", func() {
+ if hyperWin != nil {
+ hyperWin.Toggle()
+ return
+ }
+ hyperWin = makeHypervisorsWindow(me.cluster.H)
+ })
+ */
+
+ var newHyperWin *stdHypervisorTableWin
+ grid.NewButton("show hypervisors", func() {
+ if newHyperWin != nil {
+ log.Info("redraw hypervisors")
+ newHyperWin.doNewStdHypervisors(me.cluster.H)
return
}
- hyperWin = makeHypervisorsWindow(me.cluster.H)
+ log.Info("Hypervisors len=", me.cluster.H.Len())
+ newHyperWin = newHypervisorsWindow()
+ newHyperWin.doNewStdHypervisors(me.cluster.H)
+ newHyperWin.win.Custom = func() {
+ log.Info("hiding table window")
+ }
})
- var dropWin *GenericWindow
+ var dropWin *gadgets.GenericWindow
grid.NewButton("droplets", func() {
if dropWin != nil {
dropWin.Toggle()
@@ -84,7 +101,7 @@ func drawWindow(win *gadgets.BasicWindow) {
}
})
- var eventWin *GenericWindow
+ var eventWin *gadgets.GenericWindow
grid.NewButton("events)", func() {
log.Info("todo: make code for this")
if eventWin != nil {
@@ -99,7 +116,7 @@ func drawWindow(win *gadgets.BasicWindow) {
log.Info("todo: make code for this")
})
- var testWin *GenericWindow
+ var testWin *gadgets.GenericWindow
grid.NewButton("create droplet", func() {
if testWin != nil {
testWin.Toggle()
@@ -127,8 +144,8 @@ func updateUptimeGui(uptime string) {
me.lastuptime.SetLabel("last uptime at " + datestamp)
}
-func makeDropletsWindow(pb *virtpb.Droplets) (*GenericWindow, *virtpb.DropletsTable) {
- win := NewGenericWindow("Droplets registered with Virtigo", "Buttons of things")
+func makeDropletsWindow(pb *virtpb.Droplets) (*gadgets.GenericWindow, *virtpb.DropletsTable) {
+ win := gadgets.NewGenericWindow("Droplets registered with Virtigo", "Buttons of things")
t := pb.NewTable("testDroptable")
t.NewUuid()
@@ -181,55 +198,8 @@ func makeDropletsWindow(pb *virtpb.Droplets) (*GenericWindow, *virtpb.DropletsTa
return win, t
}
-func makeHypervisorsWindow(pb *virtpb.Hypervisors) *GenericWindow {
- win := NewGenericWindow("Hypervisors registered with Virtigo", "Buttons of things")
- t := pb.NewTable("testHyper")
- grid := win.Group.RawGrid()
- grid.NewButton("List", func() {
- log.Info("list...")
- })
- /*
- grid.NewButton("Update", func() {
- t.Update()
- })
- */
-
- tbox := win.Bottom.Box() // a vertical box (like a stack of books)
- t.NewUuid()
- t.SetParent(tbox)
- t.AddHostname()
- t.AddMemory()
- t.AddCpus()
- t.AddTimeFunc("last poll", func(h *virtpb.Hypervisor) time.Time {
- hm := me.hmap[h]
- tmp := hm.lastpoll
- log.Info("poll age", h.Hostname, virtpb.FormatDuration(time.Since(tmp)))
- return tmp
- })
- t.AddKillcount()
- t.AddStringFunc("droplets", func(h *virtpb.Hypervisor) string {
- var totalDroplets int
- var totalUnknownDroplets int
- // dur := time.Since(h.lastpoll)
- // tmp := virtpb.FormatDuration(dur)
- // fmt.Fprintln(w, h.pb.Hostname, "killcount =", h.killcount, "lastpoll:", tmp)
- hm := me.hmap[h]
- for name, _ := range hm.lastDroplets {
- totalDroplets += 1
- d := me.cluster.FindDropletByName(name)
- if d == nil {
- totalUnknownDroplets += 1
- }
- }
- log.Printf("Total Droplets %d total libvirt only droplets = %d\n", totalDroplets, totalUnknownDroplets)
- return fmt.Sprintf("%d", totalDroplets)
- })
- t.ShowTable()
- return win
-}
-
-func makeEventsWindow(pb *virtpb.Events) *GenericWindow {
- win := NewGenericWindow("Cluster Events", "Buttons of things")
+func makeEventsWindow(pb *virtpb.Events) *gadgets.GenericWindow {
+ win := gadgets.NewGenericWindow("Cluster Events", "Buttons of things")
grid := win.Group.RawGrid()
grid.NewButton("List", func() {
log.Info("list...")
diff --git a/windowGeneric.go b/windowGeneric.go
deleted file mode 100644
index a487574..0000000
--- a/windowGeneric.go
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
-// Use of this source code is governed by the GPL 3.0
-
-package main
-
-// This model works for 99.9% of all windows
-// This is the Default Standard Window Model
-
-import (
- "go.wit.com/lib/gadgets"
- "go.wit.com/log"
-
- "go.wit.com/gui"
-)
-
-type GenericWindow struct {
- Win *gadgets.BasicWindow // the window widget itself
- Shelf *gui.Node // the overall box: the shelf
- Stack *gui.Node // the first box is a stack
- Top *gui.Node // the first item in the stack is always a shelf like box
- Group *gui.Node // the first item top box is always a group
- Middle *gui.Node // the middle box (shelf style)
- Bottom *gui.Node // the bottom box (stack style)
-}
-
-func (gw *GenericWindow) Hidden() bool {
- if gw == nil {
- return true
- }
- if gw.Win == nil {
- return true
- }
- return gw.Win.Hidden()
-}
-
-func (gw *GenericWindow) Toggle() {
- if gw.Hidden() {
- gw.Show()
- } else {
- gw.Hide()
- }
-}
-
-func (gw *GenericWindow) Show() {
- if gw == nil {
- return
- }
- if gw.Win == nil {
- return
- }
- gw.Win.Show()
-}
-
-func (gw *GenericWindow) Hide() {
- if gw == nil {
- return
- }
- if gw.Win == nil {
- return
- }
- gw.Win.Hide()
-}
-
-func (gw *GenericWindow) Disable() {
- if gw == nil {
- return
- }
- if gw.Shelf == nil {
- return
- }
- gw.Shelf.Disable()
-}
-
-func (gw *GenericWindow) Enable() {
- if gw == nil {
- return
- }
- if gw.Shelf == nil {
- return
- }
- gw.Shelf.Enable()
-}
-
-func NewGenericWindow(title string, grouptxt string) *GenericWindow {
- gw := new(GenericWindow)
- gw.Win = gadgets.RawBasicWindow(title)
- gw.Win.Make()
-
- gw.Win.Custom = func() {
- log.Warn("Found Window close. setting hidden=true")
- // sets the hidden flag to false so Toggle() works
- gw.Win.Hide()
- }
- gw.Shelf = gw.Win.Box()
- // gw.Shelf.Vertical().SetProgName("ShelfBox")
- gw.Stack = gw.Shelf.NewVerticalBox("Stackbox")
-
- gw.Top = gw.Stack.NewVerticalBox("Stackbox")
- gw.Middle = gw.Stack.Box()
- gw.Bottom = gw.Stack.Box()
-
- gw.Group = gw.Top.NewGroup(grouptxt)
-
- gw.Show()
-
- return gw
-}
diff --git a/windowHypervisors.go b/windowHypervisors.go
index 31da9f6..8e3dc27 100644
--- a/windowHypervisors.go
+++ b/windowHypervisors.go
@@ -4,6 +4,7 @@
package main
import (
+ "fmt"
"sync"
"time"
@@ -103,3 +104,61 @@ func (dw *stdHypervisorTableWin) doStdHypervisors(pb *virtpb.Hypervisors) {
dw.TB.ShowTable()
}
+
+// default table protobuf window
+func (dw *stdHypervisorTableWin) doNewStdHypervisors(pb *virtpb.Hypervisors) {
+ dw.Lock()
+ defer dw.Unlock()
+
+ // erase the old table
+ if dw.TB != nil {
+ dw.TB.Delete()
+ dw.TB = nil
+ }
+
+ // init the table
+ dw.pb = pb
+ t := dw.pb.NewTable("HypervisorsPB Off")
+ t.NewUuid()
+ t.SetParent(dw.box)
+
+ // pick the columns
+ t.AddHostname()
+ t.AddMemory()
+ t.AddCpus()
+ t.AddKillcount()
+ t.AddTimeFunc("last poll", func(h *virtpb.Hypervisor) time.Time {
+ // hm := me.hmap[h]
+ // tmp := hm.lastpoll
+ // log.Info("poll age", h.Hostname, virtpb.FormatDuration(time.Since(tmp)))
+ return time.Now()
+ })
+ t.AddStringFunc("droplets", func(h *virtpb.Hypervisor) string {
+ var totalDroplets int
+ var totalUnknownDroplets int
+ // dur := time.Since(h.lastpoll)
+ // tmp := virtpb.FormatDuration(dur)
+ // fmt.Fprintln(w, h.pb.Hostname, "killcount =", h.killcount, "lastpoll:", tmp)
+ hm := me.hmap[h]
+ for name, _ := range hm.lastDroplets {
+ totalDroplets += 1
+ d := me.cluster.FindDropletByName(name)
+ if d == nil {
+ totalUnknownDroplets += 1
+ }
+ }
+ log.Printf("Total Droplets %d total libvirt only droplets = %d\n", totalDroplets, totalUnknownDroplets)
+ return fmt.Sprintf("%d", totalDroplets)
+ // return "todo"
+ })
+
+ // display the protobuf
+ dw.TB = t
+ f := func(e *virtpb.Hypervisor) {
+ log.Info("std HypervisorWindow() something here", e.Hostname)
+ // m.Enabled = true
+ }
+ dw.TB.Custom(f)
+
+ dw.TB.ShowTable()
+}