mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
package widgets
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
ui "github.com/gizak/termui"
|
|
)
|
|
|
|
type ErrorView struct {
|
|
*ui.Par
|
|
lines []string
|
|
}
|
|
|
|
func NewErrorView() *ErrorView {
|
|
const yPad = 1
|
|
const xPad = 2
|
|
|
|
p := ui.NewPar("")
|
|
p.X = xPad
|
|
p.Y = yPad
|
|
p.Border = true
|
|
p.Height = 10
|
|
p.Width = 20
|
|
p.PaddingTop = yPad
|
|
p.PaddingBottom = yPad
|
|
p.PaddingLeft = xPad
|
|
p.PaddingRight = xPad
|
|
p.BorderLabel = " ctop - error "
|
|
p.Bg = ui.ThemeAttr("bg")
|
|
p.TextFgColor = ui.ThemeAttr("status.warn")
|
|
p.TextBgColor = ui.ThemeAttr("menu.text.bg")
|
|
p.BorderFg = ui.ThemeAttr("status.warn")
|
|
p.BorderLabelFg = ui.ThemeAttr("status.warn")
|
|
return &ErrorView{p, make([]string, 0, 50)}
|
|
}
|
|
|
|
func (w *ErrorView) Append(s string) {
|
|
if len(w.lines)+2 >= cap(w.lines) {
|
|
w.lines = append(w.lines[:0], w.lines[2:]...)
|
|
}
|
|
ts := time.Now().Local().Format("15:04:05 MST")
|
|
w.lines = append(w.lines, fmt.Sprintf("[%s] %s", ts, s))
|
|
w.lines = append(w.lines, "")
|
|
}
|
|
|
|
func (w *ErrorView) Buffer() ui.Buffer {
|
|
offset := len(w.lines) - w.InnerHeight()
|
|
if offset < 0 {
|
|
offset = 0
|
|
}
|
|
w.Text = strings.Join(w.lines[offset:len(w.lines)], "\n")
|
|
return w.Par.Buffer()
|
|
}
|
|
|
|
func (w *ErrorView) Resize() {
|
|
w.Height = ui.TermHeight() - (w.PaddingTop + w.PaddingBottom)
|
|
w.SetWidth(ui.TermWidth() - (w.PaddingLeft + w.PaddingRight))
|
|
}
|