Route collection export targets through platform policy

This commit is contained in:
2026-06-04 17:24:36 +02:00
parent be4b88dec8
commit 401ce33498
12 changed files with 191 additions and 67 deletions

View File

@@ -26,6 +26,11 @@ struct DocumentExportSuggestedName {
std::string name;
};
enum class DocumentExportCollectionDestination {
work_directory_collection,
picked_directory_stem,
};
enum class DocumentExportStartDecision {
start_now,
show_license_disabled,
@@ -72,6 +77,12 @@ struct DocumentExportMenuPlan {
bool opens_dialog = true;
};
struct DocumentExportCollectionTargetPlan {
DocumentExportCollectionKind kind = DocumentExportCollectionKind::layers;
DocumentExportCollectionDestination destination = DocumentExportCollectionDestination::picked_directory_stem;
std::string_view suffix;
};
class DocumentExportMenuServices {
public:
virtual ~DocumentExportMenuServices() = default;
@@ -193,6 +204,32 @@ public:
return plan;
}
[[nodiscard]] constexpr std::string_view document_export_collection_suffix(
DocumentExportCollectionKind kind) noexcept
{
switch (kind) {
case DocumentExportCollectionKind::layers:
return "_layers";
case DocumentExportCollectionKind::animation_frames:
return "_frames";
}
return {};
}
[[nodiscard]] constexpr DocumentExportCollectionTargetPlan plan_document_export_collection_target(
DocumentExportCollectionKind kind,
bool use_work_directory_collection) noexcept
{
return {
kind,
use_work_directory_collection
? DocumentExportCollectionDestination::work_directory_collection
: DocumentExportCollectionDestination::picked_directory_stem,
document_export_collection_suffix(kind),
};
}
[[nodiscard]] inline pp::foundation::Result<DocumentExportFileTarget> make_document_export_file_target(
std::string_view work_directory,
std::string_view document_name,