basic listbox selection working

This commit is contained in:
2025-04-17 20:56:27 -04:00
parent 8c8bddce44
commit b5f670ead7
3 changed files with 25 additions and 1 deletions

22
main.go
View File

@@ -31,6 +31,7 @@ var validFileTypes = []tk.FileType{
var metaActive bool
var fileList *tk.ToplevelWidget
var lb *tk.ListboxWidget
var directoryState struct {
currentDirectory string
@@ -159,9 +160,22 @@ func main() {
if fileList == nil {
fileList = tk.Toplevel()
fileList.WmTitle("files")
lb = fileList.Listbox(tk.Height(0))
for i := range directoryState.images {
lb.Insert("end", directoryState.images[i])
if directoryState.currentFile == directoryState.images[i] {
lb.SelectionSet(i)
}
}
tk.Pack(lb)
tk.Bind(lb, "<<ListboxSelect>>", tk.Command(func() {
selection := lb.Curselection()
updateImage(filepath.Join(directoryState.currentDirectory, directoryState.images[selection[0]]), img)
}))
tk.Bind(fileList, "<Destroy>", tk.Command(func(e *tk.Event) {
// list closed by user click on <x>
fileList = nil
lb = nil
}))
} else {
// list closed by Meta-a
@@ -171,10 +185,18 @@ func main() {
case "Up":
if curr > 0 {
updateImage(filepath.Join(directoryState.currentDirectory, directoryState.images[curr-1]), img)
if lb != nil {
lb.SelectionClear("0", "end")
lb.SelectionSet(curr - 1)
}
}
case "Down":
if curr < len(directoryState.images)-1 && curr != -1 {
updateImage(filepath.Join(directoryState.currentDirectory, directoryState.images[curr+1]), img)
if lb != nil {
lb.SelectionClear("0", "end")
lb.SelectionSet(curr + 1)
}
}
}
}))