aboutsummaryrefslogtreecommitdiff
path: root/ui/widget
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2018-03-22 23:03:36 +0200
committerTulir Asokan <tulir@maunium.net>2018-03-22 23:03:36 +0200
commitb93dea2e1c18752b89b09790b390e54c33dda1bf (patch)
treec004fdf58d89b3a832db5df4887f716bf364d3f9 /ui/widget
parent225dbdba4e1fed5814c0a3d1f34a8aedf87fc445 (diff)
Refactoring and documentation
Diffstat (limited to 'ui/widget')
-rw-r--r--ui/widget/advanced-inputfield.go3
-rw-r--r--ui/widget/border.go6
-rw-r--r--ui/widget/center.go2
-rw-r--r--ui/widget/color.go19
-rw-r--r--ui/widget/form-text-view.go44
5 files changed, 30 insertions, 44 deletions
diff --git a/ui/widget/advanced-inputfield.go b/ui/widget/advanced-inputfield.go
index 8115b18..4948247 100644
--- a/ui/widget/advanced-inputfield.go
+++ b/ui/widget/advanced-inputfield.go
@@ -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.
diff --git a/ui/widget/border.go b/ui/widget/border.go
index a32f4dd..7c42f3d 100644
--- a/ui/widget/border.go
+++ b/ui/widget/border.go
@@ -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()}
}
diff --git a/ui/widget/center.go b/ui/widget/center.go
index 41181a2..45312e2 100644
--- a/ui/widget/center.go
+++ b/ui/widget/center.go
@@ -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).
diff --git a/ui/widget/color.go b/ui/widget/color.go
index 874b93d..57f943f 100644
--- a/ui/widget/color.go
+++ b/ui/widget/color.go
@@ -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)
}
diff --git a/ui/widget/form-text-view.go b/ui/widget/form-text-view.go
deleted file mode 100644
index 58046e9..0000000
--- a/ui/widget/form-text-view.go
+++ /dev/null
@@ -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
-}