diff options
Diffstat (limited to 'window.go')
| -rw-r--r-- | window.go | 66 |
1 files changed, 32 insertions, 34 deletions
@@ -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 } |
