cut down on the number of loops through the directory listing
This commit is contained in:
43
main.go
43
main.go
@@ -93,24 +93,26 @@ func newBrowse(file string) {
|
|||||||
log.Printf("could not open dir: %v", err)
|
log.Printf("could not open dir: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
directoryState.images = []string{}
|
// natsort the directory listing first...
|
||||||
for _, v := range dirfiles {
|
slices.SortFunc(dirfiles, func(a, b os.DirEntry) int {
|
||||||
if filetypes.IsImage(v) {
|
if natural.Less(a.Name(), b.Name()) {
|
||||||
directoryState.images = append(directoryState.images, v.Name())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
slices.SortFunc(directoryState.images, func(a, b string) int {
|
|
||||||
if natural.Less(a, b) {
|
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
return 1
|
return 1
|
||||||
})
|
})
|
||||||
|
// ...that way we only have to do this loop once.
|
||||||
clearFileList()
|
clearFileList()
|
||||||
for i, v := range directoryState.images {
|
directoryState.images = []string{}
|
||||||
insertIntoFileList(directoryState.images[i])
|
i := 0
|
||||||
if v == filepath.Base(file) {
|
for _, v := range dirfiles {
|
||||||
directoryState.i = i
|
if filetypes.IsImage(v) {
|
||||||
moveSelectionInFileList(i)
|
directoryState.images = append(directoryState.images, v.Name())
|
||||||
|
insertIntoFileList(directoryState.images[i])
|
||||||
|
if v.Name() == filepath.Base(file) {
|
||||||
|
directoryState.i = i
|
||||||
|
moveSelectionInFileList(i)
|
||||||
|
}
|
||||||
|
i++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
updateImage(file)
|
updateImage(file)
|
||||||
@@ -225,19 +227,18 @@ func constructFileList() {
|
|||||||
fileList = nil
|
fileList = nil
|
||||||
fileListBindVar.Set("0")
|
fileListBindVar.Set("0")
|
||||||
}))
|
}))
|
||||||
|
clearFileList()
|
||||||
|
for i := range directoryState.images {
|
||||||
|
insertIntoFileList(directoryState.images[i])
|
||||||
|
if directoryState.i == i {
|
||||||
|
moveSelectionInFileList(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func showFileList() {
|
func showFileList() {
|
||||||
if fileList == nil {
|
if fileList == nil {
|
||||||
constructFileList()
|
constructFileList()
|
||||||
// repopulate
|
|
||||||
lb.Delete("0", "end")
|
|
||||||
for i := range directoryState.images {
|
|
||||||
lb.Insert("end", directoryState.images[i])
|
|
||||||
if directoryState.i == i {
|
|
||||||
lb.SelectionSet(i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
tk.WmDeiconify(fileList.Window)
|
tk.WmDeiconify(fileList.Window)
|
||||||
fileListBindVar.Set("1")
|
fileListBindVar.Set("1")
|
||||||
|
Reference in New Issue
Block a user