remove duplicit codes

This commit is contained in:
Filip Sykala - NTB T15p 2023-03-15 14:20:04 +01:00
parent 2a106c7e6d
commit 6807615c75

View File

@ -499,76 +499,55 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty
return sub_menu; return sub_menu;
} }
void MenuFactory::append_menu_item_add_text(wxMenu* menu, ModelVolumeType type, bool is_submenu_item/* = true*/) static void append_menu_itemm_add_(const wxString& name, GLGizmosManager::EType gizmo_type, wxMenu *menu, ModelVolumeType type, bool is_submenu_item) {
{ auto add_ = [type, gizmo_type](const wxCommandEvent & /*unnamed*/) {
auto add_text = [type](wxCommandEvent& evt) { const GLCanvas3D *canvas = plater()->canvas3D();
GLCanvas3D* canvas = plater()->canvas3D(); const GLGizmosManager &mng = canvas->get_gizmos_manager();
GLGizmosManager& mng = canvas->get_gizmos_manager(); GLGizmoBase *gizmo_base = mng.get_gizmo(gizmo_type);
GLGizmoBase* gizmo = mng.get_gizmo(GLGizmosManager::Emboss);
GLGizmoEmboss* emboss = dynamic_cast<GLGizmoEmboss *>(gizmo);
assert(emboss != nullptr);
if (emboss == nullptr) return;
ModelVolumeType volume_type = type; ModelVolumeType volume_type = type;
// no selected object means create new object // no selected object means create new object
if (volume_type == ModelVolumeType::INVALID) if (volume_type == ModelVolumeType::INVALID)
volume_type = ModelVolumeType::MODEL_PART; volume_type = ModelVolumeType::MODEL_PART;
auto screen_position = canvas->get_popup_menu_position(); auto screen_position = canvas->get_popup_menu_position();
if (screen_position.has_value()) { if (gizmo_type == GLGizmosManager::Emboss) {
emboss->create_volume(volume_type, *screen_position); auto emboss = dynamic_cast<GLGizmoEmboss *>(gizmo_base);
} else { assert(emboss != nullptr);
emboss->create_volume(volume_type); if (emboss == nullptr) return;
} if (screen_position.has_value()) {
emboss->create_volume(volume_type, *screen_position);
} else {
emboss->create_volume(volume_type);
}
} else if (gizmo_type == GLGizmosManager::Svg) {
auto svg = dynamic_cast<GLGizmoSVG *>(gizmo_base);
assert(svg != nullptr);
if (svg == nullptr) return;
if (screen_position.has_value()) {
svg->create_volume(volume_type, *screen_position);
} else {
svg->create_volume(volume_type);
}
}
}; };
if ( type == ModelVolumeType::MODEL_PART if (type == ModelVolumeType::MODEL_PART || type == ModelVolumeType::NEGATIVE_VOLUME || type == ModelVolumeType::PARAMETER_MODIFIER ||
|| type == ModelVolumeType::NEGATIVE_VOLUME type == ModelVolumeType::INVALID // cannot use gizmo without selected object
|| type == ModelVolumeType::PARAMETER_MODIFIER ) {
|| type == ModelVolumeType::INVALID // cannot use gizmo without selected object wxString item_name = wxString(is_submenu_item ? "" : _(ADD_VOLUME_MENU_ITEMS[int(type)].first) + ": ") + name;
) {
wxString item_name = is_submenu_item ? "" : _(ADD_VOLUME_MENU_ITEMS[int(type)].first) + ": ";
item_name += _L("Text");
menu->AppendSeparator(); menu->AppendSeparator();
const std::string icon_name = is_submenu_item ? "" : ADD_VOLUME_MENU_ITEMS[int(type)].second; const std::string icon_name = is_submenu_item ? "" : ADD_VOLUME_MENU_ITEMS[int(type)].second;
append_menu_item(menu, wxID_ANY, item_name, "", add_text, icon_name, menu); append_menu_item(menu, wxID_ANY, item_name, "", add_, icon_name, menu);
} }
} }
void MenuFactory::append_menu_item_add_svg(wxMenu *menu, ModelVolumeType type, bool is_submenu_item /* = true*/) void MenuFactory::append_menu_item_add_text(wxMenu* menu, ModelVolumeType type, bool is_submenu_item/* = true*/){
{ append_menu_itemm_add_(_L("Text"), GLGizmosManager::Emboss, menu, type, is_submenu_item);
auto open_svg = [type](wxCommandEvent &evt) { }
GLCanvas3D* canvas = plater()->canvas3D();
GLGizmosManager& mng = canvas->get_gizmos_manager();
GLGizmoBase* gizmo = mng.get_gizmo(GLGizmosManager::Svg);
GLGizmoSVG* svg = dynamic_cast<GLGizmoSVG *>(gizmo);
assert(svg != nullptr);
if (svg == nullptr) return;
ModelVolumeType volume_type = type;
// no selected object means create new object
if (volume_type == ModelVolumeType::INVALID)
volume_type = ModelVolumeType::MODEL_PART;
auto screen_position = canvas->get_popup_menu_position(); void MenuFactory::append_menu_item_add_svg(wxMenu *menu, ModelVolumeType type, bool is_submenu_item /* = true*/){
if (screen_position.has_value()) { append_menu_itemm_add_(_L("Svg"), GLGizmosManager::Svg, menu, type, is_submenu_item);
svg->create_volume(volume_type, *screen_position);
} else {
svg->create_volume(volume_type);
}
};
if ( type == ModelVolumeType::MODEL_PART
|| type == ModelVolumeType::NEGATIVE_VOLUME
|| type == ModelVolumeType::PARAMETER_MODIFIER
|| type == ModelVolumeType::INVALID // cannot use gizmo without selected object
) {
wxString item_name = is_submenu_item ? "" : _(ADD_VOLUME_MENU_ITEMS[int(type)].first) + ": ";
item_name += _L("SVG");
menu->AppendSeparator();
const std::string icon_name = is_submenu_item ? "" : ADD_VOLUME_MENU_ITEMS[int(type)].second;
append_menu_item(menu, wxID_ANY, item_name, "", open_svg, icon_name, menu);
}
} }
void MenuFactory::append_menu_items_add_volume(MenuType menu_type) void MenuFactory::append_menu_items_add_volume(MenuType menu_type)