Terminal-based user interface toolkit
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
Trevor Slocum 62c7289449 Add deprecation notice to SetBorderPadding, GetBorderPadding and Pages 3 years ago
demos Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 3 years ago
.gitignore Update .gitignore 3 years ago
.gitlab-ci.yml chore: Add makefile and use in `gitlab-ci.yml` 3 years ago
CHANGELOG Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 3 years ago
CONTRIBUTING.md Migrate docs to docs.rocketnine.space 3 years ago
DESIGN.md Support custom TabbedPanels tab styling 3 years ago
FORK.md Add SetVisible and GetVisible to all widgets 3 years ago
LICENSE Document TextView.GetText and GetRegionText fix 3 years ago
Makefile chore: Add makefile and use in `gitlab-ci.yml` 3 years ago
README.md Update presentation demo recording 3 years ago
ansi.go Bugfixes in ANSI escape sequence handling as well as TextView, fixes #320, fixes #344 3 years ago
application.go Add Application.Init 3 years ago
borders.go Fork tview as cview 3 years ago
box.go Add deprecation notice to SetBorderPadding, GetBorderPadding and Pages 3 years ago
box_test.go Add comments to tests 3 years ago
button.go Add SetVisible and GetVisible to all widgets 3 years ago
button_test.go Add comments to tests 3 years ago
checkbox.go Add SetVisible and GetVisible to all widgets 3 years ago
checkbox_test.go Add comments to tests 3 years ago
contextmenu.go Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 3 years ago
cview.svg Update presentation demo recording 3 years ago
doc.go Display TextView scroll bar automatically by default 3 years ago
doc_test.go Remove return values from methods which return their primitive (breaks chaining) 3 years ago
dropdown.go Replace FormItem.SetAttributes with individual methods 3 years ago
flex.go Add SetVisible and GetVisible to all widgets 3 years ago
focus.go Add FocusManager 3 years ago
form.go Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 3 years ago
frame.go Add SetVisible and GetVisible to all widgets 3 years ago
go.mod Reduce TextView reindexing when a scroll bar is visible 3 years ago
go.sum Reduce TextView reindexing when a scroll bar is visible 3 years ago
grid.go Add SetVisible and GetVisible to all widgets 3 years ago
inputfield.go Add SetVisible and GetVisible to all widgets 3 years ago
keys.go Upgrade tcell to v2 3 years ago
list.go Add SetVisible and GetVisible to all widgets 3 years ago
list_test.go Remove return values from methods which return their primitive (breaks chaining) 3 years ago
modal.go Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 3 years ago
mouse.go Print text using []byte instead of string, calculate string width using runewidth instead of uniseg 3 years ago
panels.go Add deprecation notice to SetBorderPadding, GetBorderPadding and Pages 3 years ago
primitive.go Allow hiding form items 3 years ago
progressbar.go Add SetVisible and GetVisible to all widgets 3 years ago
progressbar_test.go Add comments to tests 3 years ago
semigraphics.go Upgrade tcell to v2 3 years ago
slider.go Add SetVisible and GetVisible to all widgets 3 years ago
styles.go Add Window and WindowManager 3 years ago
tabbedpanels.go Add TabbedPanels.HasTab 3 years ago
table.go Add SetVisible and GetVisible to all widgets 3 years ago
table_test.go Store ListItem text as []byte instead of string 3 years ago
textview.go Reduce TextView reindexing when a scroll bar is visible 3 years ago
textview_test.go Remove return values from methods which return their primitive (breaks chaining) 3 years ago
treeview.go Add SetVisible and GetVisible to all widgets 3 years ago
treeview_test.go Add comments to tests 3 years ago
util.go Generalize tag stripping as StripTags 3 years ago
util_test.go Remove return values from methods which return their primitive (breaks chaining) 3 years ago
window.go Use SetRect to position Windows 3 years ago
windowmanager.go Fix off-center target when resizing Window 3 years ago

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