diff --git a/loader/src/platform/android/util.cpp b/loader/src/platform/android/util.cpp index 05175cf29..29f2c547a 100644 --- a/loader/src/platform/android/util.cpp +++ b/loader/src/platform/android/util.cpp @@ -138,8 +138,8 @@ Result file::pickFile(file::PickMode mode, file::FilePick void file::pickFile( PickMode mode, FilePickOptions const& options, - utils::MiniFunction callback, - utils::MiniFunction failed + MiniFunction callback, + MiniFunction failed ) { s_fileCallback = callback; s_failedCallback = failed; @@ -178,8 +178,8 @@ Result> file::pickFiles(file::FilePickOptions void file::pickFiles( FilePickOptions const& options, - utils::MiniFunction)> callback, - utils::MiniFunction failed + MiniFunction)> callback, + MiniFunction failed ) { s_filesCallback = callback; s_failedCallback = failed; diff --git a/loader/src/platform/mac/util.mm b/loader/src/platform/mac/util.mm index e09712659..9c1ec5903 100644 --- a/loader/src/platform/mac/util.mm +++ b/loader/src/platform/mac/util.mm @@ -145,7 +145,7 @@ @implementation FileDialog } @end -Result utils::file::pickFile( +Result file::pickFile( file::PickMode mode, file::FilePickOptions const& options ) { auto result = [FileDialog filePickerWithMode:mode options:options multiple: false]; @@ -157,13 +157,41 @@ @implementation FileDialog } } -Result> utils::file::pickFiles( +GEODE_DLL void file::pickFile( + PickMode mode, FilePickOptions const& options, + MiniFunction callback, + MiniFunction failed +) { + auto result = file::pickFile(mode, options); + + if (result.isOk()) { + callback(std::move(result.unwrap())); + } else { + failed(); + } +} + +Result> file::pickFiles( file::FilePickOptions const& options ) { //return Err("utils::file::pickFiles is not implemented"); return [FileDialog filePickerWithMode: file::PickMode::OpenFile options:options multiple:true]; } +GEODE_DLL void file::pickFiles( + FilePickOptions const& options, + MiniFunction callback, + MiniFunction failed +) { + auto result = file::pickFiles(options); + + if (result.isOk()) { + callback(std::move(result.unwrap())); + } else { + failed(); + } +} + CCPoint cocos::getMousePos() { auto windowFrame = NSApp.mainWindow.frame; auto viewFrame = NSApp.mainWindow.contentView.frame; diff --git a/loader/src/platform/windows/util.cpp b/loader/src/platform/windows/util.cpp index 68e7ad526..c779bef52 100644 --- a/loader/src/platform/windows/util.cpp +++ b/loader/src/platform/windows/util.cpp @@ -97,6 +97,20 @@ Result utils::file::pickFile( return Ok(path); } +GEODE_DLL void file::pickFile( + PickMode mode, FilePickOptions const& options, + MiniFunction callback, + MiniFunction failed +) { + auto result = file::pickFile(mode, options); + + if (result.isOk()) { + callback(std::move(result.unwrap())); + } else { + failed(); + } +} + Result> utils::file::pickFiles( file::FilePickOptions const& options ) { @@ -105,6 +119,20 @@ Result> utils::file::pickFiles( return Ok(paths); } +GEODE_DLL void file::pickFiles( + FilePickOptions const& options, + MiniFunction callback, + MiniFunction failed +) { + auto result = file::pickFiles(options); + + if (result.isOk()) { + callback(std::move(result.unwrap())); + } else { + failed(); + } +} + void utils::web::openLinkInBrowser(std::string const& url) { ShellExecuteA(0, 0, url.c_str(), 0, 0, SW_SHOW); }