Extract file menu binding and Win32 splash helper
This commit is contained in:
@@ -13,8 +13,6 @@
|
||||
#include "app_core/canvas_tool_ui.h"
|
||||
#include "app_core/document_layer.h"
|
||||
#include "app_core/document_canvas.h"
|
||||
#include "app_core/document_export.h"
|
||||
#include "app_core/file_menu.h"
|
||||
#include "app_core/app_status.h"
|
||||
#include "app_core/main_toolbar.h"
|
||||
#include "app_core/tools_menu.h"
|
||||
@@ -34,6 +32,7 @@
|
||||
#include <vector>
|
||||
|
||||
namespace pp::panopainter {
|
||||
void bind_legacy_file_menu(App& app);
|
||||
void bind_legacy_tools_menu(App& app);
|
||||
}
|
||||
|
||||
@@ -54,16 +53,6 @@ bool apply_brush_preset_plan(App& app, const std::shared_ptr<Brush>& brush)
|
||||
return pp::panopainter::apply_legacy_brush_preset_plan(app, brush);
|
||||
}
|
||||
|
||||
bool apply_document_export_menu_plan(App& app, pp::app::DocumentExportMenuKind kind)
|
||||
{
|
||||
return pp::panopainter::apply_legacy_document_export_menu_plan(app, kind);
|
||||
}
|
||||
|
||||
void apply_file_menu_plan(App& app, pp::app::FileMenuCommand command)
|
||||
{
|
||||
pp::panopainter::apply_legacy_file_menu_command(app, command);
|
||||
}
|
||||
|
||||
std::shared_ptr<NodePopupMenu> add_menu_popup(
|
||||
App& app,
|
||||
const char* template_id,
|
||||
@@ -752,138 +741,7 @@ void App::init_toolbar_draw()
|
||||
|
||||
void App::init_menu_file()
|
||||
{
|
||||
if (auto* menu_file = layout[main_id]->find<NodeButtonCustom>("menu-file"))
|
||||
{
|
||||
menu_file->on_click = [this, menu_file](Node*) {
|
||||
auto* popup_root = layout[main_id];
|
||||
if (!popup_root) {
|
||||
return;
|
||||
}
|
||||
const auto open_checked_menu_popup = [this, popup_root](const char* id, glm::vec2 pos, float width)
|
||||
-> std::pair<std::shared_ptr<NodePopupMenu>, pp::ui::NodeHandle>
|
||||
{
|
||||
auto popup = add_menu_popup(*this, id, pos, width);
|
||||
if (!popup) {
|
||||
return {};
|
||||
}
|
||||
pp::panopainter::detach_legacy_node_from_parent(*popup);
|
||||
auto popup_overlay = pp::panopainter::open_legacy_overlay_node_with_handle(*popup_root, popup);
|
||||
if (!popup_overlay) {
|
||||
pp::panopainter::destroy_legacy_node(*popup);
|
||||
return {};
|
||||
}
|
||||
return { popup, popup_overlay.value() };
|
||||
};
|
||||
|
||||
glm::vec2 pos = menu_file->m_pos + glm::vec2(0, menu_file->m_size.y);
|
||||
const auto [popup, popup_handle] = open_checked_menu_popup("file-menu", pos, menu_file->m_size.x);
|
||||
if (!popup)
|
||||
return;
|
||||
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-newdoc"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::new_document);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-import"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::import_image);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-open"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::open_project);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-browse"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::browse_cloud);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-save"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::save);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-save-as"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::save_as);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-save-ver"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::save_version);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-export"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::export_jpeg);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-export-tick"))
|
||||
b->on_click = [this, b, popup_root, popup_handle, open_checked_menu_popup](Node*) {
|
||||
glm::vec2 pos = b->m_pos + glm::vec2(b->m_size.x, 0);
|
||||
const auto [subpopup, subpopup_handle] = open_checked_menu_popup("file-submenu-export", pos, b->m_size.x);
|
||||
if (!subpopup)
|
||||
return;
|
||||
subpopup->find<NodeButtonCustom>("file-submenu-export-png")->on_click = [this, popup_root, popup_handle, subpopup_handle](Node*) {
|
||||
apply_document_export_menu_plan(*this, pp::app::DocumentExportMenuKind::png);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, subpopup_handle);
|
||||
};
|
||||
subpopup->find<NodeButtonCustom>("file-submenu-export-layers")->on_click = [this, popup_root, popup_handle, subpopup_handle](Node*) {
|
||||
apply_document_export_menu_plan(*this, pp::app::DocumentExportMenuKind::layers);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, subpopup_handle);
|
||||
};
|
||||
subpopup->find<NodeButtonCustom>("file-submenu-export-cube")->on_click = [this, popup_root, popup_handle, subpopup_handle](Node*) {
|
||||
apply_document_export_menu_plan(*this, pp::app::DocumentExportMenuKind::cube_faces);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, subpopup_handle);
|
||||
};
|
||||
subpopup->find<NodeButtonCustom>("file-submenu-export-depth")->on_click = [this, popup_root, popup_handle, subpopup_handle](Node*) {
|
||||
apply_document_export_menu_plan(*this, pp::app::DocumentExportMenuKind::depth);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, subpopup_handle);
|
||||
};
|
||||
subpopup->find<NodeButtonCustom>("file-submenu-export-anim")->on_click = [this, popup_root, popup_handle, subpopup_handle](Node*) {
|
||||
apply_document_export_menu_plan(*this, pp::app::DocumentExportMenuKind::animation_frames);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, subpopup_handle);
|
||||
};
|
||||
subpopup->find<NodeButtonCustom>("file-submenu-export-anim-mp4")->on_click = [this, popup_root, popup_handle, subpopup_handle](Node*) {
|
||||
apply_document_export_menu_plan(*this, pp::app::DocumentExportMenuKind::animation_mp4);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, subpopup_handle);
|
||||
};
|
||||
subpopup->find<NodeButtonCustom>("file-submenu-export-timelapse")->on_click = [this, popup_root, popup_handle, subpopup_handle](Node*) {
|
||||
apply_document_export_menu_plan(*this, pp::app::DocumentExportMenuKind::timelapse);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, subpopup_handle);
|
||||
};
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-share"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::share);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-resize"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::resize);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-cloud-upload"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::cloud_upload);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
if (auto b = popup->find<NodeButtonCustom>("file-cloud-browse"))
|
||||
b->on_click = [this, popup_root, popup_handle](Node*) {
|
||||
apply_file_menu_plan(*this, pp::app::FileMenuCommand::cloud_browse);
|
||||
close_legacy_overlay_handle_ignoring_status(*popup_root, popup_handle);
|
||||
};
|
||||
};
|
||||
}
|
||||
pp::panopainter::bind_legacy_file_menu(*this);
|
||||
}
|
||||
|
||||
void App::init_menu_edit()
|
||||
|
||||
Reference in New Issue
Block a user