1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-21 12:16:54 +02:00

remove controllers struct

This commit is contained in:
Jesse Duffield 2022-03-26 15:52:35 +11:00
parent f0a4dcfdc3
commit 0dfb7c08b7
10 changed files with 57 additions and 96 deletions

View File

@ -189,9 +189,6 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
<kbd>v</kbd>: toggle drag select <kbd>v</kbd>: toggle drag select
<kbd>V</kbd>: toggle drag select <kbd>V</kbd>: toggle drag select
<kbd>a</kbd>: toggle select hunk <kbd>a</kbd>: toggle select hunk
<kbd>c</kbd>: commit changes
<kbd>w</kbd>: commit changes without pre-commit hook
<kbd>C</kbd>: commit changes using git editor
</pre> </pre>
## Reflog ## Reflog

View File

@ -227,9 +227,6 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
<kbd>v</kbd>: toggle drag selecteer <kbd>v</kbd>: toggle drag selecteer
<kbd>V</kbd>: toggle drag selecteer <kbd>V</kbd>: toggle drag selecteer
<kbd>a</kbd>: toggle selecteer hunk <kbd>a</kbd>: toggle selecteer hunk
<kbd>c</kbd>: commit veranderingen
<kbd>w</kbd>: commit veranderingen zonder pre-commit hook
<kbd>C</kbd>: commit veranderingen met de git editor
</pre> </pre>
## Stash ## Stash

View File

@ -168,9 +168,6 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
<kbd>v</kbd>: toggle drag select <kbd>v</kbd>: toggle drag select
<kbd>V</kbd>: toggle drag select <kbd>V</kbd>: toggle drag select
<kbd>a</kbd>: toggle select hunk <kbd>a</kbd>: toggle select hunk
<kbd>c</kbd>: Zatwierdź zmiany
<kbd>w</kbd>: zatwierdź zmiany bez skryptu pre-commit
<kbd>C</kbd>: Zatwierdź zmiany używając edytora
</pre> </pre>
## Reflog ## Reflog

View File

@ -236,9 +236,6 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
<kbd>v</kbd>: 切换拖动选择 <kbd>v</kbd>: 切换拖动选择
<kbd>V</kbd>: 切换拖动选择 <kbd>V</kbd>: 切换拖动选择
<kbd>a</kbd>: 切换选择区块 <kbd>a</kbd>: 切换选择区块
<kbd>c</kbd>: 提交更改
<kbd>w</kbd>: 提交更改而无需预先提交钩子
<kbd>C</kbd>: 提交更改(使用编辑器编辑提交信息)
</pre> </pre>
## 正常 ## 正常

View File

