controller: F2 Menu

pull/10/head
Edouard Paris 5 years ago
parent 9584959656
commit 7099391f78

@ -161,6 +161,40 @@ func (c *controller) Help(g *gocui.Gui, v *gocui.View) error {
return nil
}
func (c *controller) Menu(g *gocui.Gui, v *gocui.View) error {
maxX, maxY := g.Size()
if v.Name() == c.views.Help.Name() {
return nil
}
if v.Name() != c.views.Menu.Name() {
err := c.views.Menu.Set(g, 0, 6, 10, maxY)
if err != nil {
return err
}
err = c.views.Main.Set(g, 11, 6, maxX-1, maxY)
if err != nil {
return err
}
_, err = g.SetCurrentView(c.views.Menu.Name())
return err
}
err := c.views.Menu.Delete(g)
if err != nil {
return err
}
if c.views.Main != nil {
_, err := g.SetCurrentView(c.views.Main.Name())
return err
}
return nil
}
func (c *controller) OnEnter(g *gocui.Gui, v *gocui.View) error {
maxX, maxY := g.Size()
view := c.views.Get(v)
@ -170,19 +204,23 @@ func (c *controller) OnEnter(g *gocui.Gui, v *gocui.View) error {
switch view.Name() {
case views.CHANNELS:
c.views.SetPrevious(view)
index := c.views.Channels.Index()
err := c.models.SetCurrentChannel(context.Background(), index)
if err != nil {
return err
}
c.views.SetPrevious(view)
err = c.views.Channel.Set(g, 0, 6, maxX-1, maxY)
if err != nil {
return err
}
c.views.Main = c.views.Channel
_, err = g.SetCurrentView(c.views.Channel.Name())
return err
if err != nil {
return err
}
case views.CHANNEL:
err := c.views.Channel.Delete(g)
@ -191,7 +229,13 @@ func (c *controller) OnEnter(g *gocui.Gui, v *gocui.View) error {
}
if c.views.Previous != nil {
_, err := g.SetCurrentView(c.views.Previous.Name())
c.views.Main = c.views.Previous
err := c.views.Previous.Set(g, 0, 6, maxX-1, maxY)
if err != nil {
return err
}
_, err = g.SetCurrentView(c.views.Previous.Name())
return err
}
@ -254,6 +298,11 @@ func (c *controller) setKeyBinding(g *gocui.Gui) error {
return err
}
err = g.SetKeybinding("", gocui.KeyF2, gocui.ModNone, c.Menu)
if err != nil {
return err
}
return nil
}

@ -4,6 +4,7 @@ import (
"context"
"github.com/jroimartin/gocui"
"github.com/pkg/errors"
"github.com/edouardparis/lntop/app"
"github.com/edouardparis/lntop/events"
@ -35,5 +36,5 @@ func Run(ctx context.Context, app *app.App, sub chan *events.Event) error {
err = g.MainLoop()
close(sub)
return err
return errors.WithStack(err)
}

@ -84,8 +84,9 @@ func (c *Channel) Set(g *gocui.Gui, x0, y0, x1, y1 int) error {
footer.BgColor = gocui.ColorCyan
footer.FgColor = gocui.ColorBlack
footer.Clear()
fmt.Fprintln(footer, fmt.Sprintf("%s%s %s%s %s%s",
fmt.Fprintln(footer, fmt.Sprintf("%s%s %s%s %s%s %s%s",
color.BlackBg("F1"), "Help",
color.BlackBg("F2"), "Menu",
color.BlackBg("Enter"), "Channels",
color.BlackBg("F10"), "Quit",
))

@ -96,6 +96,20 @@ func (c *Channels) CursorLeft() error {
return cursorLeft(c.view, 2)
}
func (c Channels) Delete(g *gocui.Gui) error {
err := g.DeleteView(CHANNELS_COLUMNS)
if err != nil {
return err
}
err = g.DeleteView(CHANNELS)
if err != nil {
return err
}
return g.DeleteView(CHANNELS_FOOTER)
}
func (c *Channels) Set(g *gocui.Gui, x0, y0, x1, y1 int) error {
var err error
c.columnsView, err = g.SetView(CHANNELS_COLUMNS, x0-1, y0, x1+2, y0+2)
@ -136,8 +150,9 @@ func (c *Channels) Set(g *gocui.Gui, x0, y0, x1, y1 int) error {
footer.BgColor = gocui.ColorCyan
footer.FgColor = gocui.ColorBlack
footer.Clear()
fmt.Fprintln(footer, fmt.Sprintf("%s%s %s%s %s%s",
fmt.Fprintln(footer, fmt.Sprintf("%s%s %s%s %s%s %s%s",
color.BlackBg("F1"), "Help",
color.BlackBg("F2"), "Menu",
color.BlackBg("Enter"), "Channel",
color.BlackBg("F10"), "Quit",
))

@ -4,14 +4,18 @@ import (
"fmt"
"github.com/jroimartin/gocui"
"github.com/edouardparis/lntop/ui/color"
)
const (
MENU = "menu"
MENU = "menu"
MENU_HEADER = "menu_header"
)
var menu = []string{
"CHAN",
"TX",
}
type Menu struct {
view *gocui.View
}
@ -41,20 +45,45 @@ func (h *Menu) CursorLeft() error {
return nil
}
func (c Menu) Delete(g *gocui.Gui) error {
err := g.DeleteView(MENU_HEADER)
if err != nil {
return err
}
return g.DeleteView(MENU)
}
func (h Menu) Set(g *gocui.Gui, x0, y0, x1, y1 int) error {
var err error
h.view, err = g.SetView(MENU, x0-1, y0, x1, y1)
header, err := g.SetView(MENU_HEADER, x0-1, y0, x1, y0+2)
if err != nil {
if err != gocui.ErrUnknownView {
return err
}
}
header.Frame = false
header.BgColor = gocui.ColorGreen
header.FgColor = gocui.ColorBlack
header.Clear()
fmt.Fprintln(header, " MENU")
h.view, err = g.SetView(MENU, x0, y0+1, x1, y1-2)
if err != nil {
if err != gocui.ErrUnknownView {
return err
}
}
h.view.Frame = false
fmt.Fprintln(h.view, fmt.Sprintf("lntop %s - (C) 2019 Edouard Paris", version))
fmt.Fprintln(h.view, "Released under the MIT License")
fmt.Fprintln(h.view, "")
fmt.Fprintln(h.view, fmt.Sprintf("%5s %s",
color.Cyan("F1 h:"), "show this menu screen"))
h.view.Highlight = true
h.view.SelBgColor = gocui.ColorCyan
h.view.SelFgColor = gocui.ColorBlack
h.view.Clear()
for i := range menu {
fmt.Fprintln(h.view, menu[i])
}
_, err = g.SetCurrentView(MENU)
return err
}

@ -18,8 +18,11 @@ type view interface {
type Views struct {
Previous view
Main view
Help *Help
Header *Header
Menu *Menu
Summary *Summary
Channels *Channels
Channel *Channel
@ -34,6 +37,8 @@ func (v Views) Get(vi *gocui.View) view {
return v.Channels.Wrap(vi)
case HELP:
return v.Help.Wrap(vi)
case MENU:
return v.Menu.Wrap(vi)
case CHANNEL:
return v.Channel.Wrap(vi)
default:
@ -56,15 +61,37 @@ func (v *Views) Layout(g *gocui.Gui, maxX, maxY int) error {
return err
}
return v.Channels.Set(g, 0, 6, maxX-1, maxY)
current := g.CurrentView()
if current != nil && current.Name() == v.Menu.Name() {
err = v.Menu.Set(g, 0, 6, 10, maxY)
if err != nil {
return err
}
err = v.Main.Set(g, 11, 6, maxX-1, maxY)
if err != nil {
return err
}
return nil
}
err = v.Main.Set(g, 0, 6, maxX-1, maxY)
if err != nil && err != gocui.ErrUnknownView {
return err
}
return nil
}
func New(cfg config.Views, m *models.Models) *Views {
main := NewChannels(cfg.Channels, m.Channels)
return &Views{
Header: NewHeader(m.Info),
Help: NewHelp(),
Menu: NewMenu(),
Summary: NewSummary(m.Info, m.ChannelsBalance, m.WalletBalance, m.Channels),
Channels: NewChannels(cfg.Channels, m.Channels),
Channels: main,
Channel: NewChannel(m.CurrentChannel),
Main: main,
}
}

Loading…
Cancel
Save