Add doc. Check if name is "" in Gui.SetView

This commit is contained in:
Roi Martin (@nibble_ds) 2014-01-21 07:59:53 +01:00
parent 9726137f3b
commit 8b911edb5a

21
gui.go
View File

@ -28,9 +28,16 @@ type Gui struct {
keybindings []*keybinding keybindings []*keybinding
maxX, maxY int maxX, maxY int
BgColor, FgColor Attribute // 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 SelBgColor, SelFgColor Attribute
ShowCursor bool
// If ShowCursor is true then the cursor is enabled.
ShowCursor bool
} }
// NewGui returns a new Gui object. // NewGui returns a new Gui object.
@ -92,6 +99,9 @@ func (g *Gui) SetView(name string, x0, y0, x1, y1 int) (*View, error) {
if x0 >= x1 || y0 >= y1 { if x0 >= x1 || y0 >= y1 {
return nil, errors.New("invalid dimensions") return nil, errors.New("invalid dimensions")
} }
if name == "" {
return nil, errors.New("invalid name")
}
if v := g.View(name); v != nil { if v := g.View(name); v != nil {
v.x0 = x0 v.x0 = x0
@ -426,7 +436,8 @@ func (g *Gui) onKey(ev *termbox.Event) error {
func (g *Gui) handleEdit(v *View, ev *termbox.Event) error { func (g *Gui) handleEdit(v *View, ev *termbox.Event) error {
maxX, maxY := v.Size() maxX, maxY := v.Size()
if ev.Ch != 0 && ev.Mod == 0 { switch {
case ev.Ch != 0 && ev.Mod == 0:
ptr := v.bufferPtr(v.ox+v.cx, v.oy+v.cy) ptr := v.bufferPtr(v.ox+v.cx, v.oy+v.cy)
*ptr = ev.Ch *ptr = ev.Ch
if v.cx == maxX-1 { if v.cx == maxX-1 {
@ -438,7 +449,7 @@ func (g *Gui) handleEdit(v *View, ev *termbox.Event) error {
return err return err
} }
} }
} else if ev.Key == termbox.KeySpace { case ev.Key == termbox.KeySpace:
ptr := v.bufferPtr(v.ox+v.cx, v.oy+v.cy) ptr := v.bufferPtr(v.ox+v.cx, v.oy+v.cy)
*ptr = ' ' *ptr = ' '
if v.cx == maxX-1 { if v.cx == maxX-1 {
@ -450,7 +461,7 @@ func (g *Gui) handleEdit(v *View, ev *termbox.Event) error {
return err return err
} }
} }
} else if ev.Key == termbox.KeyEnter { case ev.Key == termbox.KeyEnter:
if v.cy == maxY-1 { if v.cy == maxY-1 {
if err := v.SetOrigin(0, v.oy+1); err != nil { if err := v.SetOrigin(0, v.oy+1); err != nil {
return err return err