From 75330717c292d8db44b3fea82f6485c02c4f5b71 Mon Sep 17 00:00:00 2001 From: Edouard Paris Date: Fri, 22 Mar 2019 18:14:43 +0100 Subject: [PATCH] ft views header --- ui/controller.go | 28 ++++++++++++++++++++++++++++ ui/ui.go | 5 +++++ ui/views/header.go | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 ui/views/header.go diff --git a/ui/controller.go b/ui/controller.go index 7c1c166..a938562 100644 --- a/ui/controller.go +++ b/ui/controller.go @@ -10,11 +10,17 @@ import ( type controller struct { app *app.App + header *views.Header channels *views.Channels } func (c *controller) layout(g *gocui.Gui) error { maxX, maxY := g.Size() + err := c.header.Set(g, 0, 0, maxX, 10) + if err != nil { + return err + } + return c.channels.Set(g, 0, maxY/8, maxX-1, maxY-1) } @@ -44,8 +50,29 @@ func cursorUp(g *gocui.Gui, v *gocui.View) error { return nil } +func (c *controller) Update(ctx context.Context) error { + info, err := c.app.Network.Info(ctx) + if err != nil { + return err + } + c.header.Update(info.Alias, "lnd", info.Version) + + channels, err := c.app.Network.ListChannels(ctx) + if err != nil { + return err + } + c.channels.Update(channels) + return nil +} + func (c *controller) Refresh(ctx context.Context) func(*gocui.Gui) error { return func(g *gocui.Gui) error { + info, err := c.app.Network.Info(ctx) + if err != nil { + return err + } + c.header.Update(info.Alias, "lnd", info.Version) + channels, err := c.app.Network.ListChannels(ctx) if err != nil { return err @@ -81,6 +108,7 @@ func (c *controller) setKeyBinding(g *gocui.Gui) error { func newController(app *app.App) *controller { return &controller{ app: app, + header: views.NewHeader(), channels: views.NewChannels(), } } diff --git a/ui/ui.go b/ui/ui.go index 3b1e93d..986691e 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -24,6 +24,11 @@ func Run(ctx context.Context, app *app.App) error { return err } + err = ctrl.Update(ctx) + if err != nil { + return err + } + g.Update(ctrl.Refresh(ctx)) err = g.MainLoop() diff --git a/ui/views/header.go b/ui/views/header.go new file mode 100644 index 0000000..929c822 --- /dev/null +++ b/ui/views/header.go @@ -0,0 +1,39 @@ +package views + +import ( + "fmt" + + "github.com/jroimartin/gocui" +) + +const ( + HEADER = "myheader" +) + +type Header struct { + alias string + kind string + version string +} + +func (h *Header) Set(g *gocui.Gui, x0, y0, x1, y1 int) error { + v, err := g.SetView(HEADER, x0, y0, x1, y0+2) + if err != nil { + if err != gocui.ErrUnknownView { + return err + } + } + v.Frame = false + fmt.Fprintln(v, fmt.Sprintf("[%s %s %s]", h.alias, h.kind, h.version)) + return nil +} + +func (h *Header) Update(alias, kind, version string) { + h.alias = alias + h.kind = kind + h.version = version +} + +func NewHeader() *Header { + return &Header{} +}