FIX:allow single cutter selected at 3D view
jira: none Change-Id: I2b90dace9f4288bd8077617a526fc3b5cf6543b7
This commit is contained in:
parent
aa4a5910eb
commit
68545b2a81
|
@ -486,6 +486,18 @@ void MenuFactory::append_menu_item_delete(wxMenu* menu)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MenuFactory::append_menu_item_delete_all_cutter(wxMenu *menu)
|
||||||
|
{
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
append_menu_item(
|
||||||
|
menu, wxID_ANY, _L("Delete all cutter") + "\t" + _L("Del"), _L("Delete all cutter"), [](wxCommandEvent &) { plater()->remove_selected(); }, "menu_delete", nullptr,
|
||||||
|
[]() { return plater()->can_delete(); }, m_parent);
|
||||||
|
#else
|
||||||
|
append_menu_item(
|
||||||
|
menu, wxID_ANY, _L("Delete all cutter") + "\tBackSpace", _L("Delete all cutter"), [](wxCommandEvent &) { plater()->remove_selected(); }, "", nullptr,
|
||||||
|
[]() { return plater()->can_delete(); }, m_parent);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void MenuFactory::append_menu_item_edit_text(wxMenu *menu)
|
void MenuFactory::append_menu_item_edit_text(wxMenu *menu)
|
||||||
{
|
{
|
||||||
|
@ -716,6 +728,10 @@ wxMenuItem* MenuFactory::append_menu_item_change_type(wxMenu* menu)
|
||||||
return append_menu_item(menu, wxID_ANY, _L("Change type"), "",
|
return append_menu_item(menu, wxID_ANY, _L("Change type"), "",
|
||||||
[](wxCommandEvent&) { obj_list()->change_part_type(); }, "", menu,
|
[](wxCommandEvent&) { obj_list()->change_part_type(); }, "", menu,
|
||||||
[]() {
|
[]() {
|
||||||
|
const Selection &selection = plater()->canvas3D()->get_selection();
|
||||||
|
if (selection.get_volume_idxs().size() != 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
wxDataViewItem item = obj_list()->GetSelection();
|
wxDataViewItem item = obj_list()->GetSelection();
|
||||||
return item.IsOk() || obj_list()->GetModel()->GetItemType(item) == itVolume;
|
return item.IsOk() || obj_list()->GetModel()->GetItemType(item) == itVolume;
|
||||||
}, m_parent);
|
}, m_parent);
|
||||||
|
@ -1340,7 +1356,7 @@ void MenuFactory::create_bbl_assemble_part_menu()
|
||||||
void MenuFactory::create_cut_cutter_menu()
|
void MenuFactory::create_cut_cutter_menu()
|
||||||
{
|
{
|
||||||
wxMenu *menu = &m_cut_cutter_menu;
|
wxMenu *menu = &m_cut_cutter_menu;
|
||||||
append_menu_item_delete(menu);
|
append_menu_item_delete_all_cutter(menu);
|
||||||
append_menu_item_change_type(menu);
|
append_menu_item_change_type(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,7 @@ private:
|
||||||
void append_menu_item_change_extruder(wxMenu* menu);
|
void append_menu_item_change_extruder(wxMenu* menu);
|
||||||
void append_menu_item_set_visible(wxMenu* menu);
|
void append_menu_item_set_visible(wxMenu* menu);
|
||||||
void append_menu_item_delete(wxMenu* menu);
|
void append_menu_item_delete(wxMenu* menu);
|
||||||
|
void append_menu_item_delete_all_cutter(wxMenu *menu);
|
||||||
void append_menu_item_scale_selection_to_fit_print_volume(wxMenu* menu);
|
void append_menu_item_scale_selection_to_fit_print_volume(wxMenu* menu);
|
||||||
void append_menu_items_convert_unit(wxMenu* menu); // Add "Conver/Revert..." menu items (from/to inches/meters) after "Reload From Disk"
|
void append_menu_items_convert_unit(wxMenu* menu); // Add "Conver/Revert..." menu items (from/to inches/meters) after "Reload From Disk"
|
||||||
void append_menu_items_flush_options(wxMenu* menu);
|
void append_menu_items_flush_options(wxMenu* menu);
|
||||||
|
|
|
@ -4791,8 +4791,6 @@ void ObjectList::update_selections_on_canvas()
|
||||||
|
|
||||||
if (sel_cnt == 1) {
|
if (sel_cnt == 1) {
|
||||||
wxDataViewItem item = GetSelection();
|
wxDataViewItem item = GetSelection();
|
||||||
if (m_objects_model->GetInfoItemType(item) == InfoItemType::CutConnectors)
|
|
||||||
selection.remove_all();
|
|
||||||
|
|
||||||
if (m_objects_model->GetItemType(item) & (itSettings | itInstanceRoot | itLayerRoot | itLayer))
|
if (m_objects_model->GetItemType(item) & (itSettings | itInstanceRoot | itLayerRoot | itLayer))
|
||||||
add_to_selection(m_objects_model->GetParent(item), selection, instance_idx, mode);
|
add_to_selection(m_objects_model->GetParent(item), selection, instance_idx, mode);
|
||||||
|
@ -4829,6 +4827,9 @@ void ObjectList::update_selections_on_canvas()
|
||||||
// to avoid lost of some volumes in selection
|
// to avoid lost of some volumes in selection
|
||||||
// check non-selected volumes only if selection mode wasn't changed
|
// check non-selected volumes only if selection mode wasn't changed
|
||||||
// OR there is no single selection
|
// OR there is no single selection
|
||||||
|
if (is_connectors_item_selected() && !selection.is_empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (selection.get_mode() == mode || !single_selection)
|
if (selection.get_mode() == mode || !single_selection)
|
||||||
volume_idxs = selection.get_unselected_volume_idxs_from(volume_idxs);
|
volume_idxs = selection.get_unselected_volume_idxs_from(volume_idxs);
|
||||||
Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Add selected to list", UndoRedo::SnapshotType::Selection);
|
Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Add selected to list", UndoRedo::SnapshotType::Selection);
|
||||||
|
@ -5137,6 +5138,11 @@ void ObjectList::fix_cut_selection()
|
||||||
|
|
||||||
m_prevent_list_events = false;
|
m_prevent_list_events = false;
|
||||||
}
|
}
|
||||||
|
auto canvas_type = wxGetApp().plater()->get_current_canvas3D()->get_canvas_type();
|
||||||
|
if (canvas_type == GLCanvas3D::ECanvasType::CanvasView3D && is_connectors_item_selected()) {
|
||||||
|
Selection &selection = wxGetApp().plater()->get_view3D_canvas3D()->get_selection();
|
||||||
|
selection.remove_all();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ObjectList::fix_cut_selection(wxDataViewItemArray &sels)
|
bool ObjectList::fix_cut_selection(wxDataViewItemArray &sels)
|
||||||
|
|
|
@ -7454,11 +7454,16 @@ void Plater::priv::on_right_click(RBtnEvent& evt)
|
||||||
menu = menus.part_menu();
|
menu = menus.part_menu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else
|
} else {
|
||||||
|
if (selection.is_any_cut_volume()) {
|
||||||
|
menu = menus.cut_connector_menu();
|
||||||
|
} else {
|
||||||
menu = menus.multi_selection_menu();
|
menu = menus.multi_selection_menu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (q != nullptr && menu) {
|
if (q != nullptr && menu) {
|
||||||
show_right_click_menu(evt.data.first, menu);
|
show_right_click_menu(evt.data.first, menu);
|
||||||
|
|
Loading…
Reference in New Issue