113 lines
3.8 KiB
C++
113 lines
3.8 KiB
C++
#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
|