diff options
Diffstat (limited to 'pkg/gui/gui-navigate.go')
| -rw-r--r-- | pkg/gui/gui-navigate.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/pkg/gui/gui-navigate.go b/pkg/gui/gui-navigate.go new file mode 100644 index 0000000..56d96de --- /dev/null +++ b/pkg/gui/gui-navigate.go @@ -0,0 +1,54 @@ +package gui + +import ( + log "github.com/sirupsen/logrus" + "github.com/jroimartin/gocui" +) + +// focus to next view +func (gui *Gui) nextView(g *gocui.Gui, v *gocui.View) error { + var focusedViewName string + if v == nil || v.Name() == mainViews[len(mainViews)-1].Name { + focusedViewName = mainViews[0].Name + } else { + for i := range mainViews { + if v.Name() == mainViews[i].Name { + focusedViewName = mainViews[i+1].Name + break + } + if i == len(mainViews)-1 { + return nil + } + } + } + if _, err := g.SetCurrentView(focusedViewName); err != nil { + log.Warn("Loading view cannot be focused.") + return nil + } + gui.updateKeyBindingsView(g, focusedViewName) + return nil +} + +// focus to previous view +func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error { + var focusedViewName string + if v == nil || v.Name() == mainViews[0].Name { + focusedViewName = mainViews[len(mainViews)-1].Name + } else { + for i := range mainViews { + if v.Name() == mainViews[i].Name { + focusedViewName = mainViews[i-1].Name + break + } + if i == len(mainViews)-1 { + return nil + } + } + } + if _, err := g.SetCurrentView(focusedViewName); err != nil { + log.Warn("Loading view cannot be focused.") + return nil + } + gui.updateKeyBindingsView(g, focusedViewName) + return nil +} |
