Route document session prompts through app dialog bridge

This commit is contained in:
2026-06-05 09:59:12 +02:00
parent d9f294e8e6
commit 73564342fc
4 changed files with 35 additions and 37 deletions

View File

@@ -3,6 +3,7 @@
#include "legacy_document_session_services.h"
#include "app.h"
#include "legacy_app_dialog_services.h"
#include "legacy_canvas_view_services.h"
#include "legacy_history_services.h"
#include "node_dialog_open.h"
@@ -12,20 +13,6 @@
namespace pp::panopainter {
namespace {
void apply_legacy_message_box_plan(
NodeMessageBox& msgbox,
const pp::app::AppMessageDialogPlan& plan)
{
msgbox.m_title->set_text(plan.title.c_str());
msgbox.m_message->set_text(plan.message.c_str());
msgbox.btn_ok->m_text->set_text(plan.ok_caption.c_str());
if (plan.show_cancel) {
msgbox.btn_cancel->m_text->set_text(plan.cancel_caption.c_str());
} else {
msgbox.btn_cancel->destroy();
}
}
void create_legacy_new_document(
App& app,
const pp::app::NewDocumentPlan& plan,
@@ -69,11 +56,8 @@ public:
void prompt_overwrite_new_document(const pp::app::NewDocumentPlan& plan) override
{
auto msgbox = new NodeMessageBox();
msgbox->set_manager(&app_.layout);
msgbox->init();
apply_legacy_message_box_plan(
*msgbox,
auto msgbox = pp::panopainter::create_legacy_app_message_dialog(
app_,
pp::app::plan_document_session_prompt(
pp::app::DocumentSessionPromptKind::new_document_overwrite));
auto* app = &app_;
@@ -82,7 +66,6 @@ public:
create_legacy_new_document(*app, plan, dialog);
msgbox->destroy();
};
app_.layout[app_.main_id]->add_child(msgbox);
}
private:
@@ -119,11 +102,8 @@ public:
void prompt_overwrite_document_file(const pp::app::DocumentFileSavePlan& plan) override
{
auto msgbox = new NodeMessageBox();
msgbox->set_manager(&app_.layout);
msgbox->init();
apply_legacy_message_box_plan(
*msgbox,
auto msgbox = pp::panopainter::create_legacy_app_message_dialog(
app_,
pp::app::plan_document_session_prompt(
pp::app::DocumentSessionPromptKind::document_file_overwrite,
plan.target.name));
@@ -133,7 +113,6 @@ public:
save_legacy_document_file(*app, plan, dialog);
msgbox->destroy();
};
app_.layout[app_.main_id]->add_child(msgbox);
}
private:
@@ -177,9 +156,8 @@ public:
{
auto* app = &app_;
auto* dialog_already_opened = &dialog_already_opened_;
auto* m = app_.layout[app_.main_id]->add_child<NodeMessageBox>();
apply_legacy_message_box_plan(
*m,
auto m = pp::panopainter::create_legacy_app_message_dialog(
app_,
pp::app::plan_document_session_prompt(
pp::app::DocumentSessionPromptKind::close_unsaved_document));
m->btn_ok->on_click = [app](Node*) {
@@ -239,9 +217,8 @@ public:
void prompt_save_before_continue() override
{
auto m = app_.layout[app_.main_id]->add_child<NodeMessageBox>();
apply_legacy_message_box_plan(
*m,
auto m = pp::panopainter::create_legacy_app_message_dialog(
app_,
pp::app::plan_document_session_prompt(
pp::app::DocumentSessionPromptKind::save_before_workflow_continue));
auto* app = &app_;