file-picker.windows: mock up some code for windows.

db4
John Benediktsson 2014-12-15 15:36:03 -08:00
parent 0edddbafd2
commit defd931d21
1 changed files with 68 additions and 0 deletions

View File

@ -1 +1,69 @@
USING: file-picker windows.shell32 windows.types ;
IN: file-picker.windows IN: file-picker.windows
LIBRARY: shell32
TYPEDEF: void* PIDLIST_ABSOLUTE
TYPEDEF: void* BFFCALLBACK
FUNCTION: HRESULT SHGetFolderLocation (
HWND hwndOwner,
int nFolder,
HANDLE hToken,
DWORD dwReserved,
PIDLIST_ABSOLUTE* ppidl
) ;
STRUCT: BROWSEINFO
{ hwndOwner HWND }
{ pidlRoot PCIDLIST_ABSOLUTE }
{ pszDisplayName LPTSTR }
{ lpszTitle LPCTSTR }
{ ulFlags UINT }
{ lpfn BFFCALLBACK }
{ lParam LPARAM }
{ iImage int }
} ;
CONSTANT: BIF_RETURNONLYFSDIRS 0x00000001
CONSTANT: BIF_DONTGOBELOWDOMAIN 0x00000002
CONSTANT: BIF_STATUSTEXT 0x00000004
CONSTANT: BIF_RETURNFSANCESTORS 0x00000008
CONSTANT: BIF_EDITBOX 0x00000010
CONSTANT: BIF_VALIDATE 0x00000020
CONSTANT: BIF_NEWDIALOGSTYLE 0x00000040
CONSTANT: BIF_BROWSEINCLUDEURLS 0x00000080
CONSTANT: BIF_USENEWUI flags{ BIF_EDITBOX BIF_NEWDIALOGSTYLE }
CONSTANT: BIF_UAHINT 0x00000100
CONSTANT: BIF_NONEWFOLDERBUTTON 0x00000200
CONSTANT: BIF_NOTRANSLATETARGETS 0x00000400
CONSTANT: BIF_BROWSEFORCOMPUTER 0x00001000
CONSTANT: BIF_BROWSEFORPRINTER 0x00002000
CONSTANT: BIF_BROWSEINCLUDEFILES 0x00004000
CONSTANT: BIF_SHAREABLE 0x00008000
CONSTANT: BIF_BROWSEFILEJUNCTIONS 0x00010000
FUNCTION: PIDLIST_ABSOLUTE SHBrowseForFolder (
BROWSEINFO* lpbi
) ;
FUNCTION: BOOL SHGetPathFromIDList (
PCIDLIST_ABSOLUTE pidl,
LPTSTR pszPath
) ;
M: windows open-file-dialog
BROWSEINFO <struct>
GetDesktopWindow >>hwndOwner
0 CSIDL_PERSONAL 0 0 SHGetFolderLocation >>pidlRoot
"Select a file or folder" >>lpszTitle
BIF_BROWSEINCLUDEFILES >>ulFlags
SHBrowseForFolder [
void* <ref> [ SHGetPathFromIDList ] keep
alien>native-string
] [
f
] if* ;
M: windows save-file-dialog ;