add StandardExit()

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-16 00:54:41 -06:00
parent 01b512ddb3
commit 751b6059c0
1 changed files with 26 additions and 6 deletions

View File

@ -65,6 +65,20 @@ func (w *BasicWindow) Title(title string) {
return
}
// sets this window to run os.Exit()
func (w *BasicWindow) StandardExit() {
if ! w.Ready() {return}
w.win.Custom = func() {
log.Warn("BasicWindow.Custom() closed. TODO: handle this", w.title)
log.Warn("BasicWindow.Custom() closed. handled properly?", w.title)
if w.Custom != nil {
w.Custom()
}
w.win.StandardExit()
}
return
}
// Returns true if initialized
func (w *BasicWindow) Initialized() bool {
if w == nil {return false}
@ -107,8 +121,13 @@ func (w *BasicWindow) Make() {
log.Warn("BasicWindow.Make() window was already created")
return
}
// various timeout settings
w.win = w.parent.RawWindow(w.title)
// if Custom isn't set, set it here. This prevents the application from
// os.Exit() if the window is closed. It destroy's the widgets in the toolkit plugins
// the the window still exists in the binary tree and functions normally
// I like to call this Sierpinski mode
if w.win.Custom == nil {
w.win.Custom = func() {
log.Warn("BasicWindow.Custom() closed. TODO: handle this", w.title)
log.Warn("BasicWindow.Custom() closed. handled properly?", w.title)
@ -116,6 +135,7 @@ func (w *BasicWindow) Make() {
w.Custom()
}
}
}
if w.vertical {
w.box = w.win.NewVerticalBox("BW VBOX")
log.Log(INFO, "BasicWindow.Make() made NewVerticalBox", w.title)