From 7be009efe1472bbbaf8efc1e97348edb1927fb32 Mon Sep 17 00:00:00 2001 From: Ryo Suzuki Date: Sun, 30 Jun 2024 14:04:59 +0900 Subject: [PATCH] =?UTF-8?q?[Window]=20Dialog::SaveFile=20=E3=81=AE?= =?UTF-8?q?=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E5=90=8D=20#1199?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Siv3D/include/Siv3D/Dialog.hpp | 3 ++- .../Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp | 2 +- .../src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp | 2 +- .../WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp | 7 ++++++- .../Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm | 2 +- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Siv3D/include/Siv3D/Dialog.hpp b/Siv3D/include/Siv3D/Dialog.hpp index 625ae5459..416cb1317 100644 --- a/Siv3D/include/Siv3D/Dialog.hpp +++ b/Siv3D/include/Siv3D/Dialog.hpp @@ -44,10 +44,11 @@ namespace s3d /// @param filters ダイアログに表示するファイルの拡張子のフィルタ /// @param defaultDirectory ダイアログで表示するデフォルトディレクトリ。空の場合は OS のデフォルト /// @param title ダイアログのタイトル。空の場合は OS のデフォルト + /// @param defaultFileName ダイアログに表示するデフォルトのファイル名 /// @remark この関数はファイルの保存は行いません。戻り値をファイル保存系の関数と組み合わせて使ってください。 /// @return 選択されたファイルパス。選択されなかった場合は none [[nodiscard]] - Optional SaveFile(const Array& filters = {}, FilePathView defaultDirectory = U"", StringView title = U""); + Optional SaveFile(const Array& filters = {}, FilePathView defaultDirectory = U"", StringView title = U"", StringView defaultFileName = U""); /// @brief フォルダ選択ダイアログを表示し、選択されたフォルダを返します。 /// @param defaultDirectory ダイアログで表示するデフォルトディレクトリ。空の場合は OS のデフォルト diff --git a/Siv3D/src/Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp b/Siv3D/src/Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp index 316c3f50d..573a3cb21 100644 --- a/Siv3D/src/Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp +++ b/Siv3D/src/Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp @@ -96,7 +96,7 @@ namespace s3d } } - Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView) + Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView, const StringView) { if (not g_dialogInitialized) { diff --git a/Siv3D/src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp b/Siv3D/src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp index ef793153d..c976d0a9b 100644 --- a/Siv3D/src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp +++ b/Siv3D/src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp @@ -71,7 +71,7 @@ namespace s3d } } - Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView title) + Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView title, const StringView defaultFileName) { // [Siv3D Web NoSupport] return (none); diff --git a/Siv3D/src/Siv3D-Platform/WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp b/Siv3D/src/Siv3D-Platform/WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp index 4d8672572..72babe83b 100644 --- a/Siv3D/src/Siv3D-Platform/WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp +++ b/Siv3D/src/Siv3D-Platform/WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp @@ -251,7 +251,7 @@ namespace s3d } } - Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView title) + Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView title, const StringView defaultFileName) { ComPtr fileSaveDialog; @@ -279,6 +279,11 @@ namespace s3d // Append file extension fileSaveDialog->SetDefaultExtension(L""); + if (defaultFileName) + { + fileSaveDialog->SetFileName(defaultFileName.toWstr().c_str()); + } + if (HRESULT result = fileSaveDialog->Show(static_cast(SIV3D_ENGINE(Window)->getHandle())); SUCCEEDED(result)) { diff --git a/Siv3D/src/Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm b/Siv3D/src/Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm index f96461e8f..acb907c8f 100644 --- a/Siv3D/src/Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm +++ b/Siv3D/src/Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm @@ -155,7 +155,7 @@ static bool SetDefaultPath(NSSavePanel* dialog, const FilePathView defaultPath) } } - Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView) + Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView, const StringView) { @autoreleasepool {