55 lines
834 B
Go
55 lines
834 B
Go
|
package uiterm
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
|
||
|
"github.com/nsf/termbox-go"
|
||
|
)
|
||
|
|
||
|
type Label struct {
|
||
|
Text string
|
||
|
Fg, Bg Attribute
|
||
|
|
||
|
ui *Ui
|
||
|
x0, y0, x1, y1 int
|
||
|
}
|
||
|
|
||
|
func (l *Label) uiInitialize(ui *Ui) {
|
||
|
l.ui = ui
|
||
|
}
|
||
|
|
||
|
func (l *Label) uiSetActive(active bool) {
|
||
|
}
|
||
|
|
||
|
func (l *Label) uiSetBounds(x0, y0, x1, y1 int) {
|
||
|
l.x0 = x0
|
||
|
l.y0 = y0
|
||
|
l.x1 = x1
|
||
|
l.y1 = y1
|
||
|
l.uiDraw()
|
||
|
}
|
||
|
|
||
|
func (l *Label) uiDraw() {
|
||
|
l.ui.beginDraw()
|
||
|
defer l.ui.endDraw()
|
||
|
|
||
|
reader := strings.NewReader(l.Text)
|
||
|
for y := l.y0; y < l.y1; y++ {
|
||
|
for x := l.x0; x < l.x1; x++ {
|
||
|
var chr rune
|
||
|
if ch, _, err := reader.ReadRune(); err != nil {
|
||
|
chr = ' '
|
||
|
} else {
|
||
|
chr = ch
|
||
|
}
|
||
|
termbox.SetCell(x, y, chr, termbox.Attribute(l.Fg), termbox.Attribute(l.Bg))
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (l *Label) uiKeyEvent(key Key) {
|
||
|
}
|
||
|
|
||
|
func (l *Label) uiCharacterEvent(chr rune) {
|
||
|
}
|