From 3ee9b67c390efc5ea7e813df698c863e43cd33ef Mon Sep 17 00:00:00 2001 From: "suguo.yao" Date: Sat, 24 Sep 2022 11:55:10 +0800 Subject: [PATCH] init --- go.mod | 9 +++++++++ go.sum | 6 ++++++ main.go | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..c5fdd30 --- /dev/null +++ b/go.mod @@ -0,0 +1,9 @@ +module myschools.me/suguo/console-demo + +go 1.19 + +require ( + github.com/jroimartin/gocui v0.5.0 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/nsf/termbox-go v1.1.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..dd2361a --- /dev/null +++ b/go.sum @@ -0,0 +1,6 @@ +github.com/jroimartin/gocui v0.5.0 h1:DCZc97zY9dMnHXJSJLLmx9VqiEnAj0yh0eTNpuEtG/4= +github.com/jroimartin/gocui v0.5.0/go.mod h1:l7Hz8DoYoL6NoYnlnaX6XCNR62G7J5FfSW5jEogzaxE= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/nsf/termbox-go v1.1.1 h1:nksUPLCb73Q++DwbYUBEglYBRPZyoXJdrj5L+TkjyZY= +github.com/nsf/termbox-go v1.1.1/go.mod h1:T0cTdVuOwf7pHQNtfhnEbzHbcNyCEcVU4YPpouCbVxo= diff --git a/main.go b/main.go new file mode 100644 index 0000000..3f33fb7 --- /dev/null +++ b/main.go @@ -0,0 +1,63 @@ +package main + +import ( + "fmt" + + "github.com/jroimartin/gocui" +) + +func main() { + g, err := gocui.NewGui(gocui.OutputNormal) + if err != nil { + panic(err) + } + defer g.Close() + + g.SetManagerFunc(layout) + + if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil { + panic(err) + } + + if err := g.SetKeybinding("version", gocui.KeyEnter, gocui.ModNone, version); err != nil { + panic(err) + } + + if err := g.MainLoop(); err != nil && err != gocui.ErrQuit { + panic(err) + } + +} + +func version(g *gocui.Gui, v *gocui.View) error { + if v, err := g.SetView("version", 0, 0, 100, 30); err != nil { + if err != gocui.ErrUnknownView { + return err + } + fmt.Fprintln(v, "v0.1") + } + return nil +} + +func layout(g *gocui.Gui) error { + g.Cursor = true + g.Mouse = true + maxX, maxY := g.Size() + if v, err := g.SetView("hello", maxX/2-7, maxY/2, maxX/2+7, maxY/2+2); err != nil { + if err != gocui.ErrUnknownView { + return err + } + fmt.Fprintln(v, "Hello world!") + } + if v, err := g.SetView("version", -2, maxY-2, maxX, maxY); err != nil { + if err != gocui.ErrUnknownView { + return err + } + fmt.Fprintln(v, "\tversion 0.1") + } + return nil +} + +func quit(g *gocui.Gui, v *gocui.View) error { + return gocui.ErrQuit +}