2019-06-03 20:53:14 -05:00
|
|
|
package gui
|
|
|
|
|
2021-10-06 10:43:58 -05:00
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"strconv"
|
2019-06-03 20:53:14 -05:00
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
// "github.com/andlabs/ui"
|
|
|
|
// _ "github.com/andlabs/ui/winmanifest"
|
2021-10-06 10:43:58 -05:00
|
|
|
)
|
2019-06-03 20:53:14 -05:00
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
import toolkit "git.wit.org/wit/gui/toolkit/andlabs"
|
|
|
|
|
|
|
|
/*
|
2019-06-03 20:53:14 -05:00
|
|
|
func MessageWindow(gw *GuiWindow, msg1 string, msg2 string) {
|
|
|
|
ui.MsgBox(gw.UiWindow, msg1, msg2)
|
|
|
|
}
|
|
|
|
|
|
|
|
func ErrorWindow(gw *GuiWindow, msg1 string, msg2 string) {
|
|
|
|
ui.MsgBoxError(gw.UiWindow, msg1, msg2)
|
|
|
|
}
|
2022-10-19 13:23:22 -05:00
|
|
|
*/
|
2019-06-13 14:08:47 -05:00
|
|
|
|
|
|
|
func DeleteWindow(name string) {
|
|
|
|
log.Println("gui.DeleteWindow() START name =", name)
|
|
|
|
window := Data.WindowMap[name]
|
2022-10-11 11:25:46 -05:00
|
|
|
if window == nil {
|
2019-06-13 14:08:47 -05:00
|
|
|
log.Println("gui.DeleteWindow() NO WINDOW WITH name =", name)
|
|
|
|
return
|
|
|
|
}
|
2019-06-13 15:09:08 -05:00
|
|
|
|
|
|
|
log.Println("gui.DumpBoxes() MAP: ", name)
|
|
|
|
log.Println("gui.DumpBoxes()\tWindow.name =", window.Name)
|
2022-10-11 11:25:46 -05:00
|
|
|
if window.TabNumber == nil {
|
2019-06-13 15:09:08 -05:00
|
|
|
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
|
2019-06-13 17:57:43 -05:00
|
|
|
}
|
|
|
|
tab := *window.TabNumber
|
|
|
|
log.Println("gui.DumpBoxes() \tWindows.TabNumber =", tab)
|
|
|
|
log.Println("gui.DumpBoxes() \tSHOULD DELETE TAB", tab, "HERE")
|
2019-06-17 16:45:42 -05:00
|
|
|
log.Println("gui.DeleteWindow() \tSHOULD DELETE TAB", tab, "HERE")
|
|
|
|
log.Println("gui.DumpBoxes() \tUiTab =", window.UiTab)
|
|
|
|
tabnum := window.UiTab.NumPages()
|
|
|
|
log.Println("gui.DumpBoxes() \tUiTab.NumPages() =", tabnum)
|
|
|
|
if (tabnum > 0) {
|
|
|
|
window.UiTab.Delete(tab)
|
|
|
|
}
|
2019-06-13 17:57:43 -05:00
|
|
|
delete(Data.WindowMap, name)
|
|
|
|
|
|
|
|
// renumber tabs here
|
|
|
|
for name, window := range Data.WindowMap {
|
|
|
|
log.Println("gui.DumpBoxes() MAP: ", name)
|
2022-10-11 11:25:46 -05:00
|
|
|
if window.TabNumber == nil {
|
2019-06-13 17:57:43 -05:00
|
|
|
log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil")
|
|
|
|
} else {
|
|
|
|
log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber)
|
2022-10-11 11:25:46 -05:00
|
|
|
if tab < *window.TabNumber {
|
2019-06-13 17:57:43 -05:00
|
|
|
log.Println("gui.DumpBoxes() \tSubtracting 1 from TabNumber")
|
|
|
|
*window.TabNumber -= 1
|
|
|
|
log.Println("gui.DumpBoxes() \tWindows.TabNumber is now =", *window.TabNumber)
|
|
|
|
}
|
|
|
|
}
|
2019-06-13 15:09:08 -05:00
|
|
|
}
|
2019-06-13 14:08:47 -05:00
|
|
|
}
|
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
// func mapWindowOld(parent *Node, window *ui.Window, title string, x int, y int) *Node {
|
|
|
|
func mapWindow(title string, w int, h int) *Node {
|
2021-10-06 05:14:24 -05:00
|
|
|
log.Println("gui.WindowMap START title =", title)
|
2022-10-11 11:25:46 -05:00
|
|
|
if Data.WindowMap[title] != nil {
|
|
|
|
log.Println("Data.WindowMap[title] already exists title =", title)
|
|
|
|
title = title + Config.prefix + strconv.Itoa(Config.counter)
|
|
|
|
Config.counter += 1
|
|
|
|
}
|
|
|
|
if Data.WindowMap[title] != nil {
|
|
|
|
log.Println("Data.WindowMap[title] already exists title =", title)
|
|
|
|
panic("Data.WindowMap[newGuiWindow.Name] already exists")
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
var newGuiWindow GuiWindow
|
2022-10-19 13:23:22 -05:00
|
|
|
newGuiWindow.Width = w
|
|
|
|
newGuiWindow.Height = h
|
2022-10-11 11:25:46 -05:00
|
|
|
newGuiWindow.Name = title
|
2022-10-19 13:23:22 -05:00
|
|
|
// newGuiWindow.UiWindow = window
|
2022-10-11 11:25:46 -05:00
|
|
|
|
|
|
|
newGuiWindow.BoxMap = make(map[string]*GuiBox)
|
|
|
|
newGuiWindow.EntryMap = make(map[string]*GuiEntry)
|
|
|
|
|
|
|
|
Data.WindowMap[newGuiWindow.Name] = &newGuiWindow
|
|
|
|
|
|
|
|
var box GuiBox
|
|
|
|
box.Window = &newGuiWindow
|
|
|
|
box.Name = title
|
2021-10-04 23:38:45 -05:00
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
node := addNode(title, w, h)
|
2022-10-11 11:25:46 -05:00
|
|
|
node.box = &box
|
|
|
|
box.node = node
|
|
|
|
|
|
|
|
newGuiWindow.BoxMap["jcarrInitTest"] = &box
|
2021-10-06 13:23:00 -05:00
|
|
|
|
2021-10-31 14:21:36 -05:00
|
|
|
return node
|
2021-10-04 20:18:51 -05:00
|
|
|
}
|
2021-10-06 10:43:58 -05:00
|
|
|
|
2021-10-31 14:21:36 -05:00
|
|
|
// This routine creates a blank window with a Title and size (W x H)
|
|
|
|
//
|
|
|
|
// This routine can not have any arguements due to the nature of how
|
|
|
|
// it can be passed via the 'andlabs/ui' queue which, because it is
|
|
|
|
// cross platform, must pass UI changes into the OS threads (that is
|
|
|
|
// my guess).
|
|
|
|
func NewWindow() *Node {
|
2022-10-19 13:23:22 -05:00
|
|
|
var n *Node
|
|
|
|
var t *toolkit.Toolkit
|
|
|
|
|
2021-10-31 14:21:36 -05:00
|
|
|
title := Config.Title
|
|
|
|
w := Config.Width
|
|
|
|
h := Config.Height
|
2022-10-17 16:55:30 -05:00
|
|
|
f := Config.Exit
|
2021-10-31 14:21:36 -05:00
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
n = mapWindow(title, w, h)
|
|
|
|
n.custom = f
|
2022-10-11 11:25:46 -05:00
|
|
|
box := n.box
|
|
|
|
log.Println("gui.NewWindow() title = box.Name =", box.Name)
|
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
t = toolkit.NewWindow(title, w, h)
|
|
|
|
t.Custom = func () {
|
|
|
|
log.Println("GOT TO MY CUSTOM EXIT!!!! for window name:", box.Name)
|
|
|
|
f(n)
|
|
|
|
}
|
|
|
|
n.Toolkit = t
|
|
|
|
n.uiWindow = t.UiWindowBad // this is temporary
|
|
|
|
|
2021-10-31 14:21:36 -05:00
|
|
|
window := n.uiWindow
|
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
/*
|
2021-10-06 10:43:58 -05:00
|
|
|
ui.OnShouldQuit(func() bool {
|
2021-10-31 14:21:36 -05:00
|
|
|
log.Println("createWindow().Destroy() on node.Name =", n.Name)
|
|
|
|
if (f != nil) {
|
|
|
|
f(n)
|
|
|
|
}
|
2021-10-06 10:43:58 -05:00
|
|
|
return true
|
|
|
|
})
|
2022-10-19 13:23:22 -05:00
|
|
|
*/
|
2021-10-06 10:43:58 -05:00
|
|
|
|
2022-10-11 11:25:46 -05:00
|
|
|
box.Window.UiWindow = window
|
2021-10-31 14:21:36 -05:00
|
|
|
if(n.uiWindow == nil) {
|
2022-10-11 11:25:46 -05:00
|
|
|
panic("node.uiWindow == nil. This should never happen")
|
2021-10-31 14:21:36 -05:00
|
|
|
}
|
|
|
|
return n
|
2021-10-06 10:43:58 -05:00
|
|
|
}
|