Route collection export targets through platform policy
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user