diff --git a/src/app/tools/drawTools/vabstractspline.h b/src/app/tools/drawTools/vabstractspline.h index d89d179f1..5a8e83568 100644 --- a/src/app/tools/drawTools/vabstractspline.h +++ b/src/app/tools/drawTools/vabstractspline.h @@ -90,6 +90,41 @@ protected: virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event ); QPainterPath ToolPath(PathDirection direction = PathDirection::Hide) const; virtual void ReadToolAttributes(const QDomElement &domElement); + + template + void ShowToolVisualization(bool show) + { + if (show) + { + if (vis == nullptr) + { + AddVisualization(); + SetVisualization(); + } + else + { + if (T *visual = qobject_cast(vis)) + { + visual->show(); + } + } + } + else + { + delete vis; + vis = nullptr; + } + + if (detailsMode) + { + ShowHandles(detailsMode); + } + else + { + ShowHandles(show); + } + } + private: Q_DISABLE_COPY(VAbstractSpline) }; diff --git a/src/app/tools/drawTools/vtoolalongline.cpp b/src/app/tools/drawTools/vtoolalongline.cpp index 808de858b..347745d38 100644 --- a/src/app/tools/drawTools/vtoolalongline.cpp +++ b/src/app/tools/drawTools/vtoolalongline.cpp @@ -190,26 +190,7 @@ void VToolAlongLine::SetSecondPointId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolAlongLine::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolAlongLine * visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolarc.cpp b/src/app/tools/drawTools/vtoolarc.cpp index 9946bcf0a..4a7a48c5c 100644 --- a/src/app/tools/drawTools/vtoolarc.cpp +++ b/src/app/tools/drawTools/vtoolarc.cpp @@ -288,26 +288,7 @@ void VToolArc::SetFormulaF2(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- void VToolArc::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolArc *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolbisector.cpp b/src/app/tools/drawTools/vtoolbisector.cpp index bde8cbcc7..e3db54b55 100644 --- a/src/app/tools/drawTools/vtoolbisector.cpp +++ b/src/app/tools/drawTools/vtoolbisector.cpp @@ -359,26 +359,7 @@ void VToolBisector::SetThirdPointId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolBisector::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolBisector *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolcurveintersectaxis.cpp b/src/app/tools/drawTools/vtoolcurveintersectaxis.cpp index 1e4cdb7ae..c0d771cf7 100644 --- a/src/app/tools/drawTools/vtoolcurveintersectaxis.cpp +++ b/src/app/tools/drawTools/vtoolcurveintersectaxis.cpp @@ -222,26 +222,7 @@ void VToolCurveIntersectAxis::setCurveId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolCurveIntersectAxis::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolCurveIntersectAxis *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolcut.h b/src/app/tools/drawTools/vtoolcut.h index 79d48cd76..ba2c10717 100644 --- a/src/app/tools/drawTools/vtoolcut.h +++ b/src/app/tools/drawTools/vtoolcut.h @@ -31,6 +31,7 @@ #include "vtoolpoint.h" #include "../../visualization/vsimplecurve.h" +#include "vabstractspline.h" class VFormula; @@ -76,6 +77,42 @@ protected: void RefreshGeometry(); virtual void RemoveReferens(); void FullUpdateCurveFromFile(const QString &attrCurve); + + template + void ShowToolVisualization(bool show) + { + if (show) + { + if (vis == nullptr) + { + AddVisualization(); + SetVisualization(); + } + else + { + if (T *visual = qobject_cast(vis)) + { + visual->show(); + } + } + } + else + { + delete vis; + vis = nullptr; + } + if (VAbstractSpline *parentCurve = qobject_cast(doc->getTool(curveCutId))) + { + if (detailsMode) + { + parentCurve->ShowHandles(detailsMode); + } + else + { + parentCurve->ShowHandles(show); + } + } + } private: Q_DISABLE_COPY(VToolCut) }; diff --git a/src/app/tools/drawTools/vtoolcutarc.cpp b/src/app/tools/drawTools/vtoolcutarc.cpp index 2864d14a5..2cabd8d88 100644 --- a/src/app/tools/drawTools/vtoolcutarc.cpp +++ b/src/app/tools/drawTools/vtoolcutarc.cpp @@ -187,26 +187,7 @@ VToolCutArc* VToolCutArc::Create(const quint32 _id, const QString &pointName, QS //--------------------------------------------------------------------------------------------------------------------- void VToolCutArc::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolCutArc *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolcutspline.cpp b/src/app/tools/drawTools/vtoolcutspline.cpp index 36f3d8f17..e2f51df25 100644 --- a/src/app/tools/drawTools/vtoolcutspline.cpp +++ b/src/app/tools/drawTools/vtoolcutspline.cpp @@ -31,7 +31,6 @@ #include "../../dialogs/tools/dialogcutspline.h" #include "../../libs/vgeometry/vpointf.h" #include "../../visualization/vistoolcutspline.h" -#include "vabstractspline.h" #include "../../libs/vgeometry/vspline.h" const QString VToolCutSpline::ToolType = QStringLiteral("cutSpline"); @@ -197,37 +196,7 @@ VToolCutSpline* VToolCutSpline::Create(const quint32 _id, const QString &pointNa //--------------------------------------------------------------------------------------------------------------------- void VToolCutSpline::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolCutSpline * visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } - if (VAbstractSpline *parentCurve = qobject_cast(doc->getTool(curveCutId))) - { - if (detailsMode) - { - parentCurve->ShowHandles(detailsMode); - } - else - { - parentCurve->ShowHandles(show); - } - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolcutsplinepath.cpp b/src/app/tools/drawTools/vtoolcutsplinepath.cpp index a81f9c3eb..e2ed31a38 100644 --- a/src/app/tools/drawTools/vtoolcutsplinepath.cpp +++ b/src/app/tools/drawTools/vtoolcutsplinepath.cpp @@ -31,7 +31,6 @@ #include "../../dialogs/tools/dialogcutsplinepath.h" #include "../../libs/vgeometry/vpointf.h" #include "../../visualization/vistoolcutsplinepath.h" -#include "vabstractspline.h" #include "../../libs/vgeometry/vsplinepath.h" const QString VToolCutSplinePath::ToolType = QStringLiteral("cutSplinePath"); @@ -241,37 +240,7 @@ VToolCutSplinePath* VToolCutSplinePath::Create(const quint32 _id, const QString //--------------------------------------------------------------------------------------------------------------------- void VToolCutSplinePath::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolCutSplinePath *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } - if (VAbstractSpline *parentCurve = qobject_cast(doc->getTool(curveCutId))) - { - if (detailsMode) - { - parentCurve->ShowHandles(detailsMode); - } - else - { - parentCurve->ShowHandles(show); - } - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolendline.cpp b/src/app/tools/drawTools/vtoolendline.cpp index b5b9d11ae..eb6ef2a8c 100644 --- a/src/app/tools/drawTools/vtoolendline.cpp +++ b/src/app/tools/drawTools/vtoolendline.cpp @@ -289,24 +289,5 @@ void VToolEndLine::SetFormulaAngle(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- void VToolEndLine::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolEndLine *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } diff --git a/src/app/tools/drawTools/vtoolheight.cpp b/src/app/tools/drawTools/vtoolheight.cpp index 12467fc75..58178eb85 100644 --- a/src/app/tools/drawTools/vtoolheight.cpp +++ b/src/app/tools/drawTools/vtoolheight.cpp @@ -293,26 +293,7 @@ void VToolHeight::SetP2LineId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolHeight::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolHeight *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoollineintersect.cpp b/src/app/tools/drawTools/vtoollineintersect.cpp index b3b2bc39b..ae064c7e8 100644 --- a/src/app/tools/drawTools/vtoollineintersect.cpp +++ b/src/app/tools/drawTools/vtoollineintersect.cpp @@ -311,26 +311,7 @@ void VToolLineIntersect::SetP2Line2(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolLineIntersect::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolLineIntersect *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoollineintersectaxis.cpp b/src/app/tools/drawTools/vtoollineintersectaxis.cpp index 4c333577e..4e0052943 100644 --- a/src/app/tools/drawTools/vtoollineintersectaxis.cpp +++ b/src/app/tools/drawTools/vtoollineintersectaxis.cpp @@ -234,26 +234,7 @@ void VToolLineIntersectAxis::SetSecondPointId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolLineIntersectAxis::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolLineIntersectAxis *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolnormal.cpp b/src/app/tools/drawTools/vtoolnormal.cpp index 68d30e1e2..2646ec444 100644 --- a/src/app/tools/drawTools/vtoolnormal.cpp +++ b/src/app/tools/drawTools/vtoolnormal.cpp @@ -326,24 +326,5 @@ void VToolNormal::SetSecondPointId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolNormal::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolNormal *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } diff --git a/src/app/tools/drawTools/vtoolpoint.h b/src/app/tools/drawTools/vtoolpoint.h index 5ae150ac0..60ccb84c8 100644 --- a/src/app/tools/drawTools/vtoolpoint.h +++ b/src/app/tools/drawTools/vtoolpoint.h @@ -79,6 +79,31 @@ protected: virtual QVariant itemChange ( GraphicsItemChange change, const QVariant &value ); virtual void keyReleaseEvent(QKeyEvent * event); virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ); + + template + void ShowToolVisualization(bool show) + { + if (show) + { + if (vis == nullptr) + { + AddVisualization(); + SetVisualization(); + } + else + { + if (T *visual = qobject_cast(vis)) + { + visual->show(); + } + } + } + else + { + delete vis; + vis = nullptr; + } + } private: Q_DISABLE_COPY(VToolPoint) }; diff --git a/src/app/tools/drawTools/vtoolpointofcontact.cpp b/src/app/tools/drawTools/vtoolpointofcontact.cpp index 4c6e6a1c5..c0606cdb1 100644 --- a/src/app/tools/drawTools/vtoolpointofcontact.cpp +++ b/src/app/tools/drawTools/vtoolpointofcontact.cpp @@ -357,26 +357,7 @@ void VToolPointOfContact::SetSecondPointId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolPointOfContact::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolPointOfContact *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolpointofintersection.cpp b/src/app/tools/drawTools/vtoolpointofintersection.cpp index 1cfb3506e..0ce44d59e 100644 --- a/src/app/tools/drawTools/vtoolpointofintersection.cpp +++ b/src/app/tools/drawTools/vtoolpointofintersection.cpp @@ -262,26 +262,7 @@ void VToolPointOfIntersection::SetSecondPointId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolPointOfIntersection::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolPointOfIntersection *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolshoulderpoint.cpp b/src/app/tools/drawTools/vtoolshoulderpoint.cpp index e37d560f0..12ccaee99 100644 --- a/src/app/tools/drawTools/vtoolshoulderpoint.cpp +++ b/src/app/tools/drawTools/vtoolshoulderpoint.cpp @@ -355,26 +355,7 @@ void VToolShoulderPoint::setPShoulder(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolShoulderPoint::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolShoulderPoint *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolspline.cpp b/src/app/tools/drawTools/vtoolspline.cpp index d36e8e828..15a319149 100644 --- a/src/app/tools/drawTools/vtoolspline.cpp +++ b/src/app/tools/drawTools/vtoolspline.cpp @@ -232,35 +232,7 @@ void VToolSpline::setSpline(const VSpline &spl) //--------------------------------------------------------------------------------------------------------------------- void VToolSpline::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolSpline *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } - - if (detailsMode) - { - ShowHandles(detailsMode); - } - else - { - ShowHandles(show); - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtoolsplinepath.cpp b/src/app/tools/drawTools/vtoolsplinepath.cpp index b45a2a8d9..54c4f061c 100644 --- a/src/app/tools/drawTools/vtoolsplinepath.cpp +++ b/src/app/tools/drawTools/vtoolsplinepath.cpp @@ -313,35 +313,7 @@ void VToolSplinePath::setSplinePath(const VSplinePath &splPath) //--------------------------------------------------------------------------------------------------------------------- void VToolSplinePath::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolSplinePath *visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } - - if (detailsMode) - { - ShowHandles(detailsMode); - } - else - { - ShowHandles(show); - } + ShowToolVisualization(show); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tools/drawTools/vtooltriangle.cpp b/src/app/tools/drawTools/vtooltriangle.cpp index 7b7579e7b..16f6a98a2 100644 --- a/src/app/tools/drawTools/vtooltriangle.cpp +++ b/src/app/tools/drawTools/vtooltriangle.cpp @@ -327,26 +327,7 @@ void VToolTriangle::SetSecondPointId(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- void VToolTriangle::ShowVisualization(bool show) { - if (show) - { - if (vis == nullptr) - { - AddVisualization(); - SetVisualization(); - } - else - { - if (VisToolTriangle * visual = qobject_cast(vis)) - { - visual->show(); - } - } - } - else - { - delete vis; - vis = nullptr; - } + ShowToolVisualization(show); } //---------------------------------------------------------------------------------------------------------------------