finally vm list working again

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2019-06-13 12:08:47 -07:00
parent 4163665b22
commit 8ad635c307
5 changed files with 109 additions and 69 deletions

View File

@ -3,7 +3,7 @@ package gui
import "log" import "log"
import "time" import "time"
import "fmt" import "fmt"
import "reflect" // import "reflect"
// import "github.com/andlabs/ui" // import "github.com/andlabs/ui"
// import _ "github.com/andlabs/ui/winmanifest" // import _ "github.com/andlabs/ui/winmanifest"
@ -32,13 +32,27 @@ func WatchGUI() {
func DumpBoxes() { func DumpBoxes() {
for name, window := range Data.WindowMap { for name, window := range Data.WindowMap {
log.Println("gui.DumpBoxes()", name) log.Println("gui.DumpBoxes() MAP: ", name)
log.Println("gui.DumpBoxes()\tWindow.name =", window.Name) log.Println("gui.DumpBoxes()\tWindow.name =", window.Name)
log.Println("gui.DumpBoxes()\tWindow.UiWindow type =", reflect.TypeOf(window.UiWindow)) // log.Println("gui.DumpBoxes()\tWindow.UiWindow type =", reflect.TypeOf(window.UiWindow))
log.Println("gui.DumpBoxes()\tWindow.UiWindow =", window.UiWindow) // log.Println("gui.DumpBoxes()\tWindow.UiWindow =", window.UiWindow)
if (window.TabNumber == nil) {
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
} else {
log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber)
}
for name, abox := range window.BoxMap {
log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name)
if (name == "MAINBOX") {
if (Config.Debug) {
scs := spew.ConfigState{MaxDepth: 1}
scs.Dump(abox.UiBox)
}
}
}
if (window.UiTab != nil) { if (window.UiTab != nil) {
log.Println("gui.DumpBoxes()\tWindow.UiTab type =", reflect.TypeOf(window.UiTab)) // log.Println("gui.DumpBoxes()\tWindow.UiTab type =", reflect.TypeOf(window.UiTab))
log.Println("gui.DumpBoxes()\tWindow.UiTab =", window.UiTab) // log.Println("gui.DumpBoxes()\tWindow.UiTab =", window.UiTab)
pages := window.UiTab.NumPages() pages := window.UiTab.NumPages()
log.Println("gui.DumpBoxes()\tWindow.UiTab.NumPages() =", pages) log.Println("gui.DumpBoxes()\tWindow.UiTab.NumPages() =", pages)
// for i := 0; i < pages; i++ { // for i := 0; i < pages; i++ {
@ -54,29 +68,10 @@ func DumpBoxes() {
} }
} }
for i, window := range Data.Windows { for i, window := range Data.Windows {
log.Println("gui.DumpBoxes() Data.Windows", i, "Name =", window.Name, "TabNumber =", window.TabNumber) if (window.TabNumber == nil) {
for name, abox := range window.BoxMap { log.Println("gui.DumpBoxes() Data.Windows", i, "Name =", window.Name, "TabNumber = nil")
log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name) } else {
if (name == "MAINBOX") { log.Println("gui.DumpBoxes() Data.Windows", i, "Name =", window.Name, "TabNumber =", *window.TabNumber)
if (Config.Debug) {
scs := spew.ConfigState{MaxDepth: 1}
scs.Dump(abox.UiBox)
}
}
/*
if (name == "DEBUG") {
log.Println("\t\twatchGUI() BOX abox =", reflect.TypeOf(abox))
win := abox.Window
log.Println("\t\twatchGUI() BOX win =", reflect.TypeOf(win))
area := win.Area
log.Println("\t\twatchGUI() BOX area =", reflect.TypeOf(area), area.UiArea)
// spew.Dump(area.UiArea)
// area.UiArea.Show()
// time.Sleep(2000 * time.Millisecond)
// os.Exit(0)
}
*/
} }
} }
} }
@ -95,16 +90,4 @@ func addTableTab() {
log.Println("Sleep for 2 seconds, then try to add new tabs") log.Println("Sleep for 2 seconds, then try to add new tabs")
time.Sleep(1 * 1000 * 1000 * 1000) time.Sleep(1 * 1000 * 1000 * 1000)
// AddTableTab(Data.Window1.T, 1, "test seven", 7, parts, nil)
} }
/*
func runTestHide(b *GuiButton) {
log.Println("runTestHide START")
Data.Window1.Box1.Hide()
Data.Window1.Box2.Hide()
// time.Sleep(2000 * time.Millisecond)
Data.State = "HIDE"
log.Println("runTestHide END")
}
*/

