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 (gui.Config.Debug) { gui.NewLabel(box, "git rev-list: " + GITCOMMIT) gui.NewLabel(box, "go build version: " + GOVERSION) gui.NewLabel(box, "build date: " + BUILDTIME) } makeButton(box, nil, nil, "OK", "AREA", splashClick) 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) { log.Println("splashClick() START") 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("splashClick() Box22", gw) // gw.UiTab.Hide() // Hide or Delete ? gw.UiTab.Delete(0) // does this make things more or less stable or neither? log.Println("splashClick() AddGenericBox() START") box := gui.AddGenericBox(gw, "addSubdomainQuestion") log.Println("splashClick() AddGenericBox() END box =", box) gui.NewLabel(box, "Enter your Subdomain or") makeButton(box, nil, nil, "Generate", "SUBDOMAIN", generateSubdomain) gui.AddEntry(box, "SUBDOMAIN") gui.HorizontalBreak(box) makeButton(box, nil, nil, "Create Subdomain Account", "ADD", addSubdomainButton) log.Println("splashClick() END box =", box) } func addSubdomainButton(b *gui.GuiButton) { log.Println("addSubdomainButton() START") subdomain := gui.GetText(b.Box, "SUBDOMAIN") if (subdomain == "") { gui.ErrorWindow(b.Box.Window, "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.Box.Window) gui.Data.State = "done" log.Println("addSubdomainButton() END") } func generateSubdomain(b *gui.GuiButton) { log.Println("generateSubdomain START") if values, ok := b.Values.(*myButtonInfo); ! ok { log.Println("\tvalues.Accounts error") } else { log.Println("\tvalues.Accounts =", values.Accounts) log.Println("\tvalues.Name =", values.Name) } // use this way? // values, _ := b.Values.(*myButtonInfo) if (b == nil) { log.Println("generateSubdomain ERROR b == nil") return } // subdomain.SetText("cust00013.wit.dev") // 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' txt := gui.SetText(b.Box, "SUBDOMAIN", "http://stackapi-api1.stackapi.customers.wit.com:4000/vms/jcarr") log.Println("generateSubdomain subdomain = ", txt) log.Println("generateSubdomain END") }