135 lines
4.2 KiB
Go
135 lines
4.2 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()
|
|
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, "<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.Delete(0)
|
|
|
|
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")
|
|
}
|