This repository has been archived on 2025-03-15. You can view files and clone it, but cannot push or open issues or pull requests.
hui/internal/ui/stack.go
2024-07-31 19:10:32 +02:00

53 lines
1.0 KiB
Go

package ui
import (
"fmt"
"varia.zone/hui/internal/bldr"
"varia.zone/hui/internal/conf"
"varia.zone/hui/internal/model"
)
var allStackPages = []string{
conf.BusyStackPage,
conf.ContentStackPage,
conf.EmptyStackPage,
conf.InitStackPage,
}
// SwitchStackPage switches to a chosen stack page.
func SwitchStackPage(m *model.Model, stackPageName string, args ...string) error {
for _, spn := range allStackPages {
stackPage, err := bldr.GetBox(m.Builder, spn)
if err != nil {
return fmt.Errorf("ShowStackPage: %s", err)
}
if spn == stackPageName {
stackPage.Show()
if spn == conf.BusyStackPage {
if err := showBusyMessage(m, args...); err != nil {
return fmt.Errorf("ShowStackPage: %s", err)
}
}
} else {
stackPage.Hide()
}
}
return nil
}
func showBusyMessage(m *model.Model, args ...string) error {
label, err := bldr.GetLabel(m.Builder, conf.BusyStackLabel)
if err != nil {
return fmt.Errorf("showBusyMessage: %s", err)
}
msg := args[0]
label.SetLabel(msg)
return nil
}