generate plist from filetypes and inject into app bundle
This commit is contained in:
53
main.go
53
main.go
@@ -10,6 +10,7 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"git.yetaga.in/alazyreader/why/filetypes"
|
||||
"github.com/disintegration/imaging"
|
||||
tk "modernc.org/tk9.0"
|
||||
)
|
||||
@@ -24,16 +25,8 @@ var noise []byte
|
||||
//go:embed icon.png
|
||||
var icon []byte
|
||||
|
||||
var validFileTypes = []tk.FileType{
|
||||
{TypeName: "BMP", Extensions: []string{".bmp"}},
|
||||
{TypeName: "JPEG", Extensions: []string{".jpg", ".jpeg"}},
|
||||
{TypeName: "GIF", Extensions: []string{".gif"}},
|
||||
{TypeName: "PNG", Extensions: []string{".png"}},
|
||||
{TypeName: "SVG", Extensions: []string{".svg"}},
|
||||
{TypeName: "TGA", Extensions: []string{".tga"}},
|
||||
{TypeName: "TIFF", Extensions: []string{".tiff"}},
|
||||
}
|
||||
|
||||
//go:generate go run ./filetypes/cmd/gen.go
|
||||
var validFileTypes = filetypes.Valid
|
||||
var metaActive bool
|
||||
var fileList *tk.ToplevelWidget
|
||||
var lb *tk.ListboxWidget
|
||||
@@ -57,7 +50,7 @@ func isImage(entry os.DirEntry) bool {
|
||||
}
|
||||
ext := filepath.Ext(entry.Name())
|
||||
for _, ft := range validFileTypes {
|
||||
if slices.Contains(ft.Extensions, ext) {
|
||||
if slices.Contains(ft.TkType.Extensions, ext) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -66,29 +59,33 @@ func isImage(entry os.DirEntry) bool {
|
||||
|
||||
func newFileInDirectory(img *tk.LabelWidget) func() {
|
||||
return func() {
|
||||
files := tk.GetOpenFile(tk.Filetypes(validFileTypes), tk.Multiple(false))
|
||||
files := tk.GetOpenFile(tk.Filetypes(filetypes.GetTkTypes(validFileTypes)), tk.Multiple(false))
|
||||
if len(files) < 1 || files[0] == "" {
|
||||
log.Println("no file chosen")
|
||||
return
|
||||
}
|
||||
file := strings.Join(files, " ") // GetOpenFile returns an array split on spaces!
|
||||
directoryState.currentFile = filepath.Base(file)
|
||||
directoryState.currentDirectory = filepath.Dir(file)
|
||||
dirfiles, err := os.ReadDir(directoryState.currentDirectory)
|
||||
if err != nil {
|
||||
log.Printf("could not open dir: %v", err)
|
||||
return
|
||||
}
|
||||
directoryState.images = []string{}
|
||||
for _, v := range dirfiles {
|
||||
if isImage(v) {
|
||||
directoryState.images = append(directoryState.images, v.Name())
|
||||
}
|
||||
}
|
||||
updateImage(file, img)
|
||||
openFileAndDirectory(img, file)
|
||||
}
|
||||
}
|
||||
|
||||
func openFileAndDirectory(img *tk.LabelWidget, file string) {
|
||||
directoryState.currentFile = filepath.Base(file)
|
||||
directoryState.currentDirectory = filepath.Dir(file)
|
||||
dirfiles, err := os.ReadDir(directoryState.currentDirectory)
|
||||
if err != nil {
|
||||
log.Printf("could not open dir: %v", err)
|
||||
return
|
||||
}
|
||||
directoryState.images = []string{}
|
||||
for _, v := range dirfiles {
|
||||
if isImage(v) {
|
||||
directoryState.images = append(directoryState.images, v.Name())
|
||||
}
|
||||
}
|
||||
updateImage(file, img)
|
||||
}
|
||||
|
||||
func newDirectory(img *tk.LabelWidget) func() {
|
||||
return func() {
|
||||
dir := tk.ChooseDirectory()
|
||||
@@ -140,6 +137,10 @@ func main() {
|
||||
img := tk.Label()
|
||||
repaint(img, "", tk.Data(noise))
|
||||
|
||||
tk.MacOpenDocument(func(e string) {
|
||||
openFileAndDirectory(img, e)
|
||||
})
|
||||
|
||||
menubar := tk.Menu()
|
||||
fileMenu := menubar.Menu()
|
||||
fileMenu.AddCommand(tk.Lbl("Open File"), tk.Accelerator("Meta+O"), tk.Command(newFileInDirectory(img)))
|
||||
|
Reference in New Issue
Block a user