7 "github.com/nsf/termbox-go"
10 type InputFunc func(ui *Ui, textbox *Textbox, text string)
23 func (t *Textbox) setBounds(ui *Ui, x0, y0, x1, y1 int) {
30 func (t *Textbox) setActive(ui *Ui, active bool) {
34 func (t *Textbox) draw(ui *Ui) {
36 reader := strings.NewReader(t.Text)
37 for y := t.y0; y < t.y1; y++ {
38 for x := t.x0; x < t.x1; x++ {
40 if ch, _, err := reader.ReadRune(); err != nil {
41 if t.active && !setCursor {
42 termbox.SetCursor(x, y)
49 termbox.SetCell(x, y, chr, termbox.Attribute(t.Fg), termbox.Attribute(t.Bg))
54 func (t *Textbox) keyEvent(ui *Ui, mod Modifier, key Key) {
62 t.Input(ui, t, t.Text)
72 if r, size := utf8.DecodeLastRuneInString(t.Text); r != utf8.RuneError {
73 t.Text = t.Text[:len(t.Text)-size]
84 func (t *Textbox) characterEvent(ui *Ui, chr rune) {
85 t.Text = t.Text + string(chr)