Documentation ¶
Overview ¶
Package tview implements rich widgets for terminal based user interfaces. The widgets provided with this package are useful for data exploration and data entry.
Widgets ¶
The package implements the following widgets:
- TextView: A scrollable window that display multi-colored text. Text may also be highlighted.
- TextArea: An editable multi-line text area.
- Table: A scrollable display of tabular data. Table cells, rows, or columns may also be highlighted.
- TreeView: A scrollable display for hierarchical data. Tree nodes can be highlighted, collapsed, expanded, and more.
- List: A navigable text list with optional keyboard shortcuts.
- InputField: One-line input fields to enter text.
- DropDown: Drop-down selection fields.
- Checkbox: Selectable checkbox for boolean values.
- Image: Displays images.
- Button: Buttons which get activated when the user selects them.
- Form: Forms composed of input fields, drop down selections, checkboxes, and buttons.
- Modal: A centered window with a text message and one or more buttons.
- Grid: A grid based layout manager.
- Flex: A Flexbox based layout manager.
- Pages: A page based layout manager.
The package also provides Application which is used to poll the event queue and draw widgets on screen.
Hello World ¶
The following is a very basic example showing a box with the title "Hello, world!":
package main import ( "github.com/rivo/tview" ) func main() { box := tview.NewBox().SetBorder(true).SetTitle("Hello, world!") if err := tview.NewApplication().SetRoot(box, true).Run(); err != nil { panic(err) } }
First, we create a box primitive with a border and a title. Then we create an application, set the box as its root primitive, and run the event loop. The application exits when the application's Application.Stop function is called or when Ctrl-C is pressed.
More Demos ¶
You will find more demos in the "demos" subdirectory. It also contains a presentation (written using tview) which gives an overview of the different widgets and how they can be used.
Styles, Colors, and Hyperlinks ¶
Throughout this package, styles are specified using the tcell.Style type. Styles specify colors with the tcell.Color type. Functions such as tcell.GetColor, tcell.NewHexColor, and tcell.NewRGBColor can be used to create colors from W3C color names or RGB values. The tcell.Style type also allows you to specify text attributes such as "bold" or "underline" or a URL which some terminals use to display hyperlinks.
Almost all strings which are displayed may contain style tags. A style tag's content is always wrapped in square brackets. In its simplest form, a style tag specifies the foreground color of the text. Colors in these tags are W3C color names or six hexadecimal digits following a hash tag. Examples:
This is a [red]warning[white]! The sky is [#8080ff]blue[#ffffff].
A style tag changes the style of the characters following that style tag. There is no style stack and no nesting of style tags.
Style tags are used in almost everything from box titles, list text, form item labels, to table cells. In a TextView, this functionality has to be switched on explicitly. See the TextView documentation for more information.
A style tag's full format looks like this:
[<foreground>:<background>:<attribute flags>:<url>]
Each of the four fields can be left blank and trailing fields can be omitted. (Empty square brackets "[]", however, are not considered style tags.) Fields that are not specified will be left unchanged. A field with just a dash ("-") means "reset to default".
You can specify the following flags to turn on certain attributes (some flags may not be supported by your terminal):
l: blink b: bold i: italic d: dim r: reverse (switch foreground and background color) u: underline s: strike-through
Use uppercase letters to turn off the corresponding attribute, for example, "B" to turn off bold. Uppercase letters have no effect if the attribute was not previously set.
Setting a URL allows you to turn a piece of text into a hyperlink in some terminals. Specify a dash ("-") to specify the end of the hyperlink. Hyperlinks must only contain single-byte characters (e.g. ASCII) and they may not contain bracket characters ("[" or "]").
Examples:
[yellow]Yellow text [yellow:red]Yellow text on red background [:red]Red background, text color unchanged [yellow::u]Yellow text underlined [::bl]Bold, blinking text [::-]Colors unchanged, flags reset [-]Reset foreground color [::i]Italic and [::I]not italic Click [:::https://example.com]here[:::-] for example.com. Send an email to [:::mailto:her@example.com]her/[:::mail:him@example.com]him/[:::mail:them@example.com]them[:::-]. [-:-:-:-]Reset everything [:]No effect []Not a valid style tag, will print square brackets as they are
In the rare event that you want to display a string such as "[red]" or "[#00ff1a]" without applying its effect, you need to put an opening square bracket before the closing square bracket. Note that the text inside the brackets will be matched less strictly than region or colors tags. I.e. any character that may be used in color or region tags will be recognized. Examples:
[red[] will be output as [red] ["123"[] will be output as ["123"] [#6aff00[[] will be output as [#6aff00[] [a#"[[[] will be output as [a#"[[] [] will be output as [] (see style tags above) [[] will be output as [[] (not an escaped tag)
You can use the Escape() function to insert brackets automatically where needed.
Styles ¶
When primitives are instantiated, they are initialized with colors taken from the global Styles variable. You may change this variable to adapt the look and feel of the primitives to your preferred style.
Note that most terminals will not report information about their color theme. This package therefore does not support using the terminal's color theme. The default style is a dark theme and you must change the Styles variable to switch to a light (or other) theme.
Unicode Support ¶
This package supports all unicode characters supported by your terminal.
Concurrency ¶
Many functions in this package are not thread-safe. For many applications, this is not an issue: If your code makes changes in response to key events, the corresponding callback function will execute in the main goroutine and thus will not cause any race conditions. (Exceptions to this are documented.)
If you access your primitives from other goroutines, however, you will need to synchronize execution. The easiest way to do this is to call Application.QueueUpdate or Application.QueueUpdateDraw (see the function documentation for details):
go func() { app.QueueUpdateDraw(func() { table.SetCellSimple(0, 0, "Foo bar") }) }()
One exception to this is the io.Writer interface implemented by TextView. You can safely write to a TextView from any goroutine. See the TextView documentation for details.
You can also call Application.Draw from any goroutine without having to wrap it in Application.QueueUpdate. And, as mentioned above, key event callbacks are executed in the main goroutine and thus should not use Application.QueueUpdate as that may lead to deadlocks. It is also not necessary to call Application.Draw from such callbacks as it will be called automatically.
Type Hierarchy ¶
All widgets listed above contain the Box type. All of Box's functions are therefore available for all widgets, too. Please note that if you are using the functions of Box on a subclass, they will return a *Box, not the subclass. This is a Golang limitation. So while tview supports method chaining in many places, these chains must be broken when using Box's functions. Example:
// This will cause "textArea" to be an empty Box. textArea := tview.NewTextArea(). SetMaxLength(256). SetPlaceholder("Enter text here"). SetBorder(true)
You will need to call Box.SetBorder separately:
textArea := tview.NewTextArea(). SetMaxLength(256). SetPlaceholder("Enter text here") texArea.SetBorder(true)
All widgets also implement the Primitive interface.
The tview package's rendering is based on version 2 of https://github.com/gdamore/tcell. It uses types and constants from that package (e.g. colors, styles, and keyboard values).
Index ¶
- Constants
- Variables
- func ANSIWriter(writer io.Writer) io.Writer
- func Escape(text string) string
- func Print(screen tcell.Screen, text string, x, y, maxWidth, align int, color tcell.Color) (int, int)
- func PrintJoinedSemigraphics(screen tcell.Screen, x, y int, ch rune, style tcell.Style)
- func PrintSimple(screen tcell.Screen, text string, x, y int)
- func TaggedStringWidth(text string) (width int)
- func TranslateANSI(text string) string
- func WordWrap(text string, width int) (lines []string)
- type Application
- func (a *Application) Draw() *Application
- func (a *Application) EnableMouse(enable bool) *Application
- func (a *Application) ForceDraw() *Application
- func (a *Application) GetAfterDrawFunc() func(screen tcell.Screen)
- func (a *Application) GetBeforeDrawFunc() func(screen tcell.Screen) bool
- func (a *Application) GetEventCapture() func(event tcell.Event) tcell.Event
- func (a *Application) GetFocus() Primitive
- func (a *Application) GetInputCapture() func(event *tcell.EventKey) *tcell.EventKey
- func (a *Application) GetMouseCapture() ...
- func (a *Application) QueueEvent(event tcell.Event) *Application
- func (a *Application) QueueUpdate(f func()) *Application
- func (a *Application) QueueUpdateDraw(f func()) *Application
- func (a *Application) ResizeToFullScreen(p Primitive) *Application
- func (a *Application) Run() error
- func (a *Application) Screen() tcell.Screen
- func (a *Application) SetAfterDrawFunc(handler func(screen tcell.Screen)) *Application
- func (a *Application) SetBeforeDrawFunc(handler func(screen tcell.Screen) bool) *Application
- func (a *Application) SetEventCapture(capture func(event tcell.Event) tcell.Event) *Application
- func (a *Application) SetFocus(p Primitive) *Application
- func (a *Application) SetInputCapture(capture func(event *tcell.EventKey) *tcell.EventKey) *Application
- func (a *Application) SetMouseCapture(...) *Application
- func (a *Application) SetRoot(root Primitive, fullscreen bool) *Application
- func (a *Application) SetScreen(screen tcell.Screen) *Application
- func (a *Application) Stop()
- func (a *Application) Suspend(f func()) bool
- func (a *Application) Sync() *Application
- type Box
- func (b *Box) Blur()
- func (b *Box) Draw(screen tcell.Screen)
- func (b *Box) DrawForSubclass(screen tcell.Screen, p Primitive)
- func (b *Box) EventHandler() func(event tcell.Event, setFocus func(p Primitive))
- func (b *Box) Focus(delegate func(p Primitive))
- func (b *Box) GetBackgroundColor() tcell.Color
- func (b *Box) GetBorder() (show bool)
- func (b *Box) GetBorderAttributes() tcell.AttrMask
- func (b *Box) GetBorderColor() tcell.Color
- func (b *Box) GetDrawFunc() func(screen tcell.Screen, x, y, width, height int) (int, int, int, int)
- func (b *Box) GetEventCapture() func(event tcell.Event) tcell.Event
- func (b *Box) GetInnerRect() (int, int, int, int)
- func (b *Box) GetInputCapture() func(event *tcell.EventKey) *tcell.EventKey
- func (b *Box) GetLabel(label string) (string, bool)
- func (b *Box) GetLabels() map[string]string
- func (b *Box) GetLeafFocus() Primitive
- func (b *Box) GetMouseCapture() ...
- func (b *Box) GetProp(prop string) (any, bool)
- func (b *Box) GetProps() map[string]any
- func (b *Box) GetRect() (int, int, int, int)
- func (b *Box) GetTitle() string
- func (b *Box) HasFocus() bool
- func (b *Box) Id() string
- func (b *Box) InRect(x, y int) bool
- func (b *Box) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (b *Box) IsMounted() bool
- func (b *Box) Mount(context map[string]any) error
- func (b *Box) MouseHandler() ...
- func (b *Box) Name() string
- func (b *Box) Render() error
- func (b *Box) SetBackgroundColor(color tcell.Color) *Box
- func (b *Box) SetBlurFunc(callback func()) *Box
- func (b *Box) SetBorder(show bool) *Box
- func (b *Box) SetBorderAttributes(attr tcell.AttrMask) *Box
- func (b *Box) SetBorderColor(color tcell.Color) *Box
- func (b *Box) SetBorderPadding(top, bottom, left, right int) *Box
- func (b *Box) SetBorderStyle(style tcell.Style) *Box
- func (b *Box) SetDrawFunc(...) *Box
- func (b *Box) SetEventCapture(capture func(event tcell.Event) tcell.Event) *Box
- func (b *Box) SetFocusFunc(callback func()) *Box
- func (b *Box) SetInputCapture(capture func(event *tcell.EventKey) *tcell.EventKey) *Box
- func (b *Box) SetLabel(label string, value string) error
- func (b *Box) SetLabels(newLabels map[string]string) error
- func (b *Box) SetMouseCapture(...) *Box
- func (b *Box) SetName(name string)
- func (b *Box) SetProp(prop string, value any) error
- func (b *Box) SetProps(newProps map[string]any) error
- func (b *Box) SetRect(x, y, width, height int)
- func (b *Box) SetTitle(title string) *Box
- func (b *Box) SetTitleAlign(align int) *Box
- func (b *Box) SetTitleColor(color tcell.Color) *Box
- func (b *Box) Unmount() error
- func (b *Box) WrapEventHandler(eventHandler func(tcell.Event, func(p Primitive))) func(tcell.Event, func(p Primitive))
- func (b *Box) WrapInputHandler(inputHandler func(*tcell.EventKey, func(p Primitive))) func(*tcell.EventKey, func(p Primitive))
- func (b *Box) WrapMouseHandler(...) ...
- type Button
- func (b *Button) Draw(screen tcell.Screen)
- func (b *Button) GetLabelText() string
- func (b *Button) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (b *Button) IsDisabled() bool
- func (b *Button) MouseHandler() ...
- func (b *Button) SetActivatedStyle(style tcell.Style) *Button
- func (b *Button) SetBackgroundColorActivated(color tcell.Color) *Button
- func (b *Button) SetDisabled(disabled bool) *Button
- func (b *Button) SetDisabledStyle(style tcell.Style) *Button
- func (b *Button) SetExitFunc(handler func(key tcell.Key)) *Button
- func (b *Button) SetLabelColor(color tcell.Color) *Button
- func (b *Button) SetLabelColorActivated(color tcell.Color) *Button
- func (b *Button) SetLabelText(label string) *Button
- func (b *Button) SetSelectedFunc(handler func()) *Button
- func (b *Button) SetStyle(style tcell.Style) *Button
- type Checkbox
- func (c *Checkbox) Draw(screen tcell.Screen)
- func (c *Checkbox) Focus(delegate func(p Primitive))
- func (c *Checkbox) GetFieldHeight() int
- func (c *Checkbox) GetFieldWidth() int
- func (c *Checkbox) GetLabelText() string
- func (c *Checkbox) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (c *Checkbox) IsChecked() bool
- func (c *Checkbox) MouseHandler() ...
- func (c *Checkbox) SetChangedFunc(handler func(checked bool)) *Checkbox
- func (c *Checkbox) SetChecked(checked bool) *Checkbox
- func (c *Checkbox) SetCheckedString(checked string) *Checkbox
- func (c *Checkbox) SetDisabled(disabled bool) FormItem
- func (c *Checkbox) SetDoneFunc(handler func(key tcell.Key)) *Checkbox
- func (c *Checkbox) SetFieldBackgroundColor(color tcell.Color) *Checkbox
- func (c *Checkbox) SetFieldTextColor(color tcell.Color) *Checkbox
- func (c *Checkbox) SetFinishedFunc(handler func(key tcell.Key)) FormItem
- func (c *Checkbox) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
- func (c *Checkbox) SetLabelColor(color tcell.Color) *Checkbox
- func (c *Checkbox) SetLabelText(label string) *Checkbox
- func (c *Checkbox) SetLabelWidth(width int) *Checkbox
- type DropDown
- func (d *DropDown) AddOption(text string, value any, selected func()) *DropDown
- func (d *DropDown) Draw(screen tcell.Screen)
- func (d *DropDown) Focus(delegate func(p Primitive))
- func (d *DropDown) GetCurrentOption() (i int, opt *DropDownOption)
- func (d *DropDown) GetFieldHeight() int
- func (d *DropDown) GetFieldWidth() int
- func (d *DropDown) GetLabelText() string
- func (d *DropDown) GetOptionCount() int
- func (d *DropDown) HasFocus() bool
- func (d *DropDown) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (d *DropDown) IsOpen() bool
- func (d *DropDown) MouseHandler() ...
- func (d *DropDown) RemoveOption(index int) *DropDown
- func (d *DropDown) SetCurrentOption(index int) *DropDown
- func (d *DropDown) SetDisabled(disabled bool) FormItem
- func (d *DropDown) SetDoneFunc(handler func(key tcell.Key)) *DropDown
- func (d *DropDown) SetFieldBackgroundColor(color tcell.Color) *DropDown
- func (d *DropDown) SetFieldTextColor(color tcell.Color) *DropDown
- func (d *DropDown) SetFieldWidth(width int) *DropDown
- func (d *DropDown) SetFinishedFunc(handler func(key tcell.Key)) FormItem
- func (d *DropDown) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
- func (d *DropDown) SetLabelColor(color tcell.Color) *DropDown
- func (d *DropDown) SetLabelText(label string) *DropDown
- func (d *DropDown) SetLabelWidth(width int) *DropDown
- func (d *DropDown) SetListStyles(unselected, selected tcell.Style) *DropDown
- func (d *DropDown) SetOptions(texts []string, values []any, selected func(text string, index int)) *DropDown
- func (d *DropDown) SetPrefixTextColor(color tcell.Color) *DropDown
- func (d *DropDown) SetSelectedFunc(handler func(text string, index int)) *DropDown
- func (d *DropDown) SetTextOptions(prefix, suffix, currentPrefix, currentSuffix, noSelection string) *DropDown
- type DropDownOption
- type Flex
- func (f *Flex) AddItem(item Primitive, fixedSize, proportion int, focus bool) *Flex
- func (f *Flex) ChildFocus() int
- func (f *Flex) Clear() *Flex
- func (f *Flex) Draw(screen tcell.Screen)
- func (f *Flex) Focus(delegate func(p Primitive))
- func (f *Flex) GetChildFocusItem() Primitive
- func (f *Flex) GetDirection() int
- func (f *Flex) GetItem(index int) Primitive
- func (f *Flex) GetItemCount() int
- func (f *Flex) GetItems() []*FlexItem
- func (f *Flex) GetLeafFocus() Primitive
- func (f *Flex) HasFocus() bool
- func (f *Flex) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (f *Flex) InsItem(idx int, item Primitive, fixedSize, proportion int, focus bool)
- func (f *Flex) Mount(context map[string]interface{}) error
- func (f *Flex) MouseHandler() ...
- func (f *Flex) RemoveIndex(index int) *Flex
- func (f *Flex) RemoveItem(p Primitive) *Flex
- func (f *Flex) ReplaceItem(prev, next Primitive) *Flex
- func (f *Flex) ResizeItem(p Primitive, fixedSize, proportion int) *Flex
- func (f *Flex) SetDirection(direction int) *Flex
- func (f *Flex) SetFullScreen(fullScreen bool) *Flex
- func (f *Flex) SetItem(idx int, item Primitive, fixedSize, proportion int, focus bool)
- func (f *Flex) SwapIndexes(i, j int)
- func (f *Flex) Unmount() error
- type FlexItem
- type Form
- func (f *Form) AddButton(label string, selected func()) *Form
- func (f *Form) AddCheckbox(label string, checked bool, changed func(checked bool)) *Form
- func (f *Form) AddDropDown(label string, options []string, values []any, initialOption int, ...) *Form
- func (f *Form) AddFormItem(item FormItem) *Form
- func (f *Form) AddImage(label string, image image.Image, width, height, colors int) *Form
- func (f *Form) AddInputField(label, value string, fieldWidth int, ...) *Form
- func (f *Form) AddPasswordField(label, value string, fieldWidth int, mask rune, changed func(text string)) *Form
- func (f *Form) AddTextArea(label, text string, fieldWidth, fieldHeight, maxLength int, ...) *Form
- func (f *Form) AddTextView(label, text string, fieldWidth, fieldHeight int, ...) *Form
- func (f *Form) Clear(includeButtons bool) *Form
- func (f *Form) ClearButtons() *Form
- func (f *Form) Draw(screen tcell.Screen)
- func (f *Form) Focus(delegate func(p Primitive))
- func (f *Form) GetButton(index int) *Button
- func (f *Form) GetButtonCount() int
- func (f *Form) GetButtonIndex(label string) int
- func (f *Form) GetFocusedItemIndex() (formItem, button int)
- func (f *Form) GetFormItem(index int) FormItem
- func (f *Form) GetFormItemByLabel(label string) FormItem
- func (f *Form) GetFormItemCount() int
- func (f *Form) GetFormItemIndex(label string) int
- func (f *Form) HasFocus() bool
- func (f *Form) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (f *Form) MouseHandler() ...
- func (f *Form) RemoveButton(index int) *Form
- func (f *Form) RemoveFormItem(index int) *Form
- func (f *Form) SetButtonActivatedStyle(style tcell.Style) *Form
- func (f *Form) SetButtonBackgroundColor(color tcell.Color) *Form
- func (f *Form) SetButtonDisabledStyle(style tcell.Style) *Form
- func (f *Form) SetButtonStyle(style tcell.Style) *Form
- func (f *Form) SetButtonTextColor(color tcell.Color) *Form
- func (f *Form) SetButtonsAlign(align int) *Form
- func (f *Form) SetCancelFunc(callback func()) *Form
- func (f *Form) SetFieldBackgroundColor(color tcell.Color) *Form
- func (f *Form) SetFieldTextColor(color tcell.Color) *Form
- func (f *Form) SetFocus(index int) *Form
- func (f *Form) SetHorizontal(horizontal bool) *Form
- func (f *Form) SetItemPadding(padding int) *Form
- func (f *Form) SetLabelColor(color tcell.Color) *Form
- type FormItem
- type Frame
- func (f *Frame) AddText(text string, header bool, align int, color tcell.Color) *Frame
- func (f *Frame) Clear() *Frame
- func (f *Frame) Draw(screen tcell.Screen)
- func (f *Frame) Focus(delegate func(p Primitive))
- func (f *Frame) GetPrimitive() Primitive
- func (f *Frame) HasFocus() bool
- func (f *Frame) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (f *Frame) MouseHandler() ...
- func (f *Frame) SetBorders(top, bottom, header, footer, left, right int) *Frame
- func (f *Frame) SetPrimitive(p Primitive) *Frame
- type Grid
- func (g *Grid) AddItem(p Primitive, row, column, rowSpan, colSpan, minGridHeight, minGridWidth int, ...) *Grid
- func (g *Grid) Clear() *Grid
- func (g *Grid) Draw(screen tcell.Screen)
- func (g *Grid) Focus(delegate func(p Primitive))
- func (g *Grid) GetOffset() (rows, columns int)
- func (g *Grid) HasFocus() bool
- func (g *Grid) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (g *Grid) Mount(context map[string]interface{}) error
- func (g *Grid) MouseHandler() ...
- func (g *Grid) RemoveItem(p Primitive) *Grid
- func (g *Grid) SetBorders(borders bool) *Grid
- func (g *Grid) SetBordersColor(color tcell.Color) *Grid
- func (g *Grid) SetColumns(columns ...int) *Grid
- func (g *Grid) SetGap(row, column int) *Grid
- func (g *Grid) SetMinSize(row, column int) *Grid
- func (g *Grid) SetOffset(rows, columns int) *Grid
- func (g *Grid) SetRows(rows ...int) *Grid
- func (g *Grid) SetSize(numRows, numColumns, rowSize, columnSize int) *Grid
- func (g *Grid) Unmount() error
- type GridItem
- type Image
- func (i *Image) Draw(screen tcell.Screen)
- func (i *Image) Focus(delegate func(p Primitive))
- func (i *Image) GetColors() int
- func (i *Image) GetFieldHeight() int
- func (i *Image) GetFieldWidth() int
- func (i *Image) GetLabelStyle() tcell.Style
- func (i *Image) GetLabelText() string
- func (i *Image) SetAlign(vertical, horizontal int) *Image
- func (i *Image) SetAspectRatio(aspectRatio float64) *Image
- func (i *Image) SetColors(colors int) *Image
- func (i *Image) SetDisabled(disabled bool) FormItem
- func (i *Image) SetDithering(dithering int) *Image
- func (i *Image) SetFinishedFunc(handler func(key tcell.Key)) FormItem
- func (i *Image) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
- func (i *Image) SetImage(image image.Image) *Image
- func (i *Image) SetLabelStyle(style tcell.Style) *Image
- func (i *Image) SetLabelText(label string) *Image
- func (i *Image) SetLabelWidth(width int) *Image
- func (i *Image) SetSize(rows, columns int) *Image
- type InputField
- func (i *InputField) Autocomplete() *InputField
- func (i *InputField) Blur()
- func (i *InputField) Draw(screen tcell.Screen)
- func (i *InputField) Focus(delegate func(p Primitive))
- func (i *InputField) GetFieldHeight() int
- func (i *InputField) GetFieldStyle() tcell.Style
- func (i *InputField) GetFieldWidth() int
- func (i *InputField) GetLabelStyle() tcell.Style
- func (i *InputField) GetLabelText() string
- func (i *InputField) GetPlaceholderStyle() tcell.Style
- func (i *InputField) GetText() string
- func (i *InputField) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (i *InputField) MouseHandler() ...
- func (i *InputField) SetAcceptanceFunc(handler func(textToCheck string, lastChar rune) bool) *InputField
- func (i *InputField) SetAutocompleteFunc(callback func(currentText string) (entries []string)) *InputField
- func (i *InputField) SetAutocompleteStyles(background tcell.Color, main, selected tcell.Style) *InputField
- func (i *InputField) SetAutocompletedFunc(autocompleted func(text string, index int, source int) bool) *InputField
- func (i *InputField) SetChangedFunc(handler func(text string)) *InputField
- func (i *InputField) SetDisabled(disabled bool) FormItem
- func (i *InputField) SetDoneFunc(handler func(key tcell.Key)) *InputField
- func (i *InputField) SetFieldBackgroundColor(color tcell.Color) *InputField
- func (i *InputField) SetFieldStyle(style tcell.Style) *InputField
- func (i *InputField) SetFieldTextColor(color tcell.Color) *InputField
- func (i *InputField) SetFieldWidth(width int) *InputField
- func (i *InputField) SetFinishedFunc(handler func(key tcell.Key)) FormItem
- func (i *InputField) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
- func (i *InputField) SetLabelColor(color tcell.Color) *InputField
- func (i *InputField) SetLabelStyle(style tcell.Style) *InputField
- func (i *InputField) SetLabelText(label string) *InputField
- func (i *InputField) SetLabelWidth(width int) *InputField
- func (i *InputField) SetMaskCharacter(mask rune) *InputField
- func (i *InputField) SetPlaceholder(text string) *InputField
- func (i *InputField) SetPlaceholderStyle(style tcell.Style) *InputField
- func (i *InputField) SetPlaceholderTextColor(color tcell.Color) *InputField
- func (i *InputField) SetText(text string) *InputField
- type List
- func (l *List) AddItem(mainText, secondaryText string, shortcut rune, selected func()) *List
- func (l *List) Clear() *List
- func (l *List) Draw(screen tcell.Screen)
- func (l *List) FindItems(mainSearch, secondarySearch string, mustContainBoth, ignoreCase bool) (indices []int)
- func (l *List) GetCurrentItem() int
- func (l *List) GetItemCount() int
- func (l *List) GetItemText(index int) (main, secondary string)
- func (l *List) GetOffset() (int, int)
- func (l *List) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (l *List) InsertItem(index int, mainText, secondaryText string, shortcut rune, selected func()) *List
- func (l *List) MouseHandler() ...
- func (l *List) RemoveItem(index int) *List
- func (l *List) SetChangedFunc(handler func(index int, mainText string, secondaryText string, shortcut rune)) *List
- func (l *List) SetCurrentItem(index int) *List
- func (l *List) SetDoneFunc(handler func()) *List
- func (l *List) SetHighlightFullLine(highlight bool) *List
- func (l *List) SetItemText(index int, main, secondary string) *List
- func (l *List) SetMainTextColor(color tcell.Color) *List
- func (l *List) SetMainTextStyle(style tcell.Style) *List
- func (l *List) SetOffset(items, horizontal int) *List
- func (l *List) SetSecondaryTextColor(color tcell.Color) *List
- func (l *List) SetSecondaryTextStyle(style tcell.Style) *List
- func (l *List) SetSelectedBackgroundColor(color tcell.Color) *List
- func (l *List) SetSelectedFocusOnly(focusOnly bool) *List
- func (l *List) SetSelectedFunc(handler func(int, string, string, rune)) *List
- func (l *List) SetSelectedStyle(style tcell.Style) *List
- func (l *List) SetSelectedTextColor(color tcell.Color) *List
- func (l *List) SetShortcutColor(color tcell.Color) *List
- func (l *List) SetShortcutStyle(style tcell.Style) *List
- func (l *List) SetWrapAround(wrapAround bool) *List
- func (l *List) ShowSecondaryText(show bool) *List
- type ListItem
- type Modal
- func (m *Modal) AddButtons(labels []string) *Modal
- func (m *Modal) ClearButtons() *Modal
- func (m *Modal) Draw(screen tcell.Screen)
- func (m *Modal) Focus(delegate func(p Primitive))
- func (m *Modal) HasFocus() bool
- func (m *Modal) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (m *Modal) MouseHandler() ...
- func (m *Modal) SetBackgroundColor(color tcell.Color) *Modal
- func (m *Modal) SetButtonActivatedStyle(style tcell.Style) *Modal
- func (m *Modal) SetButtonBackgroundColor(color tcell.Color) *Modal
- func (m *Modal) SetButtonStyle(style tcell.Style) *Modal
- func (m *Modal) SetButtonTextColor(color tcell.Color) *Modal
- func (m *Modal) SetDoneFunc(handler func(buttonIndex int, buttonLabel string)) *Modal
- func (m *Modal) SetFocus(index int) *Modal
- func (m *Modal) SetText(text string) *Modal
- func (m *Modal) SetTextColor(color tcell.Color) *Modal
- type MouseAction
- type Page
- type Pages
- func (p *Pages) AddAndSwitchToPage(name string, item Primitive, resize bool) *Pages
- func (p *Pages) AddPage(name string, item Primitive, resize, visible bool) *Pages
- func (p *Pages) Draw(screen tcell.Screen)
- func (p *Pages) Focus(delegate func(p Primitive))
- func (p *Pages) GetFrontPage() (name string, item Primitive)
- func (p *Pages) GetPageCount() int
- func (p *Pages) HasFocus() bool
- func (p *Pages) HasPage(name string) bool
- func (p *Pages) HidePage(name string) *Pages
- func (p *Pages) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (p *Pages) MouseHandler() ...
- func (p *Pages) RemovePage(name string) *Pages
- func (p *Pages) SendToBack(name string) *Pages
- func (p *Pages) SendToFront(name string) *Pages
- func (p *Pages) SetChangedFunc(handler func()) *Pages
- func (p *Pages) ShowPage(name string) *Pages
- func (p *Pages) SwitchToPage(name string, ctx map[string]any) *Pages
- type Primitive
- type Table
- func (t *Table) Clear() *Table
- func (t *Table) Draw(screen tcell.Screen)
- func (t *Table) GetCell(row, column int) *TableCell
- func (t *Table) GetColumnCount() int
- func (t *Table) GetOffset() (row, column int)
- func (t *Table) GetRowCount() int
- func (t *Table) GetSelectable() (rows, columns bool)
- func (t *Table) GetSelection() (row, column int)
- func (t *Table) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (t *Table) InsertColumn(column int) *Table
- func (t *Table) InsertRow(row int) *Table
- func (t *Table) MouseHandler() ...
- func (t *Table) RemoveColumn(column int) *Table
- func (t *Table) RemoveRow(row int) *Table
- func (t *Table) ScrollToBeginning() *Table
- func (t *Table) ScrollToEnd() *Table
- func (t *Table) Select(row, column int) *Table
- func (t *Table) SetBorders(show bool) *Table
- func (t *Table) SetBordersColor(color tcell.Color) *Table
- func (t *Table) SetCell(row, column int, cell *TableCell) *Table
- func (t *Table) SetCellSimple(row, column int, text string) *Table
- func (t *Table) SetCells(cells [][]*TableCell) *Table
- func (t *Table) SetContent(content TableContent) *Table
- func (t *Table) SetDoneFunc(handler func(key tcell.Key)) *Table
- func (t *Table) SetEvaluateAllRows(all bool) *Table
- func (t *Table) SetFixed(rows, columns int) *Table
- func (t *Table) SetOffset(row, column int) *Table
- func (t *Table) SetSelectable(rows, columns bool) *Table
- func (t *Table) SetSelectedFunc(handler func(row, column int)) *Table
- func (t *Table) SetSelectedStyle(style tcell.Style) *Table
- func (t *Table) SetSelectionChangedFunc(handler func(row, column int)) *Table
- func (t *Table) SetSeparator(separator rune) *Table
- func (t *Table) SetWrapSelection(vertical, horizontal bool) *Table
- type TableCell
- func (c *TableCell) GetLastPosition() (x, y, width int)
- func (c *TableCell) GetReference() interface{}
- func (c *TableCell) Id() string
- func (c *TableCell) SetAlign(align int) *TableCell
- func (c *TableCell) SetAttributes(attr tcell.AttrMask) *TableCell
- func (c *TableCell) SetBackgroundColor(color tcell.Color) *TableCell
- func (c *TableCell) SetClickedFunc(clicked func() bool) *TableCell
- func (c *TableCell) SetExpansion(expansion int) *TableCell
- func (c *TableCell) SetMaxWidth(maxWidth int) *TableCell
- func (c *TableCell) SetReference(reference interface{}) *TableCell
- func (c *TableCell) SetSelectable(selectable bool) *TableCell
- func (c *TableCell) SetStyle(style tcell.Style) *TableCell
- func (c *TableCell) SetText(text string) *TableCell
- func (c *TableCell) SetTextColor(color tcell.Color) *TableCell
- func (c *TableCell) SetTransparency(transparent bool) *TableCell
- type TableContent
- type TableContentReadOnly
- func (t TableContentReadOnly) Clear()
- func (t TableContentReadOnly) InsertColumn(column int)
- func (t TableContentReadOnly) InsertRow(row int)
- func (t TableContentReadOnly) RemoveColumn(column int)
- func (t TableContentReadOnly) RemoveRow(row int)
- func (t TableContentReadOnly) SetCell(row, column int, cell *TableCell)
- type TextArea
- func (t *TextArea) Draw(screen tcell.Screen)
- func (t *TextArea) Focus(delegate func(p Primitive))
- func (t *TextArea) GetCursor() (fromRow, fromColumn, toRow, toColumn int)
- func (t *TextArea) GetFieldHeight() int
- func (t *TextArea) GetFieldWidth() int
- func (t *TextArea) GetLabelStyle() tcell.Style
- func (t *TextArea) GetLabelText() string
- func (t *TextArea) GetOffset() (row, column int)
- func (t *TextArea) GetSelection() (text string, start int, end int)
- func (t *TextArea) GetText() string
- func (t *TextArea) GetTextLength() int
- func (t *TextArea) HasSelection() bool
- func (t *TextArea) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (t *TextArea) MouseHandler() ...
- func (t *TextArea) Replace(start, end int, text string) *TextArea
- func (t *TextArea) Select(start, end int) *TextArea
- func (t *TextArea) SetChangedFunc(handler func()) *TextArea
- func (t *TextArea) SetClipboard(copyToClipboard func(string), pasteFromClipboard func() string) *TextArea
- func (t *TextArea) SetDisabled(disabled bool) FormItem
- func (t *TextArea) SetFinishedFunc(handler func(key tcell.Key)) FormItem
- func (t *TextArea) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
- func (t *TextArea) SetLabelStyle(style tcell.Style) *TextArea
- func (t *TextArea) SetLabelText(label string) *TextArea
- func (t *TextArea) SetLabelWidth(width int) *TextArea
- func (t *TextArea) SetMaxLength(maxLength int) *TextArea
- func (t *TextArea) SetMovedFunc(handler func()) *TextArea
- func (t *TextArea) SetOffset(row, column int) *TextArea
- func (t *TextArea) SetPlaceholder(placeholder string) *TextArea
- func (t *TextArea) SetPlaceholderStyle(style tcell.Style) *TextArea
- func (t *TextArea) SetSelectedStyle(style tcell.Style) *TextArea
- func (t *TextArea) SetSize(rows, columns int) *TextArea
- func (t *TextArea) SetText(text string, cursorAtTheEnd bool) *TextArea
- func (t *TextArea) SetTextStyle(style tcell.Style) *TextArea
- func (t *TextArea) SetWordWrap(wrapOnWords bool) *TextArea
- func (t *TextArea) SetWrap(wrap bool) *TextArea
- type TextView
- func (t *TextView) BatchWriter() TextViewWriter
- func (t *TextView) Clear() *TextView
- func (t *TextView) Draw(screen tcell.Screen)
- func (t *TextView) Focus(delegate func(p Primitive))
- func (t *TextView) GetFieldHeight() int
- func (t *TextView) GetFieldWidth() int
- func (t *TextView) GetHighlights() (regionIDs []string)
- func (t *TextView) GetLabelText() string
- func (t *TextView) GetOriginalLineCount() int
- func (t *TextView) GetRegionText(regionID string) string
- func (t *TextView) GetScrollOffset() (row, column int)
- func (t *TextView) GetText(stripAllTags bool) string
- func (t *TextView) HasFocus() bool
- func (t *TextView) Highlight(regionIDs ...string) *TextView
- func (t *TextView) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (t *TextView) MouseHandler() ...
- func (t *TextView) ScrollTo(row, column int) *TextView
- func (t *TextView) ScrollToBeginning() *TextView
- func (t *TextView) ScrollToEnd() *TextView
- func (t *TextView) ScrollToHighlight() *TextView
- func (t *TextView) SetBackgroundColor(color tcell.Color) *Box
- func (t *TextView) SetChangedFunc(handler func()) *TextView
- func (t *TextView) SetDisabled(disabled bool) FormItem
- func (t *TextView) SetDoneFunc(handler func(key tcell.Key)) *TextView
- func (t *TextView) SetDynamicColors(dynamic bool) *TextView
- func (t *TextView) SetFinishedFunc(handler func(key tcell.Key)) FormItem
- func (t *TextView) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
- func (t *TextView) SetHighlightedFunc(handler func(added, removed, remaining []string)) *TextView
- func (t *TextView) SetLabelText(label string) *TextView
- func (t *TextView) SetLabelWidth(width int) *TextView
- func (t *TextView) SetMaxLines(maxLines int) *TextView
- func (t *TextView) SetRegions(regions bool) *TextView
- func (t *TextView) SetScrollable(scrollable bool) *TextView
- func (t *TextView) SetSize(rows, columns int) *TextView
- func (t *TextView) SetText(text string) *TextView
- func (t *TextView) SetTextAlign(align int) *TextView
- func (t *TextView) SetTextColor(color tcell.Color) *TextView
- func (t *TextView) SetTextStyle(style tcell.Style) *TextView
- func (t *TextView) SetToggleHighlights(toggle bool) *TextView
- func (t *TextView) SetWordWrap(wrapOnWords bool) *TextView
- func (t *TextView) SetWrap(wrap bool) *TextView
- func (t *TextView) Write(p []byte) (n int, err error)
- type TextViewWriter
- type Theme
- type TreeNode
- func (n *TreeNode) AddChild(node *TreeNode) *TreeNode
- func (n *TreeNode) ClearChildren() *TreeNode
- func (n *TreeNode) Collapse() *TreeNode
- func (n *TreeNode) CollapseAll() *TreeNode
- func (n *TreeNode) Expand() *TreeNode
- func (n *TreeNode) ExpandAll() *TreeNode
- func (n *TreeNode) GetChildren() []*TreeNode
- func (n *TreeNode) GetColor() tcell.Color
- func (n *TreeNode) GetLevel() int
- func (n *TreeNode) GetReference() interface{}
- func (n *TreeNode) GetText() string
- func (n *TreeNode) IsExpanded() bool
- func (n *TreeNode) RemoveChild(node *TreeNode) *TreeNode
- func (n *TreeNode) SetChildren(childNodes []*TreeNode) *TreeNode
- func (n *TreeNode) SetColor(color tcell.Color) *TreeNode
- func (n *TreeNode) SetExpanded(expanded bool) *TreeNode
- func (n *TreeNode) SetIndent(indent int) *TreeNode
- func (n *TreeNode) SetReference(reference interface{}) *TreeNode
- func (n *TreeNode) SetSelectable(selectable bool) *TreeNode
- func (n *TreeNode) SetSelectedFunc(handler func()) *TreeNode
- func (n *TreeNode) SetText(text string) *TreeNode
- func (n *TreeNode) Walk(callback func(node, parent *TreeNode) bool) *TreeNode
- type TreeView
- func (t *TreeView) Draw(screen tcell.Screen)
- func (t *TreeView) GetCurrentNode() *TreeNode
- func (t *TreeView) GetRoot() *TreeNode
- func (t *TreeView) GetRowCount() int
- func (t *TreeView) GetScrollOffset() int
- func (t *TreeView) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
- func (t *TreeView) MouseHandler() ...
- func (t *TreeView) Process()
- func (t *TreeView) SetAlign(align bool) *TreeView
- func (t *TreeView) SetChangedFunc(handler func(node *TreeNode)) *TreeView
- func (t *TreeView) SetCurrentNode(node *TreeNode) *TreeView
- func (t *TreeView) SetDoneFunc(handler func(key tcell.Key)) *TreeView
- func (t *TreeView) SetGraphics(showGraphics bool) *TreeView
- func (t *TreeView) SetGraphicsColor(color tcell.Color) *TreeView
- func (t *TreeView) SetPrefixes(prefixes []string) *TreeView
- func (t *TreeView) SetRoot(root *TreeNode) *TreeView
- func (t *TreeView) SetSelectedFunc(handler func(node *TreeNode)) *TreeView
- func (t *TreeView) SetTopLevel(topLevel int) *TreeView
Constants ¶
const ( FlexRow = 0 // One item per row. FlexColumn = 1 // One item per column. FlexRowCSS = 1 // As defined in CSS, items distributed along a row. FlexColumnCSS = 0 // As defined in CSS, items distributed within a column. )
Configuration values.
const ( DitheringNone = iota // No dithering. DitheringFloydSteinberg // Floyd-Steinberg dithering (the default). )
Types of dithering applied to images.
const ( AutocompletedTab // The user selected an autocomplete entry using the tab key. AutocompletedEnter // The user selected an autocomplete entry using the enter key. AutocompletedClick // The user selected an autocomplete entry by clicking the mouse button on it. )
const ( // Block: General Punctation U+2000-U+206F (http://unicode.org/charts/PDF/U2000.pdf) SemigraphicsHorizontalEllipsis rune = '\u2026' // … // Block: Box Drawing U+2500-U+257F (http://unicode.org/charts/PDF/U2500.pdf) BoxDrawingsLightHorizontal rune = '\u2500' // ─ BoxDrawingsHeavyHorizontal rune = '\u2501' // ━ BoxDrawingsLightVertical rune = '\u2502' // │ BoxDrawingsHeavyVertical rune = '\u2503' // ┃ BoxDrawingsLightTripleDashHorizontal rune = '\u2504' // ┄ BoxDrawingsHeavyTripleDashHorizontal rune = '\u2505' // ┅ BoxDrawingsLightTripleDashVertical rune = '\u2506' // ┆ BoxDrawingsHeavyTripleDashVertical rune = '\u2507' // ┇ BoxDrawingsLightQuadrupleDashHorizontal rune = '\u2508' // ┈ BoxDrawingsHeavyQuadrupleDashHorizontal rune = '\u2509' // ┉ BoxDrawingsLightQuadrupleDashVertical rune = '\u250a' // ┊ BoxDrawingsHeavyQuadrupleDashVertical rune = '\u250b' // ┋ BoxDrawingsLightDownAndRight rune = '\u250c' // ┌ BoxDrawingsDownLighAndRightHeavy rune = '\u250d' // ┍ BoxDrawingsDownHeavyAndRightLight rune = '\u250e' // ┎ BoxDrawingsHeavyDownAndRight rune = '\u250f' // ┏ BoxDrawingsLightDownAndLeft rune = '\u2510' // ┐ BoxDrawingsDownLighAndLeftHeavy rune = '\u2511' // ┑ BoxDrawingsDownHeavyAndLeftLight rune = '\u2512' // ┒ BoxDrawingsHeavyDownAndLeft rune = '\u2513' // ┓ BoxDrawingsLightUpAndRight rune = '\u2514' // └ BoxDrawingsUpLightAndRightHeavy rune = '\u2515' // ┕ BoxDrawingsUpHeavyAndRightLight rune = '\u2516' // ┖ BoxDrawingsHeavyUpAndRight rune = '\u2517' // ┗ BoxDrawingsLightUpAndLeft rune = '\u2518' // ┘ BoxDrawingsUpLightAndLeftHeavy rune = '\u2519' // ┙ BoxDrawingsUpHeavyAndLeftLight rune = '\u251a' // ┚ BoxDrawingsHeavyUpAndLeft rune = '\u251b' // ┛ BoxDrawingsLightVerticalAndRight rune = '\u251c' // ├ BoxDrawingsVerticalLightAndRightHeavy rune = '\u251d' // ┝ BoxDrawingsUpHeavyAndRightDownLight rune = '\u251e' // ┞ BoxDrawingsDownHeacyAndRightUpLight rune = '\u251f' // ┟ BoxDrawingsVerticalHeavyAndRightLight rune = '\u2520' // ┠ BoxDrawingsDownLightAnbdRightUpHeavy rune = '\u2521' // ┡ BoxDrawingsUpLightAndRightDownHeavy rune = '\u2522' // ┢ BoxDrawingsHeavyVerticalAndRight rune = '\u2523' // ┣ BoxDrawingsLightVerticalAndLeft rune = '\u2524' // ┤ BoxDrawingsVerticalLightAndLeftHeavy rune = '\u2525' // ┥ BoxDrawingsUpHeavyAndLeftDownLight rune = '\u2526' // ┦ BoxDrawingsDownHeavyAndLeftUpLight rune = '\u2527' // ┧ BoxDrawingsVerticalheavyAndLeftLight rune = '\u2528' // ┨ BoxDrawingsDownLightAndLeftUpHeavy rune = '\u2529' // ┨ BoxDrawingsUpLightAndLeftDownHeavy rune = '\u252a' // ┪ BoxDrawingsHeavyVerticalAndLeft rune = '\u252b' // ┫ BoxDrawingsLightDownAndHorizontal rune = '\u252c' // ┬ BoxDrawingsLeftHeavyAndRightDownLight rune = '\u252d' // ┭ BoxDrawingsRightHeavyAndLeftDownLight rune = '\u252e' // ┮ BoxDrawingsDownLightAndHorizontalHeavy rune = '\u252f' // ┯ BoxDrawingsDownHeavyAndHorizontalLight rune = '\u2530' // ┰ BoxDrawingsRightLightAndLeftDownHeavy rune = '\u2531' // ┱ BoxDrawingsLeftLightAndRightDownHeavy rune = '\u2532' // ┲ BoxDrawingsHeavyDownAndHorizontal rune = '\u2533' // ┳ BoxDrawingsLightUpAndHorizontal rune = '\u2534' // ┴ BoxDrawingsLeftHeavyAndRightUpLight rune = '\u2535' // ┵ BoxDrawingsRightHeavyAndLeftUpLight rune = '\u2536' // ┶ BoxDrawingsUpLightAndHorizontalHeavy rune = '\u2537' // ┷ BoxDrawingsUpHeavyAndHorizontalLight rune = '\u2538' // ┸ BoxDrawingsRightLightAndLeftUpHeavy rune = '\u2539' // ┹ BoxDrawingsLeftLightAndRightUpHeavy rune = '\u253a' // ┺ BoxDrawingsHeavyUpAndHorizontal rune = '\u253b' // ┻ BoxDrawingsLightVerticalAndHorizontal rune = '\u253c' // ┼ BoxDrawingsLeftHeavyAndRightVerticalLight rune = '\u253d' // ┽ BoxDrawingsRightHeavyAndLeftVerticalLight rune = '\u253e' // ┾ BoxDrawingsVerticalLightAndHorizontalHeavy rune = '\u253f' // ┿ BoxDrawingsUpHeavyAndDownHorizontalLight rune = '\u2540' // ╀ BoxDrawingsDownHeavyAndUpHorizontalLight rune = '\u2541' // ╁ BoxDrawingsVerticalHeavyAndHorizontalLight rune = '\u2542' // ╂ BoxDrawingsLeftUpHeavyAndRightDownLight rune = '\u2543' // ╃ BoxDrawingsRightUpHeavyAndLeftDownLight rune = '\u2544' // ╄ BoxDrawingsLeftDownHeavyAndRightUpLight rune = '\u2545' // ╅ BoxDrawingsRightDownHeavyAndLeftUpLight rune = '\u2546' // ╆ BoxDrawingsDownLightAndUpHorizontalHeavy rune = '\u2547' // ╇ BoxDrawingsUpLightAndDownHorizontalHeavy rune = '\u2548' // ╈ BoxDrawingsRightLightAndLeftVerticalHeavy rune = '\u2549' // ╉ BoxDrawingsLeftLightAndRightVerticalHeavy rune = '\u254a' // ╊ BoxDrawingsHeavyVerticalAndHorizontal rune = '\u254b' // ╋ BoxDrawingsLightDoubleDashHorizontal rune = '\u254c' // ╌ BoxDrawingsHeavyDoubleDashHorizontal rune = '\u254d' // ╍ BoxDrawingsLightDoubleDashVertical rune = '\u254e' // ╎ BoxDrawingsHeavyDoubleDashVertical rune = '\u254f' // ╏ BoxDrawingsDoubleHorizontal rune = '\u2550' // ═ BoxDrawingsDoubleVertical rune = '\u2551' // ║ BoxDrawingsDownSingleAndRightDouble rune = '\u2552' // ╒ BoxDrawingsDownDoubleAndRightSingle rune = '\u2553' // ╓ BoxDrawingsDoubleDownAndRight rune = '\u2554' // ╔ BoxDrawingsDownSingleAndLeftDouble rune = '\u2555' // ╕ BoxDrawingsDownDoubleAndLeftSingle rune = '\u2556' // ╖ BoxDrawingsDoubleDownAndLeft rune = '\u2557' // ╗ BoxDrawingsUpSingleAndRightDouble rune = '\u2558' // ╘ BoxDrawingsUpDoubleAndRightSingle rune = '\u2559' // ╙ BoxDrawingsDoubleUpAndRight rune = '\u255a' // ╚ BoxDrawingsUpSingleAndLeftDouble rune = '\u255b' // ╛ BoxDrawingsUpDobuleAndLeftSingle rune = '\u255c' // ╜ BoxDrawingsDoubleUpAndLeft rune = '\u255d' // ╝ BoxDrawingsVerticalSingleAndRightDouble rune = '\u255e' // ╞ BoxDrawingsVerticalDoubleAndRightSingle rune = '\u255f' // ╟ BoxDrawingsDoubleVerticalAndRight rune = '\u2560' // ╠ BoxDrawingsVerticalSingleAndLeftDouble rune = '\u2561' // ╡ BoxDrawingsVerticalDoubleAndLeftSingle rune = '\u2562' // ╢ BoxDrawingsDoubleVerticalAndLeft rune = '\u2563' // ╣ BoxDrawingsDownSingleAndHorizontalDouble rune = '\u2564' // ╤ BoxDrawingsDownDoubleAndHorizontalSingle rune = '\u2565' // ╥ BoxDrawingsDoubleDownAndHorizontal rune = '\u2566' // ╦ BoxDrawingsUpSingleAndHorizontalDouble rune = '\u2567' // ╧ BoxDrawingsUpDoubleAndHorizontalSingle rune = '\u2568' // ╨ BoxDrawingsDoubleUpAndHorizontal rune = '\u2569' // ╩ BoxDrawingsVerticalSingleAndHorizontalDouble rune = '\u256a' // ╪ BoxDrawingsVerticalDoubleAndHorizontalSingle rune = '\u256b' // ╫ BoxDrawingsDoubleVerticalAndHorizontal rune = '\u256c' // ╬ BoxDrawingsLightArcDownAndRight rune = '\u256d' // ╭ BoxDrawingsLightArcDownAndLeft rune = '\u256e' // ╮ BoxDrawingsLightArcUpAndLeft rune = '\u256f' // ╯ BoxDrawingsLightArcUpAndRight rune = '\u2570' // ╰ BoxDrawingsLightDiagonalUpperRightToLowerLeft rune = '\u2571' // ╱ BoxDrawingsLightDiagonalUpperLeftToLowerRight rune = '\u2572' // ╲ BoxDrawingsLightDiagonalCross rune = '\u2573' // ╳ BoxDrawingsLightLeft rune = '\u2574' // ╴ BoxDrawingsLightUp rune = '\u2575' // ╵ BoxDrawingsLightRight rune = '\u2576' // ╶ BoxDrawingsLightDown rune = '\u2577' // ╷ BoxDrawingsHeavyLeft rune = '\u2578' // ╸ BoxDrawingsHeavyUp rune = '\u2579' // ╹ BoxDrawingsHeavyRight rune = '\u257a' // ╺ BoxDrawingsHeavyDown rune = '\u257b' // ╻ BoxDrawingsLightLeftAndHeavyRight rune = '\u257c' // ╼ BoxDrawingsLightUpAndHeavyDown rune = '\u257d' // ╽ BoxDrawingsHeavyLeftAndLightRight rune = '\u257e' // ╾ BoxDrawingsHeavyUpAndLightDown rune = '\u257f' // ╿ // Block Elements. BlockUpperHalfBlock rune = '\u2580' // ▀ BlockLowerOneEighthBlock rune = '\u2581' // ▁ BlockLowerOneQuarterBlock rune = '\u2582' // ▂ BlockLowerThreeEighthsBlock rune = '\u2583' // ▃ BlockLowerHalfBlock rune = '\u2584' // ▄ BlockLowerFiveEighthsBlock rune = '\u2585' // ▅ BlockLowerThreeQuartersBlock rune = '\u2586' // ▆ BlockLowerSevenEighthsBlock rune = '\u2587' // ▇ BlockFullBlock rune = '\u2588' // █ BlockLeftSevenEighthsBlock rune = '\u2589' // ▉ BlockLeftThreeQuartersBlock rune = '\u258A' // ▊ BlockLeftFiveEighthsBlock rune = '\u258B' // ▋ BlockLeftHalfBlock rune = '\u258C' // ▌ BlockLeftThreeEighthsBlock rune = '\u258D' // ▍ BlockLeftOneQuarterBlock rune = '\u258E' // ▎ BlockLeftOneEighthBlock rune = '\u258F' // ▏ BlockRightHalfBlock rune = '\u2590' // ▐ BlockLightShade rune = '\u2591' // ░ BlockMediumShade rune = '\u2592' // ▒ BlockDarkShade rune = '\u2593' // ▓ BlockUpperOneEighthBlock rune = '\u2594' // ▔ BlockRightOneEighthBlock rune = '\u2595' // ▕ BlockQuadrantLowerLeft rune = '\u2596' // ▖ BlockQuadrantLowerRight rune = '\u2597' // ▗ BlockQuadrantUpperLeft rune = '\u2598' // ▘ BlockQuadrantUpperLeftAndLowerLeftAndLowerRight rune = '\u2599' // ▙ BlockQuadrantUpperLeftAndLowerRight rune = '\u259A' // ▚ BlockQuadrantUpperLeftAndUpperRightAndLowerLeft rune = '\u259B' // ▛ BlockQuadrantUpperLeftAndUpperRightAndLowerRight rune = '\u259C' // ▜ BlockQuadrantUpperRight rune = '\u259D' // ▝ BlockQuadrantUpperRightAndLowerLeft rune = '\u259E' // ▞ BlockQuadrantUpperRightAndLowerLeftAndLowerRight rune = '\u259F' // ▟ )
Semigraphics provides an easy way to access unicode characters for drawing.
Named like the unicode characters, 'Semigraphics'-prefix used if unicode block isn't prefixed itself.
const ( AlignLeft = iota AlignCenter AlignRight AlignTop = 0 AlignBottom = 2 )
Text alignment within a box. Also used to align images.
const TrueColor = 16777216
The number of colors supported by true color terminals (R*G*B = 256*256*256).
Variables ¶
var ( // DefaultFormFieldWidth is the default field screen width of form elements // whose field width is flexible (0). This is used in the Form class for // horizontal layouts. DefaultFormFieldWidth = 10 // DefaultFormFieldHeight is the default field height of multi-line form // elements whose field height is flexible (0). DefaultFormFieldHeight = 5 )
var ( // InputFieldInteger accepts integers. InputFieldInteger func(text string, ch rune) bool // InputFieldFloat accepts floating-point numbers. InputFieldFloat func(text string, ch rune) bool // InputFieldMaxLength returns an input field accept handler which accepts // input strings up to a given length. Use it like this: // // inputField.SetAcceptanceFunc(InputFieldMaxLength(10)) // Accept up to 10 characters. InputFieldMaxLength func(maxLength int) func(text string, ch rune) bool )
Predefined InputField acceptance functions.
var Borders = struct { Horizontal rune Vertical rune TopLeft rune TopRight rune BottomLeft rune BottomRight rune LeftT rune RightT rune TopT rune BottomT rune Cross rune HorizontalFocus rune VerticalFocus rune TopLeftFocus rune TopRightFocus rune BottomLeftFocus rune BottomRightFocus rune }{ Horizontal: BoxDrawingsLightHorizontal, Vertical: BoxDrawingsLightVertical, TopLeft: BoxDrawingsLightDownAndRight, TopRight: BoxDrawingsLightDownAndLeft, BottomLeft: BoxDrawingsLightUpAndRight, BottomRight: BoxDrawingsLightUpAndLeft, LeftT: BoxDrawingsLightVerticalAndRight, RightT: BoxDrawingsLightVerticalAndLeft, TopT: BoxDrawingsLightDownAndHorizontal, BottomT: BoxDrawingsLightUpAndHorizontal, Cross: BoxDrawingsLightVerticalAndHorizontal, HorizontalFocus: BoxDrawingsDoubleHorizontal, VerticalFocus: BoxDrawingsDoubleVertical, TopLeftFocus: BoxDrawingsDoubleDownAndRight, TopRightFocus: BoxDrawingsDoubleDownAndLeft, BottomLeftFocus: BoxDrawingsDoubleUpAndRight, BottomRightFocus: BoxDrawingsDoubleUpAndLeft, }
Borders defines various borders used when primitives are drawn. These may be changed to accommodate a different look and feel.
var DoubleClickInterval = 500 * time.Millisecond
DoubleClickInterval specifies the maximum time between clicks to register a double click rather than click.
var NewLine = "\n"
NewLine is the string sequence to be inserted when hitting the Enter key in a TextArea. The default is "\n" but you may change it to "\r\n" if required.
var SemigraphicJoints = map[string]rune{ string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightVertical}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightDownAndRight}): BoxDrawingsLightDownAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightDownAndLeft}): BoxDrawingsLightDownAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightUpAndRight}): BoxDrawingsLightUpAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightUpAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightDownAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightUpAndHorizontal, string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightDownAndRight}): BoxDrawingsLightVerticalAndRight, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightDownAndLeft}): BoxDrawingsLightVerticalAndLeft, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightUpAndRight}): BoxDrawingsLightVerticalAndRight, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightVerticalAndLeft, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndRight, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndLeft, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightDownAndLeft}): BoxDrawingsLightDownAndHorizontal, string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightUpAndRight}): BoxDrawingsLightVerticalAndRight, string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndRight, string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightDownAndHorizontal, string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightUpAndRight}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightVerticalAndLeft, string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndLeft, string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightDownAndHorizontal, string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightUpAndHorizontal, string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndRight, string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightUpAndHorizontal, string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndLeft, string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightUpAndHorizontal, string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVerticalAndRight, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVerticalAndRight, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVerticalAndRight, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVerticalAndRight, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVerticalAndLeft, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVerticalAndLeft, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightVerticalAndLeft, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndHorizontal, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightDownAndHorizontal, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, string([]rune{BoxDrawingsLightUpAndHorizontal, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, }
SemigraphicJoints is a map for joining semigraphic (or otherwise) runes. So far only light lines are supported but if you want to change the border styling you need to provide the joints, too. The matching will be sorted ascending by rune value, so you don't need to provide all rune combinations, e.g. (─) + (│) = (┼) will also match (│) + (─) = (┼)
var Styles = Theme{
PrimitiveBackgroundColor: tcell.ColorBlack,
ContrastBackgroundColor: tcell.ColorBlue,
MoreContrastBackgroundColor: tcell.ColorGreen,
BorderColor: tcell.ColorWhite,
TitleColor: tcell.ColorWhite,
GraphicsColor: tcell.ColorWhite,
PrimaryTextColor: tcell.ColorWhite,
SecondaryTextColor: tcell.ColorYellow,
TertiaryTextColor: tcell.ColorGreen,
InverseTextColor: tcell.ColorBlue,
ContrastSecondaryTextColor: tcell.ColorNavy,
}
Styles defines the theme for applications. The default is for a black background and some basic colors: black, white, yellow, green, cyan, and blue.
var TabSize = 4
TabSize is the number of spaces with which a tab character will be replaced.
Functions ¶
func ANSIWriter ¶
ANSIWriter returns an io.Writer which translates any ANSI escape codes written to it into tview style tags. Other escape codes don't have an effect and are simply removed. The translated text is written to the provided writer.
func Escape ¶
Escape escapes the given text such that color and/or region tags are not recognized and substituted by the print functions of this package. For example, to include a tag-like string in a box title or in a TextView:
box.SetTitle(tview.Escape("[squarebrackets]")) fmt.Fprint(textView, tview.Escape(`["quoted"]`))
func Print ¶
func Print(screen tcell.Screen, text string, x, y, maxWidth, align int, color tcell.Color) (int, int)
Print prints text onto the screen into the given box at (x,y,maxWidth,1), not exceeding that box. "align" is one of AlignLeft, AlignCenter, or AlignRight. The screen's background color will not be changed.
You can change the colors and text styles mid-text by inserting a style tag. See the package description for details.
Returns the number of actual bytes of the text printed (including style tags) and the actual width used for the printed runes.
func PrintJoinedSemigraphics ¶
PrintJoinedSemigraphics prints a semigraphics rune into the screen at the given position with the given style, joining it with any existing semigraphics rune.At this point, only regular single line borders are supported.
func PrintSimple ¶
PrintSimple prints white text to the screen at the given position.
func TaggedStringWidth ¶
TaggedStringWidth returns the width of the given string needed to print it on screen. The text may contain style tags which are not counted.
func TranslateANSI ¶
TranslateANSI replaces ANSI escape sequences found in the provided string with tview's style tags and returns the resulting string.
func WordWrap ¶
WordWrap splits a text such that each resulting line does not exceed the given screen width. Split points are determined using the algorithm described in Unicode Standard Annex #14.
This function considers style tags to have no width.
Types ¶
type Application ¶
Application represents the top node of an application.
It is not strictly required to use this class as none of the other classes depend on it. However, it provides useful tools to set up an application and plays nicely with all widgets.
The following command displays a primitive p on the screen until Ctrl-C is pressed:
if err := tview.NewApplication().SetRoot(p, true).Run(); err != nil { panic(err) }
func NewApplication ¶
func NewApplication() *Application
NewApplication creates and returns a new application.
func (*Application) Draw ¶
func (a *Application) Draw() *Application
Draw refreshes the screen (during the next update cycle). It calls the Draw() function of the application's root primitive and then syncs the screen buffer. It is almost never necessary to call this function. It can actually deadlock your application if you call it from the main thread (e.g. in a callback function of a widget). Please see https://github.com/rivo/tview/wiki/Concurrency for details.
func (*Application) EnableMouse ¶
func (a *Application) EnableMouse(enable bool) *Application
EnableMouse enables mouse events or disables them (if "false" is provided).
func (*Application) ForceDraw ¶
func (a *Application) ForceDraw() *Application
ForceDraw refreshes the screen immediately. Use this function with caution as it may lead to race conditions with updates to primitives in other goroutines. It is always preferrable to call Application.Draw instead. Never call this function from a goroutine.
It is safe to call this function during queued updates and direct event handling.
func (*Application) GetAfterDrawFunc ¶
func (a *Application) GetAfterDrawFunc() func(screen tcell.Screen)
GetAfterDrawFunc returns the callback function installed with SetAfterDrawFunc() or nil if none has been installed.
func (*Application) GetBeforeDrawFunc ¶
func (a *Application) GetBeforeDrawFunc() func(screen tcell.Screen) bool
GetBeforeDrawFunc returns the callback function installed with SetBeforeDrawFunc() or nil if none has been installed.
func (*Application) GetEventCapture ¶
func (a *Application) GetEventCapture() func(event tcell.Event) tcell.Event
GetInputCapture returns the function installed with SetInputCapture() or nil if no such function has been installed.
func (*Application) GetFocus ¶
func (a *Application) GetFocus() Primitive
GetFocus returns the primitive which has the current focus. If none has it, nil is returned.
func (*Application) GetInputCapture ¶
func (a *Application) GetInputCapture() func(event *tcell.EventKey) *tcell.EventKey
GetInputCapture returns the function installed with SetInputCapture() or nil if no such function has been installed.
func (*Application) GetMouseCapture ¶
func (a *Application) GetMouseCapture() func(event *tcell.EventMouse, action MouseAction) (*tcell.EventMouse, MouseAction)
GetMouseCapture returns the function installed with SetMouseCapture() or nil if no such function has been installed.
func (*Application) QueueEvent ¶
func (a *Application) QueueEvent(event tcell.Event) *Application
QueueEvent sends an event to the Application event loop.
It is not recommended for event to be nil.
func (*Application) QueueUpdate ¶
func (a *Application) QueueUpdate(f func()) *Application
QueueUpdate is used to synchronize access to primitives from non-main goroutines. The provided function will be executed as part of the event loop and thus will not cause race conditions with other such update functions or the Draw() function.
Note that Draw() is not implicitly called after the execution of f as that may not be desirable. You can call Draw() from f if the screen should be refreshed after each update. Alternatively, use QueueUpdateDraw() to follow up with an immediate refresh of the screen.
This function returns after f has executed.
func (*Application) QueueUpdateDraw ¶
func (a *Application) QueueUpdateDraw(f func()) *Application
QueueUpdateDraw works like QueueUpdate() except it refreshes the screen immediately after executing f.
func (*Application) ResizeToFullScreen ¶
func (a *Application) ResizeToFullScreen(p Primitive) *Application
ResizeToFullScreen resizes the given primitive such that it fills the entire screen.
func (*Application) Run ¶
func (a *Application) Run() error
Run starts the application and thus the event loop. This function returns when Stop() was called.
func (*Application) SetAfterDrawFunc ¶
func (a *Application) SetAfterDrawFunc(handler func(screen tcell.Screen)) *Application
SetAfterDrawFunc installs a callback function which is invoked after the root primitive was drawn during screen updates.
Provide nil to uninstall the callback function.
func (*Application) SetBeforeDrawFunc ¶
func (a *Application) SetBeforeDrawFunc(handler func(screen tcell.Screen) bool) *Application
SetBeforeDrawFunc installs a callback function which is invoked just before the root primitive is drawn during screen updates. If the function returns true, drawing will not continue, i.e. the root primitive will not be drawn (and an after-draw-handler will not be called).
Note that the screen is not cleared by the application. To clear the screen, you may call screen.Clear().
Provide nil to uninstall the callback function.
func (*Application) SetEventCapture ¶
func (a *Application) SetEventCapture(capture func(event tcell.Event) tcell.Event) *Application
func (*Application) SetFocus ¶
func (a *Application) SetFocus(p Primitive) *Application
SetFocus sets the focus to a new primitive. All key events will be directed down the hierarchy (starting at the root) until a primitive handles them, which per default goes towards the focused primitive.
Blur() will be called on the previously focused primitive. Focus() will be called on the new primitive.
func (*Application) SetInputCapture ¶
func (a *Application) SetInputCapture(capture func(event *tcell.EventKey) *tcell.EventKey) *Application
SetInputCapture sets a function which captures all key events before they are forwarded to the key event handler of the primitive which currently has focus. This function can then choose to forward that key event (or a different one) by returning it or stop the key event processing by returning nil.
The only default global key event is Ctrl-C which stops the application. It requires special handling:
- If you do not wish to change the default behavior, return the original event object passed to your input capture function.
- If you wish to block Ctrl-C from any functionality, return nil.
- If you do not wish Ctrl-C to stop the application but still want to forward the Ctrl-C event to primitives down the hierarchy, return a new key event with the same key and modifiers, e.g. tcell.NewEventKey(tcell.KeyCtrlC, 0, tcell.ModNone).
func (*Application) SetMouseCapture ¶
func (a *Application) SetMouseCapture(capture func(event *tcell.EventMouse, action MouseAction) (*tcell.EventMouse, MouseAction)) *Application
SetMouseCapture sets a function which captures mouse events (consisting of the original tcell mouse event and the semantic mouse action) before they are forwarded to the appropriate mouse event handler. This function can then choose to forward that event (or a different one) by returning it or stop the event processing by returning a nil mouse event.
func (*Application) SetRoot ¶
func (a *Application) SetRoot(root Primitive, fullscreen bool) *Application
SetRoot sets the root primitive for this application. If "fullscreen" is set to true, the root primitive's position will be changed to fill the screen.
This function must be called at least once or nothing will be displayed when the application starts.
It also calls SetFocus() on the primitive.
func (*Application) SetScreen ¶
func (a *Application) SetScreen(screen tcell.Screen) *Application
SetScreen allows you to provide your own tcell.Screen object. For most applications, this is not needed and you should be familiar with tcell.Screen when using this function.
This function is typically called before the first call to Run(). Init() need not be called on the screen.
func (*Application) Stop ¶
func (a *Application) Stop()
Stop stops the application, causing Run() to return.
func (*Application) Suspend ¶
func (a *Application) Suspend(f func()) bool
Suspend temporarily suspends the application by exiting terminal UI mode and invoking the provided function "f". When "f" returns, terminal UI mode is entered again and the application resumes.
A return value of true indicates that the application was suspended and "f" was called. If false is returned, the application was already suspended, terminal UI mode was not exited, and "f" was not called.
func (*Application) Sync ¶
func (a *Application) Sync() *Application
Sync forces a full re-sync of the screen buffer with the actual screen during the next event cycle. This is useful for when the terminal screen is corrupted so you may want to offer your users a keyboard shortcut to refresh the screen.
type Box ¶
type Box struct {
// contains filtered or unexported fields
}
Box implements the Primitive interface with an empty background and optional elements such as a border and a title. Box itself does not hold any content but serves as the superclass of all other primitives. Subclasses add their own content, typically (but not necessarily) keeping their content within the box's rectangle.
Box provides a number of utility functions available to all primitives.
See https://github.com/rivo/tview/wiki/Box for an example.
func (*Box) Draw ¶
func (b *Box) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Box) DrawForSubclass ¶
DrawForSubclass draws this box under the assumption that primitive p is a subclass of this box. This is needed e.g. to draw proper box frames which depend on the subclass's focus.
Only call this function from your own custom primitives. It is not needed in applications that have no custom primitives.
func (*Box) EventHandler ¶
EventHandler returns nil.
func (*Box) GetBackgroundColor ¶
func (b *Box) GetBackgroundColor() tcell.Color
GetBackgroundColor returns the box's background color.
func (*Box) GetBorder ¶
SetBorder sets the flag indicating whether or not the box should have a border.
func (*Box) GetBorderAttributes ¶
func (b *Box) GetBorderAttributes() tcell.AttrMask
GetBorderAttributes returns the border's style attributes.
func (*Box) GetBorderColor ¶
func (b *Box) GetBorderColor() tcell.Color
GetBorderColor returns the box's border color.
func (*Box) GetDrawFunc ¶
GetDrawFunc returns the callback function which was installed with SetDrawFunc() or nil if no such function has been installed.
func (*Box) GetEventCapture ¶
func (b *Box) GetEventCapture() func(event tcell.Event) tcell.Event
GetEventCapture returns the function installed with SetEventCapture() or nil if no such function has been installed.
func (*Box) GetInnerRect ¶
GetInnerRect returns the position of the inner rectangle (x, y, width, height), without the border and without any padding. Width and height values will clamp to 0 and thus never be negative.
func (*Box) GetInputCapture ¶
func (b *Box) GetInputCapture() func(event *tcell.EventKey) *tcell.EventKey
GetInputCapture returns the function installed with SetInputCapture() or nil if no such function has been installed.
func (*Box) GetLeafFocus ¶
HasFocus returns whether or not this primitive has focus.
func (*Box) GetMouseCapture ¶
func (b *Box) GetMouseCapture() func(action MouseAction, event *tcell.EventMouse) (MouseAction, *tcell.EventMouse)
GetMouseCapture returns the function installed with SetMouseCapture() or nil if no such function has been installed.
func (*Box) GetRect ¶
GetRect returns the current position of the rectangle, x, y, width, and height.
func (*Box) InRect ¶
InRect returns true if the given coordinate is within the bounds of the box's rectangle.
func (*Box) InputHandler ¶
InputHandler returns nil.
func (*Box) MouseHandler ¶
func (b *Box) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns nil.
func (*Box) SetBackgroundColor ¶
SetBackgroundColor sets the box's background color.
func (*Box) SetBlurFunc ¶
SetBlurFunc sets a callback function which is invoked when this primitive loses focus. This does not apply to container primitives such as Flex or Grid.
Set to nil to remove the callback function.
func (*Box) SetBorder ¶
SetBorder sets the flag indicating whether or not the box should have a border.
func (*Box) SetBorderAttributes ¶
SetBorderAttributes sets the border's style attributes. You can combine different attributes using bitmask operations:
box.SetBorderAttributes(tcell.AttrUnderline | tcell.AttrBold)
func (*Box) SetBorderColor ¶
SetBorderColor sets the box's border color.
func (*Box) SetBorderPadding ¶
SetBorderPadding sets the size of the borders around the box content.
func (*Box) SetBorderStyle ¶
SetBorderStyle sets the box's border style.
func (*Box) SetDrawFunc ¶
func (b *Box) SetDrawFunc(handler func(screen tcell.Screen, x, y, width, height int) (int, int, int, int)) *Box
SetDrawFunc sets a callback function which is invoked after the box primitive has been drawn. This allows you to add a more individual style to the box (and all primitives which extend it).
The function is provided with the box's dimensions (set via SetRect()). It must return the box's inner dimensions (x, y, width, height) which will be returned by GetInnerRect(), used by descendent primitives to draw their own content.
func (*Box) SetEventCapture ¶
SetEventCapture installs a function which captures key events before they are forwarded to the primitive's default key event handler. This function can then choose to forward that key event (or a different one) to the default handler by returning it. If nil is returned, the default handler will not be called.
Providing a nil handler will remove a previously existing handler.
This function can also be used on container primitives (like Flex, Grid, or Form) as keyboard events will be handed down until they are handled.
func (*Box) SetFocusFunc ¶
SetFocusFunc sets a callback function which is invoked when this primitive receives focus. Container primitives such as Flex or Grid may not be notified if one of their descendents receive focus directly.
Set to nil to remove the callback function.
func (*Box) SetInputCapture ¶
SetInputCapture installs a function which captures key events before they are forwarded to the primitive's default key event handler. This function can then choose to forward that key event (or a different one) to the default handler by returning it. If nil is returned, the default handler will not be called.
Providing a nil handler will remove a previously existing handler.
This function can also be used on container primitives (like Flex, Grid, or Form) as keyboard events will be handed down until they are handled.
func (*Box) SetMouseCapture ¶
func (b *Box) SetMouseCapture(capture func(action MouseAction, event *tcell.EventMouse) (MouseAction, *tcell.EventMouse)) *Box
SetMouseCapture sets a function which captures mouse events (consisting of the original tcell mouse event and the semantic mouse action) before they are forwarded to the primitive's default mouse event handler. This function can then choose to forward that event (or a different one) by returning it or returning a nil mouse event, in which case the default handler will not be called.
Providing a nil handler will remove a previously existing handler.
func (*Box) SetRect ¶
SetRect sets a new position of the primitive. Note that this has no effect if this primitive is part of a layout (e.g. Flex, Grid) or if it was added like this:
application.SetRoot(p, true)
func (*Box) SetTitleAlign ¶
SetTitleAlign sets the alignment of the title, one of AlignLeft, AlignCenter, or AlignRight.
func (*Box) SetTitleColor ¶
SetTitleColor sets the box's title color.
func (*Box) WrapEventHandler ¶
func (b *Box) WrapEventHandler(eventHandler func(tcell.Event, func(p Primitive))) func(tcell.Event, func(p Primitive))
WrapInputHandler wraps an event handler (see InputHandler()) with the functionality to capture event (see SetInputCapture()) before passing it on to the provided (default) event handler.
This is only meant to be used by subclassing primitives.
func (*Box) WrapInputHandler ¶
func (b *Box) WrapInputHandler(inputHandler func(*tcell.EventKey, func(p Primitive))) func(*tcell.EventKey, func(p Primitive))
WrapInputHandler wraps an input handler (see InputHandler()) with the functionality to capture input (see SetInputCapture()) before passing it on to the provided (default) input handler.
This is only meant to be used by subclassing primitives.
func (*Box) WrapMouseHandler ¶
func (b *Box) WrapMouseHandler(mouseHandler func(MouseAction, *tcell.EventMouse, func(p Primitive)) (bool, Primitive)) func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
WrapMouseHandler wraps a mouse event handler (see MouseHandler()) with the functionality to capture mouse events (see SetMouseCapture()) before passing them on to the provided (default) event handler.
This is only meant to be used by subclassing primitives.
type Button ¶
type Button struct { *Box // contains filtered or unexported fields }
Button is labeled box that triggers an action when selected.
See https://github.com/rivo/tview/wiki/Button for an example.
func (*Button) Draw ¶
func (b *Button) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Button) GetLabelText ¶
GetLabelText returns the button text.
func (*Button) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Button) IsDisabled ¶
IsDisabled returns whether or not the button is disabled.
func (*Button) MouseHandler ¶
func (b *Button) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Button) SetActivatedStyle ¶
SetActivatedStyle sets the style of the button used when it is focused.
func (*Button) SetBackgroundColorActivated ¶
SetBackgroundColorActivated sets the background color of the button text when the button is in focus.
func (*Button) SetDisabled ¶
SetDisabled sets whether or not the button is disabled. Disabled buttons cannot be activated.
If the button is part of a form, you should set focus to the form itself after calling this function to set focus to the next non-disabled form item.
func (*Button) SetDisabledStyle ¶
SetDisabledStyle sets the style of the button used when it is disabled.
func (*Button) SetExitFunc ¶
SetExitFunc sets a handler which is called when the user leaves the button. The callback function is provided with the key that was pressed, which is one of the following:
- KeyEscape: Leaving the button with no specific direction.
- KeyTab: Move to the next field.
- KeyBacktab: Move to the previous field.
func (*Button) SetLabelColor ¶
SetLabelColor sets the color of the button text.
func (*Button) SetLabelColorActivated ¶
SetLabelColorActivated sets the color of the button text when the button is in focus.
func (*Button) SetLabelText ¶
SetLabelText sets the button text.
func (*Button) SetSelectedFunc ¶
SetSelectedFunc sets a handler which is called when the button was selected.
type Checkbox ¶
type Checkbox struct { *Box // contains filtered or unexported fields }
Checkbox implements a simple box for boolean values which can be checked and unchecked.
See https://github.com/rivo/tview/wiki/Checkbox for an example.
func (*Checkbox) Draw ¶
func (c *Checkbox) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Checkbox) GetFieldHeight ¶
GetFieldHeight returns this primitive's field height.
func (*Checkbox) GetFieldWidth ¶
GetFieldWidth returns this primitive's field width.
func (*Checkbox) GetLabelText ¶
GetLabelText returns the text to be displayed before the input area.
func (*Checkbox) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Checkbox) MouseHandler ¶
func (c *Checkbox) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Checkbox) SetChangedFunc ¶
SetChangedFunc sets a handler which is called when the checked state of this checkbox was changed. The handler function receives the new state.
func (*Checkbox) SetChecked ¶
SetChecked sets the state of the checkbox. This also triggers the "changed" callback if the state changes with this call.
func (*Checkbox) SetCheckedString ¶
SetCheckedString sets the string to be displayed when the checkbox is checked (defaults to "X").
func (*Checkbox) SetDisabled ¶
SetDisabled sets whether or not the item is disabled / read-only.
func (*Checkbox) SetDoneFunc ¶
SetDoneFunc sets a handler which is called when the user is done using the checkbox. The callback function is provided with the key that was pressed, which is one of the following:
- KeyEscape: Abort text input.
- KeyTab: Move to the next field.
- KeyBacktab: Move to the previous field.
func (*Checkbox) SetFieldBackgroundColor ¶
SetFieldBackgroundColor sets the background color of the input area.
func (*Checkbox) SetFieldTextColor ¶
SetFieldTextColor sets the text color of the input area.
func (*Checkbox) SetFinishedFunc ¶
SetFinishedFunc sets a callback invoked when the user leaves this form item.
func (*Checkbox) SetFormAttributes ¶
func (c *Checkbox) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
SetFormAttributes sets attributes shared by all form items.
func (*Checkbox) SetLabelColor ¶
SetLabelColor sets the color of the label.
func (*Checkbox) SetLabelText ¶
SetLabelText sets the text to be displayed before the input area.
func (*Checkbox) SetLabelWidth ¶
SetLabelWidth sets the screen width of the label. A value of 0 will cause the primitive to use the width of the label string.
type DropDown ¶
type DropDown struct { *Box // contains filtered or unexported fields }
DropDown implements a selection widget whose options become visible in a drop-down list when activated.
See https://github.com/rivo/tview/wiki/DropDown for an example.
func (*DropDown) AddOption ¶
AddOption adds a new selectable option to this drop-down. The "selected" callback is called when this option was selected. It may be nil.
func (*DropDown) Draw ¶
func (d *DropDown) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*DropDown) GetCurrentOption ¶
func (d *DropDown) GetCurrentOption() (i int, opt *DropDownOption)
GetCurrentOption returns the index of the currently selected option as well as its text. If no option was selected, -1 and an empty string is returned.
func (*DropDown) GetFieldHeight ¶
GetFieldHeight returns this primitive's field height.
func (*DropDown) GetFieldWidth ¶
GetFieldWidth returns this primitive's field screen width.
func (*DropDown) GetLabelText ¶
GetLabelText returns the text to be displayed before the input area.
func (*DropDown) GetOptionCount ¶
GetOptionCount returns the number of options in the drop-down.
func (*DropDown) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*DropDown) MouseHandler ¶
func (d *DropDown) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*DropDown) RemoveOption ¶
RemoveOption removes the specified option from the drop-down. Panics if the index is out of range.
func (*DropDown) SetCurrentOption ¶
SetCurrentOption sets the index of the currently selected option. This may be a negative value to indicate that no option is currently selected. Calling this function will also trigger the "selected" callback (if there is one).
func (*DropDown) SetDisabled ¶
SetDisabled sets whether or not the item is disabled / read-only.
func (*DropDown) SetDoneFunc ¶
SetDoneFunc sets a handler which is called when the user is done selecting options. The callback function is provided with the key that was pressed, which is one of the following:
- KeyEscape: Abort selection.
- KeyTab: Move to the next field.
- KeyBacktab: Move to the previous field.
func (*DropDown) SetFieldBackgroundColor ¶
SetFieldBackgroundColor sets the background color of the options area.
func (*DropDown) SetFieldTextColor ¶
SetFieldTextColor sets the text color of the options area.
func (*DropDown) SetFieldWidth ¶
SetFieldWidth sets the screen width of the options area. A value of 0 means extend to as long as the longest option text.
func (*DropDown) SetFinishedFunc ¶
SetFinishedFunc sets a callback invoked when the user leaves this form item.
func (*DropDown) SetFormAttributes ¶
func (d *DropDown) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
SetFormAttributes sets attributes shared by all form items.
func (*DropDown) SetLabelColor ¶
SetLabelColor sets the color of the label.
func (*DropDown) SetLabelText ¶
SetLabelText sets the text to be displayed before the input area.
func (*DropDown) SetLabelWidth ¶
SetLabelWidth sets the screen width of the label. A value of 0 will cause the primitive to use the width of the label string.
func (*DropDown) SetListStyles ¶
SetListStyles sets the styles of the items in the drop-down list (unselected as well as selected items). Style attributes are currently ignored but may be used in the future.
func (*DropDown) SetOptions ¶
func (d *DropDown) SetOptions(texts []string, values []any, selected func(text string, index int)) *DropDown
SetOptions replaces all current options with the ones provided and installs one callback function which is called when one of the options is selected. It will be called with the option's text and its index into the options slice. The "selected" parameter may be nil.
func (*DropDown) SetPrefixTextColor ¶
SetPrefixTextColor sets the color of the prefix string. The prefix string is shown when the user starts typing text, which directly selects the first option that starts with the typed string.
func (*DropDown) SetSelectedFunc ¶
SetSelectedFunc sets a handler which is called when the user changes the drop-down's option. This handler will be called in addition and prior to an option's optional individual handler. The handler is provided with the selected option's text and index. If "no option" was selected, these values are an empty string and -1.
func (*DropDown) SetTextOptions ¶
func (d *DropDown) SetTextOptions(prefix, suffix, currentPrefix, currentSuffix, noSelection string) *DropDown
SetTextOptions sets the text to be placed before and after each drop-down option (prefix/suffix), the text placed before and after the currently selected option (currentPrefix/currentSuffix) as well as the text to be displayed when no option is currently selected. Per default, all of these strings are empty.
type DropDownOption ¶
type DropDownOption struct { Text string // The text to be displayed in the drop-down. Value any Selected func() // The (optional) callback for when this option was selected. }
dropDownOption is one option that can be selected in a drop-down primitive.
type Flex ¶
type Flex struct { *Box // contains filtered or unexported fields }
Flex is a basic implementation of the Flexbox layout. The contained primitives are arranged horizontally or vertically. The way they are distributed along that dimension depends on their layout settings, which is either a fixed length or a proportional length. See AddItem() for details.
See https://github.com/rivo/tview/wiki/Flex for an example.
func NewFlex ¶
func NewFlex() *Flex
NewFlex returns a new flexbox layout container with no primitives and its direction set to FlexColumn. To add primitives to this layout, see AddItem(). To change the direction, see SetDirection().
Note that Box, the superclass of Flex, will not clear its contents so that any nil flex items will leave their background unchanged. To clear a Flex's background before any items are drawn, set it to a box with the desired color:
flex.Box = NewBox()
func (*Flex) AddItem ¶
AddItem adds a new item to the container. The "fixedSize" argument is a width or height that may not be changed by the layout algorithm. A value of 0 means that its size is flexible and may be changed. The "proportion" argument defines the relative size of the item compared to other flexible-size items. For example, items with a proportion of 2 will be twice as large as items with a proportion of 1. The proportion must be at least 1 if fixedSize == 0 (ignored otherwise).
If "focus" is set to true, the item will receive focus when the Flex primitive receives focus. If multiple items have the "focus" flag set to true, the first one will receive focus.
You can provide a nil value for the primitive. This will still consume screen space but nothing will be drawn.
func (*Flex) ChildFocus ¶
func (*Flex) Draw ¶
func (f *Flex) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Flex) GetChildFocusItem ¶
func (*Flex) GetDirection ¶
func (*Flex) GetItem ¶
GetItem returns the primitive at the given index, starting with 0 for the first primitive in this container.
This function will panic for out of range indices.
func (*Flex) GetItemCount ¶
GetItemCount returns the number of items in this container.
func (*Flex) GetLeafFocus ¶
func (*Flex) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Flex) MouseHandler ¶
func (f *Flex) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Flex) RemoveIndex ¶
RemoveItem removes all items for the given primitive from the container, keeping the order of the remaining items intact.
func (*Flex) RemoveItem ¶
RemoveItem removes all items for the given primitive from the container, keeping the order of the remaining items intact.
func (*Flex) ReplaceItem ¶
Replacetem removes all items for the given primitive from the container, keeping the order of the remaining items intact.
func (*Flex) ResizeItem ¶
ResizeItem sets a new size for the item(s) with the given primitive. If there are multiple Flex items with the same primitive, they will all receive the same size. For details regarding the size parameters, see AddItem().
func (*Flex) SetDirection ¶
SetDirection sets the direction in which the contained primitives are distributed. This can be either FlexColumn (default) or FlexRow. Note that these are the opposite of what you would expect coming from CSS. You may also use FlexColumnCSS or FlexRowCSS, to remain in line with the CSS definition.
func (*Flex) SetFullScreen ¶
SetFullScreen sets the flag which, when true, causes the flex layout to use the entire screen space instead of whatever size it is currently assigned to.
func (*Flex) SwapIndexes ¶
type FlexItem ¶
type FlexItem struct { Item Primitive // The item to be positioned. May be nil for an empty item. FixedSize int // The item's fixed size which may not be changed, 0 if it has no fixed size. Proportion int // The item's proportion. Focus bool // Whether or not this item attracts the layout's focus. }
FlexItem holds layout options for one item.
type Form ¶
type Form struct { *Box // contains filtered or unexported fields }
Form allows you to combine multiple one-line form elements into a vertical or horizontal layout. Form elements include types such as InputField or Checkbox. These elements can be optionally followed by one or more buttons for which you can define form-wide actions (e.g. Save, Clear, Cancel).
See https://github.com/rivo/tview/wiki/Form for an example.
func (*Form) AddButton ¶
AddButton adds a new button to the form. The "selected" function is called when the user selects this button. It may be nil.
func (*Form) AddCheckbox ¶
AddCheckbox adds a checkbox to the form. It has a label, an initial state, and an (optional) callback function which is invoked when the state of the checkbox was changed by the user.
func (*Form) AddDropDown ¶
func (f *Form) AddDropDown(label string, options []string, values []any, initialOption int, selected func(option string, optionIndex int)) *Form
AddDropDown adds a drop-down element to the form. It has a label, options, and an (optional) callback function which is invoked when an option was selected. The initial option may be a negative value to indicate that no option is currently selected.
func (*Form) AddFormItem ¶
AddFormItem adds a new item to the form. This can be used to add your own objects to the form. Note, however, that the Form class will override some of its attributes to make it work in the form context. Specifically, these are:
- The label width
- The label color
- The background color
- The field text color
- The field background color
func (*Form) AddImage ¶
AddImage adds an image to the form. It has a label and the image will fit in the specified width and height (its aspect ratio is preserved). See Image.SetColors for a description of the "colors" parameter. Images are not interactive and are skipped over in a form. The "width" value may be 0 (adjust dynamically) but "height" should generally be a positive value.
func (*Form) AddInputField ¶
func (f *Form) AddInputField(label, value string, fieldWidth int, accept func(textToCheck string, lastChar rune) bool, changed func(text string)) *Form
AddInputField adds an input field to the form. It has a label, an optional initial value, a field width (a value of 0 extends it as far as possible), an optional accept function to validate the item's value (set to nil to accept any text), and an (optional) callback function which is invoked when the input field's text has changed.
func (*Form) AddPasswordField ¶
func (f *Form) AddPasswordField(label, value string, fieldWidth int, mask rune, changed func(text string)) *Form
AddPasswordField adds a password field to the form. This is similar to an input field except that the user's input not shown. Instead, a "mask" character is displayed. The password field has a label, an optional initial value, a field width (a value of 0 extends it as far as possible), and an (optional) callback function which is invoked when the input field's text has changed.
func (*Form) AddTextArea ¶
func (f *Form) AddTextArea(label, text string, fieldWidth, fieldHeight, maxLength int, changed func(text string)) *Form
AddTextArea adds a text area to the form. It has a label, an optional initial text, a size (width and height) referring to the actual input area (a fieldWidth of 0 extends it as far right as possible, a fieldHeight of 0 will cause it to be DefaultFormFieldHeight), and a maximum number of bytes of text allowed (0 means no limit).
The optional callback function is invoked when the content of the text area has changed. Note that especially for larger texts, this is an expensive operation due to technical constraints of the TextArea primitive (every key stroke leads to a new reallocation of the entire text).
func (*Form) AddTextView ¶
func (f *Form) AddTextView(label, text string, fieldWidth, fieldHeight int, dynamicColors, scrollable bool) *Form
AddTextView adds a text view to the form. It has a label and text, a size (width and height) referring to the actual text element (a fieldWidth of 0 extends it as far right as possible, a fieldHeight of 0 will cause it to be DefaultFormFieldHeight), a flag to turn on/off dynamic colors, and a flag to turn on/off scrolling. If scrolling is turned off, the text view will not receive focus.
func (*Form) Clear ¶
Clear removes all input elements from the form, including the buttons if specified.
func (*Form) ClearButtons ¶
ClearButtons removes all buttons from the form.
func (*Form) Draw ¶
func (f *Form) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Form) GetButton ¶
GetButton returns the button at the specified 0-based index. Note that buttons have been specially prepared for this form and modifying some of their attributes may have unintended side effects.
func (*Form) GetButtonCount ¶
GetButtonCount returns the number of buttons in this form.
func (*Form) GetButtonIndex ¶
GetButtonIndex returns the index of the button with the given label, starting with 0 for the button that was added first. If no such label was found, -1 is returned.
func (*Form) GetFocusedItemIndex ¶
GetFocusedItemIndex returns the indices of the form element or button which currently has focus. If they don't, -1 is returned resepectively.
func (*Form) GetFormItem ¶
GetFormItem returns the form item at the given position, starting with index 0. Elements are referenced in the order they were added. Buttons are not included.
func (*Form) GetFormItemByLabel ¶
GetFormItemByLabel returns the first form element with the given label. If no such element is found, nil is returned. Buttons are not searched and will therefore not be returned.
func (*Form) GetFormItemCount ¶
GetFormItemCount returns the number of items in the form (not including the buttons).
func (*Form) GetFormItemIndex ¶
GetFormItemIndex returns the index of the first form element with the given label. If no such element is found, -1 is returned. Buttons are not searched and will therefore not be returned.
func (*Form) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Form) MouseHandler ¶
func (f *Form) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Form) RemoveButton ¶
RemoveButton removes the button at the specified position, starting with 0 for the button that was added first.
func (*Form) RemoveFormItem ¶
RemoveFormItem removes the form element at the given position, starting with index 0. Elements are referenced in the order they were added. Buttons are not included.
func (*Form) SetButtonActivatedStyle ¶
SetButtonActivatedStyle sets the style of the buttons when they are focused.
func (*Form) SetButtonBackgroundColor ¶
SetButtonBackgroundColor sets the background color of the buttons. This is also the text color of the buttons when they are focused.
func (*Form) SetButtonDisabledStyle ¶
SetButtonDisabledStyle sets the style of the buttons when they are disabled.
func (*Form) SetButtonStyle ¶
SetButtonStyle sets the style of the buttons when they are not focused.
func (*Form) SetButtonTextColor ¶
SetButtonTextColor sets the color of the button texts. This is also the background of the buttons when they are focused.
func (*Form) SetButtonsAlign ¶
SetButtonsAlign sets how the buttons align horizontally, one of AlignLeft (the default), AlignCenter, and AlignRight. This is only
func (*Form) SetCancelFunc ¶
SetCancelFunc sets a handler which is called when the user hits the Escape key.
func (*Form) SetFieldBackgroundColor ¶
SetFieldBackgroundColor sets the background color of the input areas.
func (*Form) SetFieldTextColor ¶
SetFieldTextColor sets the text color of the input areas.
func (*Form) SetFocus ¶
SetFocus shifts the focus to the form element with the given index, counting non-button items first and buttons last. Note that this index is only used when the form itself receives focus.
func (*Form) SetHorizontal ¶
SetHorizontal sets the direction the form elements are laid out. If set to true, instead of positioning them from top to bottom (the default), they are positioned from left to right, moving into the next row if there is not enough space.
func (*Form) SetItemPadding ¶
SetItemPadding sets the number of empty rows between form items for vertical layouts and the number of empty cells between form items for horizontal layouts.
func (*Form) SetLabelColor ¶
SetLabelColor sets the color of the labels.
type FormItem ¶
type FormItem interface { Primitive // GetLabelText returns the item's label text. GetLabelText() string // SetFormAttributes sets a number of item attributes at once. SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem // GetFieldWidth returns the width of the form item's field (the area which // is manipulated by the user) in number of screen cells. A value of 0 // indicates the the field width is flexible and may use as much space as // required. GetFieldWidth() int // GetFieldHeight returns the height of the form item's field (the area which // is manipulated by the user). This value must be greater than 0. GetFieldHeight() int // SetFinishedFunc sets the handler function for when the user finished // entering data into the item. The handler may receive events for the // Enter key (we're done), the Escape key (cancel input), the Tab key (move // to next field), the Backtab key (move to previous field), or a negative // value, indicating that the action for the last known key should be // repeated. SetFinishedFunc(handler func(key tcell.Key)) FormItem // SetDisabled sets whether or not the item is disabled / read-only. A form // must have at least one item that is not disabled. SetDisabled(disabled bool) FormItem }
FormItem is the interface all form items must implement to be able to be included in a form.
type Frame ¶
type Frame struct { *Box // contains filtered or unexported fields }
Frame is a wrapper which adds space around another primitive. In addition, the top area (header) and the bottom area (footer) may also contain text.
See https://github.com/rivo/tview/wiki/Frame for an example.
func NewFrame ¶
NewFrame returns a new frame around the given primitive. The primitive's size will be changed to fit within this frame. The primitive may be nil, in which case no other primitive is embedded in the frame.
func (*Frame) AddText ¶
AddText adds text to the frame. Set "header" to true if the text is to appear in the header, above the contained primitive. Set it to false for it to appear in the footer, below the contained primitive. "align" must be one of the Align constants. Rows in the header are printed top to bottom, rows in the footer are printed bottom to top. Note that long text can overlap as different alignments will be placed on the same row.
func (*Frame) Draw ¶
func (f *Frame) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Frame) GetPrimitive ¶
GetPrimitive returns the primitive contained in this frame.
func (*Frame) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Frame) MouseHandler ¶
func (f *Frame) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Frame) SetBorders ¶
SetBorders sets the width of the frame borders as well as "header" and "footer", the vertical space between the header and footer text and the contained primitive (does not apply if there is no text).
func (*Frame) SetPrimitive ¶
SetPrimitive replaces the contained primitive with the given one. To remove a primitive, set it to nil.
type Grid ¶
type Grid struct { *Box // contains filtered or unexported fields }
Grid is an implementation of a grid-based layout. It works by defining the size of the rows and columns, then placing primitives into the grid.
Some settings can lead to the grid exceeding its available space. SetOffset() can then be used to scroll in steps of rows and columns. These offset values can also be controlled with the arrow keys (or the "g","G", "j", "k", "h", and "l" keys) while the grid has focus and none of its contained primitives do.
See https://github.com/rivo/tview/wiki/Grid for an example.
func NewGrid ¶
func NewGrid() *Grid
NewGrid returns a new grid-based layout container with no initial primitives.
Note that Box, the superclass of Grid, will be transparent so that any grid areas not covered by any primitives will leave their background unchanged. To clear a Grid's background before any items are drawn, reset its Box to one with the desired color:
grid.Box = NewBox()
func (*Grid) AddItem ¶
func (g *Grid) AddItem(p Primitive, row, column, rowSpan, colSpan, minGridHeight, minGridWidth int, focus bool) *Grid
AddItem adds a primitive and its position to the grid. The top-left corner of the primitive will be located in the top-left corner of the grid cell at the given row and column and will span "rowSpan" rows and "colSpan" columns. For example, for a primitive to occupy rows 2, 3, and 4 and columns 5 and 6:
grid.AddItem(p, 2, 5, 3, 2, 0, 0, true)
If rowSpan or colSpan is 0, the primitive will not be drawn.
You can add the same primitive multiple times with different grid positions. The minGridWidth and minGridHeight values will then determine which of those positions will be used. This is similar to CSS media queries. These minimum values refer to the overall size of the grid. If multiple items for the same primitive apply, the one that has at least one highest minimum value will be used, or the primitive added last if those values are the same. Example:
grid.AddItem(p, 0, 0, 0, 0, 0, 0, true). // Hide in small grids. AddItem(p, 0, 0, 1, 2, 100, 0, true). // One-column layout for medium grids. AddItem(p, 1, 1, 3, 2, 300, 0, true) // Multi-column layout for large grids.
To use the same grid layout for all sizes, simply set minGridWidth and minGridHeight to 0.
If the item's focus is set to true, it will receive focus when the grid receives focus. If there are multiple items with a true focus flag, the last visible one that was added will receive focus.
func (*Grid) Draw ¶
func (g *Grid) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Grid) GetOffset ¶
GetOffset returns the current row and column offset (see SetOffset() for details).
func (*Grid) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Grid) MouseHandler ¶
func (g *Grid) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Grid) RemoveItem ¶
RemoveItem removes all items for the given primitive from the grid, keeping the order of the remaining items intact.
func (*Grid) SetBorders ¶
SetBorders sets whether or not borders are drawn around grid items. Setting this value to true will cause the gap values (see SetGap()) to be ignored and automatically assumed to be 1 where the border graphics are drawn.
func (*Grid) SetBordersColor ¶
SetBordersColor sets the color of the item borders.
func (*Grid) SetColumns ¶
SetColumns defines how the columns of the grid are distributed. Each value defines the size of one column, starting with the leftmost column. Values greater 0 represent absolute column widths (gaps not included). Values less or equal 0 represent proportional column widths or fractions of the remaining free space, where 0 is treated the same as -1. That is, a column with a value of -3 will have three times the width of a column with a value of -1 (or 0). The minimum width set with SetMinSize() is always observed.
Primitives may extend beyond the columns defined explicitly with this function. A value of 0 is assumed for any undefined column. In fact, if you never call this function, all columns occupied by primitives will have the same width. On the other hand, unoccupied columns defined with this function will always take their place.
Assuming a total width of the grid of 100 cells and a minimum width of 0, the following call will result in columns with widths of 30, 10, 15, 15, and 30 cells:
grid.SetColumns(30, 10, -1, -1, -2)
If a primitive were then placed in the 6th and 7th column, the resulting widths would be: 30, 10, 10, 10, 20, 10, and 10 cells.
If you then called SetMinSize() as follows:
grid.SetMinSize(15, 20)
The resulting widths would be: 30, 15, 15, 15, 20, 15, and 15 cells, a total of 125 cells, 25 cells wider than the available grid width.
func (*Grid) SetGap ¶
SetGap sets the size of the gaps between neighboring primitives on the grid. If borders are drawn (see SetBorders()), these values are ignored and a gap of 1 is assumed. Panics if negative values are provided.
func (*Grid) SetMinSize ¶
SetMinSize sets an absolute minimum width for rows and an absolute minimum height for columns. Panics if negative values are provided.
func (*Grid) SetOffset ¶
SetOffset sets the number of rows and columns which are skipped before drawing the first grid cell in the top-left corner. As the grid will never completely move off the screen, these values may be adjusted the next time the grid is drawn. The actual position of the grid may also be adjusted such that contained primitives that have focus remain visible.
func (*Grid) SetRows ¶
SetRows defines how the rows of the grid are distributed. These values behave the same as the column values provided with Grid.SetColumns, see there for a definition and examples.
The provided values correspond to row heights, the first value defining the height of the topmost row.
func (*Grid) SetSize ¶
SetSize is a shortcut for Grid.SetRows and Grid.SetColumns where all row and column values are set to the given size values. See Grid.SetColumns for details on sizes.
type GridItem ¶
type GridItem struct { Item Primitive // The item to be positioned. May be nil for an empty item. Row, Column int // The top-left grid cell where the item is placed. Width, Height int // The number of rows and columns the item occupies. MinGridWidth, MinGridHeight int // The minimum grid width/height for which this item is visible. Focus bool // Whether or not this item attracts the layout's focus. // contains filtered or unexported fields }
GridItem represents one primitive and its possible position on a grid.
type Image ¶
type Image struct { *Box // contains filtered or unexported fields }
Image implements a widget that displays one image. The original image (specified with Image.SetImage) is resized according to the specified size (see Image.SetSize), using the specified number of colors (see Image.SetColors), while applying dithering if necessary (see Image.SetDithering).
Images are approximated by graphical characters in the terminal. The resolution is therefore limited by the number and type of characters that can be drawn in the terminal and the colors available in the terminal. The quality of the final image also depends on the terminal's font and spacing settings, none of which are under the control of this package. Results may vary.
func NewImage ¶
func NewImage() *Image
NewImage returns a new image widget with an empty image (use Image.SetImage to specify the image to be displayed). The image will use the widget's entire available space. The dithering algorithm is set to Floyd-Steinberg dithering. The terminal's cell aspect ratio defaults to 0.5.
func (*Image) Draw ¶
func (i *Image) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Image) GetColors ¶
GetColors returns the number of colors that will be used while drawing the image. This is one of the values listed in Image.SetColors, except 0 which will be replaced by the actual number of colors used.
func (*Image) GetFieldHeight ¶
GetFieldHeight returns this primitive's field height. This is the image's height or 8 if the height is 0 or less.
func (*Image) GetFieldWidth ¶
GetFieldWidth returns this primitive's field width. This is the image's width or, if the width is 0 or less, the proportional width of the image based on its height as returned by Image.GetFieldHeight. If there is no image, 0 is returned.
func (*Image) GetLabelStyle ¶
func (i *Image) GetLabelStyle() tcell.Style
GetLabelStyle returns the style of the label.
func (*Image) GetLabelText ¶
GetLabelText returns the text to be displayed before the image.
func (*Image) SetAlign ¶
SetAlign sets the vertical and horizontal alignment of the image within the widget's space. The possible values are AlignTop, AlignCenter, and AlignBottom for vertical alignment and AlignLeft, AlignCenter, and AlignRight for horizontal alignment. The default is AlignCenter for both (or AlignTop and AlignLeft if the image is part of a Form).
func (*Image) SetAspectRatio ¶
SetAspectRatio sets the width of a terminal's cell divided by its height. You may change the default of 0.5 if your terminal / font has a different aspect ratio. This is used to calculate the size of the image if the specified width or height is 0. The function will panic if the aspect ratio is 0 or less.
func (*Image) SetColors ¶
SetColors sets the number of colors to use. This should be the number of colors supported by the terminal. If 0, the number of colors is chosen based on the TERM environment variable (which may or may not be reliable).
Only the values 0, 2, 8, 256, and 16777216 (TrueColor) are supported. Other values will be rounded up to the next supported value, to a maximum of 16777216.
The effect of using more colors than supported by the terminal is undefined.
func (*Image) SetDisabled ¶
SetDisabled sets whether or not the item is disabled / read-only.
func (*Image) SetDithering ¶
SetDithering sets the dithering algorithm to use, one of the constants starting with "Dithering", for example DitheringFloydSteinberg (the default). Dithering is not applied when rendering in true-color.
func (*Image) SetFinishedFunc ¶
SetFinishedFunc sets a callback invoked when the user leaves this form item.
func (*Image) SetFormAttributes ¶
func (i *Image) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
SetFormAttributes sets attributes shared by all form items.
func (*Image) SetLabelStyle ¶
SetLabelStyle sets the style of the label.
func (*Image) SetLabelText ¶
SetLabelText sets the text to be displayed before the image.
func (*Image) SetLabelWidth ¶
SetLabelWidth sets the screen width of the label. A value of 0 will cause the primitive to use the width of the label string.
func (*Image) SetSize ¶
SetSize sets the size of the image. Positive values refer to cells in the terminal. Negative values refer to a percentage of the available space (e.g. -50 means 50%). A value of 0 means that the corresponding size is chosen automatically based on the other size while preserving the image's aspect ratio. If both are 0, the image uses as much space as possible while still preserving the aspect ratio.
type InputField ¶
type InputField struct { *Box // contains filtered or unexported fields }
InputField is a one-line box (three lines if there is a title) where the user can enter text. Use InputField.SetAcceptanceFunc to accept or reject input, InputField.SetChangedFunc to listen for changes, and InputField.SetMaskCharacter to hide input from onlookers (e.g. for password input).
The input field also has an optional autocomplete feature. It is initialized by the InputField.SetAutocompleteFunc function. For more control over the autocomplete drop-down's behavior, you can also set the InputField.SetAutocompletedFunc.
The following keys can be used for navigation and editing:
- Left arrow: Move left by one character.
- Right arrow: Move right by one character.
- Down arrow: Open the autocomplete drop-down.
- Tab, Enter: Select the current autocomplete entry.
- Home, Ctrl-A, Alt-a: Move to the beginning of the line.
- End, Ctrl-E, Alt-e: Move to the end of the line.
- Alt-left, Alt-b: Move left by one word.
- Alt-right, Alt-f: Move right by one word.
- Backspace: Delete the character before the cursor.
- Delete: Delete the character after the cursor.
- Ctrl-K: Delete from the cursor to the end of the line.
- Ctrl-W: Delete the last word before the cursor.
- Ctrl-U: Delete the entire line.
See https://github.com/rivo/tview/wiki/InputField for an example.
func (*InputField) Autocomplete ¶
func (i *InputField) Autocomplete() *InputField
Autocomplete invokes the autocomplete callback (if there is one). If the length of the returned autocomplete entries slice is greater than 0, the input field will present the user with a corresponding drop-down list the next time the input field is drawn.
It is safe to call this function from any goroutine. Note that the input field is not redrawn automatically unless called from the main goroutine (e.g. in response to events).
func (*InputField) Blur ¶
func (i *InputField) Blur()
Blur is called when this primitive loses focus.
func (*InputField) Draw ¶
func (i *InputField) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*InputField) Focus ¶
func (i *InputField) Focus(delegate func(p Primitive))
Focus is called when this primitive receives focus.
func (*InputField) GetFieldHeight ¶
func (i *InputField) GetFieldHeight() int
GetFieldHeight returns this primitive's field height.
func (*InputField) GetFieldStyle ¶
func (i *InputField) GetFieldStyle() tcell.Style
GetFieldStyle returns the style of the input area (when no placeholder is shown).
func (*InputField) GetFieldWidth ¶
func (i *InputField) GetFieldWidth() int
GetFieldWidth returns this primitive's field width.
func (*InputField) GetLabelStyle ¶
func (i *InputField) GetLabelStyle() tcell.Style
GetLabelStyle returns the style of the label.
func (*InputField) GetLabelText ¶
func (i *InputField) GetLabelText() string
GetLabelText returns the text to be displayed before the input area.
func (*InputField) GetPlaceholderStyle ¶
func (i *InputField) GetPlaceholderStyle() tcell.Style
GetPlaceholderStyle returns the style of the input area (when a placeholder is shown).
func (*InputField) GetText ¶
func (i *InputField) GetText() string
GetText returns the current text of the input field.
func (*InputField) InputHandler ¶
func (i *InputField) InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive))
InputHandler returns the handler for this primitive.
func (*InputField) MouseHandler ¶
func (i *InputField) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*InputField) SetAcceptanceFunc ¶
func (i *InputField) SetAcceptanceFunc(handler func(textToCheck string, lastChar rune) bool) *InputField
SetAcceptanceFunc sets a handler which may reject the last character that was entered (by returning false).
This package defines a number of variables prefixed with InputField which may be used for common input (e.g. numbers, maximum text length).
func (*InputField) SetAutocompleteFunc ¶
func (i *InputField) SetAutocompleteFunc(callback func(currentText string) (entries []string)) *InputField
SetAutocompleteFunc sets an autocomplete callback function which may return strings to be selected from a drop-down based on the current text of the input field. The drop-down appears only if len(entries) > 0. The callback is invoked in this function and whenever the current text changes or when Autocomplete() is called. Entries are cleared when the user selects an entry or presses Escape.
func (*InputField) SetAutocompleteStyles ¶
func (i *InputField) SetAutocompleteStyles(background tcell.Color, main, selected tcell.Style) *InputField
SetAutocompleteStyles sets the colors and style of the autocomplete entries. For details, see List.SetMainTextStyle(), List.SetSelectedStyle(), and Box.SetBackgroundColor().
func (*InputField) SetAutocompletedFunc ¶
func (i *InputField) SetAutocompletedFunc(autocompleted func(text string, index int, source int) bool) *InputField
SetAutocompletedFunc sets a callback function which is invoked when the user selects an entry from the autocomplete drop-down list. The function is passed the text of the selected entry (stripped of any style tags), the index of the entry, and the user action that caused the selection, e.g. AutocompletedNavigate. It returns true if the autocomplete drop-down should be closed after the callback returns or false if it should remain open, in which case InputField.Autocomplete is called to update the drop-down's contents.
If no such callback is set (or nil is provided), the input field will be updated with the selection any time the user navigates the autocomplete drop-down list. So this function essentially gives you more control over the autocomplete functionality.
func (*InputField) SetChangedFunc ¶
func (i *InputField) SetChangedFunc(handler func(text string)) *InputField
SetChangedFunc sets a handler which is called whenever the text of the input field has changed. It receives the current text (after the change).
func (*InputField) SetDisabled ¶
func (i *InputField) SetDisabled(disabled bool) FormItem
SetDisabled sets whether or not the item is disabled / read-only.
func (*InputField) SetDoneFunc ¶
func (i *InputField) SetDoneFunc(handler func(key tcell.Key)) *InputField
SetDoneFunc sets a handler which is called when the user is done entering text. The callback function is provided with the key that was pressed, which is one of the following:
- KeyEnter: Done entering text.
- KeyEscape: Abort text input.
- KeyTab: Move to the next field.
- KeyBacktab: Move to the previous field.
func (*InputField) SetFieldBackgroundColor ¶
func (i *InputField) SetFieldBackgroundColor(color tcell.Color) *InputField
SetFieldBackgroundColor sets the background color of the input area.
func (*InputField) SetFieldStyle ¶
func (i *InputField) SetFieldStyle(style tcell.Style) *InputField
SetFieldStyle sets the style of the input area (when no placeholder is shown).
func (*InputField) SetFieldTextColor ¶
func (i *InputField) SetFieldTextColor(color tcell.Color) *InputField
SetFieldTextColor sets the text color of the input area.
func (*InputField) SetFieldWidth ¶
func (i *InputField) SetFieldWidth(width int) *InputField
SetFieldWidth sets the screen width of the input area. A value of 0 means extend as much as possible.
func (*InputField) SetFinishedFunc ¶
func (i *InputField) SetFinishedFunc(handler func(key tcell.Key)) FormItem
SetFinishedFunc sets a callback invoked when the user leaves this form item.
func (*InputField) SetFormAttributes ¶
func (i *InputField) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
SetFormAttributes sets attributes shared by all form items.
func (*InputField) SetLabelColor ¶
func (i *InputField) SetLabelColor(color tcell.Color) *InputField
SetLabelColor sets the text color of the label.
func (*InputField) SetLabelStyle ¶
func (i *InputField) SetLabelStyle(style tcell.Style) *InputField
SetLabelStyle sets the style of the label.
func (*InputField) SetLabelText ¶
func (i *InputField) SetLabelText(label string) *InputField
SetLabelText sets the text to be displayed before the input area.
func (*InputField) SetLabelWidth ¶
func (i *InputField) SetLabelWidth(width int) *InputField
SetLabelWidth sets the screen width of the label. A value of 0 will cause the primitive to use the width of the label string.
func (*InputField) SetMaskCharacter ¶
func (i *InputField) SetMaskCharacter(mask rune) *InputField
SetMaskCharacter sets a character that masks user input on a screen. A value of 0 disables masking.
func (*InputField) SetPlaceholder ¶
func (i *InputField) SetPlaceholder(text string) *InputField
SetPlaceholder sets the text to be displayed when the input text is empty.
func (*InputField) SetPlaceholderStyle ¶
func (i *InputField) SetPlaceholderStyle(style tcell.Style) *InputField
SetPlaceholderStyle sets the style of the input area (when a placeholder is shown).
func (*InputField) SetPlaceholderTextColor ¶
func (i *InputField) SetPlaceholderTextColor(color tcell.Color) *InputField
SetPlaceholderTextColor sets the text color of placeholder text.
func (*InputField) SetText ¶
func (i *InputField) SetText(text string) *InputField
SetText sets the current text of the input field.
type List ¶
type List struct { *Box // contains filtered or unexported fields }
List displays rows of items, each of which can be selected. List items can be shown as a single line or as two lines. They can be selected by pressing their assigned shortcut key, navigating to them and pressing Enter, or clicking on them with the mouse. The following key binds are available:
- Down arrow / tab: Move down one item.
- Up arrow / backtab: Move up one item.
- Home: Move to the first item.
- End: Move to the last item.
- Page down: Move down one page.
- Page up: Move up one page.
- Enter / Space: Select the current item.
- Right / left: Scroll horizontally. Only if the list is wider than the available space.
See List.SetChangedFunc for a way to be notified when the user navigates to a list item. See List.SetSelectedFunc for a way to be notified when a list item was selected.
See https://github.com/rivo/tview/wiki/List for an example.
func (*List) Draw ¶
func (l *List) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*List) FindItems ¶
func (l *List) FindItems(mainSearch, secondarySearch string, mustContainBoth, ignoreCase bool) (indices []int)
FindItems searches the main and secondary texts for the given strings and returns a list of item indices in which those strings are found. One of the two search strings may be empty, it will then be ignored. Indices are always returned in ascending order.
If mustContainBoth is set to true, mainSearch must be contained in the main text AND secondarySearch must be contained in the secondary text. If it is false, only one of the two search strings must be contained.
Set ignoreCase to true for case-insensitive search.
func (*List) GetCurrentItem ¶
GetCurrentItem returns the index of the currently selected list item, starting at 0 for the first item.
func (*List) GetItemCount ¶
GetItemCount returns the number of items in the list.
func (*List) GetItemText ¶
GetItemText returns an item's texts (main and secondary). Panics if the index is out of range.
func (*List) GetOffset ¶
GetOffset returns the number of items skipped while drawing, as well as the number of cells item text is moved to the left. See also SetOffset() for more information on these values.
func (*List) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*List) InsertItem ¶
func (l *List) InsertItem(index int, mainText, secondaryText string, shortcut rune, selected func()) *List
InsertItem adds a new item to the list at the specified index. An index of 0 will insert the item at the beginning, an index of 1 before the second item, and so on. An index of GetItemCount() or higher will insert the item at the end of the list. Negative indices are also allowed: An index of -1 will insert the item at the end of the list, an index of -2 before the last item, and so on. An index of -GetItemCount()-1 or lower will insert the item at the beginning.
An item has a main text which will be highlighted when selected. It also has a secondary text which is shown underneath the main text (if it is set to visible) but which may remain empty.
The shortcut is a key binding. If the specified rune is entered, the item is selected immediately. Set to 0 for no binding.
The "selected" callback will be invoked when the user selects the item. You may provide nil if no such callback is needed or if all events are handled through the selected callback set with SetSelectedFunc().
The currently selected item will shift its position accordingly. If the list was previously empty, a "changed" event is fired because the new item becomes selected.
func (*List) MouseHandler ¶
func (l *List) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*List) RemoveItem ¶
RemoveItem removes the item with the given index (starting at 0) from the list. If a negative index is provided, items are referred to from the back (-1 = last item, -2 = second-to-last item, and so on). Out of range indices are clamped to the beginning/end, i.e. unless the list is empty, an item is always removed.
The currently selected item is shifted accordingly. If it is the one that is removed, a "changed" event is fired, unless no items are left.
func (*List) SetChangedFunc ¶
func (l *List) SetChangedFunc(handler func(index int, mainText string, secondaryText string, shortcut rune)) *List
SetChangedFunc sets the function which is called when the user navigates to a list item. The function receives the item's index in the list of items (starting with 0), its main text, secondary text, and its shortcut rune.
This function is also called when the first item is added or when SetCurrentItem() is called.
func (*List) SetCurrentItem ¶
SetCurrentItem sets the currently selected item by its index, starting at 0 for the first item. If a negative index is provided, items are referred to from the back (-1 = last item, -2 = second-to-last item, and so on). Out of range indices are clamped to the beginning/end.
Calling this function triggers a "changed" event if the selection changes.
func (*List) SetDoneFunc ¶
SetDoneFunc sets a function which is called when the user presses the Escape key.
func (*List) SetHighlightFullLine ¶
SetHighlightFullLine sets a flag which determines whether the colored background of selected items spans the entire width of the view. If set to true, the highlight spans the entire view. If set to false, only the text of the selected item from beginning to end is highlighted.
func (*List) SetItemText ¶
SetItemText sets an item's main and secondary text. Panics if the index is out of range.
func (*List) SetMainTextColor ¶
SetMainTextColor sets the color of the items' main text.
func (*List) SetMainTextStyle ¶
SetMainTextStyle sets the style of the items' main text. Note that the background color is ignored in order not to override the background color of the list itself.
func (*List) SetOffset ¶
SetOffset sets the number of items to be skipped (vertically) as well as the number of cells skipped horizontally when the list is drawn. Note that one item corresponds to two rows when there are secondary texts. Shortcuts are always drawn.
These values may change when the list is drawn to ensure the currently selected item is visible and item texts move out of view. Users can also modify these values by interacting with the list.
func (*List) SetSecondaryTextColor ¶
SetSecondaryTextColor sets the color of the items' secondary text.
func (*List) SetSecondaryTextStyle ¶
SetSecondaryTextStyle sets the style of the items' secondary text. Note that the background color is ignored in order not to override the background color of the list itself.
func (*List) SetSelectedBackgroundColor ¶
SetSelectedBackgroundColor sets the background color of selected items.
func (*List) SetSelectedFocusOnly ¶
SetSelectedFocusOnly sets a flag which determines when the currently selected list item is highlighted. If set to true, selected items are only highlighted when the list has focus. If set to false, they are always highlighted.
func (*List) SetSelectedFunc ¶
SetSelectedFunc sets the function which is called when the user selects a list item by pressing Enter on the current selection. The function receives the item's index in the list of items (starting with 0), its main text, secondary text, and its shortcut rune.
func (*List) SetSelectedStyle ¶
SetSelectedStyle sets the style of the selected items. Note that the color of main text characters that are different from the main text color (e.g. color tags) is maintained.
func (*List) SetSelectedTextColor ¶
SetSelectedTextColor sets the text color of selected items. Note that the color of main text characters that are different from the main text color (e.g. style tags) is maintained.
func (*List) SetShortcutColor ¶
SetShortcutColor sets the color of the items' shortcut.
func (*List) SetShortcutStyle ¶
SetShortcutStyle sets the style of the items' shortcut. Note that the background color is ignored in order not to override the background color of the list itself.
func (*List) SetWrapAround ¶
SetWrapAround sets the flag that determines whether navigating the list will wrap around. That is, navigating downwards on the last item will move the selection to the first item (similarly in the other direction). If set to false, the selection won't change when navigating downwards on the last item or navigating upwards on the first item.
func (*List) ShowSecondaryText ¶
ShowSecondaryText determines whether or not to show secondary item texts.
type ListItem ¶
type ListItem struct { MainText string // The main text of the list item. SecondaryText string // A secondary text to be shown underneath the main text. Shortcut rune // The key to select the list item directly, 0 if there is no shortcut. Selected func() // The optional function which is called when the item is selected. // contains filtered or unexported fields }
listItem represents one item in a List.
type Modal ¶
type Modal struct { *Box // contains filtered or unexported fields }
Modal is a centered message window used to inform the user or prompt them for an immediate decision. It needs to have at least one button (added via Modal.AddButtons) or it will never disappear.
See https://github.com/rivo/tview/wiki/Modal for an example.
func (*Modal) AddButtons ¶
AddButtons adds buttons to the window. There must be at least one button and a "done" handler so the window can be closed again.
func (*Modal) ClearButtons ¶
ClearButtons removes all buttons from the window.
func (*Modal) Draw ¶
func (m *Modal) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Modal) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Modal) MouseHandler ¶
func (m *Modal) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Modal) SetBackgroundColor ¶
SetBackgroundColor sets the color of the modal frame background.
func (*Modal) SetButtonActivatedStyle ¶
SetButtonActivatedStyle sets the style of the buttons when they are focused.
func (*Modal) SetButtonBackgroundColor ¶
SetButtonBackgroundColor sets the background color of the buttons.
func (*Modal) SetButtonStyle ¶
SetButtonStyle sets the style of the buttons when they are not focused.
func (*Modal) SetButtonTextColor ¶
SetButtonTextColor sets the color of the button texts.
func (*Modal) SetDoneFunc ¶
SetDoneFunc sets a handler which is called when one of the buttons was pressed. It receives the index of the button as well as its label text. The handler is also called when the user presses the Escape key. The index will then be negative and the label text an empty string.
func (*Modal) SetText ¶
SetText sets the message text of the window. The text may contain line breaks but style tag states will not transfer to following lines. Note that words are wrapped, too, based on the final size of the window.
func (*Modal) SetTextColor ¶
SetTextColor sets the color of the message text.
type MouseAction ¶
type MouseAction int16
MouseAction indicates one of the actions the mouse is logically doing.
const ( MouseMove MouseAction = iota MouseLeftDown MouseLeftUp MouseLeftClick MouseLeftDoubleClick MouseMiddleDown MouseMiddleUp MouseMiddleClick MouseMiddleDoubleClick MouseRightDown MouseRightUp MouseRightClick MouseRightDoubleClick MouseScrollUp MouseScrollDown MouseScrollLeft MouseScrollRight )
Available mouse actions.
type Page ¶
type Page struct { Name string // The page's name. Item Primitive // The page's primitive. Resize bool // Whether or not to resize the page when it is drawn. Visible bool // Whether or not this page is visible. // contains filtered or unexported fields }
page represents one page of a Pages object.
type Pages ¶
type Pages struct { *Box // contains filtered or unexported fields }
Pages is a container for other primitives laid out on top of each other, overlapping or not. It is often used as the application's root primitive. It allows to easily switch the visibility of the contained primitives.
See https://github.com/rivo/tview/wiki/Pages for an example.
func (*Pages) AddAndSwitchToPage ¶
AddAndSwitchToPage calls AddPage(), then SwitchToPage() on that newly added page.
func (*Pages) AddPage ¶
AddPage adds a new page with the given name and primitive. If there was previously a page with the same name, it is overwritten. Leaving the name empty may cause conflicts in other functions so always specify a non-empty name.
Visible pages will be drawn in the order they were added (unless that order was changed in one of the other functions). If "resize" is set to true, the primitive will be set to the size available to the Pages primitive whenever the pages are drawn.
func (*Pages) Draw ¶
func (p *Pages) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Pages) GetFrontPage ¶
GetFrontPage returns the front-most visible page. If there are no visible pages, ("", nil) is returned.
func (*Pages) GetPageCount ¶
GetPageCount returns the number of pages currently stored in this object.
func (*Pages) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Pages) MouseHandler ¶
func (p *Pages) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Pages) RemovePage ¶
RemovePage removes the page with the given name. If that page was the only visible page, visibility is assigned to the last page.
func (*Pages) SendToBack ¶
SendToBack changes the order of the pages such that the page with the given name comes first, causing it to be drawn first with the next update (if visible).
func (*Pages) SendToFront ¶
SendToFront changes the order of the pages such that the page with the given name comes last, causing it to be drawn last with the next update (if visible).
func (*Pages) SetChangedFunc ¶
SetChangedFunc sets a handler which is called whenever the visibility or the order of any visible pages changes. This can be used to redraw the pages.
type Primitive ¶
type Primitive interface { // return the unique id for the instance Id() string // Draw draws this primitive onto the screen. Implementers can call the // screen's ShowCursor() function but should only do so when they have focus. // (They will need to keep track of this themselves.) Draw(screen tcell.Screen) // GetRect returns the current position of the primitive, x, y, width, and // height. GetRect() (int, int, int, int) // SetRect sets a new position of the primitive. SetRect(x, y, width, height int) // InputHandler returns a handler which receives key events when it has focus. // It is called by the Application class. // // A value of nil may also be returned, in which case this primitive cannot // receive focus and will not process any key events. // // The handler will receive the key event and a function that allows it to // set the focus to a different primitive, so that future key events are sent // to that primitive. // // The Application's Draw() function will be called automatically after the // handler returns. // // The Box class provides functionality to intercept keyboard input. If you // subclass from Box, it is recommended that you wrap your handler using // Box.WrapInputHandler() so you inherit that functionality. InputHandler() func(event *tcell.EventKey, setFocus func(p Primitive)) EventHandler() func(event tcell.Event, setFocus func(p Primitive)) // MouseHandler returns a handler which receives mouse events. // It is called by the Application class. // // A value of nil may also be returned to stop the downward propagation of // mouse events. // // The Box class provides functionality to intercept mouse events. If you // subclass from Box, it is recommended that you wrap your handler using // Box.WrapMouseHandler() so you inherit that functionality. MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive) // Focus is called by the application when the primitive receives focus. // Implementers may call delegate() to pass the focus on to another primitive. Focus(delegate func(p Primitive)) // HasFocus determines if the primitive has focus. This function must return // true also if one of this primitive's child elements has focus. HasFocus() bool GetLeafFocus() Primitive // Blur is called by the application when the primitive loses focus. Blur() // Mount is a longer term context for bringing a widget into scope Mount(context map[string]any) error // Unmount is the opposite of mount Unmount() error // IsMounted returns true if the primitive is mounted IsMounted() bool // Render is called when something in the future does so. Render() error // GetProps returns the primitive's prop GetProp(prop string) (any, bool) // GetProps returns the primitive's props GetProps() map[string]any // SetProp sets a primitive's props // It is up to the implementor to ensure correctness. SetProp(props string, value any) error // SetProps replaces the primitive's props // It is up to the implementor to ensure correctness. SetProps(newProps map[string]any) error // GetLabels returns the primitive's label GetLabel(label string) (string, bool) // GetLabels returns the primitive's labels GetLabels() map[string]string // SetLabel sets a primitive's labels // It is up to the implementor to ensure correctness. SetLabel(labels string, value string) error // SetLabels replaces the primitive's labels // It is up to the implementor to ensure correctness. SetLabels(newLabels map[string]string) error }
Primitive is the top-most interface for all graphical primitives.
type Table ¶
type Table struct { *Box // contains filtered or unexported fields }
Table visualizes two-dimensional data consisting of rows and columns. Each Table cell is defined via SetCell() by the TableCell type. They can be added dynamically to the table and changed any time.
The most compact display of a table is without borders. Each row will then occupy one row on screen and columns are separated by the rune defined via SetSeparator() (a space character by default).
When borders are turned on (via SetBorders()), each table cell is surrounded by lines. Therefore one table row will require two rows on screen.
Columns will use as much horizontal space as they need. You can constrain their size with the MaxWidth parameter of the TableCell type.
Fixed Columns ¶
You can define fixed rows and rolumns via SetFixed(). They will always stay in their place, even when the table is scrolled. Fixed rows are always the top rows. Fixed columns are always the leftmost columns.
Selections ¶
You can call SetSelectable() to set columns and/or rows to "selectable". If the flag is set only for columns, entire columns can be selected by the user. If it is set only for rows, entire rows can be selected. If both flags are set, individual cells can be selected. The "selected" handler set via SetSelectedFunc() is invoked when the user presses Enter on a selection.
Navigation ¶
If the table extends beyond the available space, it can be navigated with key bindings similar to Vim:
- h, left arrow: Move left by one column.
- l, right arrow: Move right by one column.
- j, down arrow: Move down by one row.
- k, up arrow: Move up by one row.
- g, home: Move to the top.
- G, end: Move to the bottom.
- Ctrl-F, page down: Move down by one page.
- Ctrl-B, page up: Move up by one page.
When there is no selection, this affects the entire table (except for fixed rows and columns). When there is a selection, the user moves the selection. The class will attempt to keep the selection from moving out of the screen.
Use SetInputCapture() to override or modify keyboard input.
See https://github.com/rivo/tview/wiki/Table for an example.
func (*Table) Draw ¶
func (t *Table) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*Table) GetCell ¶
GetCell returns the contents of the cell at the specified position. A valid TableCell object is always returned but it will be uninitialized if the cell was not previously set. Such an uninitialized object will not automatically be inserted. Therefore, repeated calls to this function may return different pointers for uninitialized cells.
func (*Table) GetColumnCount ¶
GetColumnCount returns the (maximum) number of columns in the table.
func (*Table) GetOffset ¶
GetOffset returns the current row and column offset. This indicates how many rows and columns the table is scrolled down and to the right.
func (*Table) GetRowCount ¶
GetRowCount returns the number of rows in the table.
func (*Table) GetSelectable ¶
GetSelectable returns what can be selected in a table. Refer to SetSelectable() for details.
func (*Table) GetSelection ¶
GetSelection returns the position of the current selection. If entire rows are selected, the column index is undefined. Likewise for entire columns.
func (*Table) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*Table) InsertColumn ¶
InsertColumn inserts a column before the column with the given index. Cells in the given column and to its right will be shifted to the right by one column. Rows that have fewer initialized cells than "column" will remain unchanged.
func (*Table) InsertRow ¶
InsertRow inserts a row before the row with the given index. Cells on the given row and below will be shifted to the bottom by one row. If "row" is equal or larger than the current number of rows, this function has no effect.
func (*Table) MouseHandler ¶
func (t *Table) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*Table) RemoveColumn ¶
RemoveColumn removes the column at the given position from the table. If there is no such column, this has no effect.
func (*Table) RemoveRow ¶
RemoveRow removes the row at the given position from the table. If there is no such row, this has no effect.
func (*Table) ScrollToBeginning ¶
ScrollToBeginning scrolls the table to the beginning to that the top left corner of the table is shown. Note that this position may be corrected if there is a selection.
func (*Table) ScrollToEnd ¶
ScrollToEnd scrolls the table to the beginning to that the bottom left corner of the table is shown. Adding more rows to the table will cause it to automatically scroll with the new data. Note that this position may be corrected if there is a selection.
func (*Table) Select ¶
Select sets the selected cell. Depending on the selection settings specified via SetSelectable(), this may be an entire row or column, or even ignored completely. The "selection changed" event is fired if such a callback is available (even if the selection ends up being the same as before and even if cells are not selectable).
func (*Table) SetBorders ¶
SetBorders sets whether or not each cell in the table is surrounded by a border.
func (*Table) SetBordersColor ¶
SetBordersColor sets the color of the cell borders.
func (*Table) SetCell ¶
SetCell sets the content of a cell the specified position. It is ok to directly instantiate a TableCell object. If the cell has content, at least the Text and Color fields should be set.
Note that setting cells in previously unknown rows and columns will automatically extend the internal table representation with empty TableCell objects, e.g. starting with a row of 100,000 will immediately create 100,000 empty rows.
To avoid unnecessary garbage collection, fill columns from left to right.
func (*Table) SetCellSimple ¶
SetCellSimple calls SetCell() with the given text, left-aligned, in white.
func (*Table) SetContent ¶
func (t *Table) SetContent(content TableContent) *Table
SetContent sets a new content type for this table. This allows you to back the table by a data structure of your own, for example one that cannot be fully held in memory. For details, see the TableContent interface documentation.
A value of nil will return the table to its default implementation where all of its table cells are kept in memory.
func (*Table) SetDoneFunc ¶
SetDoneFunc sets a handler which is called whenever the user presses the Escape, Tab, or Backtab key. If nothing is selected, it is also called when user presses the Enter key (because pressing Enter on a selection triggers the "selected" handler set via SetSelectedFunc()).
func (*Table) SetEvaluateAllRows ¶
SetEvaluateAllRows sets a flag which determines the rows to be evaluated when calculating the widths of the table's columns. When false, only visible rows are evaluated. When true, all rows in the table are evaluated.
Set this flag to true to avoid shifting column widths when the table is scrolled. (May come with a performance penalty for large tables.)
Use with caution on very large tables, especially those not backed by the default TableContent data structure.
func (*Table) SetFixed ¶
SetFixed sets the number of fixed rows and columns which are always visible even when the rest of the cells are scrolled out of view. Rows are always the top-most ones. Columns are always the left-most ones.
func (*Table) SetOffset ¶
SetOffset sets how many rows and columns should be skipped when drawing the table. This is useful for large tables that do not fit on the screen. Navigating a selection can change these values.
Fixed rows and columns are never skipped.
func (*Table) SetSelectable ¶
SetSelectable sets the flags which determine what can be selected in a table. There are three selection modi:
- rows = false, columns = false: Nothing can be selected.
- rows = true, columns = false: Rows can be selected.
- rows = false, columns = true: Columns can be selected.
- rows = true, columns = true: Individual cells can be selected.
func (*Table) SetSelectedFunc ¶
SetSelectedFunc sets a handler which is called whenever the user presses the Enter key on a selected cell/row/column. The handler receives the position of the selection and its cell contents. If entire rows are selected, the column index is undefined. Likewise for entire columns.
func (*Table) SetSelectedStyle ¶
SetSelectedStyle sets a specific style for selected cells. If no such style is set, per default, selected cells are inverted (i.e. their foreground and background colors are swapped).
To reset a previous setting to its default, make the following call:
table.SetSelectedStyle(tcell.Style{})
func (*Table) SetSelectionChangedFunc ¶
SetSelectionChangedFunc sets a handler which is called whenever the current selection changes. The handler receives the position of the new selection. If entire rows are selected, the column index is undefined. Likewise for entire columns.
func (*Table) SetSeparator ¶
SetSeparator sets the character used to fill the space between two neighboring cells. This is a space character ' ' per default but you may want to set it to Borders.Vertical (or any other rune) if the column separation should be more visible. If cell borders are activated, this is ignored.
Separators have the same color as borders.
func (*Table) SetWrapSelection ¶
SetWrapSelection determines whether a selection wraps vertically or horizontally when moved. Vertically wrapping selections will jump from the last selectable row to the first selectable row and vice versa. Horizontally wrapping selections will jump from the last selectable column to the first selectable column (on the next selectable row) or from the first selectable column to the last selectable column (on the previous selectable row). If set to false, the selection is not moved when it is already on the first/last selectable row/column.
The default is for both values to be false.
type TableCell ¶
type TableCell struct { // The reference object. Reference interface{} // The text to be displayed in the table cell. Text string // The alignment of the cell text. One of AlignLeft (default), AlignCenter, // or AlignRight. Align int // The maximum width of the cell in screen space. This is used to give a // column a maximum width. Any cell text whose screen width exceeds this width // is cut off. Set to 0 if there is no maximum width. MaxWidth int // If the total table width is less than the available width, this value is // used to add extra width to a column. See SetExpansion() for details. Expansion int // The color of the cell text. Color tcell.Color // The background color of the cell. BackgroundColor tcell.Color // If set to true, the BackgroundColor is not used and the cell will have // the background color of the table. Transparent bool // The style attributes of the cell. Attributes tcell.AttrMask // If set to true, this cell cannot be selected. NotSelectable bool // An optional handler for mouse clicks. This also fires if the cell is not // selectable. If true is returned, no additional "selected" event is fired // on selectable cells. Clicked func() bool // contains filtered or unexported fields }
TableCell represents one cell inside a Table. You can instantiate this type directly but all colors (background and text) will be set to their default which is black.
func NewTableCell ¶
NewTableCell returns a new table cell with sensible defaults. That is, left aligned text with the primary text color (see Styles) and a transparent background (using the background of the Table).
func (*TableCell) GetLastPosition ¶
GetLastPosition returns the position of the table cell the last time it was drawn on screen. If the cell is not on screen, the return values are undefined.
Because the Table class will attempt to keep selected cells on screen, this function is most useful in response to a "selected" event (see SetSelectedFunc()) or a "selectionChanged" event (see SetSelectionChangedFunc()).
func (*TableCell) GetReference ¶
func (c *TableCell) GetReference() interface{}
GetReference returns this cell's reference object.
func (*TableCell) SetAlign ¶
SetAlign sets the cell's text alignment, one of AlignLeft, AlignCenter, or AlignRight.
func (*TableCell) SetAttributes ¶
SetAttributes sets the cell's text attributes. You can combine different attributes using bitmask operations:
cell.SetAttributes(tcell.AttrUnderline | tcell.AttrBold)
func (*TableCell) SetBackgroundColor ¶
SetBackgroundColor sets the cell's background color. This will also cause the cell's Transparent flag to be set to "false".
func (*TableCell) SetClickedFunc ¶
SetClickedFunc sets a handler which fires when this cell is clicked. This is independent of whether the cell is selectable or not. But for selectable cells, if the function returns "true", the "selected" event is not fired.
func (*TableCell) SetExpansion ¶
SetExpansion sets the value by which the column of this cell expands if the available width for the table is more than the table width (prior to applying this expansion value). This is a proportional value. The amount of unused horizontal space is divided into widths to be added to each column. How much extra width a column receives depends on the expansion value: A value of 0 (the default) will not cause the column to increase in width. Other values are proportional, e.g. a value of 2 will cause a column to grow by twice the amount of a column with a value of 1.
Since this value affects an entire column, the maximum over all visible cells in that column is used.
This function panics if a negative value is provided.
func (*TableCell) SetMaxWidth ¶
SetMaxWidth sets maximum width of the cell in screen space. This is used to give a column a maximum width. Any cell text whose screen width exceeds this width is cut off. Set to 0 if there is no maximum width.
func (*TableCell) SetReference ¶
SetReference allows you to store a reference of any type in this cell. This will allow you to establish a mapping between the cell and your actual data.
func (*TableCell) SetSelectable ¶
SetSelectable sets whether or not this cell can be selected by the user.
func (*TableCell) SetStyle ¶
SetStyle sets the cell's style (foreground color, background color, and attributes) all at once.
func (*TableCell) SetTextColor ¶
SetTextColor sets the cell's text color.
func (*TableCell) SetTransparency ¶
SetTransparency sets the background transparency of this cell. A value of "true" will cause the cell to use the table's background color. A value of "false" will cause it to use its own background color.
type TableContent ¶
type TableContent interface { // Return the cell at the given position or nil if there is no cell. The // row and column arguments start at 0 and end at what GetRowCount() and // GetColumnCount() return, minus 1. GetCell(row, column int) *TableCell // Return the total number of rows in the table. GetRowCount() int // Return the total number of columns in the table. GetColumnCount() int // Set the cell at the given position to the provided cell. SetCell(row, column int, cell *TableCell) // Remove the row at the given position by shifting all following rows up // by one. Out of range positions may be ignored. RemoveRow(row int) // Remove the column at the given position by shifting all following columns // left by one. Out of range positions may be ignored. RemoveColumn(column int) // Insert a new empty row at the given position by shifting all rows at that // position and below down by one. Implementers may decide what to do with // out of range positions. InsertRow(row int) // Insert a new empty column at the given position by shifting all columns // at that position and to the right by one to the right. Implementers may // decide what to do with out of range positions. InsertColumn(column int) // Remove all table data. Clear() }
TableContent defines a Table's data. You may replace a Table's default implementation with your own using the Table.SetContent() function. This will allow you to turn Table into a view of your own data structure. The Table.Draw() function, which is called when the screen is updated, will then use the (read-only) functions of this interface to update the table. The write functions are only called when the corresponding functions of Table are called.
The interface's read-only functions are not called concurrently by the package (provided that users of the package don't call Table.Draw() in a separate goroutine, which would be uncommon and is not encouraged).
type TableContentReadOnly ¶
type TableContentReadOnly struct{}
TableContentReadOnly is an empty struct which implements the write operations of the TableContent interface. None of the implemented functions do anything. You can embed this struct into your own structs to free yourself from having to implement the empty write functions of TableContent. See demos/table/virtualtable for an example.
func (TableContentReadOnly) Clear ¶
func (t TableContentReadOnly) Clear()
Clear does not do anything.
func (TableContentReadOnly) InsertColumn ¶
func (t TableContentReadOnly) InsertColumn(column int)
InsertColumn does not do anything.
func (TableContentReadOnly) InsertRow ¶
func (t TableContentReadOnly) InsertRow(row int)
InsertRow does not do anything.
func (TableContentReadOnly) RemoveColumn ¶
func (t TableContentReadOnly) RemoveColumn(column int)
RemoveColumn does not do anything.
func (TableContentReadOnly) RemoveRow ¶
func (t TableContentReadOnly) RemoveRow(row int)
RemoveRow does not do anything.
func (TableContentReadOnly) SetCell ¶
func (t TableContentReadOnly) SetCell(row, column int, cell *TableCell)
SetCell does not do anything.
type TextArea ¶
type TextArea struct { *Box // contains filtered or unexported fields }
TextArea implements a simple text editor for multi-line text. Multi-color text is not supported. Word-wrapping is enabled by default but can be turned off or be changed to character-wrapping.
At this point, a text area cannot be added to a Form. This will be added in the future.
Navigation and Editing ¶
A text area is always in editing mode and no other mode exists. The following keys can be used to move the cursor (subject to what the user's terminal supports and how it is configured):
- Left arrow: Move left.
- Right arrow: Move right.
- Down arrow: Move down.
- Up arrow: Move up.
- Ctrl-A, Home: Move to the beginning of the current line.
- Ctrl-E, End: Move to the end of the current line.
- Ctrl-F, page down: Move down by one page.
- Ctrl-B, page up: Move up by one page.
- Alt-Up arrow: Scroll the page up, leaving the cursor in its position.
- Alt-Down arrow: Scroll the page down, leaving the cursor in its position.
- Alt-Left arrow: Scroll the page to the left, leaving the cursor in its position. Ignored if wrapping is enabled.
- Alt-Right arrow: Scroll the page to the right, leaving the cursor in its position. Ignored if wrapping is enabled.
- Alt-B, Ctrl-Left arrow: Jump to the beginning of the current or previous word.
- Alt-F, Ctrl-Right arrow: Jump to the end of the current or next word.
Words are defined according to Unicode Standard Annex #29. We skip any words that contain only spaces or punctuation.
Entering a character will insert it at the current cursor location. Subsequent characters are shifted accordingly. If the cursor is outside the visible area, any changes to the text will move it into the visible area. The following keys can also be used to modify the text:
- Enter: Insert a newline character (see NewLine).
- Tab: Insert a tab character (\t). It will be rendered like TabSize spaces. (This may eventually be changed to behave like regular tabs.)
- Ctrl-H, Backspace: Delete one character to the left of the cursor.
- Ctrl-D, Delete: Delete the character under the cursor (or the first character on the next line if the cursor is at the end of a line).
- Alt-Backspace: Delete the word to the left of the cursor.
- Ctrl-K: Delete everything under and to the right of the cursor until the next newline character.
- Ctrl-W: Delete from the start of the current word to the left of the cursor.
- Ctrl-U: Delete the current line, i.e. everything after the last newline character before the cursor up until the next newline character. This may span multiple visible rows if wrapping is enabled.
Text can be selected by moving the cursor while holding the Shift key, to the extent that this is supported by the user's terminal. The Ctrl-L key can be used to select the entire text. (Ctrl-A already binds to the "Home" key.)
When text is selected:
- Entering a character will replace the selected text with the new character.
- Backspace, delete, Ctrl-H, Ctrl-D: Delete the selected text.
- Ctrl-Q: Copy the selected text into the clipboard, unselect the text.
- Ctrl-X: Copy the selected text into the clipboard and delete it.
- Ctrl-V: Replace the selected text with the clipboard text. If no text is selected, the clipboard text will be inserted at the cursor location.
The Ctrl-Q key was chosen for the "copy" function because the Ctrl-C key is the default key to stop the application. If your application frees up the global Ctrl-C key and you want to bind it to the "copy to clipboard" function, you may use Box.SetInputCapture to override the Ctrl-Q key to implement copying to the clipboard. Note that using your terminal's / operating system's key bindings for copy+paste functionality may not have the expected effect as tview will not be able to handle these keys. Pasting text using your operating system's or terminal's own methods may be very slow as each character will be pasted individually.
The default clipboard is an internal text buffer, i.e. the operating system's clipboard is not used. If you want to implement your own clipboard (or make use of your operating system's clipboard), you can use TextArea.SetClipboard which provides all the functionality needed to implement your own clipboard.
The text area also supports Undo:
- Ctrl-Z: Undo the last change.
- Ctrl-Y: Redo the last Undo change.
Undo does not affect the clipboard.
If the mouse is enabled, the following actions are available:
- Left click: Move the cursor to the clicked position or to the end of the line if past the last character.
- Left double-click: Select the word under the cursor.
- Left click while holding the Shift key: Select text.
- Scroll wheel: Scroll the text.
func NewTextArea ¶
func NewTextArea() *TextArea
NewTextArea returns a new text area. Use TextArea.SetText to set the initial text.
func (*TextArea) Draw ¶
func (t *TextArea) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*TextArea) GetCursor ¶
GetCursor returns the current cursor position where the first character of the entire text is in row 0, column 0. If the user has selected text, the "from" values will refer to the beginning of the selection and the "to" values to the end of the selection (exclusive). They are the same if there is no selection.
func (*TextArea) GetFieldHeight ¶
GetFieldHeight returns this primitive's field height.
func (*TextArea) GetFieldWidth ¶
GetFieldWidth returns this primitive's field width.
func (*TextArea) GetLabelStyle ¶
func (t *TextArea) GetLabelStyle() tcell.Style
GetLabelStyle returns the style of the label.
func (*TextArea) GetLabelText ¶
GetLabelText returns the text to be displayed before the text area.
func (*TextArea) GetOffset ¶
GetOffset returns the text's offset, that is, the number of rows and columns skipped during drawing at the top or on the left, respectively. Note that the column offset is ignored if wrapping is enabled.
func (*TextArea) GetSelection ¶
GetSelection returns the currently selected text and its start and end positions within the entire text as a half-open interval. If the returned text is an empty string, the start and end positions are the same and can be interpreted as the cursor position.
Calling this function will result in string allocations as well as a search for text positions. This is expensive if the text has been edited extensively already. Use TextArea.HasSelection first if you are only interested in selected text.
func (*TextArea) GetText ¶
GetText returns the entire text of the text area. Note that this will newly allocate the entire text.
func (*TextArea) GetTextLength ¶
GetTextLength returns the string length of the text in the text area.
func (*TextArea) HasSelection ¶
HasSelection returns whether the selected text is non-empty.
func (*TextArea) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*TextArea) MouseHandler ¶
func (t *TextArea) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*TextArea) Replace ¶
Replace replaces a section of the text with new text. The start and end positions refer to index positions within the entire text string (as a half-open interval). They may be the same, in which case text is inserted at the given position. If the text is an empty string, text between start and end is deleted. Index positions will be shifted to line up with character boundaries.
Previous selections are cleared. The cursor will be located at the end of the replaced text. Scroll offsets will not be changed.
The effects of this function can be undone (and redone) by the user.
func (*TextArea) Select ¶
Select selects a section of the text. The start and end positions refer to index positions within the entire text string (as a half-open interval). They may be the same, in which case the cursor is placed at the given position. Any previous selection is removed. Scroll offsets will be preserved.
Index positions will be shifted to line up with character boundaries.
func (*TextArea) SetChangedFunc ¶
SetChangedFunc sets a handler which is called whenever the text of the text area has changed.
func (*TextArea) SetClipboard ¶
func (t *TextArea) SetClipboard(copyToClipboard func(string), pasteFromClipboard func() string) *TextArea
SetClipboard allows you to implement your own clipboard by providing a function that is called when the user wishes to store text in the clipboard (copyToClipboard) and a function that is called when the user wishes to retrieve text from the clipboard (pasteFromClipboard).
Providing nil values will cause the default clipboard implementation to be used.
func (*TextArea) SetDisabled ¶
SetDisabled sets whether or not the item is disabled / read-only.
func (*TextArea) SetFinishedFunc ¶
SetFinishedFunc sets a callback invoked when the user leaves this form item.
func (*TextArea) SetFormAttributes ¶
func (t *TextArea) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
SetFormAttributes sets attributes shared by all form items.
func (*TextArea) SetLabelStyle ¶
SetLabelStyle sets the style of the label.
func (*TextArea) SetLabelText ¶
SetLabelText sets the text to be displayed before the text area.
func (*TextArea) SetLabelWidth ¶
SetLabelWidth sets the screen width of the label. A value of 0 will cause the primitive to use the width of the label string.
func (*TextArea) SetMaxLength ¶
SetMaxLength sets the maximum number of bytes allowed in the text area. A value of 0 means there is no limit. If the text area currently contains more bytes than this, it may violate this constraint.
func (*TextArea) SetMovedFunc ¶
SetMovedFunc sets a handler which is called whenever the cursor position or the text selection has changed.
func (*TextArea) SetOffset ¶
SetOffset sets the text's offset, that is, the number of rows and columns skipped during drawing at the top or on the left, respectively. If wrapping is enabled, the column offset is ignored. These values may get adjusted automatically to ensure that some text is always visible.
func (*TextArea) SetPlaceholder ¶
SetPlaceholder sets the text to be displayed when the text area is empty.
func (*TextArea) SetPlaceholderStyle ¶
SetPlaceholderStyle sets the style of the placeholder text.
func (*TextArea) SetSelectedStyle ¶
SetSelectedStyle sets the style of the selected text.
func (*TextArea) SetSize ¶
SetSize sets the screen size of the input element of the text area. The input element is always located next to the label which is always located in the top left corner. If any of the values are 0 or larger than the available space, the available space will be used.
func (*TextArea) SetText ¶
SetText sets the text of the text area. All existing text is deleted and replaced with the new text. Any edits are discarded, no undos are available. This function is typically only used to initialize the text area with a text after it has been created. To clear the text area's text (again, no undos), provide an empty string.
If cursorAtTheEnd is false, the cursor is placed at the start of the text. If it is true, it is placed at the end of the text. For very long texts, placing the cursor at the end can be an expensive operation because the entire text needs to be parsed and laid out.
If you want to set text and preserve undo functionality, use TextArea.Replace instead.
func (*TextArea) SetTextStyle ¶
SetTextStyle sets the style of the text. Background colors different from the Box's background color may lead to unwanted artefacts.
func (*TextArea) SetWordWrap ¶
SetWordWrap sets the flag that causes lines that are longer than the available width to be wrapped onto the next line at spaces or after punctuation marks (according to Unicode Standard Annex #14). This flag is ignored if the flag set with TextArea.SetWrap is false. The text area's default is word-wrapping.
type TextView ¶
TextView is a component to display read-only text. While the text to be displayed can be changed or appended to, there is no functionality that allows the user to edit it. For that, TextArea should be used.
TextView implements the io.Writer interface so you can stream text to it, appending to the existing text. This does not trigger a redraw automatically but if a handler is installed via TextView.SetChangedFunc, you can cause it to be redrawn. (See TextView.SetChangedFunc for more details.)
Tab characters advance the text to the next tab stop at every TabSize screen columns, but only if the text is left-aligned. If the text is centered or right-aligned, tab characters are simply replaced with TabSize spaces.
Navigation ¶
If the text view is set to be scrollable (which is the default), text is kept in a buffer which may be larger than the screen and can be navigated with Vim-like key binds:
- h, left arrow: Move left.
- l, right arrow: Move right.
- j, down arrow: Move down.
- k, up arrow: Move up.
- g, home: Move to the top.
- G, end: Move to the bottom.
- Ctrl-F, page down: Move down by one page.
- Ctrl-B, page up: Move up by one page.
If the text is not scrollable, any text above the top visible line is discarded. This can be useful when you want to continuously stream text to the text view and only keep the latest lines.
Use Box.SetInputCapture to override or modify keyboard input.
Styles / Colors ¶
If dynamic colors are enabled via TextView.SetDynamicColors, text style can be changed dynamically by embedding color strings in square brackets. This works the same way as anywhere else. See the package documentation for more information.
Regions and Highlights ¶
If regions are enabled via TextView.SetRegions, you can define text regions within the text and assign region IDs to them. Text regions start with region tags. Region tags are square brackets that contain a region ID in double quotes, for example:
We define a ["rg"]region[""] here.
A text region ends with the next region tag. Tags with no region ID ([""]) don't start new regions. They can therefore be used to mark the end of a region. Region IDs must satisfy the following regular expression:
[a-zA-Z0-9_,;: \-\.]+
Regions can be highlighted by calling the TextView.Highlight function with one or more region IDs. This can be used to display search results, for example.
The TextView.ScrollToHighlight function can be used to jump to the currently highlighted region once when the text view is drawn the next time.
Large Texts ¶
The text view can handle reasonably large texts. It will parse the text as needed. For optimal performance, it is best to access or display parts of the text very far down only if really needed. For example, call TextView.ScrollToBeginning before adding the text to the text view, to avoid scrolling the text all the way to the bottom, forcing a full-text parse.
For even larger texts or "infinite" streams of text such as log files, you should consider using TextView.SetMaxLines to limit the number of lines in the text view buffer. Or disable the text view's scrollability altogether (using TextView.SetScrollable). This will cause the text view to discard lines moving out of the visible area at the top.
See https://github.com/rivo/tview/wiki/TextView for an example.
func (*TextView) BatchWriter ¶
func (t *TextView) BatchWriter() TextViewWriter
BatchWriter returns a new writer that can be used to write into the buffer but without Locking/Unlocking the buffer on every write, as TextView.Write and TextView.Clear do. The lock will be acquired once when BatchWriter is called, and will be released when the returned writer is closed. Example:
tv := tview.NewTextView() w := tv.BatchWriter() defer w.Close() w.Clear() fmt.Fprintln(w, "To sit in solemn silence") fmt.Fprintln(w, "on a dull, dark, dock") fmt.Println(tv.GetText(false))
Note that using the batch writer requires you to manage any issues that may arise from concurrency yourself. See package description for details on dealing with concurrency.
func (*TextView) Clear ¶
Clear removes all text from the buffer. This triggers the "changed" callback.
func (*TextView) Draw ¶
func (t *TextView) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*TextView) GetFieldHeight ¶
GetFieldHeight returns this primitive's field height.
func (*TextView) GetFieldWidth ¶
GetFieldWidth returns this primitive's field width.
func (*TextView) GetHighlights ¶
GetHighlights returns the IDs of all currently highlighted regions.
func (*TextView) GetLabelText ¶
GetLabelText returns the text to be displayed before the text view.
func (*TextView) GetOriginalLineCount ¶
GetOriginalLineCount returns the number of lines in the original text buffer, without applying any wrapping. This is an expensive call as it needs to iterate over the entire text.
func (*TextView) GetRegionText ¶
GetRegionText returns the text of the first region with the given ID. If dynamic colors are enabled, style tags are stripped from the text.
If the region does not exist or if regions are turned off, an empty string is returned.
This function can be expensive if the specified region is way beyond the visible area of the text view as the text needs to be parsed until the region can be found, or if the region does not contain any text.
func (*TextView) GetScrollOffset ¶
GetScrollOffset returns the number of rows and columns that are skipped at the top left corner when the text view has been scrolled.
func (*TextView) GetText ¶
GetText returns the current text of this text view. If "stripAllTags" is set to true, any region/style tags are stripped from the text.
func (*TextView) Highlight ¶
Highlight specifies which regions should be highlighted. If highlight toggling is set to true (see TextView.SetToggleHighlights), the highlight of the provided regions is toggled (i.e. highlighted regions are un-highlighted and vice versa). If toggling is set to false, the provided regions are highlighted and all other regions will not be highlighted (you may also provide nil to turn off all highlights).
For more information on regions, see class description. Empty region strings are ignored.
Text in highlighted regions will be drawn inverted, i.e. with their background and foreground colors swapped.
If toggling is set to false, clicking outside of any region will remove all highlights.
This function is expensive if a specified region is in a part of the text that has not yet been parsed.
func (*TextView) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*TextView) MouseHandler ¶
func (t *TextView) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*TextView) ScrollTo ¶
ScrollTo scrolls to the specified row and column (both starting with 0).
func (*TextView) ScrollToBeginning ¶
ScrollToBeginning scrolls to the top left corner of the text if the text view is scrollable.
func (*TextView) ScrollToEnd ¶
ScrollToEnd scrolls to the bottom left corner of the text if the text view is scrollable. Adding new rows to the end of the text view will cause it to scroll with the new data.
func (*TextView) ScrollToHighlight ¶
ScrollToHighlight will cause the visible area to be scrolled so that the highlighted regions appear in the visible area of the text view. This repositioning happens the next time the text view is drawn. It happens only once so you will need to call this function repeatedly to always keep highlighted regions in view.
Nothing happens if there are no highlighted regions or if the text view is not scrollable.
func (*TextView) SetBackgroundColor ¶
SetBackgroundColor overrides its implementation in Box to set the background color of this primitive. For backwards compatibility reasons, it also sets the background color of the main text element.
func (*TextView) SetChangedFunc ¶
SetChangedFunc sets a handler function which is called when the text of the text view has changed. This is useful when text is written to this io.Writer in a separate goroutine. Doing so does not automatically cause the screen to be refreshed so you may want to use the "changed" handler to redraw the screen.
Note that to avoid race conditions or deadlocks, there are a few rules you should follow:
- You can call Application.Draw from this handler.
- You can call TextView.HasFocus from this handler.
- During the execution of this handler, access to any other variables from this primitive or any other primitive must be queued using Application.QueueUpdate.
See package description for details on dealing with concurrency.
func (*TextView) SetDisabled ¶
SetDisabled sets whether or not the item is disabled / read-only.
func (*TextView) SetDoneFunc ¶
SetDoneFunc sets a handler which is called when the user presses on the following keys: Escape, Enter, Tab, Backtab. The key is passed to the handler.
func (*TextView) SetDynamicColors ¶
SetDynamicColors sets the flag that allows the text color to be changed dynamically with style tags. See class description for details.
func (*TextView) SetFinishedFunc ¶
SetFinishedFunc sets a callback invoked when the user leaves this form item.
func (*TextView) SetFormAttributes ¶
func (t *TextView) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) FormItem
SetFormAttributes sets attributes shared by all form items.
func (*TextView) SetHighlightedFunc ¶
SetHighlightedFunc sets a handler which is called when the list of currently highlighted regions change. It receives a list of region IDs which were newly highlighted, those that are not highlighted anymore, and those that remain highlighted.
Note that because regions are only determined when drawing the text view, this function can only fire for regions that have existed when the text view was last drawn.
func (*TextView) SetLabelText ¶
SetLabelText sets the text to be displayed before the text view.
func (*TextView) SetLabelWidth ¶
SetLabelWidth sets the screen width of the label. A value of 0 will cause the primitive to use the width of the label string.
func (*TextView) SetMaxLines ¶
SetMaxLines sets the maximum number of lines for this text view. Lines at the beginning of the text will be discarded when the text view is drawn, so as to remain below this value. Only lines above the first visible line are removed.
Broken-over lines via word/character wrapping are counted individually.
Note that TextView.GetText will return the shortened text.
A value of 0 (the default) will keep all lines in place.
func (*TextView) SetRegions ¶
SetRegions sets the flag that allows to define regions in the text. See class description for details.
func (*TextView) SetScrollable ¶
SetScrollable sets the flag that decides whether or not the text view is scrollable. If false, text that moves above the text view's top row will be permanently deleted.
func (*TextView) SetSize ¶
SetSize sets the screen size of the main text element of the text view. This element is always located next to the label which is always located in the top left corner. If any of the values are 0 or larger than the available space, the available space will be used.
func (*TextView) SetText ¶
SetText sets the text of this text view to the provided string. Previously contained text will be removed. As with writing to the text view io.Writer interface directly, this does not trigger an automatic redraw but it will trigger the "changed" callback if one is set.
func (*TextView) SetTextAlign ¶
SetTextAlign sets the text alignment within the text view. This must be either AlignLeft, AlignCenter, or AlignRight.
func (*TextView) SetTextColor ¶
SetTextColor sets the initial color of the text.
func (*TextView) SetTextStyle ¶
SetTextStyle sets the initial style of the text. This style's background color also determines the background color of the main text element.
func (*TextView) SetToggleHighlights ¶
SetToggleHighlights sets a flag to determine how regions are highlighted. When set to true, the TextView.Highlight function (or a mouse click) will toggle the provided/selected regions. When set to false, TextView.Highlight (or a mouse click) will simply highlight the provided regions.
func (*TextView) SetWordWrap ¶
SetWordWrap sets the flag that, if true and if the "wrap" flag is also true (see TextView.SetWrap), wraps according to [Unicode Standard Annex #14].
This flag is ignored if the "wrap" flag is false.
type TextViewWriter ¶
type TextViewWriter struct {
// contains filtered or unexported fields
}
TextViewWriter is a writer that can be used to write to and clear a TextView in batches, i.e. multiple writes with the lock only being acquired once. Don't instantiated this class directly but use the TextView's BatchWriter method instead.
func (TextViewWriter) Clear ¶
func (w TextViewWriter) Clear()
Clear removes all text from the buffer.
func (TextViewWriter) Close ¶
func (w TextViewWriter) Close() error
Close implements io.Closer for the writer by unlocking the original TextView.
func (TextViewWriter) HasFocus ¶
func (w TextViewWriter) HasFocus() bool
HasFocus returns whether the underlying TextView has focus.
type Theme ¶
type Theme struct { PrimitiveBackgroundColor tcell.Color // Main background color for primitives. ContrastBackgroundColor tcell.Color // Background color for contrasting elements. MoreContrastBackgroundColor tcell.Color // Background color for even more contrasting elements. BorderColor tcell.Color // Box borders. TitleColor tcell.Color // Box titles. GraphicsColor tcell.Color // Graphics. PrimaryTextColor tcell.Color // Primary text. SecondaryTextColor tcell.Color // Secondary text (e.g. labels). TertiaryTextColor tcell.Color // Tertiary text (e.g. subtitles, notes). InverseTextColor tcell.Color // Text on primary-colored backgrounds. ContrastSecondaryTextColor tcell.Color // Secondary text on ContrastBackgroundColor-colored backgrounds. }
Theme defines the colors used when primitives are initialized.
type TreeNode ¶
type TreeNode struct {
// contains filtered or unexported fields
}
TreeNode represents one node in a tree view.
func (*TreeNode) ClearChildren ¶
ClearChildren removes all child nodes from this node.
func (*TreeNode) CollapseAll ¶
CollapseAll collapses this node and all descendent nodes.
func (*TreeNode) GetChildren ¶
GetChildren returns this node's children.
func (*TreeNode) GetColor ¶
func (n *TreeNode) GetColor() tcell.Color
GetColor returns the node's color.
func (*TreeNode) GetLevel ¶
GetLevel returns the node's level within the hierarchy, where 0 corresponds to the root node, 1 corresponds to its children, and so on. This is only guaranteed to be up to date immediately after the tree that contains this node is drawn.
func (*TreeNode) GetReference ¶
func (n *TreeNode) GetReference() interface{}
GetReference returns this node's reference object.
func (*TreeNode) IsExpanded ¶
IsExpanded returns whether the child nodes of this node are visible.
func (*TreeNode) RemoveChild ¶
RemoveChild removes a child node from this node. If the child node cannot be found, nothing happens.
func (*TreeNode) SetChildren ¶
SetChildren sets this node's child nodes.
func (*TreeNode) SetExpanded ¶
SetExpanded sets whether or not this node's child nodes should be displayed.
func (*TreeNode) SetIndent ¶
SetIndent sets an additional indentation for this node's text. A value of 0 keeps the text as far left as possible with a minimum of line graphics. Any value greater than that moves the text to the right.
func (*TreeNode) SetReference ¶
SetReference allows you to store a reference of any type in this node. This will allow you to establish a mapping between the TreeView hierarchy and your internal tree structure.
func (*TreeNode) SetSelectable ¶
SetSelectable sets a flag indicating whether this node can be selected by the user.
func (*TreeNode) SetSelectedFunc ¶
SetSelectedFunc sets a function which is called when the user selects this node by hitting Enter when it is selected.
func (*TreeNode) Walk ¶
Walk traverses this node's subtree in depth-first, pre-order (NLR) order and calls the provided callback function on each traversed node (which includes this node) with the traversed node and its parent node (nil for this node). The callback returns whether traversal should continue with the traversed node's child nodes (true) or not recurse any deeper (false).
type TreeView ¶
type TreeView struct { *Box // contains filtered or unexported fields }
TreeView displays tree structures. A tree consists of nodes (TreeNode objects) where each node has zero or more child nodes and exactly one parent node (except for the root node which has no parent node).
The SetRoot() function is used to specify the root of the tree. Other nodes are added locally to the root node or any of its descendents. See the TreeNode documentation for details on node attributes. (You can use SetReference() to store a reference to nodes of your own tree structure.)
Nodes can be selected by calling SetCurrentNode(). The user can navigate the selection or the tree by using the following keys:
- j, down arrow, right arrow: Move (the selection) down by one node.
- k, up arrow, left arrow: Move (the selection) up by one node.
- g, home: Move (the selection) to the top.
- G, end: Move (the selection) to the bottom.
- J: Move (the selection) up one level.
- K: Move (the selection) down one level (if it is shown).
- Ctrl-F, page down: Move (the selection) down by one page.
- Ctrl-B, page up: Move (the selection) up by one page.
Selected nodes can trigger the "selected" callback when the user hits Enter.
The root node corresponds to level 0, its children correspond to level 1, their children to level 2, and so on. Per default, the first level that is displayed is 0, i.e. the root node. You can call SetTopLevel() to hide levels.
If graphics are turned on (see SetGraphics()), lines indicate the tree's hierarchy. Alternative (or additionally), you can set different prefixes using SetPrefixes() for different levels, for example to display hierarchical bullet point lists.
See https://github.com/rivo/tview/wiki/TreeView for an example.
func (*TreeView) Draw ¶
func (t *TreeView) Draw(screen tcell.Screen)
Draw draws this primitive onto the screen.
func (*TreeView) GetCurrentNode ¶
GetCurrentNode returns the currently selected node or nil of no node is currently selected.
func (*TreeView) GetRoot ¶
GetRoot returns the root node of the tree. If no such node was previously set, nil is returned.
func (*TreeView) GetRowCount ¶
GetRowCount returns the number of "visible" nodes. This includes nodes which fall outside the tree view's box but notably does not include the children of collapsed nodes. Note that this value is only up to date after the tree view has been drawn.
func (*TreeView) GetScrollOffset ¶
GetScrollOffset returns the number of node rows that were skipped at the top of the tree view. Note that when the user navigates the tree view, this value is only updated after the tree view has been redrawn.
func (*TreeView) InputHandler ¶
InputHandler returns the handler for this primitive.
func (*TreeView) MouseHandler ¶
func (t *TreeView) MouseHandler() func(action MouseAction, event *tcell.EventMouse, setFocus func(p Primitive)) (consumed bool, capture Primitive)
MouseHandler returns the mouse handler for this primitive.
func (*TreeView) Process ¶
func (t *TreeView) Process()
process builds the visible tree, populates the "nodes" slice, and processes pending selection actions.
func (*TreeView) SetAlign ¶
SetAlign controls the horizontal alignment of the node texts. If set to true, all texts except that of top-level nodes will be placed in the same column. If set to false, they will indent with the hierarchy.
func (*TreeView) SetChangedFunc ¶
SetChangedFunc sets the function which is called when the user navigates to a new tree node.
func (*TreeView) SetCurrentNode ¶
SetCurrentNode sets the currently selected node. Provide nil to clear all selections. Selected nodes must be visible and selectable, or else the selection will be changed to the top-most selectable and visible node.
This function does NOT trigger the "changed" callback.
func (*TreeView) SetDoneFunc ¶
SetDoneFunc sets a handler which is called whenever the user presses the Escape, Tab, or Backtab key.
func (*TreeView) SetGraphics ¶
SetGraphics sets a flag which determines whether or not line graphics are drawn to illustrate the tree's hierarchy.
func (*TreeView) SetGraphicsColor ¶
SetGraphicsColor sets the colors of the lines used to draw the tree structure.
func (*TreeView) SetPrefixes ¶
SetPrefixes defines the strings drawn before the nodes' texts. This is a slice of strings where each element corresponds to a node's hierarchy level, i.e. 0 for the root, 1 for the root's children, and so on (levels will cycle).
For example, to display a hierarchical list with bullet points:
treeView.SetGraphics(false). SetPrefixes([]string{"* ", "- ", "x "})
func (*TreeView) SetSelectedFunc ¶
SetSelectedFunc sets the function which is called when the user selects a node by pressing Enter on the current selection.
func (*TreeView) SetTopLevel ¶
SetTopLevel sets the first tree level that is visible with 0 referring to the root, 1 to the root's child nodes, and so on. Nodes above the top level are not displayed.