Documentation ¶
Overview ¶
Package termui is a library designed for creating command line UI. For more info, goto http://github.com/gizak/termui
A simplest example:
package main import ui "github.com/gizak/termui" func main() { if err:=ui.Init(); err != nil { panic(err) } defer ui.Close() g := ui.NewGauge() g.Percent = 50 g.Width = 50 g.Border.Label = "Gauge" ui.Render(g) }
Index ¶
- Constants
- func Close()
- func Init() error
- func NewCol(span, offset int, widgets ...GridBufferer) *row
- func NewRow(cols ...*row) *row
- func Render(rs ...Bufferer)
- func SetTheme(newTheme ColorScheme)
- func TermHeight() int
- func TermWidth() int
- func UseTheme(th string)
- type Attribute
- type BarChart
- type Block
- type Bufferer
- type Canvas
- type ColorScheme
- type Gauge
- type Grid
- type GridBufferer
- type LineChart
- type List
- type Par
- type Point
- type Sparkline
- type Sparklines
Constants ¶
const BOTTOM_LEFT = '└'
const BOTTOM_RIGHT = '┘'
const HDASH = '┈'
const HORIZONTAL_LINE = '─'
const ORIGIN = '└'
const TOP_LEFT = '┌'
const TOP_RIGHT = '┐'
const VDASH = '┊'
const VERTICAL_LINE = '│'
Variables ¶
This section is empty.
Functions ¶
func Close ¶
func Close()
Close finalizes termui library, should be called after successful initialization when termui's functionality isn't required anymore.
func Init ¶
func Init() error
Init initializes termui library. This function should be called before any others. After initialization, the library must be finalized by 'Close' function.
func NewCol ¶
func NewCol(span, offset int, widgets ...GridBufferer) *row
NewCol accepts: widgets are LayoutBufferer or widgets is A NewRow. Note that if multiple widgets are provided, they will stack up in the col.
Types ¶
type BarChart ¶
type BarChart struct { Block BarColor Attribute TextColor Attribute NumColor Attribute Data []int DataLabels []string BarWidth int BarGap int // contains filtered or unexported fields }
BarChart creates multiple bars in a widget:
bc := termui.NewBarChart() data := []int{3, 2, 5, 3, 9, 5} bclabels := []string{"S0", "S1", "S2", "S3", "S4", "S5"} bc.Border.Label = "Bar Chart" bc.Data = data bc.Width = 26 bc.Height = 10 bc.DataLabels = bclabels bc.TextColor = termui.ColorGreen bc.BarColor = termui.ColorRed bc.NumColor = termui.ColorYellow
func NewBarChart ¶
func NewBarChart() *BarChart
NewBarChart returns a new *BarChart with current theme.
type Block ¶
type Block struct { X int Y int Border labeledBorder IsDisplay bool HasBorder bool BgColor Attribute Width int Height int PaddingTop int PaddingBottom int PaddingLeft int PaddingRight int // contains filtered or unexported fields }
Block is a base struct for all other upper level widgets, consider it as css: display:block. Normally you do not need to create it manually.
func NewBlock ¶
func NewBlock() *Block
NewBlock returns a *Block which inherits styles from current theme.
type Bufferer ¶
type Bufferer interface {
Buffer() []Point
}
Bufferer should be implemented by all renderable components.
type ColorScheme ¶
type ColorScheme struct { BodyBg Attribute BlockBg Attribute HasBorder bool BorderFg Attribute BorderBg Attribute BorderLabelTextFg Attribute BorderLabelTextBg Attribute ParTextFg Attribute ParTextBg Attribute SparklineLine Attribute SparklineTitle Attribute GaugeBar Attribute GaugePercent Attribute LineChartLine Attribute LineChartAxes Attribute ListItemFg Attribute ListItemBg Attribute BarChartBar Attribute BarChartText Attribute BarChartNum Attribute }
A ColorScheme represents the current look-and-feel of the dashboard.
type Gauge ¶
Gauge is a progress bar like widget. A simple example:
g := termui.NewGauge() g.Percent = 40 g.Width = 50 g.Height = 3 g.Border.Label = "Slim Gauge" g.BarColor = termui.ColorRed g.PercentColor = termui.ColorBlue
type Grid ¶
Grid implements 12 columns system. A simple example:
import ui "github.com/gizak/termui" // init and create widgets... // build ui.Body.AddRows( ui.NewRow( ui.NewCol(6, 0, widget0), ui.NewCol(6, 0, widget1)), ui.NewRow( ui.NewCol(3, 0, widget2), ui.NewCol(3, 0, widget30, widget31, widget32), ui.NewCol(6, 0, widget4))) // calculate layout ui.Body.Align() ui.Render(ui.Body)
var Body *Grid
Body corresponds to the entire terminal display region.
type GridBufferer ¶
GridBufferer introduces a Bufferer that can be manipulated by Grid.
type LineChart ¶
type LineChart struct { Block Data []float64 DataLabels []string // if unset, the data indices will be used Mode string // braille | dot DotStyle rune LineColor Attribute AxesColor Attribute // contains filtered or unexported fields }
LineChart has two modes: braille(default) and dot. Using braille gives 2x capicity as dot mode, because one braille char can represent two data points.
lc := termui.NewLineChart() lc.Border.Label = "braille-mode Line Chart" lc.Data = [1.2, 1.3, 1.5, 1.7, 1.5, 1.6, 1.8, 2.0] lc.Width = 50 lc.Height = 12 lc.AxesColor = termui.ColorWhite lc.LineColor = termui.ColorGreen | termui.AttrBold // termui.Render(lc)...
func NewLineChart ¶
func NewLineChart() *LineChart
NewLineChart returns a new LineChart with current theme.
type List ¶
type List struct { Block Items []string Overflow string ItemFgColor Attribute ItemBgColor Attribute }
List displays []string as its items, it has a Overflow option (default is "hidden"), when set to "hidden", the item exceeding List's width is truncated, but when set to "wrap", the overflowed text breaks into next line.
strs := []string{ "[0] github.com/gizak/termui", "[1] editbox.go", "[2] iterrupt.go", "[3] keyboard.go", "[4] output.go", "[5] random_out.go", "[6] dashboard.go", "[7] nsf/termbox-go"} ls := termui.NewList() ls.Items = strs ls.ItemFgColor = termui.ColorYellow ls.Border.Label = "List" ls.Height = 7 ls.Width = 25 ls.Y = 0
type Par ¶
Par displays a paragraph.
par := termui.NewPar("Simple Text") par.Height = 3 par.Width = 17 par.Border.Label = "Label"
type Sparkline ¶
type Sparkline struct { Data []int Height int Title string TitleColor Attribute LineColor Attribute // contains filtered or unexported fields }
Sparkline is like: ▅▆▂▂▅▇▂▂▃▆▆▆▅▃
data := []int{4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1} spl := termui.NewSparkline() spl.Data = data spl.Title = "Sparkline 0" spl.LineColor = termui.ColorGreen
func NewSparkline ¶
func NewSparkline() Sparkline
NewSparkline returns a unrenderable single sparkline that intended to be added into Sparklines.
type Sparklines ¶
Sparklines is a renderable widget which groups together the given sparklines.
spls := termui.NewSparklines(spl0,spl1,spl2) //... spls.Height = 2 spls.Width = 20
func NewSparklines ¶
func NewSparklines(ss ...Sparkline) *Sparklines
NewSparklines return a new *Spaklines with given Sparkline(s), you can always add a new Sparkline later.
func (*Sparklines) Add ¶
func (s *Sparklines) Add(sl Sparkline)
Add appends a given Sparkline to s *Sparklines.
func (*Sparklines) Buffer ¶
func (sl *Sparklines) Buffer() []Point
Buffer implements Bufferer interface.