flutter_file_picker/go/file_windows.go

48 lines
1.5 KiB
Go

package file_picker
import (
"github.com/gen2brain/dlgs"
"github.com/pkg/errors"
)
func fileFilter(method string, extensions []string, size int, isMulti bool) (string, error) {
switch method {
case "any":
return "*", nil
case "image":
return "Images (*.jpeg,*.png,*.gif)\x00*.jpg;*.jpeg;*.png;*.gif\x00All Files (*.*)\x00*.*\x00\x00", nil
case "audio":
return "Audios (*.mp3)\x00*.mp3\x00All Files (*.*)\x00*.*\x00\x00", nil
case "video":
return "Videos (*.webm,*.wmv,*.mpeg,*.mkv,*.mp4,*.avi,*.mov,*.flv)\x00*.webm;*.wmv;*.mpeg;*.mkv;*mp4;*.avi;*.mov;*.flv\x00All Files (*.*)\x00*.*\x00\x00", nil
case "media":
return "Videos (*.webm,*.wmv,*.mpeg,*.mkv,*.mp4,*.avi,*.mov,*.flv)\x00*.webm;*.wmv;*.mpeg;*.mkv;*mp4;*.avi;*.mov;*.flv\x00Images (*.jpeg,*.png,*.gif)\x00*.jpg;*.jpeg;*.png;*.gif\x00All Files (*.*)\x00*.*\x00\x00", nil
case "custom":
var i int
var filters = "Files ("
for i = 0; i < size; i++ {
filters += `*.` + extensions[i] + `,`
}
filters += ")"
return filters, nil
default:
return "", errors.New("unknown method")
}
}
func fileDialog(title string, filter string) (string, error) {
filePath, _, err := dlgs.File(title, filter, false)
if err != nil {
return "", errors.Wrap(err, "failed to open dialog picker")
}
return filePath, nil
}
func dirDialog(title string) (string, error) {
dirPath, _, err := dlgs.File(title, `*.*`, true)
if err != nil {
return "", errors.Wrap(err, "failed to open dialog picker")
}
return dirPath, nil
}