cloud-control-panel/gui-splashPage.go

137 lines
4.3 KiB
Go

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()
// TODO: turn 'Welcome' into a i18n for translations
box := gui.ShowTextBox(gw, text, splashClick, "Welcome")
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)
}
button := makeButton(box, nil, nil, "OK", "AREA", splashClick)
if (config.Debug) {
debugClick(button)
}
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, "<click or press any key>\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?
box := gui.HardBox(gw, gui.Yaxis, "addSubdomainQuestion")
// make a place for someone to enter their subdomain
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", addSubdomainClick)
log.Println("splashClick() END box =", box)
}
func addSubdomainClick(b *gui.GuiButton) {
log.Println("addSubdomainClick() 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)
State = "done"
log.Println("addSubdomainClick() 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")
}