rearrange gui code
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
936176010a
commit
8b1d68fd91
|
@ -3,8 +3,8 @@ package main
|
|||
import "log"
|
||||
import "fmt"
|
||||
import "time"
|
||||
import "runtime"
|
||||
import "runtime/debug"
|
||||
// import "runtime"
|
||||
// import "runtime/debug"
|
||||
|
||||
import "git.wit.com/wit/gui"
|
||||
import pb "git.wit.com/wit/witProtobuf"
|
||||
|
@ -16,6 +16,25 @@ import pb "git.wit.com/wit/witProtobuf"
|
|||
// Most mouse clicks are now moved to custom functions
|
||||
//
|
||||
|
||||
// stores the fields we want to map into our private structure 'values'
|
||||
func makeGuiButtonValues(box *gui.GuiBox, a *pb.Account, vm *pb.Event_VM,
|
||||
name string, action string, custom func(*gui.GuiButton)) *myButtonInfo {
|
||||
val := &myButtonInfo{}
|
||||
val.Account = a
|
||||
val.Accounts = config.Accounts
|
||||
val.VM = vm
|
||||
val.Custom = custom
|
||||
val.Name = "jcarr"
|
||||
val.Action = action
|
||||
return val
|
||||
}
|
||||
|
||||
func makeButton(box *gui.GuiBox, a *pb.Account, vm *pb.Event_VM,
|
||||
name string, action string, custom func(*gui.GuiButton)) *gui.GuiButton {
|
||||
val := makeGuiButtonValues(box, a, vm, name, action, custom)
|
||||
return gui.CreateButton(box, custom, name, val)
|
||||
}
|
||||
|
||||
func mainMouseClick(b *gui.GuiButton) {
|
||||
defer r() // a golang trick to try to not crash on certain errors
|
||||
|
||||
|
@ -49,115 +68,109 @@ func mainMouseClick(b *gui.GuiButton) {
|
|||
onExit(nil)
|
||||
} else if (values.Action == "CREATE") {
|
||||
log.Println("\tTRY TO ADD A NEW VIRTUAL MACHINE")
|
||||
/*
|
||||
log.Println("\tTRIGGER CREATE VM")
|
||||
State = "CREATE"
|
||||
event := pb.MakeAddVmEvent()
|
||||
for key, entry := range gui.Data.AllEntries {
|
||||
log.Println("\tdefaultEntryChange() Data.AllEntries =", key, entry)
|
||||
log.Println("\tdefaultEntryChange() Data.AllEntries[key].Name =", entry.Name)
|
||||
if (entry.Name == "Hostname") {
|
||||
event.Vms[0].Hostname = entry.UiEntry.Text()
|
||||
}
|
||||
if (entry.Name == "Memory") {
|
||||
event.Vms[0].Memory = pint64(entry.UiEntry.Text())
|
||||
}
|
||||
log.Println("\tdefaultEntryChange() Data.AllEntries[key].E =", entry.UiEntry.Text())
|
||||
log.Println("\tdefaultEntryChange() Data.AllEntries[key].B =", entry.B)
|
||||
if entry.B == b {
|
||||
log.Println("defaultEntryChange() FOUND. Entry assigned to Button", b)
|
||||
}
|
||||
}
|
||||
event.Account = values.Account
|
||||
log.Println("\tTRIGGERING CREATE event=", event)
|
||||
log.Println("\tTRIGGERING CREATE event.Account=", event.Account)
|
||||
websocketSendProtobuf(event)
|
||||
*/
|
||||
} else if (values.Action == "CONFIG") {
|
||||
newConfig := loadDefaultConfig()
|
||||
config.Accounts = newConfig.Accounts
|
||||
State = "done"
|
||||
} else if (values.Action == "DEBUG") {
|
||||
log.Println("\tdebug.PrintStack() (SHOULD BE JUST THIS goroutine)")
|
||||
debug.PrintStack()
|
||||
} else if (values.Action == "DEBUG FULL") {
|
||||
log.Println("\tATTEMPT FULL STACK DUMP")
|
||||
buf := make([]byte, 1<<16)
|
||||
runtime.Stack(buf, true)
|
||||
log.Printf("%s", buf)
|
||||
log.Println("\tFINISHED FULL STACK DUMP")
|
||||
/*
|
||||
} else if (values.Action == "SHOW VM") {
|
||||
if (gui.Data.Debug) {
|
||||
log.Println("\tATTEMPTING TO SHOW VM TAB gw = ", gw)
|
||||
createVmBox(gw, b.VM)
|
||||
} else {
|
||||
log.Println("\tATTEMPTING TO SHOW VM TAB gw = ", gw)
|
||||
createVmBox(gw, b.VM)
|
||||
}
|
||||
*/
|
||||
createVmClick(b)
|
||||
} else if (values.Action == "SHOW") {
|
||||
log.Println("\tTRIGGER DISPLAY ACCOUNT")
|
||||
State = "SEND WEBSOCKET"
|
||||
|
||||
event := pb.MakeGetEvent()
|
||||
event.Account = values.Account
|
||||
websocketSendProtobuf(event)
|
||||
|
||||
count := 0
|
||||
for {
|
||||
log.Println("\tSleep() in buttonClick() State =", State)
|
||||
time.Sleep(200 * time.Millisecond)
|
||||
if (State == "NEW PROTOBUF") {
|
||||
if (currentMessage == nil) {
|
||||
gui.ErrorWindow(gw,
|
||||
"There was a socket error",
|
||||
"More detailed information can be shown here.")
|
||||
State = "done"
|
||||
} else {
|
||||
count := countVMS(currentMessage)
|
||||
log.Println("\tSHOW VMS currentMessage =", currentMessage)
|
||||
log.Println("\tSHOW VMS count =", count)
|
||||
// TODO: make sure login worked & the account really has zero VMs
|
||||
// if (count != 0) {
|
||||
name := "Virtual Machines (" + values.Account.Nick + ")"
|
||||
mh := addVmsTab(gw, name, count, values.Account)
|
||||
ReadReceivedData(currentMessage, mh, b.Box)
|
||||
// }
|
||||
currentMessage = nil
|
||||
State = "done"
|
||||
}
|
||||
return
|
||||
}
|
||||
count += 1
|
||||
if (count > 10) {
|
||||
log.Println("\tERROR: waited too long for a resposne")
|
||||
currentMessage = nil
|
||||
State = "done"
|
||||
return
|
||||
}
|
||||
}
|
||||
showAccountClick(b)
|
||||
}
|
||||
log.Println("mainMouseClick() BACK IN CONTROL PANEL CODE")
|
||||
log.Println("mainMouseClick() FAILED TO FIND values.Action =", values.Action)
|
||||
log.Println("mainMouseClick() END")
|
||||
}
|
||||
|
||||
// stores the fields we want to map into our private structure 'values'
|
||||
func makeGuiButtonValues(box *gui.GuiBox, a *pb.Account, vm *pb.Event_VM,
|
||||
name string, action string, custom func(*gui.GuiButton)) *myButtonInfo {
|
||||
val := &myButtonInfo{}
|
||||
val.Account = a
|
||||
val.Accounts = config.Accounts
|
||||
val.VM = vm
|
||||
val.Custom = custom
|
||||
val.Name = "jcarr"
|
||||
val.Action = action
|
||||
return val
|
||||
func showAccountClick(b *gui.GuiButton) {
|
||||
log.Println("\tTRIGGER DISPLAY ACCOUNT")
|
||||
State = "SEND WEBSOCKET"
|
||||
|
||||
var values *myButtonInfo
|
||||
|
||||
if tmp, ok := b.Values.(*myButtonInfo); ! ok {
|
||||
log.Println("\tmainMouseClick() values.Accounts error =", ok)
|
||||
log.Println("\tmainMouseClick() values.Accounts tmp =", tmp)
|
||||
} else {
|
||||
values = tmp
|
||||
}
|
||||
log.Println("\tmainMouseClick() values.Accounts =", values.Accounts)
|
||||
log.Println("\tmainMouseClick() values.Name = ", values.Name)
|
||||
|
||||
var gw *gui.GuiWindow
|
||||
gw = b.Box.Window
|
||||
|
||||
event := pb.MakeGetEvent()
|
||||
event.Account = values.Account
|
||||
websocketSendProtobuf(event)
|
||||
|
||||
count := 0
|
||||
for {
|
||||
log.Println("\tSleep() in buttonClick() State =", State)
|
||||
time.Sleep(200 * time.Millisecond)
|
||||
if (State == "NEW PROTOBUF") {
|
||||
if (currentMessage == nil) {
|
||||
gui.ErrorWindow(gw,
|
||||
"There was a socket error",
|
||||
"More detailed information can be shown here.")
|
||||
State = "done"
|
||||
} else {
|
||||
count := countVMS(currentMessage)
|
||||
log.Println("\tSHOW VMS currentMessage =", currentMessage)
|
||||
log.Println("\tSHOW VMS count =", count)
|
||||
// TODO: make sure login worked & the account really has zero VMs
|
||||
// if (count != 0) {
|
||||
name := "Virtual Machines (" + values.Account.Nick + ")"
|
||||
mh := addVmsTab(gw, name, count, values.Account)
|
||||
ReadReceivedData(currentMessage, mh, b.Box)
|
||||
// }
|
||||
currentMessage = nil
|
||||
State = "done"
|
||||
}
|
||||
return
|
||||
}
|
||||
count += 1
|
||||
if (count > 10) {
|
||||
log.Println("\tERROR: waited too long for a resposne")
|
||||
currentMessage = nil
|
||||
State = "done"
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func makeButton(box *gui.GuiBox, a *pb.Account, vm *pb.Event_VM,
|
||||
name string, action string, custom func(*gui.GuiButton)) *gui.GuiButton {
|
||||
val := makeGuiButtonValues(box, a, vm, name, action, custom)
|
||||
return gui.CreateButton(box, custom, name, val)
|
||||
func createVmClick(b *gui.GuiButton) {
|
||||
log.Println("createVmClick()")
|
||||
|
||||
var values *myButtonInfo
|
||||
|
||||
if tmp, ok := b.Values.(*myButtonInfo); ! ok {
|
||||
log.Println("\tmainMouseClick() values.Accounts error =", ok)
|
||||
log.Println("\tmainMouseClick() values.Accounts tmp =", tmp)
|
||||
} else {
|
||||
values = tmp
|
||||
}
|
||||
log.Println("\tmainMouseClick() values.Accounts =", values.Accounts)
|
||||
log.Println("\tmainMouseClick() values.Name = ", values.Name)
|
||||
|
||||
// var gw *gui.GuiWindow
|
||||
// gw = b.Box.Window
|
||||
|
||||
log.Println("\tTRIGGER CREATE VM")
|
||||
State = "CREATE"
|
||||
event := pb.MakeAddVmEvent()
|
||||
for key, entry := range gui.Data.AllEntries {
|
||||
log.Println("\tdefaultEntryChange() Data.AllEntries =", key, entry)
|
||||
log.Println("\tdefaultEntryChange() Data.AllEntries[key].Name =", entry.Name)
|
||||
if (entry.Name == "Hostname") {
|
||||
event.Vms[0].Hostname = entry.UiEntry.Text()
|
||||
}
|
||||
if (entry.Name == "Memory") {
|
||||
event.Vms[0].Memory = pint64(entry.UiEntry.Text())
|
||||
}
|
||||
log.Println("\tdefaultEntryChange() Data.AllEntries[key].E =", entry.UiEntry.Text())
|
||||
log.Println("\tdefaultEntryChange() Data.AllEntries[key].B =", entry.B)
|
||||
if entry.B == b {
|
||||
log.Println("defaultEntryChange() FOUND. Entry assigned to Button", b)
|
||||
}
|
||||
}
|
||||
event.Account = values.Account
|
||||
log.Println("\tTRIGGERING CREATE event=", event)
|
||||
log.Println("\tTRIGGERING CREATE event.Account=", event.Account)
|
||||
websocketSendProtobuf(event)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue