Plan document export reporting

This commit is contained in:
2026-06-05 09:43:16 +02:00
parent 808a084ee3
commit fcc0e577b8
8 changed files with 328 additions and 32 deletions

View File

@@ -92,6 +92,18 @@ enum class DocumentExportSuccessDestination {
generic_success,
};
enum class DocumentExportExecutionKind {
equirectangular_file,
layers_collection,
layers_stem,
animation_frames_collection,
animation_frames_stem,
depth,
cube_faces,
animation_mp4,
timelapse,
};
struct DocumentExportMenuPlan {
DocumentExportMenuKind kind = DocumentExportMenuKind::jpeg;
DocumentExportMenuAction action = DocumentExportMenuAction::show_jpeg_dialog;
@@ -271,6 +283,68 @@ public:
return {};
}
[[nodiscard]] constexpr DocumentExportSuccessKind document_export_collection_success_kind(
DocumentExportCollectionKind kind) noexcept
{
switch (kind) {
case DocumentExportCollectionKind::layers:
return DocumentExportSuccessKind::layers;
case DocumentExportCollectionKind::animation_frames:
return DocumentExportSuccessKind::animation_frames;
}
return DocumentExportSuccessKind::layers;
}
[[nodiscard]] constexpr const char* document_export_failure_dialog_title(
DocumentExportSuccessKind kind) noexcept
{
switch (kind) {
case DocumentExportSuccessKind::equirectangular:
return "Export Equirectangular";
case DocumentExportSuccessKind::layers:
case DocumentExportSuccessKind::animation_frames:
return "Export Layers";
case DocumentExportSuccessKind::depth:
return "Export 3D View + Depth";
case DocumentExportSuccessKind::cube_faces:
return "Export Cube Faces";
case DocumentExportSuccessKind::animation_mp4:
return "Export Animation";
case DocumentExportSuccessKind::timelapse:
return "Export Timelapse";
}
return "Export";
}
[[nodiscard]] constexpr const char* document_export_execution_log_message(
DocumentExportExecutionKind kind) noexcept
{
switch (kind) {
case DocumentExportExecutionKind::equirectangular_file:
return "Document export file action failed";
case DocumentExportExecutionKind::layers_collection:
return "Document layer collection export failed";
case DocumentExportExecutionKind::layers_stem:
return "Document layer stem export failed";
case DocumentExportExecutionKind::animation_frames_collection:
return "Document animation frame collection export failed";
case DocumentExportExecutionKind::animation_frames_stem:
return "Document animation frame stem export failed";
case DocumentExportExecutionKind::depth:
return "Document depth export failed";
case DocumentExportExecutionKind::cube_faces:
return "Document cube-face export failed";
case DocumentExportExecutionKind::animation_mp4:
return "Document animation export failed";
case DocumentExportExecutionKind::timelapse:
return "Document timelapse export failed";
}
return "Document export failed";
}
[[nodiscard]] constexpr DocumentExportCollectionTargetPlan plan_document_export_collection_target(
DocumentExportCollectionKind kind,
bool use_work_directory_collection) noexcept
@@ -284,6 +358,24 @@ public:
};
}
[[nodiscard]] inline AppMessageDialogPlan plan_document_export_failure_dialog(
DocumentExportSuccessKind kind,
std::string_view status_message)
{
return plan_app_message_dialog(
document_export_failure_dialog_title(kind),
status_message,
false);
}
[[nodiscard]] inline AppMessageDialogPlan plan_document_export_license_disabled_dialog()
{
return plan_app_message_dialog(
"License",
"This function is disabled in demo mode.",
false);
}
[[nodiscard]] inline DocumentExportSuccessDialogPlan plan_document_export_success_dialog(
DocumentExportSuccessKind kind,
DocumentExportSuccessDestination destination,