diff options
Diffstat (limited to 'examples/cloudflare/gui.go')
| -rw-r--r-- | examples/cloudflare/gui.go | 122 |
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() +} |
