Go to file
Roi Martin f78a0704f1 Minor fixes in Wrap
Print first character of the new line.
Control maxX and maxY to avoid invalid calls to View.SetRune.
Add error handling when calling View.SetRune.
2014-11-15 13:13:19 +01:00
_demos Wrap content if too long 2014-11-14 20:52:05 +01:00
.gitignore Initial commit 2013-12-27 21:36:26 +01:00
AUTHORS Add LICENSE/AUTHORS headers and files 2014-01-14 20:11:12 +01:00
LICENSE Add LICENSE/AUTHORS headers and files 2014-01-14 20:11:12 +01:00
README.md Update README.md 2014-01-28 09:36:57 +01:00
attribute.go Add API documentation 2014-01-19 17:03:52 +01:00
doc.go Add example to documentation 2014-01-19 17:23:11 +01:00
edit.go Refactoring of edit functions 2014-01-23 21:26:53 +01:00
gui.go Minor code clean-up 2014-10-18 15:47:24 +02:00
keybinding.go Add API documentation 2014-01-19 17:03:52 +01:00
view.go Minor fixes in Wrap 2014-11-15 13:13:19 +01:00

README.md

GOCUI - Go Console User Interface

Minimalist Go package aimed at creating Console User Interfaces.

Installation

go get github.com/jroimartin/gocui

Documentation

godoc github.com/jroimartin/gocui

Features

  • Minimalist API.
  • Views (the "windows" in the GUI) implement the interface io.Writer.
  • Support for overlapping views.
  • The GUI can be modified at runtime.
  • Global and view-level keybindings.
  • Edit mode.

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