mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package menu
|
|
|
|
import (
|
|
ui "github.com/gizak/termui"
|
|
)
|
|
|
|
type ToolTip struct {
|
|
ui.Block
|
|
Lines []string
|
|
TextFgColor ui.Attribute
|
|
TextBgColor ui.Attribute
|
|
padding Padding
|
|
}
|
|
|
|
func NewToolTip(lines ...string) *ToolTip {
|
|
t := &ToolTip{
|
|
Block: *ui.NewBlock(),
|
|
Lines: lines,
|
|
TextFgColor: ui.ThemeAttr("menu.text.fg"),
|
|
TextBgColor: ui.ThemeAttr("menu.text.bg"),
|
|
padding: Padding{2, 1},
|
|
}
|
|
t.BorderFg = ui.ThemeAttr("menu.border.fg")
|
|
t.BorderLabelFg = ui.ThemeAttr("menu.label.fg")
|
|
t.X = 1
|
|
t.Align()
|
|
return t
|
|
}
|
|
|
|
func (t *ToolTip) Buffer() ui.Buffer {
|
|
var cell ui.Cell
|
|
buf := t.Block.Buffer()
|
|
|
|
y := t.Y + t.padding[1]
|
|
|
|
for n, line := range t.Lines {
|
|
x := t.X + t.padding[0]
|
|
for _, ch := range line {
|
|
cell = ui.Cell{Ch: ch, Fg: t.TextFgColor, Bg: t.TextBgColor}
|
|
buf.Set(x, y+n, cell)
|
|
x++
|
|
}
|
|
}
|
|
|
|
return buf
|
|
}
|
|
|
|
// Set width and height based on screen size
|
|
func (t *ToolTip) Align() {
|
|
t.Width = ui.TermWidth() - (t.padding[0] * 2)
|
|
t.Height = len(t.Lines) + (t.padding[1] * 2)
|
|
t.Y = ui.TermHeight() - t.Height
|
|
|
|
t.Block.Align()
|
|
}
|