Terminal-based user interface toolkit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Trevor Slocum e8e2d12710 Remove code.rocketnine.space migration notice 10 months ago
demos Add code.rocketnine.space migration notice 10 months ago
.gitignore Update .gitignore 1 year ago
CHANGELOG Remove code.rocketnine.space migration notice 10 months ago
CONTRIBUTING.md Add code.rocketnine.space migration notice 10 months ago
DESIGN.md Add code.rocketnine.space migration notice 10 months ago
FORK.md Add code.rocketnine.space migration notice 10 months ago
LICENSE Fix strikethrough support 12 months ago
Makefile chore: Add makefile and use in `gitlab-ci.yml` 1 year ago
README.md Remove code.rocketnine.space migration notice 10 months ago
ansi.go Bugfixes in ANSI escape sequence handling as well as TextView, fixes #320, fixes #344 2 years ago
application.go Remove reference to resolved tcell bug 1 year ago
borders.go Fork tview as cview 2 years ago
box.go Document how to prevent screen artifacts when using SetBackgroundTransparent 1 year ago
box_test.go Add comments to tests 2 years ago
button.go Add SetVisible and GetVisible to all widgets 1 year ago
button_test.go Add comments to tests 2 years ago
checkbox.go Add SetVisible and GetVisible to all widgets 1 year ago
checkbox_test.go Add comments to tests 2 years ago
contextmenu.go Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 1 year ago
cview.svg Update presentation demo recording 1 year ago
doc.go Add code.rocketnine.space migration notice 10 months ago
doc_test.go Add code.rocketnine.space migration notice 10 months ago
dropdown.go Replace FormItem.SetAttributes with individual methods 1 year ago
flex.go Add SetVisible and GetVisible to all widgets 1 year ago
focus.go Add FocusManager 1 year ago
form.go Fix highlighting focused Form element 1 year ago
frame.go Add SetVisible and GetVisible to all widgets 1 year ago
go.mod Add code.rocketnine.space migration notice 10 months ago
go.sum Fix TextView.GetTextDimensions 10 months ago
grid.go Release v1.5.2 1 year ago
inputfield.go Add SetVisible and GetVisible to all widgets 1 year ago
keys.go Add code.rocketnine.space migration notice 10 months ago
list.go Add SetVisible and GetVisible to all widgets 1 year ago
list_test.go Remove return values from methods which return their primitive (breaks chaining) 1 year ago
modal.go Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 1 year ago
mouse.go Print text using []byte instead of string, calculate string width using runewidth instead of uniseg 1 year ago
panels.go Preserve order of panels when updating panel 1 year ago
primitive.go Allow hiding form items 1 year ago
progressbar.go Add SetVisible and GetVisible to all widgets 1 year ago
progressbar_test.go Add comments to tests 2 years ago
semigraphics.go Upgrade tcell to v2 1 year ago
slider.go Add SetVisible and GetVisible to all widgets 1 year ago
styles.go Add Window and WindowManager 1 year ago
tabbedpanels.go Fix incorrect TabbedPanels colors 1 year ago
table.go Add SetVisible and GetVisible to all widgets 1 year ago
table_test.go Store ListItem text as []byte instead of string 1 year ago
textview.go Fix TextView.GetTextDimensions 10 months ago
textview_test.go Remove return values from methods which return their primitive (breaks chaining) 1 year ago
treeview.go Add SetVisible and GetVisible to all widgets 1 year ago
treeview_test.go Add comments to tests 2 years ago
util.go Fix strikethrough support 12 months ago
util_test.go Remove return values from methods which return their primitive (breaks chaining) 1 year ago
window.go Use SetRect to position Windows 1 year ago
windowmanager.go Fix WindowManager background not being drawn 1 year ago

README.md

cview - Terminal-based user interface toolkit

GoDoc Donate

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

Demo

ssh cview.rocketnine.space -p 20000

Recording of presentation demo

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.

Applications

A list of applications powered by cview is available via pkg.go.dev.

Installation

go get code.rocketnine.space/tslocum/cview

Hello World

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

package main

import (
	"code.rocketnine.space/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).