Extract file menu action planning
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
#include "app_core/document_route.h"
|
||||
#include "app_core/document_sharing.h"
|
||||
#include "app_core/document_session.h"
|
||||
#include "app_core/file_menu.h"
|
||||
#include "app_core/grid_ui.h"
|
||||
#include "app_core/history_ui.h"
|
||||
#include "app_core/quick_ui.h"
|
||||
@@ -158,6 +159,10 @@ struct PlanExportMenuArgs {
|
||||
bool has_canvas = true;
|
||||
};
|
||||
|
||||
struct PlanFileMenuArgs {
|
||||
std::string command = "new";
|
||||
};
|
||||
|
||||
struct PlanCloudUploadArgs {
|
||||
bool has_canvas = true;
|
||||
bool new_document = false;
|
||||
@@ -572,6 +577,70 @@ const char* document_workflow_decision_name(pp::app::DocumentWorkflowDecision de
|
||||
return "unavailable";
|
||||
}
|
||||
|
||||
const char* file_menu_command_name(pp::app::FileMenuCommand command) noexcept
|
||||
{
|
||||
switch (command) {
|
||||
case pp::app::FileMenuCommand::new_document:
|
||||
return "new-document";
|
||||
case pp::app::FileMenuCommand::import_image:
|
||||
return "import-image";
|
||||
case pp::app::FileMenuCommand::open_project:
|
||||
return "open-project";
|
||||
case pp::app::FileMenuCommand::browse_cloud:
|
||||
return "browse";
|
||||
case pp::app::FileMenuCommand::save:
|
||||
return "save";
|
||||
case pp::app::FileMenuCommand::save_as:
|
||||
return "save-as";
|
||||
case pp::app::FileMenuCommand::save_version:
|
||||
return "save-version";
|
||||
case pp::app::FileMenuCommand::export_jpeg:
|
||||
return "export-jpeg";
|
||||
case pp::app::FileMenuCommand::export_submenu:
|
||||
return "export-submenu";
|
||||
case pp::app::FileMenuCommand::share:
|
||||
return "share";
|
||||
case pp::app::FileMenuCommand::resize:
|
||||
return "resize";
|
||||
case pp::app::FileMenuCommand::cloud_upload:
|
||||
return "cloud-upload";
|
||||
case pp::app::FileMenuCommand::cloud_browse:
|
||||
return "cloud-browse";
|
||||
}
|
||||
|
||||
return "new-document";
|
||||
}
|
||||
|
||||
const char* file_menu_action_name(pp::app::FileMenuAction action) noexcept
|
||||
{
|
||||
switch (action) {
|
||||
case pp::app::FileMenuAction::show_new_document_dialog:
|
||||
return "show-new-document-dialog";
|
||||
case pp::app::FileMenuAction::pick_image_for_import:
|
||||
return "pick-image-for-import";
|
||||
case pp::app::FileMenuAction::pick_project_file:
|
||||
return "pick-project-file";
|
||||
case pp::app::FileMenuAction::show_cloud_browser_dialog:
|
||||
return "show-cloud-browser-dialog";
|
||||
case pp::app::FileMenuAction::save_document:
|
||||
return "save-document";
|
||||
case pp::app::FileMenuAction::show_export_jpeg_dialog:
|
||||
return "show-export-jpeg-dialog";
|
||||
case pp::app::FileMenuAction::show_export_submenu:
|
||||
return "show-export-submenu";
|
||||
case pp::app::FileMenuAction::share_document:
|
||||
return "share-document";
|
||||
case pp::app::FileMenuAction::show_resize_dialog:
|
||||
return "show-resize-dialog";
|
||||
case pp::app::FileMenuAction::upload_to_cloud:
|
||||
return "upload-to-cloud";
|
||||
case pp::app::FileMenuAction::browse_cloud_documents:
|
||||
return "browse-cloud-documents";
|
||||
}
|
||||
|
||||
return "show-new-document-dialog";
|
||||
}
|
||||
|
||||
const char* document_layer_rename_action_name(pp::app::DocumentLayerRenameAction action) noexcept
|
||||
{
|
||||
switch (action) {
|
||||
@@ -1119,6 +1188,7 @@ void print_help()
|
||||
<< " inspect-project --path FILE\n"
|
||||
<< " classify-open --path FILE\n"
|
||||
<< " plan-open-route --path FILE [--unsaved]\n"
|
||||
<< " plan-file-menu --command new|import|open|browse|save|save-as|save-version|export|export-submenu|share|resize|cloud-upload|cloud-browse\n"
|
||||
<< " plan-new-document --work-dir DIR --name NAME [--resolution-index N] [--target-exists]\n"
|
||||
<< " plan-document-file --work-dir DIR --name NAME [--target-exists]\n"
|
||||
<< " plan-document-version --directory DIR --doc-name NAME [--existing-path FILE]\n"
|
||||
@@ -2045,6 +2115,52 @@ int plan_open_route(int argc, char** argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
pp::foundation::Status parse_plan_file_menu_args(
|
||||
int argc,
|
||||
char** argv,
|
||||
PlanFileMenuArgs& args)
|
||||
{
|
||||
for (int i = 2; i < argc; ++i) {
|
||||
const std::string_view key(argv[i]);
|
||||
if (key == "--command") {
|
||||
if (i + 1 >= argc) {
|
||||
return pp::foundation::Status::invalid_argument("missing value for option");
|
||||
}
|
||||
args.command = argv[++i];
|
||||
} else {
|
||||
return pp::foundation::Status::invalid_argument("unknown option");
|
||||
}
|
||||
}
|
||||
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
int plan_file_menu(int argc, char** argv)
|
||||
{
|
||||
PlanFileMenuArgs args;
|
||||
const auto status = parse_plan_file_menu_args(argc, argv, args);
|
||||
if (!status.ok()) {
|
||||
print_error("plan-file-menu", status.message);
|
||||
return 2;
|
||||
}
|
||||
|
||||
const auto command = pp::app::parse_file_menu_command(args.command);
|
||||
if (!command) {
|
||||
print_error("plan-file-menu", command.status().message);
|
||||
return 2;
|
||||
}
|
||||
|
||||
const auto plan = pp::app::plan_file_menu_command(command.value());
|
||||
std::cout << "{\"ok\":true,\"command\":\"plan-file-menu\""
|
||||
<< ",\"state\":{\"command\":\"" << json_escape(args.command)
|
||||
<< "\"},\"plan\":{\"command\":\"" << file_menu_command_name(plan.command)
|
||||
<< "\",\"action\":\"" << file_menu_action_name(plan.action)
|
||||
<< "\",\"saveIntent\":\"" << document_save_intent_name(plan.save_intent)
|
||||
<< "\",\"exportKind\":\"" << document_export_menu_kind_name(plan.export_kind)
|
||||
<< "\"}}\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
pp::foundation::Status parse_plan_document_file_args(
|
||||
int argc,
|
||||
char** argv,
|
||||
@@ -6262,6 +6378,10 @@ int main(int argc, char** argv)
|
||||
return plan_open_route(argc, argv);
|
||||
}
|
||||
|
||||
if (command == "plan-file-menu") {
|
||||
return plan_file_menu(argc, argv);
|
||||
}
|
||||
|
||||
if (command == "plan-document-file") {
|
||||
return plan_document_file(argc, argv);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user