From ad2d3e13fc9f91cf6bed3d29c26522dd5b185a7a Mon Sep 17 00:00:00 2001 From: David Ashby Date: Sun, 23 Feb 2025 14:20:48 -0500 Subject: [PATCH] add directory load --- main.go | 59 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/main.go b/main.go index 4d62786..ad6e679 100644 --- a/main.go +++ b/main.go @@ -99,24 +99,48 @@ func jpegToPng(in io.Reader) (*bytes.Buffer, error) { return buf, nil } -func newDirectory(img *tk.LabelWidget) func() { +func newFileInDirectory(img *tk.LabelWidget) func() { return func() { files := tk.GetOpenFile(tk.Filetypes(validFileTypes)) - if len(files) > 0 { - directoryState.currentFile = filepath.Base(files[0]) - directoryState.currentDirectory = filepath.Dir(files[0]) - dirfiles, err := os.ReadDir(directoryState.currentDirectory) - if err != nil { - log.Println(err) - } - directoryState.images = []string{} - for _, v := range dirfiles { - if isImage(v) { - directoryState.images = append(directoryState.images, v.Name()) - } - } - updateImage(files[0], img) + if len(files) < 1 || files[0] == "" { + log.Println("no file chosen") + return } + directoryState.currentFile = filepath.Base(files[0]) + directoryState.currentDirectory = filepath.Dir(files[0]) + dirfiles, err := os.ReadDir(directoryState.currentDirectory) + if err != nil { + log.Println(err) + } + directoryState.images = []string{} + for _, v := range dirfiles { + if isImage(v) { + directoryState.images = append(directoryState.images, v.Name()) + } + } + updateImage(files[0], img) + } +} + +func newDirectory(img *tk.LabelWidget) func() { + return func() { + dir := tk.ChooseDirectory() + if dir == "" { + log.Println("no directory chosen") + return + } + directoryState.currentDirectory = dir + dirfiles, err := os.ReadDir(directoryState.currentDirectory) + if err != nil { + log.Println(err) + } + directoryState.images = []string{} + for _, v := range dirfiles { + if isImage(v) { + directoryState.images = append(directoryState.images, v.Name()) + } + } + updateImage(filepath.Join(directoryState.currentDirectory, directoryState.images[0]), img) } } @@ -150,7 +174,8 @@ func main() { menubar := tk.Menu() fileMenu := menubar.Menu() - fileMenu.AddCommand(tk.Lbl("Open"), tk.Underline(0), tk.Accelerator("Meta+O"), tk.Command(newDirectory(img))) + fileMenu.AddCommand(tk.Lbl("Open File"), tk.Underline(0), tk.Accelerator("Meta+O"), tk.Command(newFileInDirectory(img))) + fileMenu.AddCommand(tk.Lbl("Open Directory"), tk.Underline(0), tk.Command(newDirectory(img))) menubar.AddCascade(tk.Lbl("File"), tk.Underline(0), tk.Mnu(fileMenu)) // TODO: if someone presses the Meta key again after the openfile dialog box closes, @@ -164,7 +189,7 @@ func main() { metaActive = true case "o": if metaActive { - newDirectory(img)() + newFileInDirectory(img)() } case "Up": if curr > 0 {