diff options
| -rw-r--r-- | pkg/gui/statusview.go | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/pkg/gui/statusview.go b/pkg/gui/statusview.go new file mode 100644 index 0000000..e33e4c5 --- /dev/null +++ b/pkg/gui/statusview.go @@ -0,0 +1,137 @@ +package gui + +import ( + "fmt" + + "github.com/jroimartin/gocui" +) + +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: " Unstaged "} + stashViewFeature = viewFeature{Name: "stash", Title: " Stash "} +) + +// open the status layout +func (gui *Gui) openStatusView(g *gocui.Gui, v *gocui.View) error { + gui.openStatusHeaderView(g) + gui.openStageView(g) + gui.openUnStagedView(g) + gui.openStashView(g) + return nil +} + +// iteration handler for the status layout +func (gui *Gui) nextStatusView(g *gocui.Gui, v *gocui.View) error { + var err error + return err +} + +// header og the status layout +func (gui *Gui) openStatusHeaderView(g *gocui.Gui) error { + maxX, _ := g.Size() + entity := gui.getSelectedRepository() + v, err := g.SetView(statusHeaderViewFeature.Name, 6, 2, maxX-6, 4) + if err != nil { + if err != gocui.ErrUnknownView { + return err + } + fmt.Fprintln(v, entity.AbsPath) + // v.Frame = false + v.Wrap = true + } + gui.updateKeyBindingsView(g, statusHeaderViewFeature.Name) + if _, err := g.SetCurrentView(statusHeaderViewFeature.Name); err != nil { + return err + } + return nil +} + +// 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 + } + return nil +} + +// not staged view +func (gui *Gui) openUnStagedView(g *gocui.Gui) error { + maxX, maxY := g.Size() + + v, err := g.SetView(unstageViewFeature.Name, maxX/2+1, 5, maxX-6, int(0.75*float32(maxY))-1) + if err != nil { + if err != gocui.ErrUnknownView { + return err + } + v.Title = unstageViewFeature.Title + v.Wrap = true + } + return nil +} + + +// stash view +func (gui *Gui) openStashView(g *gocui.Gui) error { + maxX, maxY := g.Size() + + v, err := g.SetView(stashViewFeature.Name, 6, int(0.75*float32(maxY)), maxX-6, maxY-3) + if err != nil { + if err != gocui.ErrUnknownView { + return err + } + v.Title = stashViewFeature.Title + v.Wrap = true + } + return nil +} + +// 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 + } + if err := g.DeleteView(statusHeaderViewFeature.Name); err != nil { + return err + } + if _, err := g.SetCurrentView(mainViewFeature.Name); err != nil { + return err + } + gui.updateKeyBindingsView(g, mainViewFeature.Name) + return nil +} + + // { + // View: statusHeaderViewFeature.Name, + // Key: 'c', + // Modifier: gocui.ModNone, + // Handler: gui.closeStatusView, + // Display: "c", + // Description: "close/cancel", + // Vital: true, + // }, + + // { + // View: mainViewFeature.Name, + // Key: 't', + // Modifier: gocui.ModNone, + // Handler: gui.openStatusView, + // Display: "t", + // Description: "Open Status", + // Vital: true, + // },
\ No newline at end of file |
