doodle/pkg/native/file_dialog_native.go
Noah Petherbridge 640e75ba4d Custom Wallpapers for Levels
* You can now browse for a custom wallpaper image to use with your
  levels. A platform-native file picker dialog is used (no WASM support)
* In the New/Edit Level Properties dialog, the Wallpaper drop-down
  includes an option to browse for a custom map.
* When editing an existing level: the wallpaper takes effect immediately
  in your level once the file is picked. For NEW levels, the wallpaper
  will appear once the "Continue" button is pressed.
* All common image types supported: png, jpeg, gif.
* The wallpaper is embedded in the level using the filepath
  "assets/wallpapers/custom.b64img" as a Base64-encoded blob of the
  image data.
* The `doodad show` command will list the names and sizes of files
  embedded in levels. `doodad show --attachment <name>` will get an
  attachment and print it to the console window.
* To extract a wallpaper image from a level:
  `doodad show -a assets/wallpapers/custom.b64img | base64 -d > out.png`
2021-06-06 18:59:04 -07:00

31 lines
602 B
Go

// +build !js
package native
import (
"github.com/gen2brain/dlgs"
"errors"
)
func init() {
FileDialogsReady = true
}
// OpenFile invokes a native File Chooser dialog with the title
// and a set of file filters. The filters are a sequence of label
// and comma-separated file extensions.
//
// Example:
// OpenFile("Pick a file", "Images", "png,gif,jpg", "Audio", "mp3")
func OpenFile(title string, filter string) (string, error) {
filename, ok, err := dlgs.File(title, filter, false)
if err != nil {
return "", err
}
if ok {
return filename, nil
}
return "", errors.New("canceled")
}