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 {
obj := statusbar{
TextView: tview.NewTextView(),
duration: 5 * time.Second,
}
obj.SetDynamicColors(true).SetBorder(false).SetBorderPadding(0, 0, 1, 1)
return &obj
}
func (s *statusbar) displayMessage(category statusbarLogLevel, message string) {
go func() {
var colour string
switch category {
case infoLevel:
colour = "green"
case errorLevel:
colour = "red"
}
fmt.Fprintf(s, "[%s::b]%s[-:-:-:-]", colour, message)
time.Sleep(s.duration)
s.Clear()
}()
}