Extract main toolbar action planning
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include "app_core/file_menu.h"
|
||||
#include "app_core/app_status.h"
|
||||
#include "app_core/history_ui.h"
|
||||
#include "app_core/main_toolbar.h"
|
||||
#include "app_core/tools_menu.h"
|
||||
#include "settings.h"
|
||||
#include "serializer.h"
|
||||
@@ -281,39 +282,51 @@ void App::init_toolbar_main()
|
||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-open"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
dialog_open();
|
||||
const auto plan = pp::app::plan_main_toolbar_command(
|
||||
pp::app::MainToolbarCommand::open_document);
|
||||
if (plan && plan.value().action == pp::app::MainToolbarAction::show_open_dialog)
|
||||
dialog_open();
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-save"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
dialog_save();
|
||||
const auto plan = pp::app::plan_main_toolbar_command(
|
||||
pp::app::MainToolbarCommand::save_document);
|
||||
if (plan && plan.value().action == pp::app::MainToolbarAction::show_save_dialog)
|
||||
dialog_save();
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-undo"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
const auto plan = pp::app::plan_history_undo(static_cast<int>(ActionManager::I.m_actions.size()));
|
||||
if (plan && plan.value().invokes_undo)
|
||||
const auto plan = pp::app::plan_main_toolbar_command(
|
||||
pp::app::MainToolbarCommand::undo,
|
||||
static_cast<int>(ActionManager::I.m_actions.size()));
|
||||
if (plan && plan.value().action == pp::app::MainToolbarAction::invoke_undo)
|
||||
ActionManager::undo();
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-redo"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
const auto plan = pp::app::plan_history_redo(static_cast<int>(ActionManager::I.m_redos.size()));
|
||||
if (plan && plan.value().invokes_redo)
|
||||
const auto plan = pp::app::plan_main_toolbar_command(
|
||||
pp::app::MainToolbarCommand::redo,
|
||||
0,
|
||||
static_cast<int>(ActionManager::I.m_redos.size()));
|
||||
if (plan && plan.value().action == pp::app::MainToolbarAction::invoke_redo)
|
||||
ActionManager::redo();
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-clean-memory"))
|
||||
{
|
||||
button->on_click = [this](Node*) {
|
||||
const auto plan = pp::app::plan_history_clear(
|
||||
const auto plan = pp::app::plan_main_toolbar_command(
|
||||
pp::app::MainToolbarCommand::clear_history,
|
||||
static_cast<int>(ActionManager::I.m_actions.size()),
|
||||
static_cast<int>(ActionManager::I.m_redos.size()),
|
||||
static_cast<int>(ActionManager::I.m_memory));
|
||||
if (plan && plan.value().clears_history)
|
||||
if (plan && plan.value().action == pp::app::MainToolbarAction::clear_history)
|
||||
ActionManager::clear();
|
||||
};
|
||||
}
|
||||
@@ -321,18 +334,27 @@ void App::init_toolbar_main()
|
||||
{
|
||||
button->on_click = [this](Node*) {
|
||||
//exit(0);
|
||||
const auto plan = pp::app::plan_document_canvas_clear(static_cast<bool>(canvas));
|
||||
if (plan && plan.value().clears_canvas)
|
||||
const auto plan = pp::app::plan_main_toolbar_command(
|
||||
pp::app::MainToolbarCommand::clear_canvas,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
static_cast<bool>(canvas));
|
||||
if (plan && plan.value().action == pp::app::MainToolbarAction::clear_canvas)
|
||||
canvas->m_canvas->clear({
|
||||
plan.value().r,
|
||||
plan.value().g,
|
||||
plan.value().b,
|
||||
plan.value().a });
|
||||
0.0F,
|
||||
0.0F,
|
||||
0.0F,
|
||||
0.0F });
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-popup"))
|
||||
{
|
||||
button->on_click = [this](Node*) {
|
||||
const auto plan = pp::app::plan_main_toolbar_command(
|
||||
pp::app::MainToolbarCommand::show_message_box);
|
||||
if (!plan || plan.value().action != pp::app::MainToolbarAction::show_message_box)
|
||||
return;
|
||||
msgbox = new NodeMessageBox();
|
||||
msgbox->set_manager(&layout);
|
||||
msgbox->init();
|
||||
@@ -342,6 +364,10 @@ void App::init_toolbar_main()
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-settings"))
|
||||
{
|
||||
button->on_click = [this](Node*) {
|
||||
const auto plan = pp::app::plan_main_toolbar_command(
|
||||
pp::app::MainToolbarCommand::show_settings);
|
||||
if (!plan || plan.value().action != pp::app::MainToolbarAction::show_settings_dialog)
|
||||
return;
|
||||
settings = new NodeSettings();
|
||||
settings->set_manager(&layout);
|
||||
settings->init();
|
||||
|
||||
Reference in New Issue
Block a user