From fab9a417662172f9c0146f92f7e6a236262d0129 Mon Sep 17 00:00:00 2001 From: Speykious Date: Sun, 27 Mar 2022 17:59:21 +0200 Subject: [PATCH] Implement `SaveDialog` --- NativeFileDialogs.Net/Nfd.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/NativeFileDialogs.Net/Nfd.cs b/NativeFileDialogs.Net/Nfd.cs index 1e46906..5ed6526 100644 --- a/NativeFileDialogs.Net/Nfd.cs +++ b/NativeFileDialogs.Net/Nfd.cs @@ -81,6 +81,23 @@ public static class Nfd return status; } + public static NfdStatus SaveDialog(out string? savePath, IDictionary? filters = null, string defaultName = "Untitled", string? defaultPath = null) + { + manager.PushDialog(); + NfdnfilteritemT[] filterItems = ToFilterItems(filters); + NfdStatus status; + + unsafe + { + sbyte* savePathPtr; + status = nfd.NFD_SaveDialogN(&savePathPtr, filterItems, (uint)filterItems.Length, defaultPath, defaultName).ToNfdStatus(); + savePath = status == NfdStatus.Cancelled ? null : new string(savePathPtr); + } + + manager.PullDialog(); + return status; + } + internal static NfdnfilteritemT[] ToFilterItems(IDictionary? filters) { if (filters == null)