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.
