BUG: fix potential 'nil' reference

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2021-10-05 10:23:27 -05:00
parent 6d401ea14a
commit ccb91460ca
4 changed files with 37 additions and 28 deletions

6
box.go
View File

@ -120,6 +120,12 @@ func HardBox(gw *GuiWindow, axis int, name string) *GuiBox {
func HorizontalBreak(box *GuiBox) {
log.Println("VerticalSeparator added to box =", box.Name)
tmp := ui.NewHorizontalSeparator()
if (box == nil) {
return
}
if (box.UiBox == nil) {
return
}
box.UiBox.Append(tmp, false)
}

View File

@ -10,7 +10,7 @@ import "github.com/davecgh/go-spew/spew"
// functions for handling text entry boxes
func NewLabel(box *GuiBox, text string) {
box.UiBox.Append(ui.NewLabel(text), false)
box.Append(ui.NewLabel(text), false)
}
func GetText(box *GuiBox, name string) string {

View File

@ -105,6 +105,13 @@ func (s GuiBox) SetTitle(title string) {
return
}
func (s GuiBox) Append(child ui.Control, x bool) {
if (s.UiBox == nil) {
return
}
s.UiBox.Append(child, x)
}
func (s GuiBox) InitTab(title string) *ui.Tab {
if (s.Window == nil) {
return nil

View File

@ -45,21 +45,17 @@ func ErrorWindow(gw *GuiWindow, msg1 string, msg2 string) {
// 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
log.Println("InitGuiWindow() START")
var box *GuiBox
if (gw == nil) {
box = mapWindow(nil, name, Config.Height, Config.Width)
} else {
box = mapWindow(gw.UiWindow, name, Config.Height, Config.Width)
}
// return mapWindow(window, name, Config.Height, Config.Width)
log.Println("InitGuiWindow() START")
var newGuiWindow GuiWindow
newGuiWindow.Height = Config.Height
newGuiWindow.Width = Config.Width
newGuiWindow.Axis = axis
newGuiWindow.Name = name
// box.Window = &newGuiWindow
newGuiWindow := box.Window
// This is the first window. One must create it here
if (gw == nil) {
@ -75,7 +71,7 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
ui.Quit()
} else {
// allow a custom exit function
Config.Exit(&newGuiWindow)
Config.Exit(newGuiWindow)
}
return true
})
@ -102,15 +98,9 @@ func InitWindow(gw *GuiWindow, name string, axis int) *GuiBox {
newGuiWindow.TabNumber = &tabnum
}
Data.WindowMap[newGuiWindow.Name] = &newGuiWindow
Data.WindowMap[newGuiWindow.Name] = newGuiWindow
var box *GuiBox
if (axis == Xaxis) {
box = HardBox(&newGuiWindow, Xaxis, name)
} else {
box = HardBox(&newGuiWindow, Yaxis, name)
}
log.Println("InitGuiWindow() END *GuiWindow =", &newGuiWindow)
log.Println("InitGuiWindow() END *GuiWindow =", newGuiWindow)
return box
}
@ -181,7 +171,18 @@ func initBlankWindow() ui.Control {
return hbox
}
var master = 0
func mapWindow(window *ui.Window, title string, x int, y int) *GuiBox {
if (Data.WindowMap[title] != nil) {
log.Println("Data.WindowMap[title] already exists title =", title)
title = title + string(master)
}
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
newGuiWindow.Width = x
newGuiWindow.Height = y
@ -191,11 +192,6 @@ func mapWindow(window *ui.Window, title string, x int, y int) *GuiBox {
newGuiWindow.BoxMap = make(map[string]*GuiBox)
newGuiWindow.EntryMap = make(map[string]*GuiEntry)
if (Data.WindowMap[newGuiWindow.Name] != nil) {
log.Println("Data.WindowMap[newGuiWindow.Name] already exists\n")
panic("Data.WindowMap[newGuiWindow.Name] already exists")
return nil
}
Data.WindowMap[newGuiWindow.Name] = &newGuiWindow
var box GuiBox