Terminal-based user interface toolkit
Go to file
Daniel P. Berrangé 697baf37a8 Add support for displaying text next to a checkbox
When building forms the label field is typically quite short, just one
or two words. For checkboxes it is often desirable to have a longer
descriptive piece of text. This is not practical to use as a label and
in many applications would more commonly be placed to the right of the
checkbox.

This adds support for a "SetMessage()" method which provides support
for text adjacent to the checkbox

As an example, this form shows one usage pattern, where the checkbox
is used to require case sensitive matching of the author name query.
In this case the checkbox label is an empty string, and the message
text is used instead:

 ╔════════════ User filtering ════════════════════╗
 ║                                                ║
 ║    Age:   ________                             ║
 ║                                                ║
 ║ Author:   ______________                       ║
 ║                                                ║
 ║           X Case sensitive                     ║
 ║                                                ║
 ║   Apply     Cancel                             ║
 ╚════════════════════════════════════════════════╝

Another pattern is where there are a series of checkboxes, all
related to the same attribute. Thus they have a common form
label but different message text

 ╔════════════ Request filtering ═════════════════╗
 ║                                                ║
 ║    State:    X Opened                          ║
 ║                                                ║
 ║              _ Closed                          ║
 ║                                                ║
 ║              _ Merged                          ║
 ║                                                ║
 ║              X Locked                          ║
 ║                                                ║
 ║   Apply     Cancel                             ║
 ╚════════════════════════════════════════════════╝

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-01-05 09:27:00 -08:00
.builds Fork tview as cview 2019-12-30 15:18:26 -08:00
demos Fix dropdown mouse capture behavior 2020-01-04 21:43:26 -08:00
.gitignore Fork tview as cview 2019-12-30 15:18:26 -08:00
CHANGELOG Fix dropdown mouse capture behavior 2020-01-04 21:43:26 -08:00
CONTRIBUTING.md Fork tview as cview 2019-12-30 15:18:26 -08:00
FORK.md Update README.md and FORK.md 2020-01-05 09:14:15 -08:00
LICENSE Fork tview as cview 2019-12-30 15:18:26 -08:00
README.md Update README.md and FORK.md 2020-01-05 09:14:15 -08:00
ansi.go Handle ansi code 39 and 49 2020-01-01 19:35:05 -08:00
application.go Fix dropdown mouse capture behavior 2020-01-04 21:43:26 -08:00
borders.go Fork tview as cview 2019-12-30 15:18:26 -08:00
box.go Refactor EventMouse 2020-01-01 20:24:34 -08:00
button.go Refactor EventMouse 2020-01-01 20:24:34 -08:00
checkbox.go Add support for displaying text next to a checkbox 2020-01-05 09:27:00 -08:00
cview.gif Fork tview as cview 2019-12-30 15:18:26 -08:00
doc.go Fork tview as cview 2019-12-30 15:18:26 -08:00
dropdown.go Fix dropdown mouse capture behavior 2020-01-04 21:43:26 -08:00
events.go Refactor EventMouse 2020-01-01 20:24:34 -08:00
flex.go Added mouse handling 2020-01-01 20:18:40 -08:00
focusable.go Fork tview as cview 2019-12-30 15:18:26 -08:00
form.go Added mouse handling 2020-01-01 20:18:40 -08:00
frame.go Added mouse handling 2020-01-01 20:18:40 -08:00
go.mod Update dependencies 2020-01-04 21:49:02 -08:00
go.sum Update dependencies 2020-01-04 21:49:02 -08:00
grid.go Added mouse handling 2020-01-01 20:18:40 -08:00
inputfield.go Refactor EventMouse 2020-01-01 20:24:34 -08:00
list.go Refactor EventMouse 2020-01-01 20:24:34 -08:00
modal.go Added mouse handling 2020-01-01 20:18:40 -08:00
pages.go Added mouse handling 2020-01-01 20:18:40 -08:00
primitive.go Refactor EventMouse 2020-01-01 20:24:34 -08:00
semigraphics.go Fork tview as cview 2019-12-30 15:18:26 -08:00
styles.go Fork tview as cview 2019-12-30 15:18:26 -08:00
table.go Fork tview as cview 2019-12-30 15:18:26 -08:00
textview.go Don't skip regions at end of line 2020-01-05 08:53:56 -08:00
treeview.go Fork tview as cview 2019-12-30 15:18:26 -08:00
util.go Update dependencies 2020-01-04 21:49:02 -08:00

README.md

cview

GoDoc builds.sr.ht status

Terminal-based user interface toolkit

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

Demo

Try the 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
  • Sophisticated navigable table views
  • Flexible tree views
  • Selectable lists
  • Grid, Flexbox and page layouts
  • Modal message windows
  • An application wrapper

Widgets may be customized and extended to suit any application.

Initial mouse support has been implemented.

Installation

go get git.sr.ht/~tslocum/cview

Hello World

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

package main

import (
	"git.sr.ht/~tslocum/cview"
)

func main() {
	box := cview.NewBox().SetBorder(true).SetTitle("Hello, world!")
	if err := cview.NewApplication().SetRoot(box, true).Run(); err != nil {
		panic(err)
	}
}

Examples are available 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 on godoc.

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

cview has two mailing lists: