// shell/package/package_pickers — the two package file pickers, both on REAPER's own // GetUserFileName (mode 1 = existing file, mode 0 = new file). No native/platform // split: the SDK's save mode is not optional on any build that can load this // extension. Paths in and out are UTF-8, matching this tree's established practice // for narrow strings crossing the REAPER API (see instrument_drop_win.cpp's // path.u8string() to TrackFX_SetPreset, or prune_fs.cpp's CP_UTF8 conversion) — the // SDK header itself never says "UTF-8". #pragma once #include namespace reasampler { // True with outAbsPath set iff the user chose a file. bool pickPackageForImport(std::string& outAbsPath); // suggestedPath is a bare file name ("MyBank.rsbank") or a full path — a full one // also seeds the dialog's starting directory, which is how a caller keeps the picker // off REAPER's process working directory. True with outAbsPath set iff the user chose // a destination; the dialog's own overwrite confirm has already run by then, against // the path the user actually chose — NOT necessarily outAbsPath, if the `.rsbank` // re-append below fires. outAppended, when non-null, is set to whether it fired: the // caller's signal that its own overwrite consent may not cover the returned path // (see this directory's CLAUDE.md). bool pickPackageSavePath(const std::string& suggestedPath, std::string& outAbsPath, bool* outAppended = nullptr); } // namespace reasampler