Simplify logic using freecad_dynamic_cast

This commit is contained in:
Benjamin Nauck
2025-01-17 18:45:34 +01:00
parent 45c997f40a
commit cb4ee4737d
5 changed files with 56 additions and 63 deletions

View File

@@ -390,57 +390,57 @@ bool QGSPage::addView(const App::DocumentObject* obj)
bool QGSPage::attachView(App::DocumentObject* obj)
{
// Base::Console().Message("QGSP::attachView(%s)\n", obj->getNameInDocument());
QGIView* existing = findQViewForDocObj(obj);
if (existing)
if (findQViewForDocObj(obj)) {
return true;
auto typeId(obj->getTypeId());
}
QGIView* qview(nullptr);
if (typeId.isDerivedFrom(TechDraw::DrawViewSection::getClassTypeId())) {
qview = addViewSection(static_cast<TechDraw::DrawViewSection*>(obj));
using Base::freecad_dynamic_cast;
if (auto o = freecad_dynamic_cast<TechDraw::DrawViewSection>(obj)) {
qview = addViewSection(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) {
qview = addViewPart(static_cast<TechDraw::DrawViewPart*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewPart>(obj)) {
qview = addViewPart(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawProjGroup::getClassTypeId())) {
qview = addProjectionGroup(static_cast<TechDraw::DrawProjGroup*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawProjGroup>(obj)) {
qview = addProjectionGroup(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewCollection::getClassTypeId())) {
qview = addDrawView(static_cast<TechDraw::DrawViewCollection*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewCollection>(obj)) {
qview = addDrawView(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) {
qview = addViewDimension(static_cast<TechDraw::DrawViewDimension*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewDimension>(obj)) {
qview = addViewDimension(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewBalloon::getClassTypeId())) {
qview = addViewBalloon(static_cast<TechDraw::DrawViewBalloon*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewBalloon>(obj)) {
qview = addViewBalloon(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewAnnotation::getClassTypeId())) {
qview = addAnnotation(static_cast<TechDraw::DrawViewAnnotation*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewAnnotation>(obj)) {
qview = addAnnotation(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewSymbol::getClassTypeId())) {
qview = addDrawViewSymbol(static_cast<TechDraw::DrawViewSymbol*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewSymbol>(obj)) {
qview = addDrawViewSymbol(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewClip::getClassTypeId())) {
qview = addDrawViewClip(static_cast<TechDraw::DrawViewClip*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewClip>(obj)) {
qview = addDrawViewClip(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewSpreadsheet::getClassTypeId())) {
qview = addDrawViewSpreadsheet(static_cast<TechDraw::DrawViewSpreadsheet*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewSpreadsheet>(obj)) {
qview = addDrawViewSpreadsheet(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawViewImage::getClassTypeId())) {
qview = addDrawViewImage(static_cast<TechDraw::DrawViewImage*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawViewImage>(obj)) {
qview = addDrawViewImage(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawLeaderLine::getClassTypeId())) {
qview = addViewLeader(static_cast<TechDraw::DrawLeaderLine*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawLeaderLine>(obj)) {
qview = addViewLeader(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawRichAnno::getClassTypeId())) {
qview = addRichAnno(static_cast<TechDraw::DrawRichAnno*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawRichAnno>(obj)) {
qview = addRichAnno(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawWeldSymbol::getClassTypeId())) {
qview = addWeldSymbol(static_cast<TechDraw::DrawWeldSymbol*>(obj));
else if (auto o = freecad_dynamic_cast<TechDraw::DrawWeldSymbol>(obj)) {
qview = addWeldSymbol(o);
}
else if (typeId.isDerivedFrom(TechDraw::DrawHatch::getClassTypeId())) {
else if (auto o = freecad_dynamic_cast<TechDraw::DrawHatch>(obj)) {
//Hatch is not attached like other Views (since it isn't really a View)
return true;
}