summaryrefslogtreecommitdiff
path: root/src/nigui/private/windows/platform_impl.nim
diff options
context:
space:
mode:
authortrustable-code <krauter.simon@arcor.de>2019-11-03 20:06:04 +0100
committertrustable-code <krauter.simon@arcor.de>2019-11-03 20:06:04 +0100
commitfe3db61a8c890ebbd8661ee2eaabfdd6f2121c95 (patch)
tree5aafef584a645be29592ccd54d178ed54d2df0b9 /src/nigui/private/windows/platform_impl.nim
parent2ec9ad141413d79e3221161d52adb74f34f193e9 (diff)
downloadNiGui-fe3db61a8c890ebbd8661ee2eaabfdd6f2121c95.tar.gz
NiGui-fe3db61a8c890ebbd8661ee2eaabfdd6f2121c95.zip
Add SelectDirectoryDialog
Fixes #67
Diffstat (limited to 'src/nigui/private/windows/platform_impl.nim')
-rwxr-xr-xsrc/nigui/private/windows/platform_impl.nim15
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