Terminal-based user interface toolkit
Go to file
Trevor Slocum 62c7289449 Add deprecation notice to SetBorderPadding, GetBorderPadding and Pages 2020-10-26 11:21:25 -07:00
demos Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 2020-10-26 10:41:47 -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 Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 2020-10-26 10:41:47 -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 Update presentation demo recording 2020-10-21 18:40:16 -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 Add Application.Init 2020-10-22 18:13:06 -07:00
borders.go Fork tview as cview 2019-12-30 15:18:26 -08:00
box.go Add deprecation notice to SetBorderPadding, GetBorderPadding and Pages 2020-10-26 11:21:25 -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 Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 2020-10-26 10:41:47 -07:00
cview.svg Update presentation demo recording 2020-10-21 18:40:16 -07: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 Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 2020-10-26 10:41:47 -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 Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 2020-10-26 10:41:47 -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 deprecation notice to SetBorderPadding, GetBorderPadding and Pages 2020-10-26 11:21:25 -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 TabbedPanels.HasTab 2020-10-26 10:04:59 -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 Fix off-center target when resizing Window 2020-10-21 21:51:38 -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).