add directory load
This commit is contained in:
59
main.go
59
main.go
@@ -99,24 +99,48 @@ func jpegToPng(in io.Reader) (*bytes.Buffer, error) {
|
|||||||
return buf, nil
|
return buf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newDirectory(img *tk.LabelWidget) func() {
|
func newFileInDirectory(img *tk.LabelWidget) func() {
|
||||||
return func() {
|
return func() {
|
||||||
files := tk.GetOpenFile(tk.Filetypes(validFileTypes))
|
files := tk.GetOpenFile(tk.Filetypes(validFileTypes))
|
||||||
if len(files) > 0 {
|
if len(files) < 1 || files[0] == "" {
|
||||||
directoryState.currentFile = filepath.Base(files[0])
|
log.Println("no file chosen")
|
||||||
directoryState.currentDirectory = filepath.Dir(files[0])
|
return
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
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()
|
menubar := tk.Menu()
|
||||||
fileMenu := menubar.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))
|
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,
|
// TODO: if someone presses the Meta key again after the openfile dialog box closes,
|
||||||
@@ -164,7 +189,7 @@ func main() {
|
|||||||
metaActive = true
|
metaActive = true
|
||||||
case "o":
|
case "o":
|
||||||
if metaActive {
|
if metaActive {
|
||||||
newDirectory(img)()
|
newFileInDirectory(img)()
|
||||||
}
|
}
|
||||||
case "Up":
|
case "Up":
|
||||||
if curr > 0 {
|
if curr > 0 {
|
||||||
|
Reference in New Issue
Block a user