Refactoring and documentation
This commit is contained in:
		@@ -14,6 +14,8 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
// Based on https://github.com/rivo/tview/blob/master/inputfield.go
 | 
			
		||||
 | 
			
		||||
package widget
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
@@ -68,6 +70,7 @@ type AdvancedInputField struct {
 | 
			
		||||
	// disables masking.
 | 
			
		||||
	maskCharacter rune
 | 
			
		||||
 | 
			
		||||
	// Whether or not to enable vim-style keybindings.
 | 
			
		||||
	vimBindings bool
 | 
			
		||||
 | 
			
		||||
	// An optional function which may reject the last character that was entered.
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,16 @@ import (
 | 
			
		||||
	"maunium.net/go/tview"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Border is a simple tview widget that renders a horizontal or vertical bar.
 | 
			
		||||
//
 | 
			
		||||
// If the width of the box is 1, the bar will be vertical.
 | 
			
		||||
// If the height is 1, the bar will be horizontal.
 | 
			
		||||
// If the width nor the height are 1, nothing will be rendered.
 | 
			
		||||
type Border struct {
 | 
			
		||||
	*tview.Box
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewBorder wraps a new tview Box into a new Border.
 | 
			
		||||
func NewBorder() *Border {
 | 
			
		||||
	return &Border{tview.NewBox()}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,8 @@ import (
 | 
			
		||||
	"maunium.net/go/tview"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Center wraps the given tview primitive into a Flex element in order to
 | 
			
		||||
// vertically and horizontally center the given primitive.
 | 
			
		||||
func Center(width, height int, p tview.Primitive) tview.Primitive {
 | 
			
		||||
	return tview.NewFlex().
 | 
			
		||||
		AddItem(tview.NewBox(), 0, 1, false).
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,7 @@ import (
 | 
			
		||||
 | 
			
		||||
var colorNames []string
 | 
			
		||||
 | 
			
		||||
// init initializes the colorNames array.
 | 
			
		||||
func init() {
 | 
			
		||||
	colorNames = make([]string, len(tcell.ColorNames))
 | 
			
		||||
	i := 0
 | 
			
		||||
@@ -33,9 +34,22 @@ func init() {
 | 
			
		||||
		colorNames[i] = name
 | 
			
		||||
		i++
 | 
			
		||||
	}
 | 
			
		||||
	// In order to have consistent coloring between restarts, we need to sort the array.
 | 
			
		||||
	sort.Sort(sort.StringSlice(colorNames))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetHashColorName gets a color name for the given string based on its FNV-1 hash.
 | 
			
		||||
//
 | 
			
		||||
// The array of possible color names are the alphabetically ordered color
 | 
			
		||||
// names specified in tcell.ColorNames.
 | 
			
		||||
//
 | 
			
		||||
// The algorithm to get the color is as follows:
 | 
			
		||||
//  colorNames[ FNV1(string) % len(colorNames) ]
 | 
			
		||||
//
 | 
			
		||||
// With the exception of the three special cases:
 | 
			
		||||
//  --> = green
 | 
			
		||||
//  <-- = red
 | 
			
		||||
//  --- = yellow
 | 
			
		||||
func GetHashColorName(s string) string {
 | 
			
		||||
	switch s {
 | 
			
		||||
	case "-->":
 | 
			
		||||
@@ -51,10 +65,15 @@ func GetHashColorName(s string) string {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetHashColor gets the tcell Color value for the given string.
 | 
			
		||||
//
 | 
			
		||||
// GetHashColor calls GetHashColorName() and gets the Color value from the tcell.ColorNames map.
 | 
			
		||||
func GetHashColor(s string) tcell.Color {
 | 
			
		||||
	return tcell.ColorNames[GetHashColorName(s)]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AddHashColor adds tview color tags to the given string.
 | 
			
		||||
// The color added is the color returned by GetHashColorName().
 | 
			
		||||
func AddHashColor(s string) string {
 | 
			
		||||
	return fmt.Sprintf("[%s]%s[white]", GetHashColorName(s), s)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,44 +0,0 @@
 | 
			
		||||
// gomuks - A terminal Matrix client written in Go.
 | 
			
		||||
// Copyright (C) 2018 Tulir Asokan
 | 
			
		||||
//
 | 
			
		||||
// This program is free software: you can redistribute it and/or modify
 | 
			
		||||
// it under the terms of the GNU General Public License as published by
 | 
			
		||||
// the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
// (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
// This program is distributed in the hope that it will be useful,
 | 
			
		||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
// GNU General Public License for more details.
 | 
			
		||||
//
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
package widget
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/gdamore/tcell"
 | 
			
		||||
	"maunium.net/go/tview"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type FormTextView struct {
 | 
			
		||||
	*tview.TextView
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ftv *FormTextView) GetLabel() string {
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ftv *FormTextView) SetFormAttributes(label string, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) tview.FormItem {
 | 
			
		||||
	return ftv
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ftv *FormTextView) GetFieldWidth() int {
 | 
			
		||||
	_, _, w, _ := ftv.TextView.GetRect()
 | 
			
		||||
	return w
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ftv *FormTextView) SetFinishedFunc(handler func(key tcell.Key)) tview.FormItem {
 | 
			
		||||
	ftv.SetDoneFunc(handler)
 | 
			
		||||
	return ftv
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user