diff options
Diffstat (limited to 'window.go')
| -rw-r--r-- | window.go | 73 |
1 files changed, 63 insertions, 10 deletions
@@ -24,10 +24,14 @@ func InitGuiWindow(gw *GuiWindow) *GuiWindow { newGuiWindow.EntryMap["test"] = nil Data.Windows = append(Data.Windows, &newGuiWindow) - if (Data.WindowMap == nil) { - log.Println("gui.InitGuiWindow() making the Data.WindowMap here") - Data.WindowMap = make(map[string]*GuiWindow) + if (gw.UiTab == nil) { + tabnum := 0 + newGuiWindow.TabNumber = &tabnum + } else { + tabnum := gw.UiTab.NumPages() + newGuiWindow.TabNumber = &tabnum } + Data.WindowMap[newGuiWindow.Name] = &newGuiWindow 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()") go ui.Main(func() { 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? } else { log.Println("StartNewWindow() WAITING for ui.Main()") ui.Main(func() { log.Println("gui.StartNewWindow() inside ui.Main()") - InitTabWindow(window) + initTabWindow(window) }) } } -func InitTabWindow(gw *GuiWindow) { - log.Println("InitTabWindow() START. THIS WINDOW IS NOT YET SHOWN") +// This creates the raw andlabs/ui Window +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.SetBorderless(false) 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() return true }) @@ -76,10 +82,15 @@ func InitTabWindow(gw *GuiWindow) { gw.UiTab = ui.NewTab() gw.UiWindow.SetChild(gw.UiTab) gw.UiWindow.SetMargined(true) + tmp := 0 + gw.TabNumber = &tmp + + DumpBoxes() + // for {} box := gw.MakeWindow(gw) - log.Println("InitTabWindow() END box =", box) - log.Println("InitTabWindow() END gw =", gw) + log.Println("initTabWindow() END box =", box) + log.Println("initTabWindow() END gw =", gw) gw.UiWindow.Show() } @@ -90,3 +101,45 @@ func MessageWindow(gw *GuiWindow, msg1 string, msg2 string) { func ErrorWindow(gw *GuiWindow, msg1 string, msg2 string) { 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 + } +} |
