initial commit

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-01 15:26:36 -06:00
commit 5aacba7ff2
4 changed files with 130 additions and 0 deletions

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
control-panel-dns
/files/*
/*.deb
*.swp
/plugins/*
control-panel-digitalocean

26
Makefile Normal file
View File

@ -0,0 +1,26 @@
# export GO111MODULE="off"
run: build
reset
./control-panel-digitalocean --gui-debug
build-release:
go get -v -u -x .
go build -v -o control-panel-digitalocean
./control-panel-digitalocean
build:
go get -v -x .
go build -v -o control-panel-digitalocean
update:
go get -v -u -x .
log:
reset
tail -f /tmp/witgui.* /tmp/guilogfile
gocui: build
./control-panel-digitalocean -gui gocui
quiet:
./control-panel-digitalocean >/tmp/witgui.log.stderr 2>&1

18
argv.go Normal file
View File

@ -0,0 +1,18 @@
package main
/*
this enables command line options from other packages like 'gui' and 'log'
*/
import (
arg "github.com/alexflint/go-arg"
"go.wit.com/log"
"go.wit.com/gui/gui"
)
func init() {
arg.MustParse()
log.Info("INIT() gui args.ArgDebug =", gui.ArgDebug())
}

79
main.go Normal file
View File

@ -0,0 +1,79 @@
package main
import (
"time"
"go.wit.com/log"
"go.wit.com/gui/gui"
"go.wit.com/gui/digitalocean"
)
var title string = "Cloud App"
var myGui *gui.Node
var myDo *digitalocean.DigitalOcean
func main() {
// initialize a new GO GUI instance
myGui = gui.New().Default()
// draw the main window
cloudApp(myGui)
log.Sleep(1)
myDo = digitalocean.New(myGui)
myDo.Update()
myDo.Show()
doUpdate()
// This is just a optional goroutine to watch that things are alive
gui.Watchdog()
gui.StandardExit()
}
func cloudApp(n *gui.Node) *gui.Node {
win := n.NewWindow(title)
// make a group label and a grid
group := win.NewGroup("data").Pad()
grid := group.NewGrid("grid", 2, 1).Pad()
grid.NewButton("New()", func () {
myDo = digitalocean.New(myGui)
})
grid.NewLabel("initializes the DO golang gui package")
grid.NewButton("Show", func () {
myDo.Show()
})
grid.NewLabel("will show the DO window")
grid.NewButton("Hide", func () {
myDo.Hide()
})
grid.NewLabel("will hide the DO window")
grid.NewButton("Update", func () {
myDo.Update()
})
grid.NewLabel("polls DO via the API to find the state of all your droplets")
grid.NewButton("Create", func () {
// myDo.Create("jcarr.wit.com")
digitalocean.InitCreateWindow()
})
grid.NewLabel("makes a new droplet")
return win
}
func doUpdate() {
ticker := time.NewTicker(10 * time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
myDo.Update()
}
}
}