summaryrefslogtreecommitdiffstats
path: root/pkg/gui/files_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-11-15 10:45:55 +1100
committerJesse Duffield <jessedduffield@gmail.com>2021-03-30 21:57:00 +1100
commit45939171ea6537562270975348fe2919c9c60b95 (patch)
treeb9c4138c32b54577a3d6f17acdc0f4132c2ebc9e /pkg/gui/files_panel.go
parent049849264e561d2867d0d94940b1f66dcac77e6b (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.go37
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
}