github.com/AlpineAIO/wails/v2@v2.0.0-beta.32.0.20240505041856-1047a8fa5fef/internal/go-common-file-dialog/cfd/CommonFileDialog_windows.go (about) 1 //go:build windows 2 // +build windows 3 4 package cfd 5 6 import "github.com/go-ole/go-ole" 7 8 func initialize() { 9 // Swallow error 10 _ = ole.CoInitializeEx(0, ole.COINIT_APARTMENTTHREADED|ole.COINIT_DISABLE_OLE1DDE) 11 } 12 13 // TODO doc 14 func NewOpenFileDialog(config DialogConfig) (OpenFileDialog, error) { 15 initialize() 16 17 openDialog, err := newIFileOpenDialog() 18 if err != nil { 19 return nil, err 20 } 21 err = config.apply(openDialog) 22 if err != nil { 23 return nil, err 24 } 25 return openDialog, nil 26 } 27 28 // TODO doc 29 func NewOpenMultipleFilesDialog(config DialogConfig) (OpenMultipleFilesDialog, error) { 30 initialize() 31 32 openDialog, err := newIFileOpenDialog() 33 if err != nil { 34 return nil, err 35 } 36 err = config.apply(openDialog) 37 if err != nil { 38 return nil, err 39 } 40 err = openDialog.setIsMultiselect(true) 41 if err != nil { 42 return nil, err 43 } 44 return openDialog, nil 45 } 46 47 // TODO doc 48 func NewSelectFolderDialog(config DialogConfig) (SelectFolderDialog, error) { 49 initialize() 50 51 openDialog, err := newIFileOpenDialog() 52 if err != nil { 53 return nil, err 54 } 55 err = config.apply(openDialog) 56 if err != nil { 57 return nil, err 58 } 59 err = openDialog.setPickFolders(true) 60 if err != nil { 61 return nil, err 62 } 63 return openDialog, nil 64 } 65 66 // TODO doc 67 func NewSaveFileDialog(config DialogConfig) (SaveFileDialog, error) { 68 initialize() 69 70 saveDialog, err := newIFileSaveDialog() 71 if err != nil { 72 return nil, err 73 } 74 err = config.apply(saveDialog) 75 if err != nil { 76 return nil, err 77 } 78 return saveDialog, nil 79 }