Centralize retained UI overlay insertion

This commit is contained in:
2026-06-06 09:55:02 +02:00
parent 3101e65dd3
commit 59c9b05d6c
9 changed files with 118 additions and 83 deletions

View File

@@ -11,6 +11,7 @@
#include "legacy_document_export_services.h"
#include "legacy_document_layer_services.h"
#include "legacy_document_session_services.h"
#include "legacy_ui_overlay_services.h"
#include "settings.h"
#include "node_dialog_open.h"
#include "node_dialog_browse.h"
@@ -147,35 +148,17 @@ std::shared_ptr<NodeInputBox> App::input_box(const std::string& title,
void App::dialog_usermanual()
{
auto dialog = std::make_shared<NodeUserManual>();
dialog->set_manager(&layout);
dialog->init();
dialog->create();
dialog->loaded();
layout[main_id]->add_child(dialog);
(void)pp::panopainter::add_legacy_overlay_node<NodeUserManual>(*this);
}
void App::dialog_changelog()
{
auto dialog = std::make_shared<NodeChangelog>();
dialog->set_manager(&layout);
dialog->init();
dialog->create();
dialog->loaded();
layout[main_id]->add_child(dialog);
(void)pp::panopainter::add_legacy_overlay_node<NodeChangelog>(*this);
}
void App::dialog_about()
{
auto dialog = std::make_shared<NodeAbout>();
dialog->set_manager(&layout);
dialog->init();
dialog->create();
dialog->loaded();
layout[main_id]->add_child(dialog);
(void)pp::panopainter::add_legacy_overlay_node<NodeAbout>(*this);
}
void App::continue_document_workflow_after_optional_save(std::function<void()> action)
@@ -194,14 +177,10 @@ void App::continue_document_workflow_after_optional_save(std::function<void()> a
void App::dialog_newdoc()
{
auto show_dialog = [this] {
auto dialog = std::make_shared<NodeDialogNewDoc>();
dialog->set_manager(&layout);
dialog->init();
dialog->create();
dialog->loaded();
auto dialog = pp::panopainter::make_legacy_overlay_node<NodeDialogNewDoc>(*this);
dialog->input->set_text("name");
layout[main_id]->add_child(dialog);
(void)pp::panopainter::attach_legacy_overlay_node(*this, dialog);
App::I->showKeyboard();
@@ -245,13 +224,9 @@ void App::dialog_open()
{
auto show_dialog = [this] {
// load thumbnail test
auto dialog = std::make_shared<NodeDialogOpen>();
dialog->set_manager(&layout);
dialog->init();
dialog->create();
dialog->loaded();
auto dialog = pp::panopainter::make_legacy_overlay_node<NodeDialogOpen>(*this);
layout[main_id]->add_child(dialog);
(void)pp::panopainter::attach_legacy_overlay_node(*this, dialog);
dialog->btn_ok->on_click = [this, dialog](Node*)
{
@@ -279,13 +254,10 @@ void App::dialog_browse()
auto show_dialog = [this] {
// load thumbnail test
auto dialog = std::make_shared<NodeDialogBrowse>();
dialog->set_manager(&layout);
dialog->search_paths = document_browse_roots();
dialog->init();
dialog->create();
dialog->loaded();
pp::panopainter::initialize_legacy_overlay_node(*this, *dialog);
layout[main_id]->add_child(dialog);
(void)pp::panopainter::attach_legacy_overlay_node(*this, dialog);
dialog->btn_ok->on_click = [this, dialog](Node*)
{
@@ -345,11 +317,7 @@ void App::dialog_save()
if (canvas)
{
auto dialog = std::make_shared<NodeDialogSave>();
dialog->set_manager(&layout);
dialog->init();
dialog->create();
dialog->loaded();
auto dialog = pp::panopainter::make_legacy_overlay_node<NodeDialogSave>(*this);
dialog->input->set_text(doc_name);
App::I->showKeyboard();
@@ -379,7 +347,7 @@ void App::dialog_save()
App::I->hideKeyboard();
};
layout[main_id]->add_child(dialog);
(void)pp::panopainter::attach_legacy_overlay_node(*this, dialog);
}
}
@@ -442,13 +410,9 @@ void App::dialog_export_depth()
void App::dialog_resize()
{
auto dialog = std::make_shared<NodeDialogResize>();
dialog->set_manager(&layout);
dialog->init();
dialog->create();
dialog->loaded();
auto dialog = pp::panopainter::make_legacy_overlay_node<NodeDialogResize>(*this);
layout[main_id]->add_child(dialog);
(void)pp::panopainter::attach_legacy_overlay_node(*this, dialog);
dialog->btn_ok->on_click = [this,dialog](Node*)
{
@@ -481,16 +445,12 @@ void App::dialog_export_cube_faces()
void App::dialog_layer_rename()
{
auto dialog = std::make_shared<NodeDialogLayerRename>();
dialog->set_manager(&layout);
dialog->init();
dialog->create();
dialog->loaded();
auto dialog = pp::panopainter::make_legacy_overlay_node<NodeDialogLayerRename>(*this);
dialog->input->set_text(layers->m_current_layer->m_label_text);
App::I->showKeyboard();
layout[main_id]->add_child(dialog);
(void)pp::panopainter::attach_legacy_overlay_node(*this, dialog);
dialog->btn_ok->on_click = [this,dialog](Node*)
{
@@ -516,8 +476,7 @@ void App::dialog_preset_download()
void App::dialog_ppbr_export()
{
auto root = layout[main_id];
auto dialog = root->add_child_ref<NodeDialogExportPPBR>();
auto dialog = pp::panopainter::add_legacy_overlay_node<NodeDialogExportPPBR>(*this);
dialog->btn_ok->on_click = [this, dialog] (Node*) {
const auto request = pp::panopainter::make_legacy_brush_package_export_request(*dialog);
@@ -662,7 +621,7 @@ void App::dialog_export_mp4()
void App::dialog_whatsnew(bool force_show)
{
auto whatsnew = std::make_shared<NodeRemotePage>();
whatsnew->m_manager = &layout;
whatsnew->set_manager(&layout);
whatsnew->init();
std::string url = fmt::format("https://panopainter.com/app-content/whatsnew/?version={}", g_version_build);
whatsnew->load_url(url, [this, whatsnew, force_show](bool success) {
@@ -673,7 +632,7 @@ void App::dialog_whatsnew(bool force_show)
{
whatsnew->set_title(fmt::format("What's new in version {}", g_version_number));
if (!force_show)
layout[main_id]->add_child(whatsnew);
(void)pp::panopainter::attach_legacy_overlay_node(*this, whatsnew);
}
}
});
@@ -691,10 +650,10 @@ void App::dialog_whatsnew(bool force_show)
whatsnew->destroy();
});
if (force_show)
layout[main_id]->add_child(whatsnew);
(void)pp::panopainter::attach_legacy_overlay_node(*this, whatsnew);
}
void App::dialog_shortcuts()
{
layout[main_id]->add_child<NodeShortcuts>();
(void)pp::panopainter::add_legacy_overlay_node<NodeShortcuts>(*this);
}