1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-02-03 13:21:56 +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>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>
## 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>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>
## 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>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>
## 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>a</kbd>: 切换选择区块
<kbd>c</kbd>: 提交更改
<kbd>w</kbd>: 提交更改而无需预先提交钩子
<kbd>C</kbd>: 提交更改(使用编辑器编辑提交信息)
</pre>
## 正常

View File

@ -30,7 +30,7 @@ func (gui *Gui) resetControllers() {
Bisect: helpers.NewBisectHelper(helperCommon, gui.git),
Suggestions: helpers.NewSuggestionsHelper(helperCommon, model, gui.refreshSuggestions),
Files: helpers.NewFilesHelper(helperCommon, gui.git, osCommand),
WorkingTree: helpers.NewWorkingTreeHelper(model),
WorkingTree: helpers.NewWorkingTreeHelper(helperCommon, gui.git, model),
Tags: helpers.NewTagsHelper(helperCommon, gui.git),
GPG: helpers.NewGpgHelper(helperCommon, gui.os, gui.git),
MergeAndRebase: rebaseHelper,
@ -102,27 +102,22 @@ func (gui *Gui) resetControllers() {
remoteBranchesController := controllers.NewRemoteBranchesController(common)
gui.Controllers = Controllers{
Submodules: submodulesController,
Global: controllers.NewGlobalController(common),
Files: controllers.NewFilesController(
common,
gui.enterSubmodule,
setCommitMessage,
getSavedCommitMessage,
gui.switchToMerge,
),
Tags: controllers.NewTagsController(common),
LocalCommits: controllers.NewLocalCommitsController(common, syncController.HandlePull),
Remotes: controllers.NewRemotesController(
common,
func(branches []*models.RemoteBranch) { gui.State.Model.RemoteBranches = branches },
),
Menu: controllers.NewMenuController(common),
Undo: controllers.NewUndoController(common),
Sync: syncController,
}
menuController := controllers.NewMenuController(common)
localCommitsController := controllers.NewLocalCommitsController(common, syncController.HandlePull)
tagsController := controllers.NewTagsController(common)
filesController := controllers.NewFilesController(
common,
gui.enterSubmodule,
setCommitMessage,
getSavedCommitMessage,
gui.switchToMerge,
)
remotesController := controllers.NewRemotesController(
common,
func(branches []*models.RemoteBranch) { gui.State.Model.RemoteBranches = branches },
)
undoController := controllers.NewUndoController(common)
globalController := controllers.NewGlobalController(common)
branchesController := controllers.NewBranchesController(common)
gitFlowController := controllers.NewGitFlowController(common)
filesRemoveController := controllers.NewFilesRemoveController(common)
@ -160,18 +155,19 @@ func (gui *Gui) resetControllers() {
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.Files, gui.Controllers.Files, filesRemoveController)
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.LocalCommits, localCommitsController, bisectController)
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.Menu, gui.Controllers.Menu)
controllers.AttachControllers(gui.State.Contexts.Menu, menuController)
controllers.AttachControllers(gui.State.Contexts.CommitMessage, commitMessageController)
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
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),
Handler: self.OpenMergeTool,
Handler: self.helpers.WorkingTree.OpenMergeTool,
Description: self.c.Tr.LcOpenMergeTool,
},
{
@ -603,19 +603,6 @@ func (self *FilesController) toggleTreeView() error {
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 {
if !self.helpers.WorkingTree.IsWorkingTreeDirty() {
return self.c.ErrorMsg(self.c.Tr.NoTrackedStagedFilesStash)

View File

@ -1,6 +1,7 @@
package helpers
import (
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
@ -13,11 +14,16 @@ type IWorkingTreeHelper interface {
}
type WorkingTreeHelper struct {
c *types.HelperCommon
git *commands.GitCommand
model *types.Model
}
func NewWorkingTreeHelper(model *types.Model) *WorkingTreeHelper {
func NewWorkingTreeHelper(c *types.HelperCommon, git *commands.GitCommand, model *types.Model) *WorkingTreeHelper {
return &WorkingTreeHelper{
c: c,
git: git,
model: model,
}
}
@ -53,3 +59,16 @@ func (self *WorkingTreeHelper) FileForSubmodule(submodule *models.SubmoduleConfi
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/config"
"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/lbl"
"github.com/jesseduffield/lazygit/pkg/gui/mergeconflicts"
@ -129,9 +128,6 @@ type Gui struct {
IsNewRepo bool
// controllers define keybindings for a given context
Controllers Controllers
// flag as to whether or not the diff view should ignore whitespace
IgnoreWhitespaceInDiffView bool
@ -203,19 +199,6 @@ type GuiRepoState struct {
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
// non-mutative, so that we don't accidentally end up
// 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",
Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)},
Key: opts.GetKey(opts.Config.Universal.OpenFile),
Handler: self.Controllers.Files.Open,
Handler: self.HandleOpenFile,
Description: self.c.Tr.LcOpenFile,
},
{
@ -739,27 +739,6 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
Description: self.c.Tr.LcScrollRight,
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",
Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)},
@ -771,7 +750,7 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
ViewName: "main",
Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)},
Key: opts.GetKey(opts.Config.Files.OpenMergeTool),
Handler: self.Controllers.Files.OpenMergeTool,
Handler: self.helpers.WorkingTree.OpenMergeTool,
Description: self.c.Tr.LcOpenMergeTool,
},
{

View File

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