2021-04-11 13:17:20 +10:00
|
|
|
package gui
|
|
|
|
|
|
|
|
import (
|
2021-11-02 20:05:23 +11:00
|
|
|
"log"
|
|
|
|
|
2022-01-19 18:32:27 +11:00
|
|
|
"github.com/jesseduffield/lazygit/pkg/commands/git_commands"
|
2021-04-11 13:17:20 +10:00
|
|
|
"github.com/jesseduffield/lazygit/pkg/gui/presentation"
|
2021-07-27 15:00:37 +02:00
|
|
|
"github.com/jesseduffield/lazygit/pkg/gui/style"
|
2022-01-28 20:44:36 +11:00
|
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
2021-04-11 13:17:20 +10:00
|
|
|
)
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) menuListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "menu",
|
|
|
|
Key: "menu",
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.PERSISTENT_POPUP,
|
2021-04-11 13:17:20 +10:00
|
|
|
OnGetOptionsMap: gui.getMenuOptions,
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
GetItemsLength: func() int { return gui.Views.Menu.LinesHeight() },
|
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Menu },
|
|
|
|
Gui: gui,
|
2021-04-11 13:17:20 +10:00
|
|
|
|
|
|
|
// no GetDisplayStrings field because we do a custom render on menu creation
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) filesListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "files",
|
|
|
|
WindowName: "files",
|
|
|
|
Key: FILES_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
|
|
|
},
|
|
|
|
GetItemsLength: func() int { return gui.State.FileTreeViewModel.GetItemsLength() },
|
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Files },
|
|
|
|
OnFocus: OnFocusWrapper(gui.onFocusFile),
|
|
|
|
OnRenderToMain: OnFocusWrapper(gui.filesRenderToMain),
|
|
|
|
Gui: gui,
|
2021-11-01 09:35:54 +11:00
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2022-01-22 00:13:51 +11:00
|
|
|
lines := presentation.RenderFileTree(gui.State.FileTreeViewModel, gui.State.Modes.Diffing.Ref, gui.State.Submodules)
|
2021-04-11 13:17:20 +10:00
|
|
|
mappedLines := make([][]string, len(lines))
|
|
|
|
for i, line := range lines {
|
|
|
|
mappedLines[i] = []string{line}
|
|
|
|
}
|
|
|
|
|
|
|
|
return mappedLines
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedFileNode()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) branchesListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "branches",
|
|
|
|
WindowName: "branches",
|
|
|
|
Key: LOCAL_BRANCHES_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2021-11-01 09:35:54 +11:00
|
|
|
GetItemsLength: func() int { return len(gui.State.Branches) },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Branches },
|
2021-11-21 12:48:49 +11:00
|
|
|
OnRenderToMain: OnFocusWrapper(gui.branchesRenderToMain),
|
2021-11-01 09:35:54 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-04-11 13:17:20 +10:00
|
|
|
return presentation.GetBranchListDisplayStrings(gui.State.Branches, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Modes.Diffing.Ref)
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedBranch()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) remotesListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "branches",
|
|
|
|
WindowName: "branches",
|
|
|
|
Key: REMOTES_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
GetItemsLength: func() int { return len(gui.State.Remotes) },
|
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Remotes },
|
|
|
|
OnRenderToMain: OnFocusWrapper(gui.remotesRenderToMain),
|
|
|
|
Gui: gui,
|
2021-11-01 09:35:54 +11:00
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-04-11 13:17:20 +10:00
|
|
|
return presentation.GetRemoteListDisplayStrings(gui.State.Remotes, gui.State.Modes.Diffing.Ref)
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedRemote()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) remoteBranchesListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "branches",
|
|
|
|
WindowName: "branches",
|
|
|
|
Key: REMOTE_BRANCHES_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2021-11-01 09:35:54 +11:00
|
|
|
GetItemsLength: func() int { return len(gui.State.RemoteBranches) },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.RemoteBranches },
|
2021-11-21 12:48:49 +11:00
|
|
|
OnRenderToMain: OnFocusWrapper(gui.remoteBranchesRenderToMain),
|
2021-11-01 09:35:54 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-04-11 13:17:20 +10:00
|
|
|
return presentation.GetRemoteBranchListDisplayStrings(gui.State.RemoteBranches, gui.State.Modes.Diffing.Ref)
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedRemoteBranch()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) tagsListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "branches",
|
|
|
|
WindowName: "branches",
|
|
|
|
Key: TAGS_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2021-11-01 09:35:54 +11:00
|
|
|
GetItemsLength: func() int { return len(gui.State.Tags) },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Tags },
|
2021-11-21 12:48:49 +11:00
|
|
|
OnRenderToMain: OnFocusWrapper(gui.tagsRenderToMain),
|
2021-11-01 09:35:54 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-04-11 13:17:20 +10:00
|
|
|
return presentation.GetTagListDisplayStrings(gui.State.Tags, gui.State.Modes.Diffing.Ref)
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedTag()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) branchCommitsListContext() types.IListContext {
|
|
|
|
parseEmoji := gui.c.UserConfig.Git.ParseEmoji
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "commits",
|
|
|
|
WindowName: "commits",
|
|
|
|
Key: BRANCH_COMMITS_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
|
|
|
},
|
|
|
|
GetItemsLength: func() int { return len(gui.State.Commits) },
|
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Commits },
|
|
|
|
OnFocus: OnFocusWrapper(gui.onCommitFocus),
|
|
|
|
OnRenderToMain: OnFocusWrapper(gui.branchCommitsRenderToMain),
|
|
|
|
Gui: gui,
|
2021-11-01 09:35:54 +11:00
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-11-02 16:39:15 +11:00
|
|
|
selectedCommitSha := ""
|
|
|
|
if gui.currentContext().GetKey() == BRANCH_COMMITS_CONTEXT_KEY {
|
|
|
|
selectedCommit := gui.getSelectedLocalCommit()
|
|
|
|
if selectedCommit != nil {
|
|
|
|
selectedCommitSha = selectedCommit.Sha
|
|
|
|
}
|
|
|
|
}
|
2021-07-16 14:06:01 +02:00
|
|
|
return presentation.GetCommitListDisplayStrings(
|
|
|
|
gui.State.Commits,
|
|
|
|
gui.State.ScreenMode != SCREEN_NORMAL,
|
|
|
|
gui.cherryPickedCommitShaMap(),
|
|
|
|
gui.State.Modes.Diffing.Ref,
|
|
|
|
parseEmoji,
|
2021-11-02 16:39:15 +11:00
|
|
|
selectedCommitSha,
|
|
|
|
startIdx,
|
|
|
|
length,
|
2021-11-02 20:05:23 +11:00
|
|
|
gui.shouldShowGraph(),
|
2022-01-19 18:32:27 +11:00
|
|
|
gui.State.BisectInfo,
|
2021-07-16 14:06:01 +02:00
|
|
|
)
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedLocalCommit()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
2021-11-02 16:39:15 +11:00
|
|
|
RenderSelection: true,
|
2021-04-11 13:17:20 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) subCommitsListContext() types.IListContext {
|
|
|
|
parseEmoji := gui.c.UserConfig.Git.ParseEmoji
|
2021-11-10 08:48:58 +11:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "branches",
|
|
|
|
WindowName: "branches",
|
|
|
|
Key: SUB_COMMITS_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-11-10 08:48:58 +11:00
|
|
|
},
|
|
|
|
GetItemsLength: func() int { return len(gui.State.SubCommits) },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.SubCommits },
|
2021-11-21 12:48:49 +11:00
|
|
|
OnRenderToMain: OnFocusWrapper(gui.subCommitsRenderToMain),
|
2021-11-10 08:48:58 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
|
|
|
selectedCommitSha := ""
|
|
|
|
if gui.currentContext().GetKey() == SUB_COMMITS_CONTEXT_KEY {
|
|
|
|
selectedCommit := gui.getSelectedSubCommit()
|
|
|
|
if selectedCommit != nil {
|
|
|
|
selectedCommitSha = selectedCommit.Sha
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return presentation.GetCommitListDisplayStrings(
|
|
|
|
gui.State.SubCommits,
|
|
|
|
gui.State.ScreenMode != SCREEN_NORMAL,
|
|
|
|
gui.cherryPickedCommitShaMap(),
|
|
|
|
gui.State.Modes.Diffing.Ref,
|
|
|
|
parseEmoji,
|
|
|
|
selectedCommitSha,
|
|
|
|
startIdx,
|
|
|
|
length,
|
|
|
|
gui.shouldShowGraph(),
|
2022-01-19 18:32:27 +11:00
|
|
|
git_commands.NewNullBisectInfo(),
|
2021-11-10 08:48:58 +11:00
|
|
|
)
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-11-10 08:48:58 +11:00
|
|
|
item := gui.getSelectedSubCommit()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
RenderSelection: true,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-11-02 20:05:23 +11:00
|
|
|
func (gui *Gui) shouldShowGraph() bool {
|
2022-01-17 19:24:10 +11:00
|
|
|
if gui.State.Modes.Filtering.Active() {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
value := gui.c.UserConfig.Git.Log.ShowGraph
|
2021-11-02 20:05:23 +11:00
|
|
|
switch value {
|
|
|
|
case "always":
|
|
|
|
return true
|
|
|
|
case "never":
|
|
|
|
return false
|
|
|
|
case "when-maximised":
|
|
|
|
return gui.State.ScreenMode != SCREEN_NORMAL
|
|
|
|
}
|
|
|
|
|
|
|
|
log.Fatalf("Unknown value for git.log.showGraph: %s. Expected one of: 'always', 'never', 'when-maximised'", value)
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) reflogCommitsListContext() types.IListContext {
|
|
|
|
parseEmoji := gui.c.UserConfig.Git.ParseEmoji
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "commits",
|
|
|
|
WindowName: "commits",
|
|
|
|
Key: REFLOG_COMMITS_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2021-11-01 09:35:54 +11:00
|
|
|
GetItemsLength: func() int { return len(gui.State.FilteredReflogCommits) },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.ReflogCommits },
|
2021-11-21 12:48:49 +11:00
|
|
|
OnRenderToMain: OnFocusWrapper(gui.reflogCommitsRenderToMain),
|
2021-11-01 09:35:54 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-07-16 14:06:01 +02:00
|
|
|
return presentation.GetReflogCommitListDisplayStrings(
|
|
|
|
gui.State.FilteredReflogCommits,
|
|
|
|
gui.State.ScreenMode != SCREEN_NORMAL,
|
|
|
|
gui.cherryPickedCommitShaMap(),
|
|
|
|
gui.State.Modes.Diffing.Ref,
|
|
|
|
parseEmoji,
|
|
|
|
)
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedReflogCommit()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) stashListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "stash",
|
|
|
|
WindowName: "stash",
|
|
|
|
Key: STASH_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2021-11-01 09:35:54 +11:00
|
|
|
GetItemsLength: func() int { return len(gui.State.StashEntries) },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Stash },
|
2021-11-21 12:48:49 +11:00
|
|
|
OnRenderToMain: OnFocusWrapper(gui.stashRenderToMain),
|
2021-11-01 09:35:54 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-04-11 13:17:20 +10:00
|
|
|
return presentation.GetStashEntryListDisplayStrings(gui.State.StashEntries, gui.State.Modes.Diffing.Ref)
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedStashEntry()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) commitFilesListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "commitFiles",
|
|
|
|
WindowName: "commits",
|
|
|
|
Key: COMMIT_FILES_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2022-01-22 00:13:51 +11:00
|
|
|
GetItemsLength: func() int { return gui.State.CommitFileTreeViewModel.GetItemsLength() },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.CommitFiles },
|
2021-11-21 12:48:49 +11:00
|
|
|
OnFocus: OnFocusWrapper(gui.onCommitFileFocus),
|
|
|
|
OnRenderToMain: OnFocusWrapper(gui.commitFilesRenderToMain),
|
2021-11-01 09:35:54 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2022-01-22 00:13:51 +11:00
|
|
|
if gui.State.CommitFileTreeViewModel.GetItemsLength() == 0 {
|
2021-07-27 15:00:37 +02:00
|
|
|
return [][]string{{style.FgRed.Sprint("(none)")}}
|
2021-04-11 13:17:20 +10:00
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
lines := presentation.RenderCommitFileTree(gui.State.CommitFileTreeViewModel, gui.State.Modes.Diffing.Ref, gui.git.Patch.PatchManager)
|
2021-04-11 13:17:20 +10:00
|
|
|
mappedLines := make([][]string, len(lines))
|
|
|
|
for i, line := range lines {
|
|
|
|
mappedLines[i] = []string{line}
|
|
|
|
}
|
|
|
|
|
|
|
|
return mappedLines
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedCommitFileNode()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) submodulesListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "files",
|
|
|
|
WindowName: "files",
|
|
|
|
Key: SUBMODULES_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.SIDE_CONTEXT,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2021-11-01 09:35:54 +11:00
|
|
|
GetItemsLength: func() int { return len(gui.State.Submodules) },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Submodules },
|
2021-11-21 12:48:49 +11:00
|
|
|
OnRenderToMain: OnFocusWrapper(gui.submodulesRenderToMain),
|
2021-11-01 09:35:54 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-04-11 13:17:20 +10:00
|
|
|
return presentation.GetSubmoduleListDisplayStrings(gui.State.Submodules)
|
|
|
|
},
|
2022-01-16 14:46:53 +11:00
|
|
|
SelectedItem: func() (types.ListItem, bool) {
|
2021-04-11 13:17:20 +10:00
|
|
|
item := gui.getSelectedSubmodule()
|
|
|
|
return item, item != nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) suggestionsListContext() types.IListContext {
|
2021-04-11 13:17:20 +10:00
|
|
|
return &ListContext{
|
|
|
|
BasicContext: &BasicContext{
|
|
|
|
ViewName: "suggestions",
|
|
|
|
WindowName: "suggestions",
|
|
|
|
Key: SUGGESTIONS_CONTEXT_KEY,
|
2022-01-16 14:46:53 +11:00
|
|
|
Kind: types.PERSISTENT_POPUP,
|
2021-04-11 13:17:20 +10:00
|
|
|
},
|
2021-11-01 09:35:54 +11:00
|
|
|
GetItemsLength: func() int { return len(gui.State.Suggestions) },
|
2022-01-16 14:46:53 +11:00
|
|
|
OnGetPanelState: func() types.IListPanelState { return gui.State.Panels.Suggestions },
|
2021-11-01 09:35:54 +11:00
|
|
|
Gui: gui,
|
|
|
|
GetDisplayStrings: func(startIdx int, length int) [][]string {
|
2021-04-11 13:17:20 +10:00
|
|
|
return presentation.GetSuggestionListDisplayStrings(gui.State.Suggestions)
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 14:46:53 +11:00
|
|
|
func (gui *Gui) getListContexts() []types.IListContext {
|
|
|
|
return []types.IListContext{
|
2021-04-11 13:17:20 +10:00
|
|
|
gui.State.Contexts.Menu,
|
|
|
|
gui.State.Contexts.Files,
|
|
|
|
gui.State.Contexts.Branches,
|
|
|
|
gui.State.Contexts.Remotes,
|
|
|
|
gui.State.Contexts.RemoteBranches,
|
|
|
|
gui.State.Contexts.Tags,
|
|
|
|
gui.State.Contexts.BranchCommits,
|
|
|
|
gui.State.Contexts.ReflogCommits,
|
|
|
|
gui.State.Contexts.SubCommits,
|
|
|
|
gui.State.Contexts.Stash,
|
|
|
|
gui.State.Contexts.CommitFiles,
|
|
|
|
gui.State.Contexts.Submodules,
|
|
|
|
gui.State.Contexts.Suggestions,
|
|
|
|
}
|
|
|
|
}
|