diff options
| -rw-r--r-- | addAccount.go | 9 | ||||
| -rw-r--r-- | area.go | 23 | ||||
| -rw-r--r-- | debug.go | 20 | ||||
| -rw-r--r-- | gui.go | 58 | ||||
| -rw-r--r-- | mainCloudBox.go | 40 | ||||
| -rw-r--r-- | splash.go | 28 | ||||
| -rw-r--r-- | structs.go | 14 | ||||
| -rw-r--r-- | vmBox.go | 53 |
8 files changed, 148 insertions, 97 deletions
diff --git a/addAccount.go b/addAccount.go index 297924c..18089e8 100644 --- a/addAccount.go +++ b/addAccount.go @@ -37,6 +37,7 @@ func AddAccountQuestionBox(gw *GuiWindow) *GuiBox { vbox.SetPadded(true) // gw.Box1 = vbox gb.UiBox = vbox + gb.W = gw hbox := ui.NewHorizontalBox() hbox.SetPadded(true) @@ -44,7 +45,7 @@ func AddAccountQuestionBox(gw *GuiWindow) *GuiBox { hbox.Append(ui.NewLabel("Enter your Subdomain or"), false) - button1 := CreateButton(gw, nil, nil, "Generate", "SUBDOMAIN", generateSubdomain) + button1 := CreateButton(gb, nil, nil, "Generate", "SUBDOMAIN", generateSubdomain) button1.Box = gb hbox.Append(button1.B, false) @@ -53,7 +54,7 @@ func AddAccountQuestionBox(gw *GuiWindow) *GuiBox { vbox.Append(ui.NewHorizontalSeparator(), false) - button2 := CreateButton(gw, nil, nil, "Create Subdomain Account", "ADD", nil) + button2 := CreateButton(gb, nil, nil, "Create Subdomain Account", "ADD", nil) button2.Box = gb vbox.Append(button2.B, false) @@ -189,10 +190,10 @@ func AddAccountBox(gw *GuiWindow) *GuiBox { hboxButtons.SetPadded(true) vbox.Append(hboxButtons, false) - okButton := CreateButton(gw, nil, nil, "Add Account", "ADD", nil) + okButton := CreateButton(gb, nil, nil, "Add Account", "ADD", nil) hboxButtons.Append(okButton.B, false) - backButton := CreateButton(gw, nil, nil, "Back", "BACK", nil) + backButton := CreateButton(gb, nil, nil, "Back", "BACK", nil) hboxButtons.Append(backButton.B, false) return gb @@ -20,24 +20,31 @@ func findFB(button *GuiButton) *GuiButton { return a } -func makeSplashArea(wm *GuiWindow, ah *GuiArea) { +func makeSplashArea(gb *GuiBox, newText *ui.AttributedString) { // make this button just to get the default font (but don't display the button) // There should be another way to do this (?) - newB := CreateFontButton(wm, "AREA") + var newB *GuiButton + newB = CreateFontButton(gb, "AREA") + + // initialize the GuiArea{} + gb.Area = new(GuiArea) + gb.Area.Window = gb.W + gb.Area.UiAttrstr = newText // ah.UiAttrstr = makeAttributedString() - ah.UiArea = ui.NewArea(ah) - newB.A = ah.UiArea - newB.WM = wm + gb.Area.UiArea = ui.NewArea(gb.Area) + newB.A = gb.Area.UiArea + newB.GW = gb.W + newB.Box = gb // Data.AllButtons[1].A = ah.UiArea // ah.Button = &Data.AllButtons[1] - ah.Button = newB + gb.Area.Button = newB if (Data.Debug) { - spew.Dump(ah.UiArea) + spew.Dump(gb.Area.UiArea) log.Println("DEBUGGING", Data.Debug) } else { - log.Println("NOT DEBUGGING AREA mhAH.Button =", ah.Button) + log.Println("NOT DEBUGGING AREA mhAH.Button =", gb.Area.Button) } } @@ -56,13 +56,17 @@ func addTableTab() { // AddTableTab(Data.Window1.T, 1, "test seven", 7, parts, nil) } -func addDebuggingButtons(wm *GuiWindow, vbox *ui.Box) { +func addDebuggingButtons(box *GuiBox) { + vbox := ui.NewVerticalBox() + vbox.SetPadded(true) + box.UiBox.Append(vbox, false) + vbox.Append(ui.NewLabel("Debugging:"), false) vbox.Append(ui.NewColorButton(), false) - a := CreateButton(wm, nil, nil, "Add Account", "ADD", nil) + a := CreateButton(box, nil, nil, "Add Account", "ADD", nil) vbox.Append(a.B, false) - a = CreateButton(wm, nil, nil, "Quit", "QUIT", nil) + a = CreateButton(box, nil, nil, "Quit", "QUIT", nil) vbox.Append(a.B, false) // ATTEMPT TO ADD THE TABLE HERE @@ -74,16 +78,16 @@ func addDebuggingButtons(wm *GuiWindow, vbox *ui.Box) { vbox.Append(add2button, false) // ATTEMPT TO ADD THE TABLE HERE END - a = CreateButton(wm, nil, nil, "Hide & Show Box1&2", "HIDE", runTestHide) + a = CreateButton(box, nil, nil, "Hide & Show Box1&2", "HIDE", runTestHide) vbox.Append(a.B, false) - a = CreateButton(wm, nil, nil, "Close GUI", "QUIT", nil) + a = CreateButton(box, nil, nil, "Close GUI", "QUIT", nil) vbox.Append(a.B, false) - a = CreateButton(wm, nil, nil, "DEBUG goroutines", "DEBUG", nil) + a = CreateButton(box, nil, nil, "DEBUG goroutines", "DEBUG", nil) vbox.Append(a.B, false) - a = CreateButton(wm, nil, nil, "xterm", "XTERM", runTestExecClick) + a = CreateButton(box, nil, nil, "xterm", "XTERM", runTestExecClick) vbox.Append(a.B, false) - a = CreateButton(wm, nil, nil, "Load test.json config file", "CONFIG", nil) + a = CreateButton(box, nil, nil, "Load test.json config file", "CONFIG", nil) vbox.Append(a.B, false) } @@ -42,7 +42,7 @@ func InitColumns(mh *TableData, parts []TableColumnData) { } } -func AddTableTab(gw *GuiWindow, mytab *ui.Tab, junk int, name string, rowcount int, parts []TableColumnData, account *pb.Account) *TableData { +func AddTableTab(gw *GuiWindow, junk int, name string, rowcount int, parts []TableColumnData, account *pb.Account) *TableData { mh := new(TableData) mh.RowCount = rowcount @@ -79,11 +79,20 @@ func AddTableTab(gw *GuiWindow, mytab *ui.Tab, junk int, name string, rowcount i } } + var gb *GuiBox + gb = new(GuiBox) + + gb.EntryMap = make(map[string]*GuiEntry) + gb.EntryMap["test"] = nil + vbox := ui.NewVerticalBox() vbox.SetPadded(true) + gb.UiBox = vbox + gb.W = gw + gw.BoxMap[name] = gb vbox.Append(table, true) - mytab.Append(name, vbox) + gw.UiTab.Append(name, vbox) // mytab.SetMargined(mytabcount, true) vbox.Append(ui.NewVerticalSeparator(), false) @@ -91,10 +100,8 @@ func AddTableTab(gw *GuiWindow, mytab *ui.Tab, junk int, name string, rowcount i hbox := ui.NewHorizontalBox() hbox.SetPadded(true) - a := CreateButton(gw, account, nil, "Add Virtual Machine", "createAddVmBox", nil) + a := CreateButton(gb, account, nil, "Add Virtual Machine", "createAddVmBox", nil) hbox.Append(a.B, false) - b := CreateButton(gw, account, nil, "Add Virtual Machine", "createAddVmBox", nil) - hbox.Append(b.B, false) vbox.Append(hbox, false) @@ -102,17 +109,17 @@ func AddTableTab(gw *GuiWindow, mytab *ui.Tab, junk int, name string, rowcount i } func SocketError(gw *GuiWindow) { - ui.MsgBoxError(gw.W, + ui.MsgBoxError(gw.UiWindow, "There was a socket error", "More detailed information can be shown here.") } func MessageWindow(gw *GuiWindow, msg1 string, msg2 string) { - ui.MsgBox(gw.W, msg1, msg2) + ui.MsgBox(gw.UiWindow, msg1, msg2) } func ErrorWindow(gw *GuiWindow, msg1 string, msg2 string) { - ui.MsgBoxError(gw.W, msg1, msg2) + ui.MsgBoxError(gw.UiWindow, msg1, msg2) } // This is the default mouse click handler @@ -134,7 +141,7 @@ func mouseClick(b *GuiButton) { log.Println("\tgui.mouseClick() START b.Action =", b.Action) if (b.Action == "createAddVmBox") { log.Println("\tgui.mouseClick() createAddVmBox for b =", b) - createAddVmBox(b.WM, b.T, "Create New Virtual Machine", b) + createAddVmBox(b.GW, b.T, "Create New Virtual Machine", b) return } /* @@ -212,7 +219,7 @@ func AddButton(b *GuiButton, name string) *ui.Button { return newB } -func CreateButton(gw *GuiWindow, a *pb.Account, vm *pb.Event_VM, +func CreateButton(box *GuiBox, a *pb.Account, vm *pb.Event_VM, name string, action string, custom func(*GuiButton)) *GuiButton { newUiB := ui.NewButton(name) newUiB.OnClicked(defaultButtonClick) @@ -220,10 +227,15 @@ func CreateButton(gw *GuiWindow, a *pb.Account, vm *pb.Event_VM, var newB *GuiButton newB = new(GuiButton) newB.B = newUiB - newB.T = gw.UiTab + if (box.W == nil) { + log.Println("CreateButton() box.W == nil") + panic("crap") + } + newB.GW = box.W + newB.T = box.W.UiTab newB.Account = a newB.VM = vm - newB.WM = gw + newB.Box = box newB.Action = action newB.custom = custom Data.AllButtons = append(Data.AllButtons, newB) @@ -231,21 +243,21 @@ func CreateButton(gw *GuiWindow, a *pb.Account, vm *pb.Event_VM, return newB } -func CreateFontButton(gw *GuiWindow, action string) *GuiButton { - newB := ui.NewFontButton() +func CreateFontButton(box *GuiBox, action string) *GuiButton { // create a 'fake' button entry for the mouse clicks - var newBM GuiButton - newBM.Action = action - newBM.FB = newB - newBM.Area = gw.Area - Data.AllButtons = append(Data.AllButtons, &newBM) + var newGB GuiButton + newGB.Action = action + newGB.FB = ui.NewFontButton() + newGB.Box = box + newGB.Area = box.Area + Data.AllButtons = append(Data.AllButtons, &newGB) - newB.OnChanged(func (*ui.FontButton) { - log.Println("FontButton.OnChanged() START mouseClick(&newBM)", newBM) - mouseClick(&newBM) + newGB.FB.OnChanged(func (*ui.FontButton) { + log.Println("FontButton.OnChanged() START mouseClick(&newBM)", newGB) + mouseClick(&newGB) }) - return &newBM + return &newGB } func GetText(box *GuiBox, name string) string { diff --git a/mainCloudBox.go b/mainCloudBox.go index 80163fa..eafb145 100644 --- a/mainCloudBox.go +++ b/mainCloudBox.go @@ -16,6 +16,7 @@ import pb "git.wit.com/wit/witProtobuf" func makeCloudInfoBox(gw *GuiWindow) *GuiBox { var gb *GuiBox gb = new(GuiBox) + gb.W = gw gb.EntryMap = make(map[string]*GuiEntry) gb.EntryMap["test"] = nil @@ -27,11 +28,13 @@ func makeCloudInfoBox(gw *GuiWindow) *GuiBox { if (Data.Debug) { log.Println("makeCloudInfoBox() add debugging buttons") + /* vbox := ui.NewVerticalBox() vbox.SetPadded(true) hbox.Append(vbox, false) + */ - addDebuggingButtons(gw, vbox) + addDebuggingButtons(gb) hbox.Append(ui.NewVerticalSeparator(), false) } @@ -54,7 +57,7 @@ func makeCloudInfoBox(gw *GuiWindow) *GuiBox { hostnameEntry.SetText(tmp) hostnameEntry.SetReadOnly(true) - anew := CreateButton(gw, nil, nil, "Edit", "EDIT", nil) + anew := CreateButton(gb, nil, nil, "Edit", "EDIT", nil) hostnamebox.Append(anew.B, false) vbox.Append(ui.NewHorizontalSeparator(), false) @@ -79,11 +82,11 @@ func makeCloudInfoBox(gw *GuiWindow) *GuiBox { agrid.Append(ui.NewLabel(Data.Config.Accounts[key].Email), 2, row, 1, 1, true, ui.AlignFill, false, ui.AlignFill) name := "Login " + Data.Config.Accounts[key].Nick - l := CreateButton(gw, Data.Config.Accounts[key], nil, name, "LOGIN", nil) + l := CreateButton(gb, Data.Config.Accounts[key], nil, name, "LOGIN", nil) agrid.Append(l.B, 3, row, 1, 1, true, ui.AlignFill, false, ui.AlignFill) name = "Show " + Data.Config.Accounts[key].Nick - b := CreateButton(gw, Data.Config.Accounts[key], nil, name, "SHOW", nil) + b := CreateButton(gb, Data.Config.Accounts[key], nil, name, "SHOW", nil) agrid.Append(b.B, 4, row, 1, 1, true, ui.AlignFill, false, ui.AlignFill) row += 1 @@ -92,9 +95,9 @@ func makeCloudInfoBox(gw *GuiWindow) *GuiBox { row += 1 agrid.Append(ui.NewLabel(""), 1, row, 1, 1, true, ui.AlignFill, false, ui.AlignFill) row += 1 - a := CreateButton(gw, nil, nil, "Add Account", "ADD TAB", nil) + a := CreateButton(gb, nil, nil, "Add Account", "ADD TAB", nil) agrid.Append(a.B, 4, row, 1, 1, true, ui.AlignFill, false, ui.AlignFill) - q := CreateButton(gw, nil, nil, "Quit", "QUIT", nil) + q := CreateButton(gb, nil, nil, "Quit", "QUIT", nil) agrid.Append(q.B, 5, row, 1, 1, true, ui.AlignFill, false, ui.AlignFill) vbox.Append(agrid, false) @@ -164,7 +167,7 @@ func AddVmsTab(gw *GuiWindow, name string, count int, a *pb.Account) *TableData parts = append(parts, tmp) human += 1 - mh := AddTableTab(gw, gw.UiTab, 1, name, count, parts, a) + mh := AddTableTab(gw, 1, name, count, parts, a) return mh } @@ -237,7 +240,8 @@ func GuiInit() { func StartNewWindow(c *pb.Config, bg bool, action string) { log.Println("InitNewWindow() Create a new window") var newGuiWindow GuiWindow - newGuiWindow.C = c + newGuiWindow.Width = int(c.Width) + newGuiWindow.Height = int(c.Height) newGuiWindow.Action = action Data.Windows = append(Data.Windows, &newGuiWindow) @@ -264,22 +268,20 @@ func getSplashText(a string) *ui.AttributedString { return aText } - func InitWindow(gw *GuiWindow) { log.Println("InitWindow() THIS WINDOW IS NOT YET SHOWN") - c := gw.C - gw.W = ui.NewWindow("", int(c.Width), int(c.Height), true) - gw.W.SetBorderless(false) + gw.UiWindow = ui.NewWindow("", int(gw.Width), int(gw.Height), true) + gw.UiWindow.SetBorderless(false) // create a 'fake' button entry for the mouse clicks var newBM GuiButton newBM.Action = "QUIT" - newBM.W = gw.W - newBM.WM = gw + newBM.W = gw.UiWindow + newBM.GW = gw Data.AllButtons = append(Data.AllButtons, &newBM) - gw.W.OnClosing(func(*ui.Window) bool { + gw.UiWindow.OnClosing(func(*ui.Window) bool { log.Println("InitWindow() OnClosing() THIS WINDOW IS CLOSING gw=", gw) // mouseClick(&newBM) ui.Quit() @@ -287,15 +289,15 @@ func InitWindow(gw *GuiWindow) { }) gw.UiTab = ui.NewTab() - gw.W.SetChild(gw.UiTab) - gw.W.SetMargined(true) + gw.UiWindow.SetChild(gw.UiTab) + gw.UiWindow.SetMargined(true) log.Println("InitWindow() gw =", gw) log.Println("InitWindow() gw.Action =", gw.Action) if (gw.Action == "SPLASH") { log.Println("InitWindow() TRYING SPLASH") - damnit := "click" + string(c.Hostname) + damnit := "click" + string(Data.Config.Hostname) tmp := getSplashText(damnit) log.Println("InitWindow() TRYING SPLASH tmp =", tmp) abox := ShowSplashBox(gw, tmp) @@ -305,7 +307,7 @@ func InitWindow(gw *GuiWindow) { } Data.State = "splash" - gw.W.Show() + gw.UiWindow.Show() } // makeEntryBox(box, "hostname:", "blah.foo.org") { @@ -11,10 +11,10 @@ import "runtime" import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" -func ShowSplashBox(wm *GuiWindow, newText *ui.AttributedString) *GuiBox { +func ShowSplashBox(gw *GuiWindow, newText *ui.AttributedString) *GuiBox { log.Println("ShowSplashBox() START") - log.Println("ShowSplashBox() START wm =", wm) - if (wm == nil) { + log.Println("ShowSplashBox() START gw =", gw) + if (gw == nil) { log.Println("ShowSplashBox() WE ARE FUCKED BECAUSE WE DON'T KNOW WHAT WINDOW TO DO THIS IN") os.Exit(0) return nil @@ -29,15 +29,19 @@ func ShowSplashBox(wm *GuiWindow, newText *ui.AttributedString) *GuiBox { newbox.SetPadded(true) // gw.Box1 = hbox gb.UiBox = newbox + gb.W = gw + gw.BoxMap["Splash"] = gb + /* // initialize the GuiArea{} - wm.Area = new(GuiArea) - wm.Area.Window = wm - wm.Area.UiAttrstr = newText - makeSplashArea(wm, wm.Area) - gb.Area = wm.Area + gb.Area = new(GuiArea) + gb.Area.Window = gw + gb.Area.UiAttrstr = newText + */ - newbox.Append(wm.Area.UiArea, true) + makeSplashArea(gb, newText) + + newbox.Append(gb.Area.UiArea, true) if runtime.GOOS == "linux" { newbox.Append(ui.NewLabel("OS: Linux"), false) @@ -65,12 +69,12 @@ func ShowSplashBox(wm *GuiWindow, newText *ui.AttributedString) *GuiBox { } } - log.Println("ShowSplashBox() START wm =", wm) + log.Println("ShowSplashBox() START gb =", gb) - okButton := CreateButton(wm, nil, nil, "OK", "AREA", nil) + okButton := CreateButton(gb, nil, nil, "OK", "AREA", nil) newbox.Append(okButton.B, false) - okButton = CreateButton(wm, nil, nil, "NEWTEXT", "NEWTEXT", nil) + okButton = CreateButton(gb, nil, nil, "NEWTEXT", "NEWTEXT", nil) newbox.Append(okButton.B, false) // os.Exit(0) @@ -71,15 +71,13 @@ type GuiData struct { // type GuiWindow struct { Action string - Area *GuiArea // should be moved to GuiBox - - C *pb.Config +// Area *GuiArea // should be moved to GuiBox + BoxMap map[string]*GuiBox + Width int + Height int - W *ui.Window + UiWindow *ui.Window UiTab *ui.Tab // if this != nil, the window is 'tabbed' - BoxMap map[string]*GuiBox -// Box1 *ui.Box -// Box2 *ui.Box } @@ -91,7 +89,7 @@ type GuiButton struct { Action string // what type of button Box *GuiBox // what box the button click was in Area *GuiArea // indicates the button click was in an Area - WM *GuiWindow // what window the button click was in (redundant?) + GW *GuiWindow // what window the button click was in (redundant?) Account *pb.Account // associated with what account? VM *pb.Event_VM // associated with which VM? @@ -14,15 +14,27 @@ func AddVmConfigureTab(wm *GuiWindow, name string, pbVM *pb.Event_VM) { CreateVmBox(wm, wm.UiTab, pbVM) } -func CreateVmBox(wm *GuiWindow, tab *ui.Tab, vm *pb.Event_VM) { +func CreateVmBox(gw *GuiWindow, junk *ui.Tab, vm *pb.Event_VM) { log.Println("CreateVmBox() START") log.Println("CreateVmBox() vm.Name", vm.Name) + + var gb *GuiBox + gb = new(GuiBox) + + vbox := ui.NewVerticalBox() + vbox.SetPadded(true) + gb.UiBox = vbox + gb.W = gw + gw.BoxMap[vm.Name] = gb + +// gw.UiTab.Append(vm.Name, vbox) + + + spew.Dump(vm) if (Data.Debug) { spew.Dump(vm) } - vbox := ui.NewVerticalBox() - vbox.SetPadded(true) hboxAccount := ui.NewHorizontalBox() hboxAccount.SetPadded(true) @@ -42,28 +54,39 @@ func CreateVmBox(wm *GuiWindow, tab *ui.Tab, vm *pb.Event_VM) { hboxButtons.SetPadded(true) vbox.Append(hboxButtons, false) - a := CreateButton(wm, nil, vm, "Power On", "POWERON", nil) + a := CreateButton(gb, nil, vm, "Power On", "POWERON", nil) hboxButtons.Append(a.B, false) - a = CreateButton(wm, nil, vm, "Power Off", "POWEROFF", nil) + a = CreateButton(gb, nil, vm, "Power Off", "POWEROFF", nil) hboxButtons.Append(a.B, false) - a = CreateButton(wm, nil, vm, "Destroy", "DESTROY", nil) + a = CreateButton(gb, nil, vm, "Destroy", "DESTROY", nil) hboxButtons.Append(a.B, false) - a = CreateButton(wm, nil, vm, "ping", "PING", runPingClick) + a = CreateButton(gb, nil, vm, "ping", "PING", runPingClick) hboxButtons.Append(a.B, false) - a = CreateButton(wm, nil, vm, "Console", "XTERM", runTestExecClick) + a = CreateButton(gb, nil, vm, "Console", "XTERM", runTestExecClick) hboxButtons.Append(a.B, false) - a = CreateButton(wm, nil, vm, "Save", "SAVE", nil) + a = CreateButton(gb, nil, vm, "Save", "SAVE", nil) hboxButtons.Append(a.B, false) - a = CreateButton(wm, nil, vm, "Done", "DONE", nil) + a = CreateButton(gb, nil, vm, "Done", "DONE", nil) hboxButtons.Append(a.B, false) - AddBoxToTab(vm.Name, tab, vbox) + AddBoxToTab(vm.Name, gw.UiTab, vbox) } -func createAddVmBox(wm *GuiWindow, tab *ui.Tab, name string, b *GuiButton) { +func createAddVmBox(gw *GuiWindow, junk *ui.Tab, name string, b *GuiButton) { log.Println("createAddVmBox() START") + + var gb *GuiBox + gb = new(GuiBox) + vbox := ui.NewVerticalBox() vbox.SetPadded(true) + gb.UiBox = vbox + gb.W = gw + gw.BoxMap[name] = gb + +// gw.UiTab.Append(vm.Name, vbox) + + hbox := ui.NewHorizontalBox() hbox.SetPadded(true) @@ -86,16 +109,16 @@ func createAddVmBox(wm *GuiWindow, tab *ui.Tab, name string, b *GuiButton) { newb.Action = "CREATE" newb.VM = b.VM newb.Account = b.Account - newb.T = tab + newb.T = gw.UiTab 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) - a := CreateButton(wm, nil, nil, "Cancel", "CLOSE", nil) + a := CreateButton(gb, nil, nil, "Cancel", "CLOSE", nil) hboxButtons.Append(a.B, false) name += " (" + b.Account.Nick + ")" - AddBoxToTab(name, tab, vbox) + AddBoxToTab(name, gw.UiTab, vbox) } |
