Documentation ¶
Overview ¶
Package gocui allows to create console user interfaces.
Example:
func layout(g *gocui.Gui) error { maxX, maxY := g.Size() if v, err := g.SetView("center", maxX/2-10, maxY/2, maxX/2+10, maxY/2+2); err != nil { if err != gocui.ErrorUnkView { return err } fmt.Fprintln(v, "This is an example") } return nil } func quit(g *gocui.Gui, v *gocui.View) error { return gocui.ErrorQuit } func main() { var err error g := gocui.NewGui() if err := g.Init(); err != nil { log.Panicln(err) } defer g.Close() g.SetLayout(layout) if err := g.SetKeybinding("", gocui.KeyCtrlC, 0, quit); err != nil { log.Panicln(err) } err = g.MainLoop() if err != nil && err != gocui.ErrorQuit { log.Panicln(err) } }
Index ¶
- Constants
- Variables
- type Attribute
- type Gui
- func (g *Gui) Close()
- func (g *Gui) CurrentView() *View
- func (g *Gui) DeleteView(name string) error
- func (g *Gui) Flush() error
- func (g *Gui) Init() error
- func (g *Gui) MainLoop() error
- func (g *Gui) Rune(x, y int) (rune, error)
- func (g *Gui) SetCurrentView(name string) error
- func (g *Gui) SetKeybinding(viewname string, key interface{}, mod Modifier, h KeybindingHandler) error
- func (g *Gui) SetLayout(layout func(*Gui) error)
- func (g *Gui) SetRune(x, y int, ch rune) error
- func (g *Gui) SetView(name string, x0, y0, x1, y1 int) (*View, error)
- func (g *Gui) Size() (x, y int)
- func (g *Gui) View(name string) *View
- type Key
- type KeybindingHandler
- type Modifier
- type View
- func (v *View) Clear()
- func (v *View) Cursor() (x, y int)
- func (v *View) Line(y int) (string, error)
- func (v *View) Name() string
- func (v *View) Origin() (x, y int)
- func (v *View) SetCursor(x, y int) error
- func (v *View) SetOrigin(x, y int) error
- func (v *View) Size() (x, y int)
- func (v *View) Word(x, y int) (string, error)
- func (v *View) Write(p []byte) (n int, err error)
Constants ¶
const ( ColorDefault Attribute = Attribute(termbox.ColorDefault) ColorBlack = Attribute(termbox.ColorBlack) ColorRed = Attribute(termbox.ColorRed) ColorGreen = Attribute(termbox.ColorGreen) ColorYellow = Attribute(termbox.ColorYellow) ColorBlue = Attribute(termbox.ColorBlue) ColorMagenta = Attribute(termbox.ColorMagenta) ColorCyan = Attribute(termbox.ColorCyan) ColorWhite = Attribute(termbox.ColorWhite) )
Color attributes.
const ( AttrBold Attribute = Attribute(termbox.AttrBold) AttrUnderline = Attribute(termbox.AttrUnderline) AttrReverse = Attribute(termbox.AttrReverse) )
Text style attributes.
const ( KeyF1 Key = Key(termbox.KeyF1) KeyF2 = Key(termbox.KeyF2) KeyF3 = Key(termbox.KeyF3) KeyF4 = Key(termbox.KeyF4) KeyF5 = Key(termbox.KeyF5) KeyF6 = Key(termbox.KeyF6) KeyF7 = Key(termbox.KeyF7) KeyF8 = Key(termbox.KeyF8) KeyF9 = Key(termbox.KeyF9) KeyF10 = Key(termbox.KeyF10) KeyF11 = Key(termbox.KeyF11) KeyF12 = Key(termbox.KeyF12) KeyInsert = Key(termbox.KeyInsert) KeyDelete = Key(termbox.KeyDelete) KeyHome = Key(termbox.KeyHome) KeyEnd = Key(termbox.KeyEnd) KeyPgup = Key(termbox.KeyPgup) KeyPgdn = Key(termbox.KeyPgdn) KeyArrowUp = Key(termbox.KeyArrowUp) KeyArrowDown = Key(termbox.KeyArrowDown) KeyArrowLeft = Key(termbox.KeyArrowLeft) KeyArrowRight = Key(termbox.KeyArrowRight) )
Special keys.
const ( KeyCtrlTilde Key = Key(termbox.KeyCtrlTilde) KeyCtrl2 = Key(termbox.KeyCtrl2) KeyCtrlSpace = Key(termbox.KeyCtrlSpace) KeyCtrlA = Key(termbox.KeyCtrlA) KeyCtrlB = Key(termbox.KeyCtrlB) KeyCtrlC = Key(termbox.KeyCtrlC) KeyCtrlD = Key(termbox.KeyCtrlD) KeyCtrlE = Key(termbox.KeyCtrlE) KeyCtrlF = Key(termbox.KeyCtrlF) KeyCtrlG = Key(termbox.KeyCtrlG) KeyBackspace = Key(termbox.KeyBackspace) KeyCtrlH = Key(termbox.KeyCtrlH) KeyTab = Key(termbox.KeyTab) KeyCtrlI = Key(termbox.KeyCtrlI) KeyCtrlJ = Key(termbox.KeyCtrlJ) KeyCtrlK = Key(termbox.KeyCtrlK) KeyCtrlL = Key(termbox.KeyCtrlL) KeyEnter = Key(termbox.KeyEnter) KeyCtrlM = Key(termbox.KeyCtrlM) KeyCtrlN = Key(termbox.KeyCtrlN) KeyCtrlO = Key(termbox.KeyCtrlO) KeyCtrlP = Key(termbox.KeyCtrlP) KeyCtrlQ = Key(termbox.KeyCtrlQ) KeyCtrlR = Key(termbox.KeyCtrlR) KeyCtrlS = Key(termbox.KeyCtrlS) KeyCtrlT = Key(termbox.KeyCtrlT) KeyCtrlU = Key(termbox.KeyCtrlU) KeyCtrlV = Key(termbox.KeyCtrlV) KeyCtrlW = Key(termbox.KeyCtrlW) KeyCtrlX = Key(termbox.KeyCtrlX) KeyCtrlY = Key(termbox.KeyCtrlY) KeyCtrlZ = Key(termbox.KeyCtrlZ) KeyEsc = Key(termbox.KeyEsc) KeyCtrlLsqBracket = Key(termbox.KeyCtrlLsqBracket) KeyCtrl3 = Key(termbox.KeyCtrl3) KeyCtrl4 = Key(termbox.KeyCtrl4) KeyCtrlBackslash = Key(termbox.KeyCtrlBackslash) KeyCtrl5 = Key(termbox.KeyCtrl5) KeyCtrlRsqBracket = Key(termbox.KeyCtrlRsqBracket) KeyCtrl6 = Key(termbox.KeyCtrl6) KeyCtrl7 = Key(termbox.KeyCtrl7) KeyCtrlSlash = Key(termbox.KeyCtrlSlash) KeyCtrlUnderscore = Key(termbox.KeyCtrlUnderscore) KeySpace = Key(termbox.KeySpace) KeyBackspace2 = Key(termbox.KeyBackspace2) KeyCtrl8 = Key(termbox.KeyCtrl8) )
Keys combinations.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type Attribute ¶
type Attribute termbox.Attribute
Attributes can be combined using bitwise OR (|). Note that it is not possible to combine multiple color attributes.
type Gui ¶
type Gui struct {
// BgColor and FgColor allow to configure the background and foreground
// colors of the GUI.
BgColor, FgColor Attribute
// SelBgColor and SelFgColor are used to configure the background and
// foreground colors of the selected line, when it is highlighted.
SelBgColor, SelFgColor Attribute
// If ShowCursor is true then the cursor is enabled.
ShowCursor bool
// contains filtered or unexported fields
}
Gui represents the whole User Interface, including the views, layouts and keybindings.
func (*Gui) Close ¶
func (g *Gui) Close()
Close finalizes the library. It should be called after a successful initialization and when gocui is not needed anymore.
func (*Gui) CurrentView ¶
CurrentView returns the currently focused view, or nil if no view owns the focus.
func (*Gui) DeleteView ¶
DeleteView deletes a view by name.
func (*Gui) Init ¶
Init initializes the library. This function must be called before any other functions.
func (*Gui) MainLoop ¶
MainLoop runs the main loop until an error is returned. A successful finish should return ErrorQuit.
func (*Gui) Rune ¶
Rune returns the rune contained in the cell at the given position. It checks if the position is valid.
func (*Gui) SetCurrentView ¶
SetCurrentView gives the focus to a given view.
func (*Gui) SetKeybinding ¶
func (g *Gui) SetKeybinding(viewname string, key interface{}, mod Modifier, h KeybindingHandler) error
SetKeybinding creates a new keybinding. If viewname equals to "" (empty string) then the keybinding will apply to all views. key must be a rune or a Key.
func (*Gui) SetLayout ¶
SetLayout sets the current layout. A layout is a function that will be called everytime the gui is re-drawed, it must contain the base views and its initializations.
func (*Gui) SetRune ¶
SetRune writes a rune at the given point, relative to the top-left corner of the terminal. It checks if the position is valid and applies the gui's colors.
func (*Gui) SetView ¶
SetView creates a new view with its top-left corner at (x0, y0) and the bottom-right one at (x1, y1). If a view with the same name already exists, its dimensions are updated; otherwise, the error ErrorUnkView is returned, which allows to assert if the View must be initialized. It checks if the position is valid.
type KeybindingHandler ¶
KeybindingHandlers represent the actions linked to keybindings. The handler is called when a key-press event satisfies a configured keybinding.
type Modifier ¶
type Modifier termbox.Modifier
Modifiers allow to define special keys combinations. They can be used in combination with Keys or Runes when a new keybinding is defined.
type View ¶
type View struct { // If Editable is true, keystrokes will be added to the view's internal // buffer at the cursor position. Editable bool // If Highlight is true, Sel{Bg,Fg}Colors will be used // for the line under the cursor position. Highlight bool // contains filtered or unexported fields }
A View is a window. It maintains its own internal buffer and cursor position.
func (*View) Line ¶
Line returns a string with the line of the view's internal buffer at the position corresponding to the point (x, y).
func (*View) SetCursor ¶
SetCursor sets the cursor position of the view at the given point, relative to the view. It checks if the position is valid.
func (*View) SetOrigin ¶
SetOrigin sets the origin position of the view's internal buffer, so the buffer starts to be printed from this point, which means that it is linked with the origin point of view. It can be used to implement Horizontal and Vertical scrolling with just incrementing or decrementing ox and oy.
func (*View) Word ¶
Word returns a string with the word of the view's internal buffer at the position corresponding to the point (x, y).