basic listbox selection working
This commit is contained in:
2
go.mod
2
go.mod
@@ -4,7 +4,7 @@ go 1.24.0
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/disintegration/imaging v1.6.2
|
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 (
|
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/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 h1:Qt6ENHG774ZYsDpMq5R1VKR0S5PQdyuQXFtMol6WJyg=
|
||||||
modernc.org/tk9.0 v0.68.0/go.mod h1:YAR5KsxdaU5uTL+1PLEXrQN+rrhJ+Sz+suwXM7piwFU=
|
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 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
|
||||||
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
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 metaActive bool
|
||||||
var fileList *tk.ToplevelWidget
|
var fileList *tk.ToplevelWidget
|
||||||
|
var lb *tk.ListboxWidget
|
||||||
|
|
||||||
var directoryState struct {
|
var directoryState struct {
|
||||||
currentDirectory string
|
currentDirectory string
|
||||||
@@ -159,9 +160,22 @@ func main() {
|
|||||||
if fileList == nil {
|
if fileList == nil {
|
||||||
fileList = tk.Toplevel()
|
fileList = tk.Toplevel()
|
||||||
fileList.WmTitle("files")
|
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) {
|
tk.Bind(fileList, "<Destroy>", tk.Command(func(e *tk.Event) {
|
||||||
// list closed by user click on <x>
|
// list closed by user click on <x>
|
||||||
fileList = nil
|
fileList = nil
|
||||||
|
lb = nil
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
// list closed by Meta-a
|
// list closed by Meta-a
|
||||||
@@ -171,10 +185,18 @@ func main() {
|
|||||||
case "Up":
|
case "Up":
|
||||||
if curr > 0 {
|
if curr > 0 {
|
||||||
updateImage(filepath.Join(directoryState.currentDirectory, directoryState.images[curr-1]), img)
|
updateImage(filepath.Join(directoryState.currentDirectory, directoryState.images[curr-1]), img)
|
||||||
|
if lb != nil {
|
||||||
|
lb.SelectionClear("0", "end")
|
||||||
|
lb.SelectionSet(curr - 1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case "Down":
|
case "Down":
|
||||||
if curr < len(directoryState.images)-1 && curr != -1 {
|
if curr < len(directoryState.images)-1 && curr != -1 {
|
||||||
updateImage(filepath.Join(directoryState.currentDirectory, directoryState.images[curr+1]), img)
|
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