virtigo/windowGeneric.go

104 lines
1.9 KiB
Go
Raw Normal View History

// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
// Use of this source code is governed by the GPL 3.0
package main
import (
"go.wit.com/lib/gadgets"
"go.wit.com/log"
"go.wit.com/gui"
)
type genericWindow struct {
2025-02-23 00:51:28 -06:00
win *gadgets.BasicWindow // the window widget itself
box *gui.Node // the overall shelf
shelf *gui.Node // the overall shelf
stack *gui.Node // the first box is a shelf
top *gui.Node // the first item in the stack is always a box
group *gui.Node // the first item top box is always a group
middle *gui.Node // the middle box
bottom *gui.Node // the bottom box of the repolist window
}
func (r *genericWindow) Hidden() bool {
if r == nil {
return true
}
if r.win == nil {
return true
}
return r.win.Hidden()
}
func (r *genericWindow) Toggle() {
if r.Hidden() {
r.Show()
} else {
r.Hide()
}
}
func (r *genericWindow) Show() {
if r == nil {
return
}
if r.win == nil {
return
}
r.win.Show()
}
func (r *genericWindow) Hide() {
if r == nil {
return
}
if r.win == nil {
return
}
r.win.Hide()
}
func (r *genericWindow) Disable() {
if r == nil {
return
}
if r.box == nil {
return
}
r.box.Disable()
}
func (r *genericWindow) Enable() {
if r == nil {
return
}
if r.box == nil {
return
}
r.box.Enable()
}
func initGenericWindow(title string, grouptxt string) *genericWindow {
gw := new(genericWindow)
gw.win = gadgets.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()
}
2025-02-23 00:51:28 -06:00
gw.box = gw.win.Box()
gw.shelf = gw.box
gw.stack = gw.shelf.NewVerticalBox("STACKBOX") // a vertical box (like a stack of books)
gw.top = gw.stack.Box()
gw.group = gw.top.NewGroup(grouptxt)
gw.middle = gw.stack.Box()
gw.middle.Vertical()
gw.bottom = gw.stack.Box()
gw.Show()
return gw
}