summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..be46fdb
--- /dev/null
+++ b/main.go
@@ -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()
+ }
+ }
+}