summaryrefslogtreecommitdiff
path: root/window.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2019-06-13 14:17:05 -0700
committerJeff Carr <[email protected]>2019-06-13 14:17:05 -0700
commitc567507957eb3ad6f628322762dff982c177cca8 (patch)
tree3708faa3eb74b1f366ce29eb3b557490d6ddf5ce /window.go
parent597325f8921e4e79cbf51d176ba0cf4617400896 (diff)
ready to implement Destroy()
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'window.go')
-rw-r--r--window.go66
1 files changed, 32 insertions, 34 deletions
diff --git a/window.go b/window.go
index 33e17cd..543ae2a 100644
--- a/window.go
+++ b/window.go
@@ -9,54 +9,33 @@ import _ "github.com/andlabs/ui/winmanifest"
func StartNewWindow(bg bool, name string, axis int, callback func(*GuiBox) *GuiBox) {
log.Println("StartNewWindow() Create a new window")
- var tmp GuiWindow
- tmp.MakeWindow = callback
- tmp.Name = name
- tmp.Axis = axis
if (bg) {
log.Println("StartNewWindow() START NEW GOROUTINE for ui.Main()")
go ui.Main(func() {
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?
} else {
log.Println("StartNewWindow() WAITING for ui.Main()")
ui.Main(func() {
log.Println("gui.StartNewWindow() inside ui.Main()")
- initTabWindow(&tmp)
+ runWindow(name, axis, callback)
})
}
}
// 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. name =", gw.Name)
+ log.Println("initTabWindow() START. name =", name)
- gw.UiWindow = ui.NewWindow(gw.Name, int(gw.Width), int(gw.Height), true)
- gw.UiWindow.SetBorderless(false)
-
- 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
+ box := InitWindow(nil, name, axis)
+ box = callback(box)
+ window := box.Window
log.Println("initTabWindow() END box =", box)
- log.Println("initTabWindow() END gw =", gw)
- gw.UiWindow.Show()
+ log.Println("initTabWindow() END gw =", window)
+ window.UiWindow.Show()
}
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.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.MakeWindow = gw.MakeWindow
- newGuiWindow.UiWindow = gw.UiWindow
- newGuiWindow.UiTab = gw.UiTab
newGuiWindow.Name = name
newGuiWindow.BoxMap = make(map[string]*GuiBox)
@@ -103,7 +101,7 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
tabnum := 0
newGuiWindow.TabNumber = &tabnum
} else {
- tabnum := gw.UiTab.NumPages()
+ tabnum := newGuiWindow.UiTab.NumPages()
newGuiWindow.TabNumber = &tabnum
}