diff options
| author | trustable-code <krauter.simon@arcor.de> | 2019-11-03 20:06:04 +0100 |
|---|---|---|
| committer | trustable-code <krauter.simon@arcor.de> | 2019-11-03 20:06:04 +0100 |
| commit | fe3db61a8c890ebbd8661ee2eaabfdd6f2121c95 (patch) | |
| tree | 5aafef584a645be29592ccd54d178ed54d2df0b9 /src/nigui/private/windows/platform_impl.nim | |
| parent | 2ec9ad141413d79e3221161d52adb74f34f193e9 (diff) | |
| download | NiGui-fe3db61a8c890ebbd8661ee2eaabfdd6f2121c95.tar.gz NiGui-fe3db61a8c890ebbd8661ee2eaabfdd6f2121c95.zip | |
Add SelectDirectoryDialog
Fixes #67
Diffstat (limited to 'src/nigui/private/windows/platform_impl.nim')
| -rwxr-xr-x | src/nigui/private/windows/platform_impl.nim | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/nigui/private/windows/platform_impl.nim b/src/nigui/private/windows/platform_impl.nim index f110722..05b0f8b 100755 --- a/src/nigui/private/windows/platform_impl.nim +++ b/src/nigui/private/windows/platform_impl.nim @@ -499,6 +499,7 @@ method run*(dialog: OpenFileDialog) = method run(dialog: SaveFileDialog) = const maxCharacters = 500 + dialog.file = "" var ofn: OpenFileName ofn.lStructSize = OpenFileName.sizeOf.int32 ofn.lpstrTitle = dialog.title.pUtf8ToUtf16() @@ -517,11 +518,23 @@ method run(dialog: SaveFileDialog) = if ret: dialog.file = pUtf16ToUtf8(s, true) else: - dialog.file = "" let e = CommDlgExtendedError() if e != 0: raiseError("CommDlg Error Code: " & $e) +method run*(dialog: SelectDirectoryDialog) = + ## Notes: `dialog.startDirectory` is not supported. + const maxCharacters = 5000 + dialog.selectedDirectory = "" + var bi: BrowseInfo + bi.lpszTitle = dialog.title.pUtf8ToUtf16() + bi.ulFlags = BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE + let pidl = SHBrowseForFolderW(bi) + if pidl != nil: + var s = newString(maxCharacters * 2) + SHGetPathFromIDListW(pidl, s) + dialog.selectedDirectory = pUtf16ToUtf8(s, true) + # ---------------------------------------------------------------------------------------- # Timers |
