2024-01-13 12:34:16 +00:00
|
|
|
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{
|
2024-01-13 12:34:16 +00:00
|
|
|
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:34:16 +00:00
|
|
|
|
2024-01-13 12:38:37 +00:00
|
|
|
return &value
|
2024-01-13 12:34:16 +00:00
|
|
|
}
|
|
|
|
|
2024-01-13 12:38:37 +00:00
|
|
|
func (s *statusbar) displayMessage(level statusbarLogLevel, message string) {
|
2024-01-13 12:34:16 +00:00
|
|
|
go func() {
|
|
|
|
var colour string
|
|
|
|
|
2024-01-13 12:38:37 +00:00
|
|
|
switch level {
|
2024-01-13 12:34:16 +00:00
|
|
|
case infoLevel:
|
|
|
|
colour = "green"
|
|
|
|
case errorLevel:
|
|
|
|
colour = "red"
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Fprintf(s, "[%s::b]%s[-:-:-:-]", colour, message)
|
|
|
|
|
|
|
|
time.Sleep(s.duration)
|
|
|
|
|
|
|
|
s.Clear()
|
|
|
|
}()
|
|
|
|
}
|