basic listbox selection working
This commit is contained in:
2
go.mod
2
go.mod
@@ -4,7 +4,7 @@ go 1.24.0
|
||||
|
||||
require (
|
||||
github.com/disintegration/imaging v1.6.2
|
||||
modernc.org/tk9.0 v0.68.0
|
||||
modernc.org/tk9.0 v0.68.2-0.20250417123848-ef9ac7c6aea1
|
||||
)
|
||||
|
||||
require (
|
||||
|
2
go.sum
2
go.sum
@@ -119,5 +119,7 @@ modernc.org/tcl9.0 v0.16.0 h1:Me5on7SpLPIv3yEkUiFVG14YR1AbvzHrZGkEu4s696s=
|
||||
modernc.org/tcl9.0 v0.16.0/go.mod h1:RMBQkc0bU2Sl7et9IoZjFG3Bcehh+6ARJgVBpKJ48+4=
|
||||
modernc.org/tk9.0 v0.68.0 h1:Qt6ENHG774ZYsDpMq5R1VKR0S5PQdyuQXFtMol6WJyg=
|
||||
modernc.org/tk9.0 v0.68.0/go.mod h1:YAR5KsxdaU5uTL+1PLEXrQN+rrhJ+Sz+suwXM7piwFU=
|
||||
modernc.org/tk9.0 v0.68.2-0.20250417123848-ef9ac7c6aea1 h1:Gg+D6aT+sW5zTGjRspRv2HPnWAJvamXpDwEx+ea1GzA=
|
||||
modernc.org/tk9.0 v0.68.2-0.20250417123848-ef9ac7c6aea1/go.mod h1:YAR5KsxdaU5uTL+1PLEXrQN+rrhJ+Sz+suwXM7piwFU=
|
||||
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
|
||||
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
||||
|
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