Terminal-based user interface toolkit
 
 
Go to file
Trevor Slocum e655768a65 Follow end of TextView buffer in presentation demo 2020-10-21 18:08:25 -07:00
demos Follow end of TextView buffer in presentation demo 2020-10-21 18:08:25 -07:00
.gitignore Update .gitignore 2020-10-06 13:26:47 -07:00
.gitlab-ci.yml chore: Add makefile and use in `gitlab-ci.yml` 2020-09-23 20:54:48 +02:00
CHANGELOG Display TextView scroll bar automatically by default 2020-10-21 09:36:23 -07:00
CONTRIBUTING.md Migrate docs to docs.rocketnine.space 2020-02-06 16:06:47 -08:00
DESIGN.md Support custom TabbedPanels tab styling 2020-10-16 13:06:09 -07:00
FORK.md Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
LICENSE Document TextView.GetText and GetRegionText fix 2020-07-13 14:47:10 -07:00
Makefile chore: Add makefile and use in `gitlab-ci.yml` 2020-09-23 20:54:48 +02:00
README.md Add FocusManager 2020-10-16 09:25:21 -07:00
ansi.go Bugfixes in ANSI escape sequence handling as well as TextView, fixes #320, fixes #344 2020-06-09 14:52:59 -07:00
application.go Support bracketed paste mode via tcell 2020-10-16 09:25:40 -07:00
borders.go Fork tview as cview 2019-12-30 15:18:26 -08:00
box.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
box_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
button.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
button_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
checkbox.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
checkbox_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
contextmenu.go Add FocusManager 2020-10-16 09:25:21 -07:00
cview.gif Fork tview as cview 2019-12-30 15:18:26 -08:00
doc.go Display TextView scroll bar automatically by default 2020-10-21 09:36:23 -07:00
doc_test.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
dropdown.go Replace FormItem.SetAttributes with individual methods 2020-10-09 08:37:54 -07:00
flex.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
focus.go Add FocusManager 2020-10-16 09:25:21 -07:00
form.go Allow hiding form items 2020-10-19 21:12:22 -07:00
frame.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
go.mod Reduce TextView reindexing when a scroll bar is visible 2020-10-21 10:27:53 -07:00
go.sum Reduce TextView reindexing when a scroll bar is visible 2020-10-21 10:27:53 -07:00
grid.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
inputfield.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
keys.go Upgrade tcell to v2 2020-08-30 08:37:17 -07:00
list.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
list_test.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
modal.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
mouse.go Print text using []byte instead of string, calculate string width using runewidth instead of uniseg 2020-10-06 13:16:37 -07:00
panels.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
primitive.go Allow hiding form items 2020-10-19 21:12:22 -07:00
progressbar.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
progressbar_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
semigraphics.go Upgrade tcell to v2 2020-08-30 08:37:17 -07:00
slider.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
styles.go Add Window and WindowManager 2020-09-24 08:09:55 -07:00
tabbedpanels.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
table.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
table_test.go Store ListItem text as []byte instead of string 2020-10-06 18:19:40 -07:00
textview.go Reduce TextView reindexing when a scroll bar is visible 2020-10-21 10:27:53 -07:00
textview_test.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
treeview.go Add SetVisible and GetVisible to all widgets 2020-10-19 19:05:03 -07:00
treeview_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
util.go Generalize tag stripping as StripTags 2020-10-19 09:55:07 -07:00
util_test.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
window.go Use SetRect to position Windows 2020-10-20 09:22:54 -07:00
windowmanager.go Use SetRect to position Windows 2020-10-20 09:22:54 -07:00

README.md

cview - Terminal-based user interface toolkit

GoDoc CI status Donate

This package is a fork of tview. See FORK.md for more information.

Warning: Breaking changes may be added to cview without bumping its major version. The largest changes have been made. Smaller breaking changes may continue to be made where backwards compatibility is not possible. Changes are listed in FORK.md.

Demo

ssh cview.rocketnine.space -p 20000

Recording of presentation demo

Additional examples are listed on pkg.go.dev.

Features

Available widgets:

  • Input forms (including input/password fields, drop-down selections, checkboxes, and buttons)
  • Navigable multi-color text views
  • Selectable lists with context menus
  • Modal dialogs
  • Horizontal and vertical progress bars
  • Grid, Flexbox and tabbed panel layouts
  • Sophisticated navigable table views
  • Flexible tree views
  • Draggable and resizable windows
  • An application wrapper

Widgets may be customized and extended to suit any application.

Mouse support is available.

Installation

go get gitlab.com/tslocum/cview

Hello World

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

package main

import (
	"gitlab.com/tslocum/cview"
)

func main() {
	app := cview.NewApplication()
	
	box := cview.NewTextView()
	box.SetBorder(true)
	box.SetTitle("Hello, world!")
	box.SetText("Lorem ipsum dolor sit amet")
	
	app.SetRoot(box, true)
	if err := app.Run(); err != nil {
		panic(err)
	}
}

Examples are available via godoc and in the "demos" subdirectory.

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

Documentation

Package documentation is available via godoc.

An introduction tutorial is also available.

Dependencies

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

Support

CONTRIBUTING.md describes how to share issues, suggestions and patches (pull requests).