#include "pch.h" #include "legacy_main_toolbar_binding_services.h" #include "app.h" #include "app_core/main_toolbar.h" #include "legacy_app_shell_services.h" #include "legacy_history_services.h" #include "node_button.h" #include "node_button_custom.h" namespace pp::panopainter { namespace { template void bind_legacy_main_toolbar_click(Node& toolbar_root, const char* button_id, Handler&& handler) { if (auto* button = toolbar_root.find(button_id)) { button->on_click = std::forward(handler); } } void execute_main_toolbar_plan(App& app, const pp::app::MainToolbarPlan& plan) { pp::panopainter::execute_legacy_main_toolbar_plan(app, plan); } } // namespace void bind_legacy_main_toolbar_buttons(App& app, Node& toolbar_root) { bind_legacy_main_toolbar_click(toolbar_root, "btn-anim", [&app](Node*) { if (app.canvas) { //app.canvas->m_canvas->export_anim(); } }); bind_legacy_main_toolbar_click(toolbar_root, "btn-open", [&app](Node*) { const auto plan = pp::app::plan_main_toolbar_command( pp::app::MainToolbarCommand::open_document); if (plan) execute_main_toolbar_plan(app, plan.value()); }); bind_legacy_main_toolbar_click(toolbar_root, "btn-save", [&app](Node*) { const auto plan = pp::app::plan_main_toolbar_command( pp::app::MainToolbarCommand::save_document); if (plan) execute_main_toolbar_plan(app, plan.value()); }); bind_legacy_main_toolbar_click(toolbar_root, "btn-undo", [&app](Node*) { const auto history = pp::panopainter::legacy_history_snapshot(); const auto plan = pp::app::plan_main_toolbar_command( pp::app::MainToolbarCommand::undo, history.undo_count); if (plan) execute_main_toolbar_plan(app, plan.value()); }); bind_legacy_main_toolbar_click(toolbar_root, "btn-redo", [&app](Node*) { const auto history = pp::panopainter::legacy_history_snapshot(); const auto plan = pp::app::plan_main_toolbar_command( pp::app::MainToolbarCommand::redo, 0, history.redo_count); if (plan) execute_main_toolbar_plan(app, plan.value()); }); bind_legacy_main_toolbar_click( toolbar_root, "btn-clean-memory", [&app](Node*) { const auto history = pp::panopainter::legacy_history_snapshot(); const auto plan = pp::app::plan_main_toolbar_command( pp::app::MainToolbarCommand::clear_history, history.undo_count, history.redo_count, history.memory_bytes); if (plan) execute_main_toolbar_plan(app, plan.value()); }); bind_legacy_main_toolbar_click(toolbar_root, "btn-clear", [&app](Node*) { const auto plan = pp::app::plan_main_toolbar_command( pp::app::MainToolbarCommand::clear_canvas, 0, 0, 0, static_cast(app.canvas)); if (plan) execute_main_toolbar_plan(app, plan.value()); }); bind_legacy_main_toolbar_click(toolbar_root, "btn-popup", [&app](Node*) { const auto plan = pp::app::plan_main_toolbar_command( pp::app::MainToolbarCommand::show_message_box); if (plan) execute_main_toolbar_plan(app, plan.value()); }); bind_legacy_main_toolbar_click(toolbar_root, "btn-settings", [&app](Node*) { const auto plan = pp::app::plan_main_toolbar_command( pp::app::MainToolbarCommand::show_settings); if (plan) execute_main_toolbar_plan(app, plan.value()); }); } } // namespace pp::panopainter