48 lines
1.5 KiB
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
|
|
}
|