experiments

All kinds of coding experiments
Log | Files | Refs | Submodules

gctest.go (843B)


      1 package main
      2 
      3 import (
      4 	"errors"
      5 	"fmt"
      6 	"log"
      7 
      8 	"github.com/awesome-gocui/gocui"
      9 )
     10 
     11 func main() {
     12 	g, err := gocui.NewGui(gocui.OutputNormal, true)
     13 	if err != nil {
     14 		log.Panicln(err)
     15 	}
     16 	defer g.Close()
     17 
     18 	g.SetManagerFunc(layout)
     19 
     20 	if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
     21 		log.Panicln(err)
     22 	}
     23 
     24 	if err := g.MainLoop(); err != nil && !errors.Is(err, gocui.ErrQuit) {
     25 		log.Panicln(err)
     26 	}
     27 }
     28 
     29 func layout(g *gocui.Gui) error {
     30 	maxX, maxY := g.Size()
     31 	if v, err := g.SetView("hello", maxX/2-7, maxY/2, maxX/2+7, maxY/2+2, 0); err != nil {
     32 		if !errors.Is(err, gocui.ErrUnknownView) {
     33 			return err
     34 		}
     35 
     36 		if _, err := g.SetCurrentView("hello"); err != nil {
     37 			return err
     38 		}
     39 
     40 		fmt.Fprintln(v, "Hello world!")
     41 	}
     42 
     43 	return nil
     44 }
     45 
     46 func quit(g *gocui.Gui, v *gocui.View) error {
     47 	return gocui.ErrQuit
     48 }