package gui import "log" import "fmt" import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" import pb "git.wit.com/wit/witProtobuf" import "github.com/davecgh/go-spew/spew" func AddVmConfigureTab(wm *GuiWindow, name string, pbVM *pb.Event_VM) { CreateVmBox(wm, wm.T, pbVM) } func CreateVmBox(wm *GuiWindow, tab *ui.Tab, vm *pb.Event_VM) { log.Println("CreateVmBox() START") log.Println("CreateVmBox() vm.Name", vm.Name) spew.Dump(vm) if (Data.Debug) { spew.Dump(vm) } vbox := ui.NewVerticalBox() vbox.SetPadded(true) hboxAccount := ui.NewHorizontalBox() hboxAccount.SetPadded(true) vbox.Append(hboxAccount, false) // Add hostname entry box makeEntryVbox(hboxAccount, "hostname:", vm.Hostname, true, "Hostname") makeEntryVbox(hboxAccount, "IPv6:", vm.IPv6, true, "IPv6") makeEntryVbox(hboxAccount, "RAM:", fmt.Sprintf("%d",vm.Memory), true, "Memory") makeEntryVbox(hboxAccount, "CPU:", fmt.Sprintf("%d",vm.Cpus), true, "Cpus") makeEntryVbox(hboxAccount, "Disk (GB):",fmt.Sprintf("%d",vm.Disk), true, "Disk") makeEntryVbox(hboxAccount, "OS Image:", vm.BaseImage, true, "BaseImage") vbox.Append(ui.NewHorizontalSeparator(), false) hboxButtons := ui.NewHorizontalBox() hboxButtons.SetPadded(true) vbox.Append(hboxButtons, false) hboxButtons.Append(CreateButton(wm, nil, vm, "Power On", "POWERON", nil), false) hboxButtons.Append(CreateButton(wm, nil, vm, "Power Off", "POWEROFF", nil), false) hboxButtons.Append(CreateButton(wm, nil, vm, "Destroy", "DESTROY", nil), false) hboxButtons.Append(CreateButton(wm, nil, vm, "ping", "PING", runPingClick), false) hboxButtons.Append(CreateButton(wm, nil, vm, "Console", "XTERM", runTestExecClick), false) hboxButtons.Append(CreateButton(wm, nil, vm, "Save", "SAVE", nil), false) hboxButtons.Append(CreateButton(wm, nil, vm, "Done", "DONE", nil), false) AddBoxToTab(vm.Name, tab, vbox) } func createAddVmBox(wm *GuiWindow, tab *ui.Tab, name string, b *GuiButton) { log.Println("createAddVmBox() START") vbox := ui.NewVerticalBox() vbox.SetPadded(true) hbox := ui.NewHorizontalBox() hbox.SetPadded(true) vbox.Append(hbox, false) // Add hostname entry box hostname := makeEntryHbox(vbox, "Hostname:", "testhost", true, "Hostname") memory := makeEntryHbox(vbox, "Memory:", "512", true, "Memory") disk := makeEntryHbox(vbox, "Disk:", "20", true, "Disk") log.Println("createAddVmBox() hostname, memory, disk =", hostname, memory, disk) vbox.Append(ui.NewHorizontalSeparator(), false) hboxButtons := ui.NewHorizontalBox() hboxButtons.SetPadded(true) vbox.Append(hboxButtons, false) var newb GuiButton newb.Action = "CREATE" newb.VM = b.VM newb.Account = b.Account newb.T = tab hostname.B = &newb memory.B = &newb disk.B = &newb hboxButtons.Append(AddButton(&newb, "Add Virtual Machine"), false) // hboxButtons.Append(CreateButton(nil, nil, "Add Virtual Machine","CREATE",nil), false) hboxButtons.Append(CreateButton(wm, nil, nil, "Cancel", "CLOSE", nil), false) name += " (" + b.Account.Nick + ")" AddBoxToTab(name, tab, vbox) }