summaryrefslogtreecommitdiffstats
path: root/pkg/gui/views.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/views.go')
-rw-r--r--pkg/gui/views.go160
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,
- }
-}