pelican/internal/ui/statusbar.go

51 lines
746 B
Go
Raw Normal View History

package ui
import (
"fmt"
"time"
"github.com/rivo/tview"
)
type statusbarLogLevel int
const (
infoLevel statusbarLogLevel = iota
errorLevel
)
type statusbar struct {
*tview.TextView
duration time.Duration
}
func newStatusbar() *statusbar {
2024-01-13 12:38:37 +00:00
value := statusbar{
TextView: tview.NewTextView(),
duration: 5 * time.Second,
}
2024-01-13 12:38:37 +00:00
value.SetDynamicColors(true).SetBorder(false).SetBorderPadding(0, 0, 1, 1)
2024-01-13 12:38:37 +00:00
return &value
}
2024-01-13 12:38:37 +00:00
func (s *statusbar) displayMessage(level statusbarLogLevel, message string) {
go func() {
var colour string
2024-01-13 12:38:37 +00:00
switch level {
case infoLevel:
colour = "green"
case errorLevel:
colour = "red"
}
fmt.Fprintf(s, "[%s::b]%s[-:-:-:-]", colour, message)
time.Sleep(s.duration)
s.Clear()
}()
}