summaryrefslogtreecommitdiff
path: root/pkg/gui/statusview.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/statusview.go')
-rw-r--r--pkg/gui/statusview.go58
1 files changed, 33 insertions, 25 deletions
diff --git a/pkg/gui/statusview.go b/pkg/gui/statusview.go
index d6f0be1..82df459 100644
--- a/pkg/gui/statusview.go
+++ b/pkg/gui/statusview.go
@@ -9,16 +9,22 @@ import (
var (
statusHeaderViewFeature = viewFeature{Name: "status-header", Title: " Status Header "}
- // statusViewFeature = viewFeature{Name: "status", Title: " Status "}
- stageViewFeature = viewFeature{Name: "staged", Title: " Staged "}
- unstageViewFeature = viewFeature{Name: "unstaged", Title: " Not Staged "}
- stashViewFeature = viewFeature{Name: "stash", Title: " Stash "}
+ stageViewFeature = viewFeature{Name: "staged", Title: " Staged "}
+ unstageViewFeature = viewFeature{Name: "unstaged", Title: " Not Staged "}
+ stashViewFeature = viewFeature{Name: "stash", Title: " Stash "}
statusViews = []viewFeature{stageViewFeature, unstageViewFeature, stashViewFeature}
+
+ commitMesageReturnView string
+ stagedFiles []*git.File
+ unstagedFiles []*git.File
)
// open the status layout
func (gui *Gui) openStatusView(g *gocui.Gui, v *gocui.View) error {
+ if err := reloadFiles(gui.getSelectedRepository()); err != nil {
+ return err
+ }
gui.openStatusHeaderView(g)
gui.openStageView(g)
gui.openUnStagedView(g)
@@ -26,6 +32,11 @@ func (gui *Gui) openStatusView(g *gocui.Gui, v *gocui.View) error {
return nil
}
+func reloadFiles(entity *git.RepoEntity) (err error) {
+ stagedFiles, unstagedFiles, err = populateFileLists(entity)
+ return err
+}
+
// focus to next view
func (gui *Gui) nextStatusView(g *gocui.Gui, v *gocui.View) error {
err := gui.nextViewOfGroup(g, v, statusViews)
@@ -57,7 +68,7 @@ func (gui *Gui) statusCursorDown(g *gocui.Gui, v *gocui.View) error {
}
}
entity := gui.getSelectedRepository()
- if err := refreshStatusView(v.Name(), g, entity); err != nil {
+ if err := refreshStatusView(v.Name(), g, entity, false); err != nil {
return err
}
}
@@ -75,7 +86,7 @@ func (gui *Gui) statusCursorUp(g *gocui.Gui, v *gocui.View) error {
}
}
entity := gui.getSelectedRepository()
- if err := refreshStatusView(v.Name(), g, entity); err != nil {
+ if err := refreshStatusView(v.Name(), g, entity, false); err != nil {
return err
}
}
@@ -100,21 +111,16 @@ func (gui *Gui) openStatusHeaderView(g *gocui.Gui) error {
// close the opened stat views
func (gui *Gui) closeStatusView(g *gocui.Gui, v *gocui.View) error {
- if err := g.DeleteView(stashViewFeature.Name); err != nil {
- return err
- }
- if err := g.DeleteView(unstageViewFeature.Name); err != nil {
- return err
- }
- if err := g.DeleteView(stageViewFeature.Name); err != nil {
- return err
+ for _, view := range statusViews {
+ if err := g.DeleteView(view.Name); err != nil {
+ return err
+ }
}
if err := g.DeleteView(statusHeaderViewFeature.Name); err != nil {
return err
}
- if _, err := g.SetCurrentView(mainViewFeature.Name); err != nil {
- return err
- }
+ stagedFiles = make([]*git.File, 0)
+ unstagedFiles = make([]*git.File, 0)
entity := gui.getSelectedRepository()
if err := gui.refreshMain(g); err != nil {
return err
@@ -122,12 +128,11 @@ func (gui *Gui) closeStatusView(g *gocui.Gui, v *gocui.View) error {
if err := gui.refreshViews(g, entity); err != nil {
return err
}
- gui.updateKeyBindingsView(g, mainViewFeature.Name)
- return nil
+ return gui.closeViewCleanup(mainViewFeature.Name)
}
-func generateFileLists(entity *git.RepoEntity) (staged, unstaged []*git.File, err error) {
- files, err := entity.LoadFiles()
+func populateFileLists(entity *git.RepoEntity) (staged, unstaged []*git.File, err error) {
+ files, err := git.Status(entity)
if err != nil {
return nil, nil, err
}
@@ -142,14 +147,17 @@ func generateFileLists(entity *git.RepoEntity) (staged, unstaged []*git.File, er
return staged, unstaged, err
}
-func refreshStatusView(viewName string, g *gocui.Gui, entity *git.RepoEntity) error {
+func refreshStatusView(viewName string, g *gocui.Gui, entity *git.RepoEntity, reload bool) error {
+ if reload {
+ reloadFiles(entity)
+ }
switch viewName {
case stageViewFeature.Name:
if err := refreshStagedView(g, entity); err != nil {
return err
}
case unstageViewFeature.Name:
- if err := refreshUnstagedView(g, entity); err != nil {
+ if err := refreshUnstagedView(g); err != nil {
return err
}
case stashViewFeature.Name:
@@ -160,9 +168,9 @@ func refreshStatusView(viewName string, g *gocui.Gui, entity *git.RepoEntity) er
return nil
}
-func refreshAllStatusView(g *gocui.Gui, entity *git.RepoEntity) error {
+func refreshAllStatusView(g *gocui.Gui, entity *git.RepoEntity, reload bool) error {
for _, v := range statusViews {
- if err := refreshStatusView(v.Name, g, entity); err != nil {
+ if err := refreshStatusView(v.Name, g, entity, reload); err != nil {
return err
}
}