mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-04 03:40:45 +08:00
fix: handling of default folder for windows dialogs
This commit is contained in:
parent
4e05b2b8e8
commit
add21f6411
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/winc/w32"
|
"github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/winc/w32"
|
||||||
"github.com/wailsapp/wails/v2/internal/go-common-file-dialog/cfd"
|
"github.com/wailsapp/wails/v2/internal/go-common-file-dialog/cfd"
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
|
"path/filepath"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -18,12 +19,25 @@ func (f *Frontend) getHandleForDialog() w32.HWND {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getDefaultFolder(folder string) (string, error) {
|
||||||
|
if folder == "" {
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
return filepath.Abs(folder)
|
||||||
|
}
|
||||||
|
|
||||||
// OpenDirectoryDialog prompts the user to select a directory
|
// OpenDirectoryDialog prompts the user to select a directory
|
||||||
func (f *Frontend) OpenDirectoryDialog(options frontend.OpenDialogOptions) (string, error) {
|
func (f *Frontend) OpenDirectoryDialog(options frontend.OpenDialogOptions) (string, error) {
|
||||||
|
|
||||||
|
defaultFolder, err := getDefaultFolder(options.DefaultDirectory)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
config := cfd.DialogConfig{
|
config := cfd.DialogConfig{
|
||||||
Title: options.Title,
|
Title: options.Title,
|
||||||
Role: "PickFolder",
|
Role: "PickFolder",
|
||||||
Folder: options.DefaultDirectory,
|
Folder: defaultFolder,
|
||||||
}
|
}
|
||||||
thisDialog, err := cfd.NewSelectFolderDialog(config)
|
thisDialog, err := cfd.NewSelectFolderDialog(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -45,8 +59,14 @@ func (f *Frontend) OpenDirectoryDialog(options frontend.OpenDialogOptions) (stri
|
|||||||
|
|
||||||
// OpenFileDialog prompts the user to select a file
|
// OpenFileDialog prompts the user to select a file
|
||||||
func (f *Frontend) OpenFileDialog(options frontend.OpenDialogOptions) (string, error) {
|
func (f *Frontend) OpenFileDialog(options frontend.OpenDialogOptions) (string, error) {
|
||||||
|
|
||||||
|
defaultFolder, err := getDefaultFolder(options.DefaultDirectory)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
config := cfd.DialogConfig{
|
config := cfd.DialogConfig{
|
||||||
Folder: options.DefaultDirectory,
|
Folder: defaultFolder,
|
||||||
FileFilters: convertFilters(options.Filters),
|
FileFilters: convertFilters(options.Filters),
|
||||||
FileName: options.DefaultFilename,
|
FileName: options.DefaultFilename,
|
||||||
Title: options.Title,
|
Title: options.Title,
|
||||||
@ -70,13 +90,19 @@ func (f *Frontend) OpenFileDialog(options frontend.OpenDialogOptions) (string, e
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OpenMultipleFilesDialog prompts the user to select a file
|
// OpenMultipleFilesDialog prompts the user to select a file
|
||||||
func (f *Frontend) OpenMultipleFilesDialog(dialogOptions frontend.OpenDialogOptions) ([]string, error) {
|
func (f *Frontend) OpenMultipleFilesDialog(options frontend.OpenDialogOptions) ([]string, error) {
|
||||||
|
|
||||||
|
defaultFolder, err := getDefaultFolder(options.DefaultDirectory)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
config := cfd.DialogConfig{
|
config := cfd.DialogConfig{
|
||||||
Title: dialogOptions.Title,
|
Title: options.Title,
|
||||||
Role: "OpenMultipleFiles",
|
Role: "OpenMultipleFiles",
|
||||||
FileFilters: convertFilters(dialogOptions.Filters),
|
FileFilters: convertFilters(options.Filters),
|
||||||
FileName: dialogOptions.DefaultFilename,
|
FileName: options.DefaultFilename,
|
||||||
Folder: dialogOptions.DefaultDirectory,
|
Folder: defaultFolder,
|
||||||
}
|
}
|
||||||
thisdialog, err := cfd.NewOpenMultipleFilesDialog(config)
|
thisdialog, err := cfd.NewOpenMultipleFilesDialog(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -97,13 +123,19 @@ func (f *Frontend) OpenMultipleFilesDialog(dialogOptions frontend.OpenDialogOpti
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SaveFileDialog prompts the user to select a file
|
// SaveFileDialog prompts the user to select a file
|
||||||
func (f *Frontend) SaveFileDialog(dialogOptions frontend.SaveDialogOptions) (string, error) {
|
func (f *Frontend) SaveFileDialog(options frontend.SaveDialogOptions) (string, error) {
|
||||||
|
|
||||||
|
defaultFolder, err := getDefaultFolder(options.DefaultDirectory)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
saveDialog, err := cfd.NewSaveFileDialog(cfd.DialogConfig{
|
saveDialog, err := cfd.NewSaveFileDialog(cfd.DialogConfig{
|
||||||
Title: dialogOptions.Title,
|
Title: options.Title,
|
||||||
Role: "SaveFile",
|
Role: "SaveFile",
|
||||||
FileFilters: convertFilters(dialogOptions.Filters),
|
FileFilters: convertFilters(options.Filters),
|
||||||
FileName: dialogOptions.DefaultFilename,
|
FileName: options.DefaultFilename,
|
||||||
Folder: dialogOptions.DefaultDirectory,
|
Folder: defaultFolder,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
Loading…
Reference in New Issue
Block a user