1// Copyright 2014 The gocui Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package main 6 7import ( 8 "fmt" 9 "log" 10 11 "github.com/jroimartin/gocui" 12) 13 14func main() { 15 g, err := gocui.NewGui(gocui.OutputNormal) 16 if err != nil { 17 log.Panicln(err) 18 } 19 defer g.Close() 20 21 g.SetManagerFunc(layout) 22 23 if err := keybindings(g); err != nil { 24 log.Panicln(err) 25 } 26 27 if err := g.MainLoop(); err != nil && err != gocui.ErrQuit { 28 log.Panicln(err) 29 } 30} 31 32func layout(g *gocui.Gui) error { 33 if v, err := g.SetView("v1", 10, 2, 30, 6); err != nil { 34 if err != gocui.ErrUnknownView { 35 return err 36 } 37 fmt.Fprintln(v, "View #1") 38 } 39 if v, err := g.SetView("v2", 20, 4, 40, 8); err != nil { 40 if err != gocui.ErrUnknownView { 41 return err 42 } 43 fmt.Fprintln(v, "View #2") 44 } 45 if v, err := g.SetView("v3", 30, 6, 50, 10); err != nil { 46 if err != gocui.ErrUnknownView { 47 return err 48 } 49 fmt.Fprintln(v, "View #3") 50 } 51 52 return nil 53} 54 55func keybindings(g *gocui.Gui) error { 56 err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, func(g *gocui.Gui, v *gocui.View) error { 57 return gocui.ErrQuit 58 }) 59 if err != nil { 60 return err 61 } 62 63 err = g.SetKeybinding("", '1', gocui.ModNone, func(g *gocui.Gui, v *gocui.View) error { 64 _, err := g.SetViewOnTop("v1") 65 return err 66 }) 67 if err != nil { 68 return err 69 } 70 71 err = g.SetKeybinding("", '2', gocui.ModNone, func(g *gocui.Gui, v *gocui.View) error { 72 _, err := g.SetViewOnTop("v2") 73 return err 74 }) 75 if err != nil { 76 return err 77 } 78 79 err = g.SetKeybinding("", '3', gocui.ModNone, func(g *gocui.Gui, v *gocui.View) error { 80 _, err := g.SetViewOnTop("v3") 81 return err 82 }) 83 if err != nil { 84 return err 85 } 86 87 return nil 88} 89