From 8aa5f1a4c00ca31dd52b53bdab5b7ea555791a36 Mon Sep 17 00:00:00 2001 From: Brian Buller Date: Wed, 21 Oct 2015 11:14:57 -0500 Subject: [PATCH] Linted termbox_inputfield.go --- termbox_inputfield.go | 62 +++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/termbox_inputfield.go b/termbox_inputfield.go index cfd68b7..b28b2bb 100755 --- a/termbox_inputfield.go +++ b/termbox_inputfield.go @@ -1,4 +1,4 @@ -package termbox_util +package termboxUtil import ( "fmt" @@ -6,6 +6,7 @@ import ( "github.com/nsf/termbox-go" ) +// InputField is a field for inputting text type InputField struct { value string x, y, width, height int @@ -14,47 +15,67 @@ type InputField struct { bordered bool } +// CreateInputField creates an input field at x, y that is w by h func CreateInputField(x, y, w, h int, fg, bg termbox.Attribute) *InputField { i := InputField{x: x, y: y, width: w, height: h, fg: fg, bg: bg} return &i } +// GetValue gets the current text that is in the InputField func (i *InputField) GetValue() string { return i.value } + +// SetValue sets the current text in the InputField to s func (i *InputField) SetValue(s string) *InputField { i.value = s return i } +// GetX returns the x position of the input field func (i *InputField) GetX() int { return i.x } + +// SetX sets the x position of the input field func (i *InputField) SetX(x int) *InputField { i.x = x return i } +// GetY returns the y position of the input field func (i *InputField) GetY() int { return i.y } + +// SetY sets the y position of the input field func (i *InputField) SetY(y int) *InputField { i.y = y return i } +// GetWidth returns the current width of the input field func (i *InputField) GetWidth() int { return i.width } + +// SetWidth sets the current width of the input field func (i *InputField) SetWidth(w int) *InputField { i.width = w return i } +// GetHeight returns the current height of the input field func (i *InputField) GetHeight() int { return i.height } + +// SetHeight sets the current height of the input field func (i *InputField) SetHeight(h int) *InputField { i.height = h return i } +// IsBordered returns true or false if this input field has a border func (i *InputField) IsBordered() bool { return i.bordered } + +// SetBordered sets whether we render a border around the input field func (i *InputField) SetBordered(b bool) *InputField { i.bordered = b return i } +// HandleKeyPress accepts the termbox event and returns whether it was consumed func (i *InputField) HandleKeyPress(event termbox.Event) bool { if event.Key == termbox.KeyEnter { // Done editing @@ -64,11 +85,11 @@ func (i *InputField) HandleKeyPress(event termbox.Event) bool { } } else if event.Key == termbox.KeyArrowLeft { if i.cursor+len(i.value) > 0 { - i.cursor -= 1 + i.cursor-- } } else if event.Key == termbox.KeyArrowRight { if i.cursor < 0 { - i.cursor += 1 + i.cursor++ } } else if event.Key == termbox.KeyCtrlU { // Ctrl+U Clears the Input @@ -91,39 +112,40 @@ func (i *InputField) HandleKeyPress(event termbox.Event) bool { } else if i.cursor == 0 { i.value = fmt.Sprintf("%s%s", i.value, ch) } else { - str_pt_1 := i.value[:(len(i.value) + i.cursor)] - str_pt_2 := i.value[(len(i.value) + i.cursor):] - i.value = fmt.Sprintf("%s%s%s", str_pt_1, ch, str_pt_2) + strPt1 := i.value[:(len(i.value) + i.cursor)] + strPt2 := i.value[(len(i.value) + i.cursor):] + i.value = fmt.Sprintf("%s%s%s", strPt1, ch, strPt2) } } return true } +// Draw outputs the input field on the screen func (i *InputField) Draw() { if i.bordered { DrawBorder(i.x, i.y, i.x+i.width, i.y+i.height, i.fg, i.bg) } - var str_pt_1, str_pt_2 string - var cursor_rune rune + var strPt1, strPt2 string + var cursorRune rune if len(i.value) > 0 { if i.cursor+len(i.value) == 0 { - str_pt_1 = "" - str_pt_2 = i.value[1:] - cursor_rune = rune(i.value[0]) + strPt1 = "" + strPt2 = i.value[1:] + cursorRune = rune(i.value[0]) } else if i.cursor == 0 { - str_pt_1 = i.value - str_pt_2 = "" - cursor_rune = ' ' + strPt1 = i.value + strPt2 = "" + cursorRune = ' ' } else { - str_pt_1 = i.value[:(len(i.value) + i.cursor)] - str_pt_2 = i.value[(len(i.value)+i.cursor)+1:] - cursor_rune = rune(i.value[len(i.value)+i.cursor]) + strPt1 = i.value[:(len(i.value) + i.cursor)] + strPt2 = i.value[(len(i.value)+i.cursor)+1:] + cursorRune = rune(i.value[len(i.value)+i.cursor]) } } else { - str_pt_1, str_pt_2, cursor_rune = "", "", ' ' + strPt1, strPt2, cursorRune = "", "", ' ' } - x, y := DrawStringAtPoint(str_pt_1, i.x+1, i.y+1, i.fg, i.bg) - termbox.SetCell(x, y, cursor_rune, i.bg, i.fg) + x, y := DrawStringAtPoint(strPt1, i.x+1, i.y+1, i.fg, i.bg) + termbox.SetCell(x, y, cursorRune, i.bg, i.fg) DrawStringAtPoint(str_pt_2, x+1, y, i.fg, i.bg) }