implement layers merge down
This commit is contained in:
@@ -376,8 +376,8 @@ void App::initLayout()
|
||||
popup->mouse_release();
|
||||
popup->destroy();
|
||||
};
|
||||
|
||||
popup->find<NodeButtonCustom>("layer-rename")->on_click = [this](Node*) {
|
||||
// load thumbnail test
|
||||
auto open_dialog = std::make_shared<NodeDialogLayerRename>();
|
||||
open_dialog->m_manager = &layout;
|
||||
open_dialog->data_path = data_path;
|
||||
@@ -391,6 +391,7 @@ void App::initLayout()
|
||||
open_dialog->btn_ok->on_click = [this,open_dialog](Node*)
|
||||
{
|
||||
layers->m_current_layer->set_name(open_dialog->get_name().c_str());
|
||||
canvas->m_canvas->m_layers[canvas->m_canvas->m_current_layer_idx].m_name = open_dialog->get_name();
|
||||
open_dialog->destroy();
|
||||
};
|
||||
|
||||
@@ -405,6 +406,47 @@ void App::initLayout()
|
||||
popup->find<NodeButtonCustom>("layer-rename")->
|
||||
find<NodeText>("menu-label")->
|
||||
set_text("Rename Layer (Select a layer)");
|
||||
|
||||
popup->find<NodeButtonCustom>("layer-merge")->on_click = [this](Node*) {
|
||||
const auto& order = canvas->m_canvas->m_order;
|
||||
int current_idx_order = std::distance(order.begin(), std::find(order.begin(), order.end(), canvas->m_canvas->m_current_layer_idx));
|
||||
if (current_idx_order > 0)
|
||||
{
|
||||
int dest_layer_idx = order[current_idx_order - 1];
|
||||
canvas->m_canvas->layer_merge(canvas->m_canvas->m_current_layer_idx, dest_layer_idx);
|
||||
canvas->m_canvas->layer_remove(current_idx_order);
|
||||
layers->clear();
|
||||
for (auto& i : canvas->m_canvas->m_order)
|
||||
layers->add_layer(canvas->m_canvas->m_layers[i].m_name.c_str());
|
||||
layers->m_current_layer = layers->m_layers[current_idx_order - 1];
|
||||
layers->m_current_layer->m_selected = true;
|
||||
}
|
||||
popup->mouse_release();
|
||||
popup->destroy();
|
||||
};
|
||||
if (layers->m_current_layer)
|
||||
{
|
||||
const auto& order = canvas->m_canvas->m_order;
|
||||
int current_idx_order = std::distance(order.begin(), std::find(order.begin(), order.end(), canvas->m_canvas->m_current_layer_idx));
|
||||
if (current_idx_order > 0)
|
||||
{
|
||||
int down_layer_idx = order[current_idx_order - 1];
|
||||
popup->find<NodeButtonCustom>("layer-merge")->
|
||||
find<NodeText>("menu-label")->
|
||||
set_text(("Merge with " + canvas->m_canvas->m_layers[down_layer_idx].m_name).c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
popup->find<NodeButtonCustom>("layer-merge")->
|
||||
find<NodeText>("menu-label")->
|
||||
set_text("Merge Layer (Select upper layers)");
|
||||
}
|
||||
}
|
||||
else
|
||||
popup->find<NodeButtonCustom>("layer-merge")->
|
||||
find<NodeText>("menu-label")->
|
||||
set_text("Merge Layer (Select a layer)");
|
||||
|
||||
};
|
||||
}
|
||||
if (auto* toolbar = layout[main_id]->find<Node>("toolbar"))
|
||||
|
||||
Reference in New Issue
Block a user