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

@@ -174,6 +174,11 @@ struct PlanExportMessageArgs {
std::string detail = "D:/Paint";
};
struct PlanExportReportArgs {
std::string kind = "equirectangular";
std::string message = "document name must not be empty";
};
struct PlanExportStartArgs {
bool requires_license = false;
bool license_valid = true;
@@ -2358,6 +2363,7 @@ void print_help()
<< " plan-export-menu --kind jpeg|png|layers|cube-faces|depth|animation-frames|animation-mp4|timelapse [--demo] [--no-canvas]\n"
<< " plan-export-target --kind file|collection|stem|name --doc-name NAME [--work-dir DIR] [--directory DIR] [--extension EXT] [--suffix SUFFIX]\n"
<< " plan-export-message --kind equirectangular|layers|animation-frames|depth|cube-faces|animation-mp4|timelapse --destination photos|pictures|files|work|path|success|suppressed [--detail TEXT]\n"
<< " plan-export-report --kind license-disabled|equirectangular|layers|animation-frames|depth|cube-faces|animation-mp4|timelapse [--message TEXT]\n"
<< " plan-cloud-upload [--no-canvas] [--new-document] [--unsaved]\n"
<< " plan-cloud-browse [--no-canvas] [--selected-file FILE]\n"
<< " plan-cloud-upload-all [--file-count N] [--no-progress-ui]\n"
@@ -3780,6 +3786,62 @@ int plan_export_message(int argc, char** argv)
return 0;
}
pp::foundation::Status parse_plan_export_report_args(
int argc,
char** argv,
PlanExportReportArgs& args)
{
for (int i = 2; i < argc; ++i) {
const std::string_view key(argv[i]);
if (key == "--kind") {
if (i + 1 >= argc) {
return pp::foundation::Status::invalid_argument("missing value for option");
}
args.kind = argv[++i];
} else if (key == "--message") {
if (i + 1 >= argc) {
return pp::foundation::Status::invalid_argument("missing value for option");
}
args.message = argv[++i];
} else {
return pp::foundation::Status::invalid_argument("unknown option");
}
}
return pp::foundation::Status::success();
}
int plan_export_report(int argc, char** argv)
{
PlanExportReportArgs args;
const auto status = parse_plan_export_report_args(argc, argv, args);
if (!status.ok()) {
print_error("plan-export-report", status.message);
return 2;
}
pp::app::AppMessageDialogPlan dialog;
if (args.kind == "license-disabled") {
dialog = pp::app::plan_document_export_license_disabled_dialog();
} else {
const auto kind = parse_document_export_success_kind(args.kind);
if (!kind) {
print_error("plan-export-report", kind.status().message);
return 2;
}
dialog = pp::app::plan_document_export_failure_dialog(kind.value(), args.message);
}
std::cout << "{\"ok\":true,\"command\":\"plan-export-report\""
<< ",\"state\":{\"kind\":\"" << json_escape(args.kind)
<< "\",\"message\":\"" << json_escape(args.message)
<< "\"},\"dialog\":{\"title\":\"" << json_escape(dialog.title)
<< "\",\"message\":\"" << json_escape(dialog.message)
<< "\",\"showCancel\":" << json_bool(dialog.show_cancel)
<< "}}\n";
return 0;
}
pp::foundation::Status parse_plan_cloud_upload_args(
int argc,
char** argv,
@@ -11383,6 +11445,10 @@ int main(int argc, char** argv)
return plan_export_message(argc, argv);
}
if (command == "plan-export-report") {
return plan_export_report(argc, argv);
}
if (command == "plan-cloud-upload") {
return plan_cloud_upload(argc, argv);
}