basic listbox selection working
This commit is contained in:
22
main.go
22
main.go
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}))
|
||||
|
Reference in New Issue
Block a user