diff options
Diffstat (limited to 'pkg/gui/stagedview.go')
| -rw-r--r-- | pkg/gui/stagedview.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/pkg/gui/stagedview.go b/pkg/gui/stagedview.go new file mode 100644 index 0000000..e3684f0 --- /dev/null +++ b/pkg/gui/stagedview.go @@ -0,0 +1,54 @@ +package gui + +import ( + "fmt" + + "github.com/isacikgoz/gitbatch/pkg/git" + "github.com/jroimartin/gocui" +) + +// staged view +func (gui *Gui) openStageView(g *gocui.Gui) error { + maxX, maxY := g.Size() + + v, err := g.SetView(stageViewFeature.Name, 6, 5, maxX/2-1, int(0.75*float32(maxY))-1) + if err != nil { + if err != gocui.ErrUnknownView { + return err + } + v.Title = stageViewFeature.Title + v.Wrap = true + } + entity := gui.getSelectedRepository() + if err := refreshStagedView(g, entity); err != nil { + return err + } + gui.updateKeyBindingsView(g, stageViewFeature.Name) + if _, err := g.SetCurrentView(stageViewFeature.Name); err != nil { + return err + } + return nil +} + +// refresh the main view and re-render the repository representations +func refreshStagedView(g *gocui.Gui, entity *git.RepoEntity) error { + stageView, err := g.View(stageViewFeature.Name) + if err != nil { + return err + } + stageView.Clear() + _, cy := stageView.Cursor() + _, oy := stageView.Origin() + files, _, err := generateFileLists(entity) + if err != nil { + return err + } + for i, file := range files { + var prefix string + if i == cy+oy { + prefix = prefix + selectionIndicator + } + fmt.Fprintf(stageView, "%s%s%s %s\n", prefix, green.Sprint(string(file.X)), red.Sprint(string(file.Y)), file.Name) + } + return nil +} |
