summaryrefslogtreecommitdiffstats
path: root/pkg/gui/list_view.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-08-17 22:04:38 +1000
committerJesse Duffield <jessedduffield@gmail.com>2020-08-23 14:29:18 +1000
commitfcdc0174d99664daad5092768baa9bfb529bd64a (patch)
tree3255e679041a49536ac35415cbb22917eba6af90 /pkg/gui/list_view.go
parent4f4df8f9cc91118853fc40e38b54d61d3aeb5688 (diff)
rename context file
Diffstat (limited to 'pkg/gui/list_view.go')
-rw-r--r--pkg/gui/list_view.go309
1 files changed, 0 insertions, 309 deletions
diff --git a/pkg/gui/list_view.go b/pkg/gui/list_view.go
deleted file mode 100644
index 023d34e10..000000000
--- a/pkg/gui/list_view.go
+++ /dev/null
@@ -1,309 +0,0 @@
-package gui
-
-import "github.com/jesseduffield/gocui"
-
-type ListContext struct {
- ViewName string
- ContextKey string
- GetItemsLength func() int
- GetSelectedLineIdxPtr func() *int
- OnFocus func() error
- OnFocusLost func() error
- OnItemSelect func() error
- OnClickSelectedItem func() error
- Gui *Gui
- RendersToMainView bool
- Kind int
-}
-
-func (lc *ListContext) GetKey() string {
- return lc.ContextKey
-}
-
-func (lc *ListContext) GetKind() int {
- return lc.Kind
-}
-
-func (lc *ListContext) GetViewName() string {
- return lc.ViewName
-}
-
-func (lc *ListContext) HandleFocusLost() error {
- if lc.OnFocusLost != nil {
- return lc.OnFocusLost()
- }
-
- return nil
-}
-
-func (lc *ListContext) HandleFocus() error {
- return lc.OnFocus()
-}
-
-func (lc *ListContext) handlePrevLine(g *gocui.Gui, v *gocui.View) error {
- return lc.handleLineChange(-1)
-}
-
-func (lc *ListContext) handleNextLine(g *gocui.Gui, v *gocui.View) error {
- return lc.handleLineChange(1)
-}
-
-func (lc *ListContext) handleLineChange(change int) error {
- if !lc.Gui.isPopupPanel(lc.ViewName) && lc.Gui.popupPanelFocused() {
- return nil
- }
-
- view, err := lc.Gui.g.View(lc.ViewName)
- if err != nil {
- return err
- }
-
- lc.Gui.changeSelectedLine(lc.GetSelectedLineIdxPtr(), lc.GetItemsLength(), change)
- view.FocusPoint(0, *lc.GetSelectedLineIdxPtr())
-
- if lc.RendersToMainView {
- if err := lc.Gui.resetOrigin(lc.Gui.getMainView()); err != nil {
- return err
- }
- if err := lc.Gui.resetOrigin(lc.Gui.getSecondaryView()); err != nil {
- return err
- }
- }
-
- if lc.OnItemSelect != nil {
- return lc.OnItemSelect()
- }
- return nil
-}
-
-func (lc *ListContext) handleNextPage(g *gocui.Gui, v *gocui.View) error {
- view, err := lc.Gui.g.View(lc.ViewName)
- if err != nil {
- return nil
- }
- _, height := view.Size()
- delta := height - 1
- if delta == 0 {
- delta = 1
- }
- return lc.handleLineChange(delta)
-}
-
-func (lc *ListContext) handleGotoTop(g *gocui.Gui, v *gocui.View) error {
- return lc.handleLineChange(-lc.GetItemsLength())
-}
-
-func (lc *ListContext) handleGotoBottom(g *gocui.Gui, v *gocui.View) error {
- return lc.handleLineChange(lc.GetItemsLength())
-}
-
-func (lc *ListContext) handlePrevPage(g *gocui.Gui, v *gocui.View) error {
- view, err := lc.Gui.g.View(lc.ViewName)
- if err != nil {
- return nil
- }
- _, height := view.Size()
- delta := height - 1
- if delta == 0 {
- delta = 1
- }
- return lc.handleLineChange(-delta)
-}
-
-func (lc *ListContext) handleClick(g *gocui.Gui, v *gocui.View) error {
- if !lc.Gui.isPopupPanel(lc.ViewName) && lc.Gui.popupPanelFocused() {
- return nil
- }
-
- selectedLineIdxPtr := lc.GetSelectedLineIdxPtr()
- prevSelectedLineIdx := *selectedLineIdxPtr
- newSelectedLineIdx := v.SelectedLineIdx()
-
- // we need to focus the view
- if err := lc.Gui.switchContext(lc); err != nil {
- return err
- }
-
- if newSelectedLineIdx > lc.GetItemsLength()-1 {
- return nil
- }
-
- *selectedLineIdxPtr = newSelectedLineIdx
-
- prevViewName := lc.Gui.currentViewName()
- if prevSelectedLineIdx == newSelectedLineIdx && prevViewName == lc.ViewName && lc.OnClickSelectedItem != nil {
- return lc.OnClickSelectedItem()
- }
- if lc.OnItemSelect != nil {
- return lc.OnItemSelect()
- }
- return nil
-}
-
-func (lc *ListContext) onSearchSelect(selectedLineIdx int) error {
- *lc.GetSelectedLineIdxPtr() = selectedLineIdx
- if lc.OnItemSelect != nil {
- return lc.OnItemSelect()
- }
- return nil
-}
-
-func (gui *Gui) menuListContext() *ListContext {
- return &ListContext{
- ViewName: "menu",
- ContextKey: "menu",
- GetItemsLength: func() int { return gui.getMenuView().LinesHeight() },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.Menu.SelectedLine },
- OnFocus: gui.handleMenuSelect,
- OnItemSelect: gui.handleMenuSelect,
- // need to add a layer of indirection here because the callback changes during runtime
- OnClickSelectedItem: func() error { return gui.State.Panels.Menu.OnPress(gui.g, nil) },
- Gui: gui,
- RendersToMainView: false,
- Kind: PERSISTENT_POPUP,
- }
-}
-
-func (gui *Gui) filesListContext() *ListContext {
- return &ListContext{
- ViewName: "files",
- ContextKey: "files",
- GetItemsLength: func() int { return len(gui.State.Files) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.Files.SelectedLine },
- OnFocus: gui.focusAndSelectFile,
- OnItemSelect: gui.focusAndSelectFile,
- OnClickSelectedItem: gui.handleFilePress,
- Gui: gui,
- RendersToMainView: false,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) branchesListContext() *ListContext {
- return &ListContext{
- ViewName: "branches",
- ContextKey: "local-branches",
- GetItemsLength: func() int { return len(gui.State.Branches) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.Branches.SelectedLine },
- OnFocus: gui.handleBranchSelect,
- OnItemSelect: gui.handleBranchSelect,
- Gui: gui,
- RendersToMainView: true,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) remotesListContext() *ListContext {
- return &ListContext{
- ViewName: "branches",
- ContextKey: "remotes",
- GetItemsLength: func() int { return len(gui.State.Remotes) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.Remotes.SelectedLine },
- OnFocus: gui.renderRemotesWithSelection,
- OnItemSelect: gui.handleRemoteSelect,
- OnClickSelectedItem: gui.handleRemoteEnter,
- Gui: gui,
- RendersToMainView: true,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) remoteBranchesListContext() *ListContext {
- return &ListContext{
- ViewName: "branches",
- ContextKey: "remote-branches",
- GetItemsLength: func() int { return len(gui.State.RemoteBranches) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.RemoteBranches.SelectedLine },
- OnFocus: gui.handleRemoteBranchSelect,
- OnItemSelect: gui.handleRemoteBranchSelect,
- Gui: gui,
- RendersToMainView: true,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) tagsListContext() *ListContext {
- return &ListContext{
- ViewName: "branches",
- ContextKey: "tags",
- GetItemsLength: func() int { return len(gui.State.Tags) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.Tags.SelectedLine },
- OnFocus: gui.handleTagSelect,
- OnItemSelect: gui.handleTagSelect,
- Gui: gui,
- RendersToMainView: true,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) branchCommitsListContext() *ListContext {
- return &ListContext{
- ViewName: "commits",
- ContextKey: "branch-commits",
- GetItemsLength: func() int { return len(gui.State.Commits) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.Commits.SelectedLine },
- OnFocus: gui.handleCommitSelect,
- OnItemSelect: gui.handleCommitSelect,
- OnClickSelectedItem: gui.handleSwitchToCommitFilesPanel,
- Gui: gui,
- RendersToMainView: true,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) reflogCommitsListContext() *ListContext {
- return &ListContext{
- ViewName: "commits",
- ContextKey: "reflog-commits",
- GetItemsLength: func() int { return len(gui.State.FilteredReflogCommits) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.ReflogCommits.SelectedLine },
- OnFocus: gui.handleReflogCommitSelect,
- OnItemSelect: gui.handleReflogCommitSelect,
- Gui: gui,
- RendersToMainView: true,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) stashListContext() *ListContext {
- return &ListContext{
- ViewName: "stash",
- ContextKey: "stash",
- GetItemsLength: func() int { return len(gui.State.StashEntries) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.Stash.SelectedLine },
- OnFocus: gui.handleStashEntrySelect,
- OnItemSelect: gui.handleStashEntrySelect,
- Gui: gui,
- RendersToMainView: true,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) commitFilesListContext() *ListContext {
- return &ListContext{
- ViewName: "commitFiles",
- ContextKey: "commitFiles",
- GetItemsLength: func() int { return len(gui.State.CommitFiles) },
- GetSelectedLineIdxPtr: func() *int { return &gui.State.Panels.CommitFiles.SelectedLine },
- OnFocus: gui.handleCommitFileSelect,
- OnItemSelect: gui.handleCommitFileSelect,
- Gui: gui,
- RendersToMainView: true,
- Kind: SIDE_CONTEXT,
- }
-}
-
-func (gui *Gui) getListContexts() []*ListContext {
- return []*ListContext{
- gui.menuListContext(),
- gui.filesListContext(),
- gui.branchesListContext(),
- gui.remotesListContext(),
- gui.remoteBranchesListContext(),
- gui.tagsListContext(),
- gui.branchCommitsListContext(),
- gui.reflogCommitsListContext(),
- gui.stashListContext(),
- gui.commitFilesListContext(),
- }
-}