diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-11-15 10:45:55 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2021-03-30 21:57:00 +1100 |
commit | 45939171ea6537562270975348fe2919c9c60b95 (patch) | |
tree | b9c4138c32b54577a3d6f17acdc0f4132c2ebc9e /pkg/gui/files_panel.go | |
parent | 049849264e561d2867d0d94940b1f66dcac77e6b (diff) |
WIP
start moving to new interface
WIP
WIP
WIP
WIP
WIP
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r-- | pkg/gui/files_panel.go | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index 52bd6c346..8a388f9a0 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -21,13 +21,26 @@ import ( // list panel functions +// func (gui *Gui) getSelectedStatusNode() *models.StatusLineNode { +// selectedLine := gui.State.Panels.Files.SelectedLineIdx +// if selectedLine == -1 { +// return nil +// } + +// return gui.State.StatusLineManager.GetItemAtIndex(selectedLine) +// } + func (gui *Gui) getSelectedFile() *models.File { selectedLine := gui.State.Panels.Files.SelectedLineIdx if selectedLine == -1 { return nil } - return gui.State.Files[selectedLine] + node := gui.State.StatusLineManager.GetItemAtIndex(selectedLine) + if node == nil { + return nil + } + return node.File } func (gui *Gui) selectFile(alreadySelected bool) error { @@ -131,7 +144,7 @@ func (gui *Gui) refreshFilesAndSubmodules() error { // specific functions func (gui *Gui) stagedFiles() []*models.File { - files := gui.State.Files + files := gui.State.StatusLineManager.GetAllFiles() result := make([]*models.File, 0) for _, file := range files { if file.HasStagedChanges { @@ -142,7 +155,7 @@ func (gui *Gui) stagedFiles() []*models.File { } func (gui *Gui) trackedFiles() []*models.File { - files := gui.State.Files + files := gui.State.StatusLineManager.GetAllFiles() result := make([]*models.File, 0, len(files)) for _, file := range files { if file.Tracked { @@ -216,7 +229,7 @@ func (gui *Gui) handleFilePress() error { } func (gui *Gui) allFilesStaged() bool { - for _, file := range gui.State.Files { + for _, file := range gui.State.StatusLineManager.GetAllFiles() { if file.HasUnstagedChanges { return false } @@ -450,8 +463,11 @@ func (gui *Gui) refreshStateFiles() error { prevSelectedLineIdx := gui.State.Panels.Files.SelectedLineIdx // get files to stage - files := gui.GitCommand.GetStatusFiles(commands.GetStatusFileOptions{}) - gui.State.Files = gui.GitCommand.MergeStatusFiles(gui.State.Files, files, selectedFile) + noRenames := gui.State.StatusLineManager.TreeMode + files := gui.GitCommand.GetStatusFiles(commands.GetStatusFileOptions{NoRenames: noRenames}) + gui.State.StatusLineManager.SetFiles( + gui.GitCommand.MergeStatusFiles(gui.State.StatusLineManager.GetAllFiles(), files, selectedFile), + ) if err := gui.fileWatcher.addFilesToFileWatcher(files); err != nil { return err @@ -459,8 +475,9 @@ func (gui *Gui) refreshStateFiles() error { // let's try to find our file again and move the cursor to that if selectedFile != nil { - for idx, f := range gui.State.Files { - selectedFileHasMoved := f.Matches(selectedFile) && idx != prevSelectedLineIdx + for idx, node := range gui.State.StatusLineManager.GetAllItems() { + // TODO: check that this works + selectedFileHasMoved := node.File != nil && node.File.Matches(selectedFile) && idx != prevSelectedLineIdx if selectedFileHasMoved { gui.State.Panels.Files.SelectedLineIdx = idx break @@ -468,7 +485,7 @@ func (gui *Gui) refreshStateFiles() error { } } - gui.refreshSelectedLine(gui.State.Panels.Files, len(gui.State.Files)) + gui.refreshSelectedLine(gui.State.Panels.Files, gui.State.StatusLineManager.GetItemsLength()) return nil } @@ -661,7 +678,7 @@ func (gui *Gui) openFile(filename string) error { } func (gui *Gui) anyFilesWithMergeConflicts() bool { - for _, file := range gui.State.Files { + for _, file := range gui.State.StatusLineManager.GetAllFiles() { if file.HasMergeConflicts { return true } |