summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-03-03 15:00:05 -0600
committerJeff Carr <[email protected]>2025-03-03 15:00:05 -0600
commit18fc6238dfc73170227afe26f19e1628ff45f461 (patch)
treefa293757edcfa17c2d48fa7c84b7d60ff7614ab9
parente8e36ee802ffe9d7ed6adb35e4de8054c6ec6ef0 (diff)
new standard: GenericWindow()
-rw-r--r--genericWindow.go106
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
+}