summaryrefslogtreecommitdiff
path: root/examples/cloudflare/gui.go
diff options
context:
space:
mode:
Diffstat (limited to 'examples/cloudflare/gui.go')
-rw-r--r--examples/cloudflare/gui.go122
1 files changed, 122 insertions, 0 deletions
diff --git a/examples/cloudflare/gui.go b/examples/cloudflare/gui.go
new file mode 100644
index 0000000..60fd5fe
--- /dev/null
+++ b/examples/cloudflare/gui.go
@@ -0,0 +1,122 @@
+// This is a simple example
+package main
+
+import (
+ "log"
+ "strconv"
+)
+
+func loadDNS(c *configT) {
+ hostname := c.domain
+ log.Println("adding DNS record", hostname)
+
+ newt := mainWindow.NewTab(hostname)
+ newg := newt.NewGroup("more")
+
+ // make a grid 6 things wide
+ grid := newg.NewGrid("gridnuts", 6, gridH)
+
+// grid.NewButton("Type", func () {
+// log.Println("sort by Type")
+// })
+ typedrop := grid.NewDropdown("type")
+ typedrop.AddText("A")
+ typedrop.AddText("AAAA")
+ typedrop.AddText("CNAME")
+ typedrop.Custom = func () {
+ log.Println("custom dropdown() a =", typedrop.Name, typedrop.S)
+ }
+ nb := grid.NewButton("Name", func () {
+ log.Println("sort by Name")
+ })
+ nb.Disable()
+
+ grid.NewButton("Protection", func () {
+ log.Println("sort proxied")
+ })
+ grid.NewButton("TTL", func () {
+ log.Println("sort by TTL")
+ })
+ nb = grid.NewButton("Value", func () {
+ log.Println("sort by Value")
+ })
+ nb.Disable()
+ nb = grid.NewButton("Save", func () {
+ log.Println("click below to save")
+ })
+ nb.Disable()
+
+ masterSave = newt.NewButton("Master Save", func () {
+ log.Println("save stuff to cloudflare")
+ })
+ masterSave.Disable()
+
+ records := getZonefile(c)
+ for _, record := range records.Result {
+ var rr RRT // dns zonefile resource record
+
+ // copy all the JSON values into the row record.
+ rr.ID = record.ID
+ rr.Type = record.Type
+ rr.Name = record.Name
+ rr.Content = record.Content
+ rr.Proxied = record.Proxied
+ rr.Proxiable = record.Proxiable
+ rr.TTL = record.TTL
+
+ rr.typeNode = grid.NewLabel(record.Type)
+ rr.nameNode = grid.NewEntryLine(record.Name)
+ rr.nameNode.SetText(record.Name)
+ rr.nameNode.Disable()
+
+ // set proxy or unproxied
+ rr.proxyNode = grid.NewDropdown("proxy")
+ if (record.Proxied) {
+ rr.proxyNode.AddText("Proxied")
+ rr.proxyNode.AddText("DNS")
+ } else {
+ rr.proxyNode.AddText("DNS")
+ rr.proxyNode.AddText("Proxied")
+ }
+ rr.proxyNode.Custom = func () {
+ log.Println("proxy dropdown() a =", rr.proxyNode.Name, rr.proxyNode.S, rr.ID)
+ rr.saveNode.Enable()
+ masterSave.Enable()
+ }
+
+ var ttl, short string
+ if (record.TTL == 1) {
+ ttl = "Auto"
+ } else {
+ ttl = strconv.Itoa(record.TTL)
+ }
+ rr.ttlNode = grid.NewLabel(ttl)
+ // short = fmt.Sprintf("%80s", record.Content)
+ short = record.Content
+ if len(short) > 40 {
+ short = short[:40] // Slice the first 20 characters
+ }
+
+ rr.valueNode = grid.NewEntryLine(short)
+ rr.valueNode.SetText(record.Content)
+
+ rr.valueNode.Custom = func () {
+ log.Println("value changed =", rr.valueNode.Name, rr.proxyNode.S, rr.ID)
+ rr.saveNode.Enable()
+ masterSave.Enable()
+ }
+
+ // fmt.Printf("ID: %s, Type: %s, Name: %s, short Content: %s\n", record.ID, record.Type, record.Name, short)
+ // fmt.Printf("\tproxied: %b, %b, string TTL: %i\n", record.Proxied, record.Proxiable, ttl)
+
+ rr.saveNode = grid.NewButton("Save", nil)
+ rr.saveNode.Disable()
+ rr.saveNode.Custom = func () {
+ name := "save stuff to cloudflare for " + rr.ID
+ log.Println(name)
+ doChange(&rr)
+ }
+ }
+
+ grid.Pad()
+}