Extract app menu binding services
This commit is contained in:
112
src/legacy_main_toolbar_binding_services.cpp
Normal file
112
src/legacy_main_toolbar_binding_services.cpp
Normal file
@@ -0,0 +1,112 @@
|
||||
#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 <class ButtonT, class Handler>
|
||||
void bind_legacy_main_toolbar_click(Node& toolbar_root, const char* button_id, Handler&& handler)
|
||||
{
|
||||
if (auto* button = toolbar_root.find<ButtonT>(button_id)) {
|
||||
button->on_click = std::forward<Handler>(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<NodeButton>(toolbar_root, "btn-anim", [&app](Node*) {
|
||||
if (app.canvas) {
|
||||
//app.canvas->m_canvas->export_anim();
|
||||
}
|
||||
});
|
||||
|
||||
bind_legacy_main_toolbar_click<NodeButton>(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<NodeButton>(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<NodeButtonCustom>(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<NodeButtonCustom>(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<NodeButtonCustom>(
|
||||
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<NodeButton>(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<bool>(app.canvas));
|
||||
if (plan)
|
||||
execute_main_toolbar_plan(app, plan.value());
|
||||
});
|
||||
|
||||
bind_legacy_main_toolbar_click<NodeButton>(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<NodeButtonCustom>(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
|
||||
Reference in New Issue
Block a user