Thin legacy app dialog shell

This commit is contained in:
2026-06-17 00:14:25 +02:00
parent 371095770d
commit 86e57d47ad
3 changed files with 55 additions and 14 deletions

View File

@@ -1,6 +1,5 @@
#include "pch.h" #include "pch.h"
#include "app.h" #include "app.h"
#include "app_core/app_dialog.h"
#include "legacy_app_dialog_services.h" #include "legacy_app_dialog_services.h"
#include "legacy_document_layer_services.h" #include "legacy_document_layer_services.h"
@@ -27,28 +26,18 @@ void open_legacy_document_layer_rename_dialog(App& app);
std::shared_ptr<NodeProgressBar> App::show_progress(const std::string& title, int total /*= 0*/) std::shared_ptr<NodeProgressBar> App::show_progress(const std::string& title, int total /*= 0*/)
{ {
const auto plan = pp::app::plan_app_progress_dialog(title, total); return pp::panopainter::show_legacy_app_progress_dialog(*this, title, total);
const auto dialogs = pp::panopainter::make_legacy_app_dialog_factory(*this);
return pp::panopainter::legacy_progress_dialog_node(dialogs->show_progress_dialog(plan));
} }
std::shared_ptr<NodeMessageBox> App::message_box(const std::string &title, const std::string& text, bool cancel_button) std::shared_ptr<NodeMessageBox> App::message_box(const std::string &title, const std::string& text, bool cancel_button)
{ {
const auto plan = pp::app::plan_app_message_dialog(title, text, cancel_button); return pp::panopainter::show_legacy_app_message_dialog(*this, title, text, cancel_button);
const auto dialogs = pp::panopainter::make_legacy_app_dialog_factory(*this);
return pp::panopainter::legacy_message_dialog_node(dialogs->show_message_dialog(plan));
} }
std::shared_ptr<NodeInputBox> App::input_box(const std::string& title, std::shared_ptr<NodeInputBox> App::input_box(const std::string& title,
const std::string& field_name, const std::string& ok_caption /*= "Ok"*/) const std::string& field_name, const std::string& ok_caption /*= "Ok"*/)
{ {
const auto plan_result = pp::app::plan_app_input_dialog(title, field_name, ok_caption); return pp::panopainter::show_legacy_app_input_dialog(*this, title, field_name, ok_caption);
if (!plan_result) {
LOG("input dialog skipped: %s", plan_result.status().message);
return nullptr;
}
const auto dialogs = pp::panopainter::make_legacy_app_dialog_factory(*this);
return pp::panopainter::legacy_input_dialog_node(dialogs->show_input_dialog(plan_result.value()));
} }
void App::dialog_usermanual() void App::dialog_usermanual()

View File

@@ -119,6 +119,14 @@ std::shared_ptr<NodeProgressBar> create_legacy_app_progress_dialog(
return legacy_progress_dialog_node(make_legacy_app_dialog_factory(app)->show_progress_dialog(plan)); return legacy_progress_dialog_node(make_legacy_app_dialog_factory(app)->show_progress_dialog(plan));
} }
std::shared_ptr<NodeProgressBar> show_legacy_app_progress_dialog(
App& app,
const std::string& title,
int total)
{
return create_legacy_app_progress_dialog(app, pp::app::plan_app_progress_dialog(title, total));
}
std::shared_ptr<NodeMessageBox> create_legacy_app_message_dialog( std::shared_ptr<NodeMessageBox> create_legacy_app_message_dialog(
App& app, App& app,
const pp::app::AppMessageDialogPlan& plan) const pp::app::AppMessageDialogPlan& plan)
@@ -126,6 +134,17 @@ std::shared_ptr<NodeMessageBox> create_legacy_app_message_dialog(
return legacy_message_dialog_node(make_legacy_app_dialog_factory(app)->show_message_dialog(plan)); return legacy_message_dialog_node(make_legacy_app_dialog_factory(app)->show_message_dialog(plan));
} }
std::shared_ptr<NodeMessageBox> show_legacy_app_message_dialog(
App& app,
const std::string& title,
const std::string& text,
bool cancel_button)
{
return create_legacy_app_message_dialog(
app,
pp::app::plan_app_message_dialog(title, text, cancel_button));
}
std::shared_ptr<NodeInputBox> create_legacy_app_input_dialog( std::shared_ptr<NodeInputBox> create_legacy_app_input_dialog(
App& app, App& app,
const pp::app::AppInputDialogPlan& plan) const pp::app::AppInputDialogPlan& plan)
@@ -133,6 +152,21 @@ std::shared_ptr<NodeInputBox> create_legacy_app_input_dialog(
return legacy_input_dialog_node(make_legacy_app_dialog_factory(app)->show_input_dialog(plan)); return legacy_input_dialog_node(make_legacy_app_dialog_factory(app)->show_input_dialog(plan));
} }
std::shared_ptr<NodeInputBox> show_legacy_app_input_dialog(
App& app,
const std::string& title,
const std::string& field_name,
const std::string& ok_caption)
{
const auto plan_result = pp::app::plan_app_input_dialog(title, field_name, ok_caption);
if (!plan_result) {
LOG("input dialog skipped: %s", plan_result.status().message);
return nullptr;
}
return create_legacy_app_input_dialog(app, plan_result.value());
}
std::shared_ptr<NodeProgressBar> legacy_progress_dialog_node( std::shared_ptr<NodeProgressBar> legacy_progress_dialog_node(
const std::shared_ptr<pp::app::AppProgressDialog>& dialog) noexcept const std::shared_ptr<pp::app::AppProgressDialog>& dialog) noexcept
{ {

View File

@@ -3,6 +3,7 @@
#include "app_core/app_dialog.h" #include "app_core/app_dialog.h"
#include <memory> #include <memory>
#include <string>
class App; class App;
class NodeInputBox; class NodeInputBox;
@@ -17,14 +18,31 @@ namespace pp::panopainter {
App& app, App& app,
const pp::app::AppProgressDialogPlan& plan); const pp::app::AppProgressDialogPlan& plan);
[[nodiscard]] std::shared_ptr<NodeProgressBar> show_legacy_app_progress_dialog(
App& app,
const std::string& title,
int total);
[[nodiscard]] std::shared_ptr<NodeMessageBox> create_legacy_app_message_dialog( [[nodiscard]] std::shared_ptr<NodeMessageBox> create_legacy_app_message_dialog(
App& app, App& app,
const pp::app::AppMessageDialogPlan& plan); const pp::app::AppMessageDialogPlan& plan);
[[nodiscard]] std::shared_ptr<NodeMessageBox> show_legacy_app_message_dialog(
App& app,
const std::string& title,
const std::string& text,
bool cancel_button);
[[nodiscard]] std::shared_ptr<NodeInputBox> create_legacy_app_input_dialog( [[nodiscard]] std::shared_ptr<NodeInputBox> create_legacy_app_input_dialog(
App& app, App& app,
const pp::app::AppInputDialogPlan& plan); const pp::app::AppInputDialogPlan& plan);
[[nodiscard]] std::shared_ptr<NodeInputBox> show_legacy_app_input_dialog(
App& app,
const std::string& title,
const std::string& field_name,
const std::string& ok_caption);
[[nodiscard]] std::shared_ptr<NodeProgressBar> legacy_progress_dialog_node( [[nodiscard]] std::shared_ptr<NodeProgressBar> legacy_progress_dialog_node(
const std::shared_ptr<pp::app::AppProgressDialog>& dialog) noexcept; const std::shared_ptr<pp::app::AppProgressDialog>& dialog) noexcept;