ready to implement Destroy()
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
22760127b9
commit
17512c10c5
5
area.go
5
area.go
|
@ -109,6 +109,7 @@ func (ah GuiArea) KeyEvent(a *ui.Area, ke *ui.AreaKeyEvent) (handled bool) {
|
||||||
|
|
||||||
func ShowTextBox(box *GuiBox, newText *ui.AttributedString, custom func(*GuiButton), name string) {
|
func ShowTextBox(box *GuiBox, newText *ui.AttributedString, custom func(*GuiButton), name string) {
|
||||||
log.Println("ShowTextBox() START")
|
log.Println("ShowTextBox() START")
|
||||||
|
|
||||||
gw := box.Window
|
gw := box.Window
|
||||||
if (gw == nil) {
|
if (gw == nil) {
|
||||||
log.Println("ShowTextBox() ERROR gw = nil")
|
log.Println("ShowTextBox() ERROR gw = nil")
|
||||||
|
@ -123,10 +124,10 @@ func ShowTextBox(box *GuiBox, newText *ui.AttributedString, custom func(*GuiButt
|
||||||
newbox.Name = name
|
newbox.Name = name
|
||||||
hbox := ui.NewVerticalBox()
|
hbox := ui.NewVerticalBox()
|
||||||
newbox.UiBox = hbox
|
newbox.UiBox = hbox
|
||||||
|
*/
|
||||||
|
|
||||||
// TODO: allow padded & axis here
|
// TODO: allow padded & axis here
|
||||||
hbox.SetPadded(true)
|
box.UiBox.SetPadded(true)
|
||||||
*/
|
|
||||||
|
|
||||||
// add(gw.BoxMap["MAINBOX"], newbox)
|
// add(gw.BoxMap["MAINBOX"], newbox)
|
||||||
|
|
||||||
|
|
2
box.go
2
box.go
|
@ -113,7 +113,7 @@ func HardBox(gw *GuiWindow, axis int, name string) *GuiBox {
|
||||||
|
|
||||||
add(gw.BoxMap["MAINBOX"], newbox)
|
add(gw.BoxMap["MAINBOX"], newbox)
|
||||||
|
|
||||||
log.Println("HardBoxk END")
|
log.Println("HardBox END")
|
||||||
return newbox
|
return newbox
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
6
debug.go
6
debug.go
|
@ -33,14 +33,14 @@ func WatchGUI() {
|
||||||
func DumpBoxes() {
|
func DumpBoxes() {
|
||||||
for name, window := range Data.WindowMap {
|
for name, window := range Data.WindowMap {
|
||||||
log.Println("gui.DumpBoxes() MAP: ", name)
|
log.Println("gui.DumpBoxes() MAP: ", 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 =", window.UiWindow)
|
|
||||||
if (window.TabNumber == nil) {
|
if (window.TabNumber == nil) {
|
||||||
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
|
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
|
||||||
} else {
|
} else {
|
||||||
log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber)
|
log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber)
|
||||||
}
|
}
|
||||||
|
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 =", window.UiWindow)
|
||||||
for name, abox := range window.BoxMap {
|
for name, abox := range window.BoxMap {
|
||||||
log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name)
|
log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name)
|
||||||
if (name == "MAINBOX") {
|
if (name == "MAINBOX") {
|
||||||
|
|
|
@ -67,7 +67,7 @@ type GuiWindow struct {
|
||||||
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(*GuiBox) *GuiBox
|
// MakeWindow func(*GuiBox) *GuiBox
|
||||||
|
|
||||||
// the components of the window
|
// the components of the window
|
||||||
BoxMap map[string]*GuiBox
|
BoxMap map[string]*GuiBox
|
||||||
|
|
66
window.go
66
window.go
|
@ -9,54 +9,33 @@ import _ "github.com/andlabs/ui/winmanifest"
|
||||||
|
|
||||||
func StartNewWindow(bg bool, name string, axis int, callback func(*GuiBox) *GuiBox) {
|
func StartNewWindow(bg bool, name string, axis int, callback func(*GuiBox) *GuiBox) {
|
||||||
log.Println("StartNewWindow() Create a new window")
|
log.Println("StartNewWindow() Create a new window")
|
||||||
var tmp GuiWindow
|
|
||||||
tmp.MakeWindow = callback
|
|
||||||
tmp.Name = name
|
|
||||||
tmp.Axis = axis
|
|
||||||
if (bg) {
|
if (bg) {
|
||||||
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(&tmp)
|
go runWindow(name, axis, callback)
|
||||||
})
|
})
|
||||||
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(&tmp)
|
runWindow(name, axis, callback)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This creates the raw andlabs/ui Window
|
// This creates the raw andlabs/ui Window
|
||||||
func initTabWindow(gw *GuiWindow) {
|
func runWindow(name string, axis int, callback func(*GuiBox) *GuiBox) {
|
||||||
log.Println("initTabWindow() START. THIS WINDOW IS NOT YET SHOWN")
|
log.Println("initTabWindow() START. THIS WINDOW IS NOT YET SHOWN")
|
||||||
log.Println("initTabWindow() START. name =", gw.Name)
|
log.Println("initTabWindow() START. name =", name)
|
||||||
|
|
||||||
gw.UiWindow = ui.NewWindow(gw.Name, int(gw.Width), int(gw.Height), true)
|
box := InitWindow(nil, name, axis)
|
||||||
gw.UiWindow.SetBorderless(false)
|
box = callback(box)
|
||||||
|
window := box.Window
|
||||||
gw.UiWindow.OnClosing(func(*ui.Window) bool {
|
|
||||||
log.Println("initTabWindow() OnClosing() THIS WINDOW IS CLOSING gw=", gw)
|
|
||||||
ui.Quit()
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
|
|
||||||
gw.UiTab = ui.NewTab()
|
|
||||||
gw.UiWindow.SetChild(gw.UiTab)
|
|
||||||
gw.UiWindow.SetMargined(true)
|
|
||||||
tmp := 0
|
|
||||||
gw.TabNumber = &tmp
|
|
||||||
|
|
||||||
DumpBoxes()
|
|
||||||
// for {}
|
|
||||||
box := InitWindow(gw, gw.Name, gw.Axis)
|
|
||||||
box = gw.MakeWindow(box)
|
|
||||||
gw = box.Window
|
|
||||||
log.Println("initTabWindow() END box =", box)
|
log.Println("initTabWindow() END box =", box)
|
||||||
log.Println("initTabWindow() END gw =", gw)
|
log.Println("initTabWindow() END gw =", window)
|
||||||
gw.UiWindow.Show()
|
window.UiWindow.Show()
|
||||||
}
|
}
|
||||||
|
|
||||||
func MessageWindow(gw *GuiWindow, msg1 string, msg2 string) {
|
func MessageWindow(gw *GuiWindow, msg1 string, msg2 string) {
|
||||||
|
@ -88,10 +67,29 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
|
||||||
newGuiWindow.Height = 600
|
newGuiWindow.Height = 600
|
||||||
newGuiWindow.Width = 800
|
newGuiWindow.Width = 800
|
||||||
|
|
||||||
|
// This is the first window. One must create it here
|
||||||
|
if (gw == nil) {
|
||||||
|
log.Println("initWindow() ADDING ui.NewWindow()")
|
||||||
|
newGuiWindow.UiWindow = ui.NewWindow(newGuiWindow.Name, int(newGuiWindow.Width), int(newGuiWindow.Height), true)
|
||||||
|
newGuiWindow.UiWindow.SetBorderless(false)
|
||||||
|
|
||||||
|
newGuiWindow.UiWindow.OnClosing(func(*ui.Window) bool {
|
||||||
|
log.Println("initTabWindow() OnClosing() THIS WINDOW IS CLOSING newGuiWindow=", newGuiWindow)
|
||||||
|
ui.Quit()
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
newGuiWindow.UiTab = ui.NewTab()
|
||||||
|
newGuiWindow.UiWindow.SetChild(newGuiWindow.UiTab)
|
||||||
|
newGuiWindow.UiWindow.SetMargined(true)
|
||||||
|
tmp := 0
|
||||||
|
newGuiWindow.TabNumber = &tmp
|
||||||
|
} else {
|
||||||
|
newGuiWindow.UiWindow = gw.UiWindow
|
||||||
|
newGuiWindow.UiTab = gw.UiTab
|
||||||
|
}
|
||||||
|
|
||||||
newGuiWindow.Axis = axis
|
newGuiWindow.Axis = axis
|
||||||
newGuiWindow.MakeWindow = gw.MakeWindow
|
|
||||||
newGuiWindow.UiWindow = gw.UiWindow
|
|
||||||
newGuiWindow.UiTab = gw.UiTab
|
|
||||||
newGuiWindow.Name = name
|
newGuiWindow.Name = name
|
||||||
|
|
||||||
newGuiWindow.BoxMap = make(map[string]*GuiBox)
|
newGuiWindow.BoxMap = make(map[string]*GuiBox)
|
||||||
|
@ -103,7 +101,7 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
|
||||||
tabnum := 0
|
tabnum := 0
|
||||||
newGuiWindow.TabNumber = &tabnum
|
newGuiWindow.TabNumber = &tabnum
|
||||||
} else {
|
} else {
|
||||||
tabnum := gw.UiTab.NumPages()
|
tabnum := newGuiWindow.UiTab.NumPages()
|
||||||
newGuiWindow.TabNumber = &tabnum
|
newGuiWindow.TabNumber = &tabnum
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue