summaryrefslogtreecommitdiffstats
path: root/pkg/gui/view_helpers.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2018-12-07 18:52:31 +1100
committerJesse Duffield <jessedduffield@gmail.com>2018-12-08 11:51:47 +1100
commitff856b763033a241370bfde98d7386b43b7d0893 (patch)
tree9818a3b50f815051a309882e6c48c482bfd7ef3a /pkg/gui/view_helpers.go
parentca3afa2a3905365ec79624e0c9b08865e9ab27ae (diff)
fetching branches without checking out
Diffstat (limited to 'pkg/gui/view_helpers.go')
-rw-r--r--pkg/gui/view_helpers.go66
1 files changed, 42 insertions, 24 deletions
diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go
index 5b02b1ae9..1508daa1b 100644
--- a/pkg/gui/view_helpers.go
+++ b/pkg/gui/view_helpers.go
@@ -13,11 +13,16 @@ import (
var cyclableViews = []string{"status", "files", "branches", "commits", "stash"}
func (gui *Gui) refreshSidePanels(g *gocui.Gui) error {
- gui.refreshBranches(g)
- gui.refreshFiles(g)
- gui.refreshCommits(g)
- gui.refreshStashEntries(g)
- return nil
+ if err := gui.refreshBranches(g); err != nil {
+ return err
+ }
+ if err := gui.refreshFiles(g); err != nil {
+ return err
+ }
+ if err := gui.refreshCommits(g); err != nil {
+ return err
+ }
+ return gui.refreshStashEntries(g)
}
func (gui *Gui) nextView(g *gocui.Gui, v *gocui.View) error {
@@ -81,7 +86,7 @@ func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) newLineFocused(g *gocui.Gui, v *gocui.View) error {
switch v.Name() {
case "menu":
- return nil
+ return gui.handleMenuSelect(g, v)
case "status":
return gui.handleStatusSelect(g, v)
case "files":
@@ -160,6 +165,10 @@ func (gui *Gui) switchFocus(g *gocui.Gui, oldView, newView *gocui.View) error {
g.Cursor = newView.Editable
+ if err := gui.renderPanelOptions(); err != nil {
+ return err
+ }
+
return gui.newLineFocused(g, newView)
}
@@ -240,8 +249,8 @@ func (gui *Gui) optionsMapToString(optionsMap map[string]string) string {
return strings.Join(optionsArray, ", ")
}
-func (gui *Gui) renderOptionsMap(g *gocui.Gui, optionsMap map[string]string) error {
- return gui.renderString(g, "options", gui.optionsMapToString(optionsMap))
+func (gui *Gui) renderOptionsMap(optionsMap map[string]string) error {
+ return gui.renderString(gui.g, "options", gui.optionsMapToString(optionsMap))
}
// TODO: refactor properly
@@ -312,22 +321,6 @@ func (gui *Gui) resizePopupPanel(g *gocui.Gui, v *gocui.View) error {
return err
}
-// focusLine focuses and selects the given line
-func (gui *Gui) focusLine(lineNumber int, v *gocui.View) error {
- _, height := v.Size()
- overScroll := lineNumber - height + 1
- if overScroll < 0 {
- overScroll = 0
- }
- if err := v.SetOrigin(0, overScroll); err != nil {
- return err
- }
- if err := v.SetCursor(0, lineNumber-overScroll); err != nil {
- return err
- }
- return nil
-}
-
// generalFocusLine takes a lineNumber to focus, and a bottomLine to ensure we can see
func (gui *Gui) generalFocusLine(lineNumber int, bottomLine int, v *gocui.View) error {
_, height := v.Size()
@@ -367,3 +360,28 @@ func (gui *Gui) refreshSelectedLine(line *int, total int) {
*line = total - 1
}
}
+
+func (gui *Gui) renderListPanel(v *gocui.View, items interface{}) error {
+ gui.g.Update(func(g *gocui.Gui) error {
+ list, err := utils.RenderList(items)
+ if err != nil {
+ return gui.createErrorPanel(gui.g, err.Error())
+ }
+ v.Clear()
+ fmt.Fprint(v, list)
+ return nil
+ })
+ return nil
+}
+
+func (gui *Gui) renderPanelOptions() error {
+ currentView := gui.g.CurrentView()
+ switch currentView.Name() {
+ case "menu":
+ return gui.renderMenuOptions()
+ case "main":
+ return gui.renderMergeOptions()
+ default:
+ return gui.renderGlobalOptions()
+ }
+}