Extract layer rename dialog and brush preset registry shells

This commit is contained in:
2026-06-16 23:46:08 +02:00
parent 42bae9db16
commit cb9751dcc7
9 changed files with 91 additions and 68 deletions

View File

@@ -7,6 +7,27 @@
namespace pp::panopainter {
namespace {
std::vector<NodePanelBrushPreset*> s_legacy_brush_preset_panels;
}
void register_legacy_brush_preset_panel(NodePanelBrushPreset& panel)
{
s_legacy_brush_preset_panels.push_back(&panel);
}
void unregister_legacy_brush_preset_panel(NodePanelBrushPreset& panel)
{
s_legacy_brush_preset_panels.erase(
std::remove(s_legacy_brush_preset_panels.begin(), s_legacy_brush_preset_panels.end(), &panel),
s_legacy_brush_preset_panels.end());
}
const std::vector<NodePanelBrushPreset*>& legacy_brush_preset_panels()
{
return s_legacy_brush_preset_panels;
}
LegacyBrushPresetListServices::LegacyBrushPresetListServices(NodePanelBrushPreset& owner)
: owner_(owner)
{
@@ -21,7 +42,7 @@ pp::foundation::Status LegacyBrushPresetListServices::add_current_brush_preset(i
return pp::foundation::Status::invalid_argument("current brush must be available to add a preset");
}
for (auto p : NodePanelBrushPreset::s_panels) {
for (auto p : legacy_brush_preset_panels()) {
p->add_brush(std::make_shared<Brush>(*Canvas::I->m_current_brush));
}
return pp::foundation::Status::success();
@@ -33,7 +54,7 @@ void LegacyBrushPresetListServices::remove_brush_preset(
bool selects_target,
bool clears_selection)
{
for (auto p : NodePanelBrushPreset::s_panels) {
for (auto p : legacy_brush_preset_panels()) {
if (current_index < 0 || current_index >= static_cast<int>(p->m_container->m_children.size())) {
continue;
}
@@ -51,7 +72,7 @@ void LegacyBrushPresetListServices::remove_brush_preset(
void LegacyBrushPresetListServices::move_brush_preset(int from_index, int to_index)
{
for (auto p : NodePanelBrushPreset::s_panels) {
for (auto p : legacy_brush_preset_panels()) {
if (from_index >= 0 && from_index < static_cast<int>(p->m_container->m_children.size())) {
p->m_container->move_child(p->m_container->m_children[from_index].get(), to_index);
}
@@ -60,7 +81,7 @@ void LegacyBrushPresetListServices::move_brush_preset(int from_index, int to_ind
void LegacyBrushPresetListServices::select_brush_preset(int index, bool notify_brush_changed)
{
for (auto p : NodePanelBrushPreset::s_panels) {
for (auto p : legacy_brush_preset_panels()) {
if (p->m_current) {
p->m_current->m_selected = false;
}
@@ -75,7 +96,7 @@ void LegacyBrushPresetListServices::select_brush_preset(int index, bool notify_b
void LegacyBrushPresetListServices::clear_brush_presets(bool clears_selection)
{
for (auto p : NodePanelBrushPreset::s_panels) {
for (auto p : legacy_brush_preset_panels()) {
p->m_container->remove_all_children();
if (clears_selection) {
p->m_current = nullptr;
@@ -85,7 +106,7 @@ void LegacyBrushPresetListServices::clear_brush_presets(bool clears_selection)
void LegacyBrushPresetListServices::update_preset_empty_notification()
{
for (auto p : NodePanelBrushPreset::s_panels) {
for (auto p : legacy_brush_preset_panels()) {
p->m_notification->SetVisibility(p->m_container->m_children.size() == 0);
}
}