6
gui.go
View File

@ -12,12 +12,12 @@ const Yaxis = 1 // box that is vertical
func init() { func init() {
log.Println("gui.init() has been run") log.Println("gui.init() has been run")
Data.buttonMap = make(map[*ui.Button]*GuiButton)
Data.WindowMap = make(map[string]*GuiWindow)
} }
func GuiInit() { func GuiInit() {
Data.buttonMap = make(map[*ui.Button]*GuiButton)
Data.WindowMap = make(map[string]*GuiWindow)
ui.OnShouldQuit(func() bool { ui.OnShouldQuit(func() bool {
ui.Quit() ui.Quit()
return true return true

View File

@ -64,7 +64,7 @@ type GuiWindow struct {
Width int Width int
Height int Height int
Axis int // does it add items to the X or Y axis Axis int // does it add items to the X or Y axis
TabNumber int // the andlabs/ui tab index TabNumber *int // the andlabs/ui tab index
// the callback function to make the window contents // the callback function to make the window contents
MakeWindow func(*GuiWindow) *GuiBox MakeWindow func(*GuiWindow) *GuiBox

View File

@ -98,6 +98,10 @@ func InitColumns(mh *TableData, parts []TableColumnData) {
} }
func AddTableTab(gw *GuiWindow, name string, rowcount int, parts []TableColumnData) *TableData { func AddTableTab(gw *GuiWindow, name string, rowcount int, parts []TableColumnData) *TableData {
// gw.Name = name
// gw = InitGuiWindow(gw)
box := InitWindow(gw, name, Yaxis)
mh := new(TableData) mh := new(TableData)
mh.RowCount = rowcount mh.RowCount = rowcount
@ -134,25 +138,25 @@ func AddTableTab(gw *GuiWindow, name string, rowcount int, parts []TableColumnDa
} }
} }
var gb *GuiBox // var gb *GuiBox
gb = new(GuiBox) // gb = new(GuiBox)
vbox := ui.NewVerticalBox() // vbox := ui.NewVerticalBox()
vbox.SetPadded(true) // vbox.SetPadded(true)
gb.UiBox = vbox // gb.UiBox = vbox
gb.Window = gw // gb.Window = gw
gw.BoxMap[name] = gb gw.BoxMap[name] = box
mh.Box = gb mh.Box = box
vbox.Append(table, true) box.UiBox.Append(table, true)
gw.UiTab.Append(name, vbox) // gw.UiTab.Append(name, vbox)
vbox.Append(ui.NewVerticalSeparator(), false) // vbox.Append(ui.NewVerticalSeparator(), false)
hbox := ui.NewHorizontalBox() // hbox := ui.NewHorizontalBox()
hbox.SetPadded(true) // hbox.SetPadded(true)
vbox.Append(hbox, false) // vbox.Append(hbox, false)
return mh return mh
} }

View File

@ -24,10 +24,14 @@ func InitGuiWindow(gw *GuiWindow) *GuiWindow {
newGuiWindow.EntryMap["test"] = nil newGuiWindow.EntryMap["test"] = nil
Data.Windows = append(Data.Windows, &newGuiWindow) Data.Windows = append(Data.Windows, &newGuiWindow)
if (Data.WindowMap == nil) { if (gw.UiTab == nil) {
log.Println("gui.InitGuiWindow() making the Data.WindowMap here") tabnum := 0
Data.WindowMap = make(map[string]*GuiWindow) newGuiWindow.TabNumber = &tabnum
} else {
tabnum := gw.UiTab.NumPages()
newGuiWindow.TabNumber = &tabnum
} }
Data.WindowMap[newGuiWindow.Name] = &newGuiWindow Data.WindowMap[newGuiWindow.Name] = &newGuiWindow
if (Data.buttonMap == nil) { if (Data.buttonMap == nil) {
@ -49,26 +53,28 @@ func StartNewWindow(bg bool, name string, axis int, callback func(*GuiWindow) *G
log.Println("StartNewWindow() START NEW GOROUTINE for ui.Main()") log.Println("StartNewWindow() START NEW GOROUTINE for ui.Main()")
go ui.Main(func() { go ui.Main(func() {
log.Println("gui.StartNewWindow() inside ui.Main()") log.Println("gui.StartNewWindow() inside ui.Main()")
go InitTabWindow(window) go initTabWindow(window)
}) })
time.Sleep(2000 * time.Millisecond) // this might make it more stable on windows? time.Sleep(2000 * time.Millisecond) // this might make it more stable on windows?
} else { } else {
log.Println("StartNewWindow() WAITING for ui.Main()") log.Println("StartNewWindow() WAITING for ui.Main()")
ui.Main(func() { ui.Main(func() {
log.Println("gui.StartNewWindow() inside ui.Main()") log.Println("gui.StartNewWindow() inside ui.Main()")
InitTabWindow(window) initTabWindow(window)
}) })
} }
} }
func InitTabWindow(gw *GuiWindow) { // This creates the raw andlabs/ui Window
log.Println("InitTabWindow() START. THIS WINDOW IS NOT YET SHOWN") func initTabWindow(gw *GuiWindow) {
log.Println("initTabWindow() START. THIS WINDOW IS NOT YET SHOWN")
log.Println("initTabWindow() START. name =", gw.Name)
gw.UiWindow = ui.NewWindow(gw.Name, int(gw.Width), int(gw.Height), true) gw.UiWindow = ui.NewWindow(gw.Name, int(gw.Width), int(gw.Height), true)
gw.UiWindow.SetBorderless(false) gw.UiWindow.SetBorderless(false)
gw.UiWindow.OnClosing(func(*ui.Window) bool { gw.UiWindow.OnClosing(func(*ui.Window) bool {
log.Println("InitTabWindow() OnClosing() THIS WINDOW IS CLOSING gw=", gw) log.Println("initTabWindow() OnClosing() THIS WINDOW IS CLOSING gw=", gw)
ui.Quit() ui.Quit()
return true return true
}) })
@ -76,10 +82,15 @@ func InitTabWindow(gw *GuiWindow) {
gw.UiTab = ui.NewTab() gw.UiTab = ui.NewTab()
gw.UiWindow.SetChild(gw.UiTab) gw.UiWindow.SetChild(gw.UiTab)
gw.UiWindow.SetMargined(true) gw.UiWindow.SetMargined(true)
tmp := 0
gw.TabNumber = &tmp
DumpBoxes()
// for {}
box := gw.MakeWindow(gw) box := gw.MakeWindow(gw)
log.Println("InitTabWindow() END box =", box) log.Println("initTabWindow() END box =", box)
log.Println("InitTabWindow() END gw =", gw) log.Println("initTabWindow() END gw =", gw)
gw.UiWindow.Show() gw.UiWindow.Show()
} }
@ -90,3 +101,45 @@ func MessageWindow(gw *GuiWindow, msg1 string, msg2 string) {
func ErrorWindow(gw *GuiWindow, msg1 string, msg2 string) { func ErrorWindow(gw *GuiWindow, msg1 string, msg2 string) {
ui.MsgBoxError(gw.UiWindow, msg1, msg2) ui.MsgBoxError(gw.UiWindow, msg1, msg2)
} }
//
// This creates a new 'window' (which is just a tab in the window)
// This is this way because on Linux you can have more than one
// actual window but that does not appear to work on the MacOS or Windows
//
func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
window := Data.WindowMap[name]
if (window != nil) {
box := window.BoxMap["MAINBOX"]
log.Println("gui.InitWindow() tab already exists name =", name)
ErrorWindow(box.Window, "Create Window Error", "Window " + name + " already exists")
return nil
}
// if there is not an account, then go to 'make account'
gw.Name = name
var junk GuiWindow
// junk.MakeWindow = callback
junk.Name = name
junk.Axis = axis
junk.UiWindow = gw.UiWindow
junk.UiTab = gw.UiTab
newWindow := InitGuiWindow(gw)
var box *GuiBox
if (axis == Xaxis) {
box = HardBox(newWindow, Xaxis, name)
} else {
box = HardBox(newWindow, Yaxis, name)
}
return box
}
func DeleteWindow(name string) {
log.Println("gui.DeleteWindow() START name =", name)
window := Data.WindowMap[name]
if (window == nil) {
log.Println("gui.DeleteWindow() NO WINDOW WITH name =", name)
return
}
}