@ -30,7 +30,7 @@ func (gui *Gui) resetControllers() {
Bisect: helpers.NewBisectHelper(helperCommon, gui.git), Bisect: helpers.NewBisectHelper(helperCommon, gui.git),
Suggestions: helpers.NewSuggestionsHelper(helperCommon, model, gui.refreshSuggestions), Suggestions: helpers.NewSuggestionsHelper(helperCommon, model, gui.refreshSuggestions),
Files: helpers.NewFilesHelper(helperCommon, gui.git, osCommand), Files: helpers.NewFilesHelper(helperCommon, gui.git, osCommand),
WorkingTree: helpers.NewWorkingTreeHelper(model), WorkingTree: helpers.NewWorkingTreeHelper(helperCommon, gui.git, model),
Tags: helpers.NewTagsHelper(helperCommon, gui.git), Tags: helpers.NewTagsHelper(helperCommon, gui.git),
GPG: helpers.NewGpgHelper(helperCommon, gui.os, gui.git), GPG: helpers.NewGpgHelper(helperCommon, gui.os, gui.git),
MergeAndRebase: rebaseHelper, MergeAndRebase: rebaseHelper,
@ -102,27 +102,22 @@ func (gui *Gui) resetControllers() {
remoteBranchesController := controllers.NewRemoteBranchesController(common) remoteBranchesController := controllers.NewRemoteBranchesController(common)
gui.Controllers = Controllers{ menuController := controllers.NewMenuController(common)
Submodules: submodulesController, localCommitsController := controllers.NewLocalCommitsController(common, syncController.HandlePull)
Global: controllers.NewGlobalController(common), tagsController := controllers.NewTagsController(common)
Files: controllers.NewFilesController( filesController := controllers.NewFilesController(
common, common,
gui.enterSubmodule, gui.enterSubmodule,
setCommitMessage, setCommitMessage,
getSavedCommitMessage, getSavedCommitMessage,
gui.switchToMerge, gui.switchToMerge,
), )
Tags: controllers.NewTagsController(common), remotesController := controllers.NewRemotesController(
LocalCommits: controllers.NewLocalCommitsController(common, syncController.HandlePull), common,
Remotes: controllers.NewRemotesController( func(branches []*models.RemoteBranch) { gui.State.Model.RemoteBranches = branches },
common, )
func(branches []*models.RemoteBranch) { gui.State.Model.RemoteBranches = branches }, undoController := controllers.NewUndoController(common)
), globalController := controllers.NewGlobalController(common)
Menu: controllers.NewMenuController(common),
Undo: controllers.NewUndoController(common),
Sync: syncController,
}
branchesController := controllers.NewBranchesController(common) branchesController := controllers.NewBranchesController(common)
gitFlowController := controllers.NewGitFlowController(common) gitFlowController := controllers.NewGitFlowController(common)
filesRemoveController := controllers.NewFilesRemoveController(common) filesRemoveController := controllers.NewFilesRemoveController(common)
@ -160,18 +155,19 @@ func (gui *Gui) resetControllers() {
controllers.AttachControllers(context, controllers.NewBasicCommitsController(common, context)) controllers.AttachControllers(context, controllers.NewBasicCommitsController(common, context))
} }
controllers.AttachControllers(gui.State.Contexts.Files, filesController, filesRemoveController)
controllers.AttachControllers(gui.State.Contexts.Tags, tagsController)
controllers.AttachControllers(gui.State.Contexts.Submodules, submodulesController)
controllers.AttachControllers(gui.State.Contexts.LocalCommits, localCommitsController, bisectController)
controllers.AttachControllers(gui.State.Contexts.Branches, branchesController, gitFlowController) controllers.AttachControllers(gui.State.Contexts.Branches, branchesController, gitFlowController)
controllers.AttachControllers(gui.State.Contexts.Files, gui.Controllers.Files, filesRemoveController) controllers.AttachControllers(gui.State.Contexts.LocalCommits, localCommitsController, bisectController)
controllers.AttachControllers(gui.State.Contexts.Tags, gui.Controllers.Tags)
controllers.AttachControllers(gui.State.Contexts.Submodules, gui.Controllers.Submodules)
controllers.AttachControllers(gui.State.Contexts.LocalCommits, gui.Controllers.LocalCommits, bisectController)
controllers.AttachControllers(gui.State.Contexts.CommitFiles, commitFilesController) controllers.AttachControllers(gui.State.Contexts.CommitFiles, commitFilesController)
controllers.AttachControllers(gui.State.Contexts.Remotes, gui.Controllers.Remotes) controllers.AttachControllers(gui.State.Contexts.Remotes, remotesController)
controllers.AttachControllers(gui.State.Contexts.Stash, stashController) controllers.AttachControllers(gui.State.Contexts.Stash, stashController)
controllers.AttachControllers(gui.State.Contexts.Menu, gui.Controllers.Menu) controllers.AttachControllers(gui.State.Contexts.Menu, menuController)
controllers.AttachControllers(gui.State.Contexts.CommitMessage, commitMessageController) controllers.AttachControllers(gui.State.Contexts.CommitMessage, commitMessageController)
controllers.AttachControllers(gui.State.Contexts.RemoteBranches, remoteBranchesController) controllers.AttachControllers(gui.State.Contexts.RemoteBranches, remoteBranchesController)
controllers.AttachControllers(gui.State.Contexts.Global, gui.Controllers.Sync, gui.Controllers.Undo, gui.Controllers.Global) controllers.AttachControllers(gui.State.Contexts.Global, syncController, undoController, globalController)
// this must come last so that we've got our click handlers defined against the context // this must come last so that we've got our click handlers defined against the context
listControllerFactory := controllers.NewListControllerFactory(gui.c) listControllerFactory := controllers.NewListControllerFactory(gui.c)

View File

@ -135,7 +135,7 @@ func (self *FilesController) GetKeybindings(opts types.KeybindingsOpts) []*types
}, },
{ {
Key: opts.GetKey(opts.Config.Files.OpenMergeTool), Key: opts.GetKey(opts.Config.Files.OpenMergeTool),
Handler: self.OpenMergeTool, Handler: self.helpers.WorkingTree.OpenMergeTool,
Description: self.c.Tr.LcOpenMergeTool, Description: self.c.Tr.LcOpenMergeTool,
}, },
{ {
@ -603,19 +603,6 @@ func (self *FilesController) toggleTreeView() error {
return self.c.PostRefreshUpdate(self.context()) return self.c.PostRefreshUpdate(self.context())
} }
func (self *FilesController) OpenMergeTool() error {
return self.c.Ask(types.AskOpts{
Title: self.c.Tr.MergeToolTitle,
Prompt: self.c.Tr.MergeToolPrompt,
HandleConfirm: func() error {
self.c.LogAction(self.c.Tr.Actions.OpenMergeTool)
return self.c.RunSubprocessAndRefresh(
self.git.WorkingTree.OpenMergeToolCmdObj(),
)
},
})
}
func (self *FilesController) handleStashSave(stashFunc func(message string) error) error { func (self *FilesController) handleStashSave(stashFunc func(message string) error) error {
if !self.helpers.WorkingTree.IsWorkingTreeDirty() { if !self.helpers.WorkingTree.IsWorkingTreeDirty() {
return self.c.ErrorMsg(self.c.Tr.NoTrackedStagedFilesStash) return self.c.ErrorMsg(self.c.Tr.NoTrackedStagedFilesStash)

View File

@ -1,6 +1,7 @@
package helpers package helpers
import ( import (
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/jesseduffield/lazygit/pkg/gui/types"
) )
@ -13,11 +14,16 @@ type IWorkingTreeHelper interface {
} }
type WorkingTreeHelper struct { type WorkingTreeHelper struct {
c *types.HelperCommon
git *commands.GitCommand
model *types.Model model *types.Model
} }
func NewWorkingTreeHelper(model *types.Model) *WorkingTreeHelper { func NewWorkingTreeHelper(c *types.HelperCommon, git *commands.GitCommand, model *types.Model) *WorkingTreeHelper {
return &WorkingTreeHelper{ return &WorkingTreeHelper{
c: c,
git: git,
model: model, model: model,
} }
} }
@ -53,3 +59,16 @@ func (self *WorkingTreeHelper) FileForSubmodule(submodule *models.SubmoduleConfi
return nil return nil
} }
func (self *WorkingTreeHelper) OpenMergeTool() error {
return self.c.Ask(types.AskOpts{
Title: self.c.Tr.MergeToolTitle,
Prompt: self.c.Tr.MergeToolPrompt,
HandleConfirm: func() error {
self.c.LogAction(self.c.Tr.Actions.OpenMergeTool)
return self.c.RunSubprocessAndRefresh(
self.git.WorkingTree.OpenMergeToolCmdObj(),
)
},
})
}

View File

@ -18,7 +18,6 @@ import (
"github.com/jesseduffield/lazygit/pkg/common" "github.com/jesseduffield/lazygit/pkg/common"
"github.com/jesseduffield/lazygit/pkg/config" "github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/context" "github.com/jesseduffield/lazygit/pkg/gui/context"
"github.com/jesseduffield/lazygit/pkg/gui/controllers"
"github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers" "github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers"
"github.com/jesseduffield/lazygit/pkg/gui/lbl" "github.com/jesseduffield/lazygit/pkg/gui/lbl"
"github.com/jesseduffield/lazygit/pkg/gui/mergeconflicts" "github.com/jesseduffield/lazygit/pkg/gui/mergeconflicts"
@ -129,9 +128,6 @@ type Gui struct {
IsNewRepo bool IsNewRepo bool
// controllers define keybindings for a given context
Controllers Controllers
// flag as to whether or not the diff view should ignore whitespace // flag as to whether or not the diff view should ignore whitespace
IgnoreWhitespaceInDiffView bool IgnoreWhitespaceInDiffView bool
@ -203,19 +199,6 @@ type GuiRepoState struct {
CurrentPopupOpts *types.CreatePopupPanelOpts CurrentPopupOpts *types.CreatePopupPanelOpts
} }
type Controllers struct {
Submodules *controllers.SubmodulesController
Tags *controllers.TagsController
LocalCommits *controllers.LocalCommitsController
Files *controllers.FilesController
Remotes *controllers.RemotesController
Menu *controllers.MenuController
Bisect *controllers.BisectController
Undo *controllers.UndoController
Sync *controllers.SyncController
Global *controllers.GlobalController
}
// for now the staging panel state, unlike the other panel states, is going to be // for now the staging panel state, unlike the other panel states, is going to be
// non-mutative, so that we don't accidentally end up // non-mutative, so that we don't accidentally end up
// with mismatches of data. We might change this in the future // with mismatches of data. We might change this in the future

View File

@ -619,7 +619,7 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
ViewName: "main", ViewName: "main",
Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)}, Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)},
Key: opts.GetKey(opts.Config.Universal.OpenFile), Key: opts.GetKey(opts.Config.Universal.OpenFile),
Handler: self.Controllers.Files.Open, Handler: self.HandleOpenFile,
Description: self.c.Tr.LcOpenFile, Description: self.c.Tr.LcOpenFile,
}, },
{ {
@ -739,27 +739,6 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
Description: self.c.Tr.LcScrollRight, Description: self.c.Tr.LcScrollRight,
Tag: "navigation", Tag: "navigation",
}, },
{
ViewName: "main",
Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)},
Key: opts.GetKey(opts.Config.Files.CommitChanges),
Handler: self.Controllers.Files.HandleCommitPress,
Description: self.c.Tr.CommitChanges,
},
{
ViewName: "main",
Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)},
Key: opts.GetKey(opts.Config.Files.CommitChangesWithoutHook),
Handler: self.Controllers.Files.HandleWIPCommitPress,
Description: self.c.Tr.LcCommitChangesWithoutHook,
},
{
ViewName: "main",
Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)},
Key: opts.GetKey(opts.Config.Files.CommitChangesWithEditor),
Handler: self.Controllers.Files.HandleCommitEditorPress,
Description: self.c.Tr.CommitChangesWithEditor,
},
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)}, Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)},
@ -771,7 +750,7 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
ViewName: "main", ViewName: "main",
Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)}, Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)},
Key: opts.GetKey(opts.Config.Files.OpenMergeTool), Key: opts.GetKey(opts.Config.Files.OpenMergeTool),
Handler: self.Controllers.Files.OpenMergeTool, Handler: self.helpers.WorkingTree.OpenMergeTool,
Description: self.c.Tr.LcOpenMergeTool, Description: self.c.Tr.LcOpenMergeTool,
}, },
{ {

View File

@ -165,3 +165,12 @@ func (gui *Gui) applySelection(reverse bool, state *LblPanelState) error {
} }
return nil return nil
} }
func (gui *Gui) HandleOpenFile() error {
file := gui.getSelectedFile()
if file == nil {
return nil
}
return gui.helpers.Files.OpenFile(file.GetPath())
}