mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 11:10:47 +08:00
80 lines
1.4 KiB
Go
80 lines
1.4 KiB
Go
//go:build windows
|
|
// +build windows
|
|
|
|
package cfd
|
|
|
|
import "github.com/go-ole/go-ole"
|
|
|
|
func initialize() {
|
|
// Swallow error
|
|
_ = ole.CoInitializeEx(0, ole.COINIT_APARTMENTTHREADED|ole.COINIT_DISABLE_OLE1DDE)
|
|
}
|
|
|
|
// TODO doc
|
|
func NewOpenFileDialog(config DialogConfig) (OpenFileDialog, error) {
|
|
initialize()
|
|
|
|
openDialog, err := newIFileOpenDialog()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
err = config.apply(openDialog)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return openDialog, nil
|
|
}
|
|
|
|
// TODO doc
|
|
func NewOpenMultipleFilesDialog(config DialogConfig) (OpenMultipleFilesDialog, error) {
|
|
initialize()
|
|
|
|
openDialog, err := newIFileOpenDialog()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
err = config.apply(openDialog)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
err = openDialog.setIsMultiselect(true)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return openDialog, nil
|
|
}
|
|
|
|
// TODO doc
|
|
func NewSelectFolderDialog(config DialogConfig) (SelectFolderDialog, error) {
|
|
initialize()
|
|
|
|
openDialog, err := newIFileOpenDialog()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
err = config.apply(openDialog)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
err = openDialog.setPickFolders(true)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return openDialog, nil
|
|
}
|
|
|
|
// TODO doc
|
|
func NewSaveFileDialog(config DialogConfig) (SaveFileDialog, error) {
|
|
initialize()
|
|
|
|
saveDialog, err := newIFileSaveDialog()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
err = config.apply(saveDialog)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return saveDialog, nil
|
|
}
|