Categorygithub.com/litmusautomation/tview
modulepackage
0.0.0-20240717191247-4d0fdb041a4f
Repository: https://github.com/litmusautomation/tview.git
Documentation: pkg.go.dev

# README

Rich Interactive Widgets for Terminal UIs

Godoc Reference Go Report

This Go package provides commonly needed components for terminal based user interfaces.

Screenshot

Among these components are:

  • Input forms (include input/password fields, drop-down selections, checkboxes, and buttons)
  • Navigable multi-color text views
  • Sophisticated navigable table views
  • Selectable lists
  • Grid, Flexbox and page layouts
  • Modal message windows
  • An application wrapper

They come with lots of customization options and can be easily extended to fit your needs.

Installation

go get github.com/rivo/tview

Hello World

This basic example creates a box titled "Hello, World!" and displays it in your terminal:

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)
	}
}

Check out the GitHub Wiki for more examples along with screenshots. Or try the examples in the "demos" subdirectory.

For a presentation highlighting this package, compile and run the program found in the "demos/presentation" subdirectory.

Documentation

Refer to https://godoc.org/github.com/rivo/tview for the package's documentation.

Dependencies

This package is based on github.com/gdamore/tcell (and its dependencies).

Your Feedback

Add your issue here on GitHub. Feel free to get in touch if you have any questions.

Version History

(There are no corresponding tags in the project. I only keep such a history in this README.)

  • v0.14 (2018-04-13)
    • Added an Escape() function which keep strings like color or region tags from being recognized as such.
    • Added ANSIIWriter() and TranslateANSII() which convert ANSII escape sequences to tview color tags.
  • v0.13 (2018-04-01)
    • Added background colors and text attributes to color tags.
  • v0.12 (2018-03-13)
    • Added "suspended mode" to Application.
  • v0.11 (2018-03-02)
    • Added a RemoveItem() function to Grid and Flex.
  • v0.10 (2018-02-22)
    • Direct access to the screen object through callback in Box (i.e. for all primitives).
  • v0.9 (2018-02-20)
    • Introduced Grid layout.
    • Direct access to the screen object through callbacks in Application.
  • v0.8 (2018-01-17)
    • Color tags can now be used almost everywhere.
  • v0.7 (2018-01-16)
    • Forms can now also have a horizontal layout.
  • v0.6 (2018-01-14)
    • All primitives can now intercept all key events when they have focus.
    • Key events can also be intercepted globally (changed to a more general, consistent handling)
  • v0.5 (2018-01-13)
    • TextView now has word wrapping and text alignment
  • v0.4 (2018-01-12)
    • TextView now accepts color tags with any W3C color (including RGB hex values).
    • Support for wide unicode characters.
  • v0.3 (2018-01-11)
    • Added masking to InputField and password entry to Form.
  • v0.2 (2018-01-10)
    • Added Styles variable with default colors for primitives.
    • Completed some missing InputField functions.
  • v0.1 (2018-01-06)
    • First Release.

# Packages

No description provided by the author

# Functions

ANSIIWriter returns an io.Writer which translates any ANSII escape codes written to it into tview color tags.
Escape escapes the given text such that color and/or region tags are not recognized and substituted by the print functions of this package.
NewApplication creates and returns a new application.
NewBox returns a Box without a border.
NewButton returns a new input field.
NewCheckbox returns a new input field.
NewDropDown returns a new drop-down.
NewDropDownOption returns a new option for dropdown.
NewFlex returns a new flexbox layout container with no primitives and its direction set to FlexColumn.
NewForm returns a new form.
NewFrame returns a new frame around the given primitive.
NewGrid returns a new grid-based layout container with no initial primitives.
NewInputField returns a new input field.
NewList returns a new form.
NewListBox returns a new form.
NewModal returns a new modal message window.
NewPages returns a new Pages object.
NewRadioButtons returns a new radio button primitive.
NewRadioOption returns a new option for RadioOption.
NewTable returns a new table.
NewTableCell returns a new table cell with sensible defaults.
NewTextView returns a new text view.
Print prints text onto the screen into the given box at (x,y,maxWidth,1), not exceeding that box.
PrintJoinedBorder prints a border graphics rune into the screen at the given position with the given color, joining it with any existing border graphics rune.
PrintSimple prints white text to the screen at the given position.
StringWidth returns the width of the given string needed to print it on screen.
TranslateANSII replaces ANSII escape sequences found in the provided string with tview's color tags and returns the resulting string.
WordWrap splits a text such that each resulting line does not exceed the given screen width.

# Constants

Text alignment within a box.
Text alignment within a box.
Text alignment within a box.
Configuration values.
Configuration values.

# Variables

DefaultFormFieldWidth is the default field screen width of form elements whose field width is flexible (0).
InputFieldFloat accepts floating-point numbers.
InputFieldInteger accepts integers.
InputFieldMaxLength returns an input field accept handler which accepts input strings up to a given length.
Styles defines various colors used when primitives are initialized.
TabSize is the number of spaces with which a tab character will be replaced.

# Structs

Application represents the top node of an application.
Box implements Primitive with a background and optional elements such as a border and a title.
Button is labeled box that triggers an action when selected.
Checkbox implements a simple box for boolean values which can be checked and unchecked.
DropDown implements a selection widget whose options become visible in a drop-down list when activated.
DropDownOption is one option that can be selected in a drop-down primitive.
Flex is a basic implementation of the Flexbox layout.
Form allows you to combine multiple one-line form elements into a vertical or horizontal layout.
Frame is a wrapper which adds a border around another primitive.
Grid is an implementation of a grid-based layout.
InputField is a one-line box (three lines if there is a title) where the user can enter text.
List displays rows of items, each of which can be selected.
ListBox displays rows of items, each of which can be selected.
Modal is a centered message window used to inform the user or prompt them for an immediate decision.
Pages is a container for other primitives often used as the application's root primitive.
RadioButtons implements a simple primitive for radio button selections.
RadioOption holds key and title for radio option.
Table visualizes two-dimensional data consisting of rows and columns.
TableCell represents one cell inside a Table.
TextView is a box which displays text.

# Interfaces

Focusable provides a method which determines if a primitive has focus.
FormItem is the interface all form items must implement to be able to be included in a form.
Primitive is the top-most interface for all graphical primitives.