diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-06-13 11:01:26 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-08-06 13:49:11 +1000 |
commit | 524bf83a4a681408c3fb57818f6968cab632e0ae (patch) | |
tree | 8858b4ee8d4670dcdd1637fe5fedf00ff080c154 /pkg/gui/views.go | |
parent | 6dfef08efc5c7f262194c0af35fd777428f33a1a (diff) |
refactor to only have one context per view
Diffstat (limited to 'pkg/gui/views.go')
-rw-r--r-- | pkg/gui/views.go | 160 |
1 files changed, 83 insertions, 77 deletions
diff --git a/pkg/gui/views.go b/pkg/gui/views.go index 2da245507..130ef4863 100644 --- a/pkg/gui/views.go +++ b/pkg/gui/views.go @@ -3,34 +3,43 @@ package gui import ( "github.com/jesseduffield/generics/slices" "github.com/jesseduffield/gocui" - "github.com/jesseduffield/lazygit/pkg/gui/context" - "github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/jesseduffield/lazygit/pkg/theme" ) type Views struct { Status *gocui.View + Submodules *gocui.View Files *gocui.View Branches *gocui.View + Remotes *gocui.View + Tags *gocui.View RemoteBranches *gocui.View + ReflogCommits *gocui.View Commits *gocui.View Stash *gocui.View - Main *gocui.View - Secondary *gocui.View - Options *gocui.View - Confirmation *gocui.View - Menu *gocui.View - CommitMessage *gocui.View - CommitFiles *gocui.View - SubCommits *gocui.View - Information *gocui.View - AppStatus *gocui.View - Search *gocui.View - SearchPrefix *gocui.View - Limit *gocui.View - Suggestions *gocui.View - Tooltip *gocui.View - Extras *gocui.View + + Main *gocui.View + Secondary *gocui.View + Staging *gocui.View + StagingSecondary *gocui.View + PatchBuilding *gocui.View + PatchBuildingSecondary *gocui.View + Merging *gocui.View + + Options *gocui.View + Confirmation *gocui.View + Menu *gocui.View + CommitMessage *gocui.View + CommitFiles *gocui.View + SubCommits *gocui.View + Information *gocui.View + AppStatus *gocui.View + Search *gocui.View + SearchPrefix *gocui.View + Limit *gocui.View + Suggestions *gocui.View + Tooltip *gocui.View + Extras *gocui.View } type viewNameMapping struct { @@ -49,15 +58,26 @@ func (gui *Gui) orderedViewNameMappings() []viewNameMapping { // first layer. Ordering within this layer does not matter because there are // no overlapping views {viewPtr: &gui.Views.Status, name: "status"}, + {viewPtr: &gui.Views.Submodules, name: "submodules"}, {viewPtr: &gui.Views.Files, name: "files"}, - {viewPtr: &gui.Views.Branches, name: "branches"}, + {viewPtr: &gui.Views.Tags, name: "tags"}, + {viewPtr: &gui.Views.Remotes, name: "remotes"}, + {viewPtr: &gui.Views.Branches, name: "localBranches"}, {viewPtr: &gui.Views.RemoteBranches, name: "remoteBranches"}, + {viewPtr: &gui.Views.ReflogCommits, name: "reflogCommits"}, {viewPtr: &gui.Views.Commits, name: "commits"}, {viewPtr: &gui.Views.Stash, name: "stash"}, {viewPtr: &gui.Views.SubCommits, name: "subCommits"}, {viewPtr: &gui.Views.CommitFiles, name: "commitFiles"}, - {viewPtr: &gui.Views.Main, name: "main"}, + + {viewPtr: &gui.Views.Staging, name: "staging"}, + {viewPtr: &gui.Views.StagingSecondary, name: "stagingSecondary"}, + {viewPtr: &gui.Views.PatchBuilding, name: "patchBuilding"}, + {viewPtr: &gui.Views.PatchBuildingSecondary, name: "patchBuildingSecondary"}, + {viewPtr: &gui.Views.Merging, name: "merging"}, {viewPtr: &gui.Views.Secondary, name: "secondary"}, + {viewPtr: &gui.Views.Main, name: "main"}, + {viewPtr: &gui.Views.Extras, name: "extras"}, // bottom line @@ -80,35 +100,13 @@ func (gui *Gui) orderedViewNameMappings() []viewNameMapping { } } -type controlledView struct { - viewName string - windowName string - frame bool -} - -// controlled views have their size and position determined in arrangement.go. -// Some views, like the confirmation panel, are currently sized at the time of -// displaying the view, based on the view's contents. -func (gui *Gui) controlledViews() []controlledView { - return []controlledView{ - {viewName: "main", windowName: "main", frame: true}, - {viewName: "secondary", windowName: "secondary", frame: true}, - {viewName: "status", windowName: "status", frame: true}, - {viewName: "files", windowName: "files", frame: true}, - {viewName: "branches", windowName: "branches", frame: true}, - {viewName: "remoteBranches", windowName: "branches", frame: true}, - {viewName: "commitFiles", windowName: gui.State.Contexts.CommitFiles.GetWindowName(), frame: true}, - {viewName: "subCommits", windowName: gui.State.Contexts.SubCommits.GetWindowName(), frame: true}, - {viewName: "commits", windowName: "commits", frame: true}, - {viewName: "stash", windowName: "stash", frame: true}, - {viewName: "options", windowName: "options", frame: false}, - {viewName: "searchPrefix", windowName: "searchPrefix", frame: false}, - {viewName: "search", windowName: "search", frame: false}, - {viewName: "appStatus", windowName: "appStatus", frame: false}, - {viewName: "information", windowName: "information", frame: false}, - {viewName: "extras", windowName: "extras", frame: true}, - {viewName: "limit", windowName: "limit", frame: true}, +func (gui *Gui) windowForView(viewName string) string { + context, ok := gui.contextForView(viewName) + if !ok { + panic("todo: deal with this") } + + return context.GetWindowName() } func (gui *Gui) createAllViews() error { @@ -121,9 +119,11 @@ func (gui *Gui) createAllViews() error { } gui.Views.Options.FgColor = theme.OptionsColor + gui.Views.Options.Frame = false gui.Views.SearchPrefix.BgColor = gocui.ColorDefault gui.Views.SearchPrefix.FgColor = gocui.ColorGreen + gui.Views.SearchPrefix.Frame = false gui.setViewContent(gui.Views.SearchPrefix, SEARCH_PREFIX) gui.Views.Stash.Title = gui.c.Tr.StashTitle @@ -140,22 +140,44 @@ func (gui *Gui) createAllViews() error { gui.Views.Branches.Title = gui.c.Tr.BranchesTitle gui.Views.Branches.FgColor = theme.GocuiDefaultTextColor + gui.Views.Remotes.Title = gui.c.Tr.RemotesTitle + gui.Views.Remotes.FgColor = theme.GocuiDefaultTextColor + + gui.Views.Tags.Title = gui.c.Tr.TagsTitle + gui.Views.Tags.FgColor = theme.GocuiDefaultTextColor + gui.Views.RemoteBranches.FgColor = theme.GocuiDefaultTextColor gui.Views.Files.Title = gui.c.Tr.FilesTitle gui.Views.Files.FgColor = theme.GocuiDefaultTextColor - gui.Views.Secondary.Title = gui.c.Tr.DiffTitle - gui.Views.Secondary.Wrap = true - gui.Views.Secondary.FgColor = theme.GocuiDefaultTextColor - gui.Views.Secondary.IgnoreCarriageReturns = true - gui.Views.Secondary.CanScrollPastBottom = gui.c.UserConfig.Gui.ScrollPastBottom + for _, view := range []*gocui.View{gui.Views.Main, gui.Views.Secondary, gui.Views.Staging, gui.Views.StagingSecondary, gui.Views.PatchBuilding, gui.Views.PatchBuildingSecondary, gui.Views.Merging} { + view.Title = gui.c.Tr.DiffTitle + view.Wrap = true + view.FgColor = theme.GocuiDefaultTextColor + view.IgnoreCarriageReturns = true + view.CanScrollPastBottom = gui.c.UserConfig.Gui.ScrollPastBottom + } + + gui.Views.Staging.Title = gui.c.Tr.UnstagedChanges + gui.Views.Staging.Highlight = true + gui.Views.Staging.Wrap = true + + gui.Views.StagingSecondary.Title = gui.c.Tr.StagedChanges + gui.Views.StagingSecondary.Highlight = true + gui.Views.StagingSecondary.Wrap = true + + gui.Views.PatchBuilding.Title = gui.Tr.Patch + gui.Views.PatchBuilding.Highlight = true + gui.Views.PatchBuilding.Wrap = true - gui.Views.Main.Title = gui.c.Tr.DiffTitle - gui.Views.Main.Wrap = true - gui.Views.Main.FgColor = theme.GocuiDefaultTextColor - gui.Views.Main.IgnoreCarriageReturns = true - gui.Views.Main.CanScrollPastBottom = gui.c.UserConfig.Gui.ScrollPastBottom + gui.Views.PatchBuildingSecondary.Title = gui.Tr.CustomPatch + gui.Views.PatchBuildingSecondary.Highlight = true + gui.Views.PatchBuildingSecondary.Wrap = true + + gui.Views.Merging.Title = gui.c.Tr.MergeConflictsTitle + gui.Views.Merging.Highlight = true + gui.Views.Merging.Wrap = true gui.Views.Limit.Title = gui.c.Tr.NotEnoughSpace gui.Views.Limit.Wrap = true @@ -166,10 +188,12 @@ func (gui *Gui) createAllViews() error { gui.Views.Search.BgColor = gocui.ColorDefault gui.Views.Search.FgColor = gocui.ColorGreen gui.Views.Search.Editable = true + gui.Views.Search.Frame = false gui.Views.AppStatus.BgColor = gocui.ColorDefault gui.Views.AppStatus.FgColor = gocui.ColorCyan gui.Views.AppStatus.Visible = false + gui.Views.AppStatus.Frame = false gui.Views.CommitMessage.Visible = false gui.Views.CommitMessage.Title = gui.c.Tr.CommitMessage @@ -189,6 +213,7 @@ func (gui *Gui) createAllViews() error { gui.Views.Information.BgColor = gocui.ColorDefault gui.Views.Information.FgColor = gocui.ColorGreen + gui.Views.Information.Frame = false gui.Views.Extras.Title = gui.c.Tr.CommandLog gui.Views.Extras.FgColor = theme.GocuiDefaultTextColor @@ -197,22 +222,3 @@ func (gui *Gui) createAllViews() error { return nil } - -func initialViewContextMapping(contextTree *context.ContextTree) map[string]types.Context { - return map[string]types.Context{ - "status": contextTree.Status, - "files": contextTree.Files, - "branches": contextTree.Branches, - "remoteBranches": contextTree.RemoteBranches, - "commits": contextTree.LocalCommits, - "commitFiles": contextTree.CommitFiles, - "subCommits": contextTree.SubCommits, - "stash": contextTree.Stash, - "menu": contextTree.Menu, - "confirmation": contextTree.Confirmation, - "commitMessage": contextTree.CommitMessage, - "main": contextTree.Normal, - "secondary": contextTree.Normal, - "extras": contextTree.CommandLog, - } -} |