package main import "log" import "runtime" import "git.wit.com/wit/gui" import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" import pb "git.wit.com/wit/witProtobuf" func showSplashBox(gw *gui.GuiWindow) *gui.GuiBox { log.Println("ShowSplashBox() START") text := getNEWTEXT() box := gui.ShowTextBox(gw, text, splashClick) if runtime.GOOS == "linux" { gui.NewLabel(box,"OS: Linux") } else if runtime.GOOS == "windows" { gui.NewLabel(box,"OS: Windows") } else { gui.NewLabel(box,"OS: " + runtime.GOOS) } gui.NewLabel(box, "Version: " + VERSION) if (config.Debug) { gui.NewLabel(box, "git rev-list: " + GITCOMMIT) gui.NewLabel(box, "go build version: " + GOVERSION) gui.NewLabel(box, "build date: " + BUILDTIME) } okButton := gui.CreateButton(box, nil, nil, "OK", "AREA", splashClick) gui.AddButtonToBox(box, okButton) log.Println("ShowSplashBox() END box =", box) return box } func getNEWTEXT() *ui.AttributedString { var aText *ui.AttributedString aText = ui.NewAttributedString("") gui.AreaAppendText(aText, "Welcome to the Cloud Control Panel\n", ui.TextSize(16), ui.TextColor{0.0, 0.0, 0.8, .8}) gui.AreaAppendText(aText, "(alpha)\n\n", ui.TextSize(10)) gui.AreaAppendText(aText, "This control panel was designed to be an interface to your 'private' cloud. ", ui.TextWeightBold) gui.AreaAppendText(aText, "The concept of a private cloud means that you can use a providers system, or, seemlessly, use your own hardware in your own datacenter. ", ui.TextWeightBold) aText.AppendUnattributed("\n") aText.AppendUnattributed("\n") gui.AreaAppendText(aText, "This control panel requires:\n") aText.AppendUnattributed("\n") gui.AreaAppendText(aText, "IPv6\n") gui.AreaAppendText(aText, "Your hostname in DNS\n") aText.AppendUnattributed("\n\n\n\n\n") gui.AreaAppendText(aText, "\n", ui.TextSize(10)) return aText } func splashClick(b *gui.GuiButton) { gw := b.Box.Window // if there is already an account, skip straight to the main screen for key, _ := range config.Accounts { log.Println("gui.State = splash BUT THERE IS AN ACCOUNT Account = ", config.Accounts[key]) makeCloudInfoBox(gw) return } // if there is not an account, then go to 'make account' gw = gui.InitGuiWindow(config, "Box22", gw) gw.UiTab.Delete(0) log.Println("addSubdomainQuestionBox() START") box := gui.AddGenericBox(gw, "addSubdomainQuestion") gui.NewLabel(box, "Enter your Subdomain or") button := gui.CreateButton(box, nil, nil, "Generate", "SUBDOMAIN", generateSubdomain) gui.AddButtonToBox(box, button) gui.AddEntry(box, "SUBDOMAIN") gui.HorizontalBreak(box) button2 := gui.CreateButton(box, nil, nil, "Create Subdomain Account", "ADD", addSubdomainButton) gui.AddButtonToBox(box, button2) log.Println("addSubdomainQuestionBox() END box =", box) } // curl -vv -X POST -H "X-Wit-Auth: $TOKEN" 'http://stackapi-api1.stackapi.customers.wit.com:4000/vms/toby?count=1&cpu=2&ram=512&disk=25' func addSubdomainButton(b *gui.GuiButton) { log.Println("addSubdomainButton() START") subdomain := gui.GetText(b.Box, "SUBDOMAIN") if (subdomain == "") { gui.ErrorWindow(b.GW, "Blank Name", "You must have a valid subdomain") return } log.Println("\tsubdomain =", subdomain) acc := new(pb.Account) acc.Nick = subdomain acc.Domain = subdomain acc.Username = "jcarr@wit.com" acc.Email = "jcarr@wit.com" acc.Password = "badpass" acc.URL = "http://stackapi-api1.stackapi.customers.dev.wit.com:4000/" config.Accounts = append(config.Accounts, acc) makeCloudInfoBox(b.GW) gui.Data.State = "done" log.Println("addSubdomainButton() END") } func generateSubdomain(b *gui.GuiButton) { log.Println("generateSubdomain START") if (b == nil) { log.Println("generateSubdomain ERROR b == nil") return } // subdomain.SetText("cust00013.wit.dev") txt := gui.SetText(b.Box, "SUBDOMAIN", "cust001.testing.com.customers.wprod.wit.com") log.Println("generateSubdomain subdomain = ", txt) log.Println("generateSubdomain END") }