53 lines
1.0 KiB
Go
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
|
|
}
|