diff options
| author | Jeff Carr <[email protected]> | 2025-03-03 15:00:05 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-03-03 15:00:05 -0600 |
| commit | 18fc6238dfc73170227afe26f19e1628ff45f461 (patch) | |
| tree | fa293757edcfa17c2d48fa7c84b7d60ff7614ab9 | |
| parent | e8e36ee802ffe9d7ed6adb35e4de8054c6ec6ef0 (diff) | |
new standard: GenericWindow()
| -rw-r--r-- | genericWindow.go | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/genericWindow.go b/genericWindow.go new file mode 100644 index 0000000..f2695fd --- /dev/null +++ b/genericWindow.go @@ -0,0 +1,106 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package gadgets + +// This model works for 99.9% of all windows +// This is the Default Standard Window Model + +import ( + "go.wit.com/log" + + "go.wit.com/gui" +) + +type GenericWindow struct { + Win *BasicWindow // the window widget itself + Shelf *gui.Node // the overall box: the shelf + Stack *gui.Node // the first box is a stack + Top *gui.Node // the first item in the stack is always a shelf like box + Group *gui.Node // the first item top box is always a group + Middle *gui.Node // the middle box (shelf style) + Bottom *gui.Node // the bottom box (stack style) +} + +func (gw *GenericWindow) Hidden() bool { + if gw == nil { + return true + } + if gw.Win == nil { + return true + } + return gw.Win.Hidden() +} + +func (gw *GenericWindow) Toggle() { + if gw.Hidden() { + gw.Show() + } else { + gw.Hide() + } +} + +func (gw *GenericWindow) Show() { + if gw == nil { + return + } + if gw.Win == nil { + return + } + gw.Win.Show() +} + +func (gw *GenericWindow) Hide() { + if gw == nil { + return + } + if gw.Win == nil { + return + } + gw.Win.Hide() +} + +func (gw *GenericWindow) Disable() { + if gw == nil { + return + } + if gw.Shelf == nil { + return + } + gw.Shelf.Disable() +} + +func (gw *GenericWindow) Enable() { + if gw == nil { + return + } + if gw.Shelf == nil { + return + } + gw.Shelf.Enable() +} + +func NewGenericWindow(title string, grouptxt string) *GenericWindow { + gw := new(GenericWindow) + gw.Win = RawBasicWindow(title) + gw.Win.Make() + + gw.Win.Custom = func() { + log.Warn("Found Window close. setting hidden=true") + // sets the hidden flag to false so Toggle() works + gw.Win.Hide() + } + gw.Shelf = gw.Win.Box() + // gw.Shelf.Vertical().SetProgName("ShelfBox") + gw.Stack = gw.Shelf.NewVerticalBox("Stackbox") + + gw.Top = gw.Stack.NewVerticalBox("Stackbox") + gw.Middle = gw.Stack.Box() + gw.Bottom = gw.Stack.Box() + + gw.Group = gw.Top.NewGroup(grouptxt) + + gw.Show() + + return gw +} |
