From 2864be73424d9a6aedf52685828edd7a30766fac Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Sep 2017 17:32:23 +0300 Subject: [PATCH 01/12] Refactoring to recognize child that called a contex menu. --HG-- branch : feature --- .../flipping/vtoolflippingbyaxis.cpp | 28 ++++++++-------- .../operation/flipping/vtoolflippingbyaxis.h | 3 +- .../flipping/vtoolflippingbyline.cpp | 28 ++++++++-------- .../operation/flipping/vtoolflippingbyline.h | 3 +- .../tools/drawTools/operation/vtoolmove.cpp | 28 ++++++++-------- .../tools/drawTools/operation/vtoolmove.h | 4 +-- .../drawTools/operation/vtoolrotation.cpp | 28 ++++++++-------- .../tools/drawTools/operation/vtoolrotation.h | 4 +-- .../drawTools/toolcurve/vabstractspline.cpp | 6 ++++ .../drawTools/toolcurve/vabstractspline.h | 1 + .../tools/drawTools/toolcurve/vtoolarc.cpp | 8 ++--- .../tools/drawTools/toolcurve/vtoolarc.h | 3 +- .../toolcurve/vtoolarcwithlength.cpp | 4 +-- .../drawTools/toolcurve/vtoolarcwithlength.h | 3 +- .../drawTools/toolcurve/vtoolcubicbezier.cpp | 4 +-- .../drawTools/toolcurve/vtoolcubicbezier.h | 3 +- .../toolcurve/vtoolcubicbezierpath.cpp | 4 +-- .../toolcurve/vtoolcubicbezierpath.h | 3 +- .../toolcurve/vtoolellipticalarc.cpp | 8 ++--- .../drawTools/toolcurve/vtoolellipticalarc.h | 4 +-- .../tools/drawTools/toolcurve/vtoolspline.cpp | 32 ++++++++---------- .../tools/drawTools/toolcurve/vtoolspline.h | 3 +- .../drawTools/toolcurve/vtoolsplinepath.cpp | 32 ++++++++---------- .../drawTools/toolcurve/vtoolsplinepath.h | 3 +- .../tooldoublepoint/vtooldoublepoint.cpp | 2 +- .../tooldoublepoint/vtooltruedarts.cpp | 4 +-- .../tooldoublepoint/vtooltruedarts.h | 3 +- .../toolsinglepoint/toolcut/vtoolcutarc.cpp | 8 ++--- .../toolsinglepoint/toolcut/vtoolcutarc.h | 3 +- .../toolcut/vtoolcutspline.cpp | 8 ++--- .../toolsinglepoint/toolcut/vtoolcutspline.h | 3 +- .../toolcut/vtoolcutsplinepath.cpp | 8 ++--- .../toolcut/vtoolcutsplinepath.h | 3 +- .../toollinepoint/vtoolalongline.cpp | 33 ++++++++----------- .../toollinepoint/vtoolalongline.h | 3 +- .../toollinepoint/vtoolbisector.cpp | 32 ++++++++---------- .../toollinepoint/vtoolbisector.h | 3 +- .../toollinepoint/vtoolcurveintersectaxis.cpp | 4 +-- .../toollinepoint/vtoolcurveintersectaxis.h | 3 +- .../toollinepoint/vtoolendline.cpp | 32 ++++++++---------- .../toollinepoint/vtoolendline.h | 3 +- .../toollinepoint/vtoolheight.cpp | 32 ++++++++---------- .../toollinepoint/vtoolheight.h | 3 +- .../toollinepoint/vtoollineintersectaxis.cpp | 4 +-- .../toollinepoint/vtoollineintersectaxis.h | 3 +- .../toollinepoint/vtoolnormal.cpp | 32 ++++++++---------- .../toollinepoint/vtoolnormal.h | 3 +- .../toollinepoint/vtoolshoulderpoint.cpp | 32 ++++++++---------- .../toollinepoint/vtoolshoulderpoint.h | 3 +- .../toolsinglepoint/vtoolbasepoint.cpp | 10 ++---- .../toolsinglepoint/vtoolbasepoint.h | 3 +- .../toolsinglepoint/vtoollineintersect.cpp | 32 ++++++++---------- .../toolsinglepoint/vtoollineintersect.h | 3 +- .../vtoolpointfromarcandtangent.cpp | 28 ++++++++-------- .../vtoolpointfromarcandtangent.h | 3 +- .../vtoolpointfromcircleandtangent.cpp | 28 ++++++++-------- .../vtoolpointfromcircleandtangent.h | 3 +- .../toolsinglepoint/vtoolpointofcontact.cpp | 32 ++++++++---------- .../toolsinglepoint/vtoolpointofcontact.h | 3 +- .../vtoolpointofintersection.cpp | 32 ++++++++---------- .../vtoolpointofintersection.h | 3 +- .../vtoolpointofintersectionarcs.cpp | 28 ++++++++-------- .../vtoolpointofintersectionarcs.h | 3 +- .../vtoolpointofintersectioncircles.cpp | 28 ++++++++-------- .../vtoolpointofintersectioncircles.h | 3 +- .../vtoolpointofintersectioncurves.cpp | 28 ++++++++-------- .../vtoolpointofintersectioncurves.h | 3 +- .../toolsinglepoint/vtoolsinglepoint.cpp | 2 +- .../toolsinglepoint/vtooltriangle.cpp | 32 ++++++++---------- .../toolpoint/toolsinglepoint/vtooltriangle.h | 3 +- src/libs/vtools/tools/drawTools/vdrawtool.h | 20 ++++++----- src/libs/vtools/tools/drawTools/vtoolline.cpp | 18 ++++++---- src/libs/vtools/tools/drawTools/vtoolline.h | 2 ++ 73 files changed, 419 insertions(+), 445 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp index bc8af184f..76365e933 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp @@ -167,6 +167,20 @@ void VToolFlippingByAxis::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolFlippingByAxis::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolFlippingByAxis::SetVisualization() { @@ -215,20 +229,6 @@ void VToolFlippingByAxis::SaveOptions(QDomElement &tag, QSharedPointer SaveSourceDestination(tag); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolFlippingByAxis::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- VToolFlippingByAxis::VToolFlippingByAxis(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 originPointId, AxisType axisType, const QString &suffix, diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h index 575d6ec6d..85cf1a92d 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h @@ -58,12 +58,13 @@ public: QString OriginPointName() const; virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void SetVisualization() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolFlippingByAxis) diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp index 1fe000a41..6ff449632 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp @@ -153,6 +153,20 @@ void VToolFlippingByLine::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolFlippingByLine::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolFlippingByLine::SetVisualization() { @@ -201,20 +215,6 @@ void VToolFlippingByLine::SaveOptions(QDomElement &tag, QSharedPointer SaveSourceDestination(tag); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolFlippingByLine::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- VToolFlippingByLine::VToolFlippingByLine(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 firstLinePointId, quint32 secondLinePointId, const QString &suffix, diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h index a3099642a..3efd5a593 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h @@ -56,12 +56,13 @@ public: QString SecondLinePointName() const; virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void SetVisualization() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolFlippingByLine) diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp index a789105ea..148c265d8 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp @@ -284,6 +284,20 @@ void VToolMove::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolMove::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolMove::SetVisualization() { @@ -333,20 +347,6 @@ void VToolMove::SaveOptions(QDomElement &tag, QSharedPointer &obj) SaveSourceDestination(tag); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolMove::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- VToolMove::VToolMove(VAbstractPattern *doc, VContainer *data, quint32 id, const QString &formulaAngle, const QString &formulaLength, const QString &suffix, diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.h b/src/libs/vtools/tools/drawTools/operation/vtoolmove.h index 15ca1e1b1..1426936e1 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.h +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.h @@ -70,13 +70,13 @@ public: void SetFormulaLength(const VFormula &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; - +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void SetVisualization() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolMove) diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp index f7f083124..be8d27c6a 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp @@ -285,6 +285,20 @@ void VToolRotation::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolRotation::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolRotation::SetVisualization() { @@ -333,20 +347,6 @@ void VToolRotation::SaveOptions(QDomElement &tag, QSharedPointer &obj) SaveSourceDestination(tag); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolRotation::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- DestinationItem VToolRotation::CreatePoint(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle, const QString &suffix, VContainer *data) diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h index e943c6551..2292eab98 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h @@ -69,13 +69,13 @@ public: void SetFormulaAngle(const VFormula &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; - +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void SetVisualization() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolRotation) diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp index 64704663f..d3f533caf 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp @@ -315,6 +315,12 @@ void VAbstractSpline::RefreshCtrlPoints() // do nothing } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractSpline::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + ShowContextMenu(event); +} + //--------------------------------------------------------------------------------------------------------------------- VSpline VAbstractSpline::CorrectedSpline(const VSpline &spline, const SplinePointPosition &position, const QPointF &pos) const diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h index 2e67893ea..dc9e4bc83 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h @@ -112,6 +112,7 @@ protected: virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void RefreshCtrlPoints(); + virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; VSpline CorrectedSpline(const VSpline &spline, const SplinePointPosition &position, const QPointF &pos) const; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp index 0a27ac1e9..a42cfb74b 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp @@ -310,15 +310,11 @@ void VToolArc::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolArc::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolArc::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h index abcd2c50e..2e0ae4c04 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h @@ -77,8 +77,9 @@ public: void SetFormulaF2(const VFormula &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp index 6bf095412..b3c4e3acf 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp @@ -276,11 +276,11 @@ void VToolArcWithLength::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -void VToolArcWithLength::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolArcWithLength::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h index ba0a1d6c2..fe1f70857 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h @@ -75,8 +75,9 @@ public: void SetFormulaLength(const VFormula &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp index 25a07b436..3fefdd047 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp @@ -189,11 +189,11 @@ void VToolCubicBezier::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -void VToolCubicBezier::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolCubicBezier::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h index 7abeaf983..8f3750f66 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h @@ -67,8 +67,9 @@ public: void setSpline(const VCubicBezier &spl); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp index 638e8a1e4..5d7376d58 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp @@ -173,11 +173,11 @@ void VToolCubicBezierPath::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -void VToolCubicBezierPath::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolCubicBezierPath::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h index 1537b616f..77ced21be 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h @@ -64,8 +64,9 @@ public: void setSplinePath(const VCubicBezierPath &splPath); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp index 6a5fd9c64..b8af92abc 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp @@ -376,15 +376,11 @@ void VToolEllipticalArc::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolEllipticalArc::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolEllipticalArc::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h index d8b040df4..4802c9643 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h @@ -84,9 +84,9 @@ public: void SetFormulaRotationAngle(const VFormula &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; - +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp index 60349dc2c..b855a09a0 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp @@ -286,24 +286,6 @@ void VToolSpline::EnableToolMove(bool move) this->setFlag(QGraphicsItem::ItemIsMovable, move); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolSpline::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief RemoveReferens decrement value of reference. @@ -566,6 +548,20 @@ void VToolSpline::RefreshCtrlPoints() } } +//--------------------------------------------------------------------------------------------------------------------- +void VToolSpline::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolSpline::SetSplineAttributes(QDomElement &domElement, const VSpline &spl) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h index ed7f09faf..cddeaab28 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h @@ -75,8 +75,9 @@ public slots: void ControlPointChangePosition (const qint32 &indexSpline, const SplinePointPosition &position, const QPointF &pos); virtual void EnableToolMove(bool move) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp index 2968e8a44..983c05d60 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp @@ -281,6 +281,20 @@ void VToolSplinePath::EnableToolMove(bool move) this->setFlag(QGraphicsItem::ItemIsMovable, move); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolSplinePath::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief UpdateControlPoints update position points control points in file. @@ -364,24 +378,6 @@ void VToolSplinePath::ShowVisualization(bool show) ShowToolVisualization(show); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolSplinePath::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief AddPathPoint write path point to pattern file. diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h index 0866b249b..c6cba6075 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h @@ -90,8 +90,9 @@ public slots: void ControlPointChangePosition(const qint32 &indexSpline, const SplinePointPosition &position, const QPointF &pos); virtual void EnableToolMove(bool move) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp index 23821aa24..fd28c852d 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp @@ -312,7 +312,7 @@ void VToolDoublePoint::keyReleaseEvent(QKeyEvent *event) //--------------------------------------------------------------------------------------------------------------------- void VToolDoublePoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { - Q_UNUSED(event) + ShowContextMenu(event); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp index 45c93bb91..a8538bd24 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp @@ -334,11 +334,11 @@ void VToolTrueDarts::SetDartP3Id(const quint32 &value) } //--------------------------------------------------------------------------------------------------------------------- -void VToolTrueDarts::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolTrueDarts::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h index 4571093cd..ab993334a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h @@ -91,8 +91,9 @@ public: quint32 GetDartP3Id() const; void SetDartP3Id(const quint32 &value); +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp index 0e6ce4490..1e7095e59 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp @@ -188,15 +188,11 @@ void VToolCutArc::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolCutArc::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolCutArc::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h index 0aba3a311..df46da7de 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h @@ -61,8 +61,9 @@ public: virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::CutArc)}; virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp index 23d971ba9..3f714c0d9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp @@ -188,15 +188,11 @@ void VToolCutSpline::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolCutSpline::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolCutSpline::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h index 51bab816c..d849c2db0 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h @@ -63,8 +63,9 @@ public: virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::CutSpline)}; virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp index fdc9009b5..7cbc98ee5 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp @@ -275,15 +275,11 @@ VPointF *VToolCutSplinePath::CutSplinePath(qreal length, const QSharedPointer(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h index 080352bbd..a5b815ae7 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h @@ -69,8 +69,9 @@ public: const QSharedPointer &splPath, const QString &pName, VSplinePath **splPath1, VSplinePath **splPath2); +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp index 9777303c2..65d01e47c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp @@ -80,25 +80,6 @@ VToolAlongLine::VToolAlongLine(VAbstractPattern *doc, VContainer *data, quint32 ToolCreation(typeCreation); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. handle context menu event. - * @param event context menu event. - */ -//cppcheck-suppress unusedFunction -void VToolAlongLine::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief RemoveReferens decrement value of reference. @@ -214,6 +195,20 @@ void VToolAlongLine::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolAlongLine::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief setDialog set dialog when user want change tool option. diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h index 434192e68..dc873e96a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h @@ -68,8 +68,9 @@ public: quint32 GetSecondPointId() const; void SetSecondPointId(const quint32 &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp index db8242cf6..de414c60b 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp @@ -241,24 +241,6 @@ QString VToolBisector::ThirdPointName() const return VAbstractTool::data.GetGObject(thirdPointId)->name(); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolBisector::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief RemoveReferens decrement value of reference. @@ -355,6 +337,20 @@ void VToolBisector::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolBisector::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- quint32 VToolBisector::GetFirstPointId() const { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h index 3a413775e..185ce7940 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h @@ -77,8 +77,9 @@ public: void SetThirdPointId(const quint32 &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp index 05831cc3a..dac92aed2 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp @@ -262,11 +262,11 @@ void VToolCurveIntersectAxis::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -void VToolCurveIntersectAxis::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolCurveIntersectAxis::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h index baf01e7d8..e5ca57bf9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h @@ -76,8 +76,9 @@ public: void setCurveId(const quint32 &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp index b34845f5a..d5cc465d9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp @@ -189,24 +189,6 @@ VToolEndLine* VToolEndLine::Create(const quint32 _id, const QString &pointName, return nullptr; } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolEndLine::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief SaveDialog save options into file after change in dialog. @@ -288,3 +270,17 @@ void VToolEndLine::ShowVisualization(bool show) { ShowToolVisualization(show); } + +//--------------------------------------------------------------------------------------------------------------------- +void VToolEndLine::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h index 10cf8e750..5c234b382 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h @@ -68,8 +68,9 @@ public: VFormula GetFormulaAngle() const; void SetFormulaAngle(const VFormula &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp index 169940ea7..effa4c4ff 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp @@ -213,24 +213,6 @@ QString VToolHeight::SecondLinePointName() const return VAbstractTool::data.GetGObject(p2LineId)->name(); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolHeight::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief SaveDialog save options into file after change in dialog. @@ -339,6 +321,20 @@ void VToolHeight::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolHeight::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- quint32 VToolHeight::GetP1LineId() const { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h index a3b5de6d7..c22e50215 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h @@ -75,8 +75,9 @@ public: void SetP2LineId(const quint32 &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp index 4cbec8946..ea8351368 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp @@ -264,11 +264,11 @@ void VToolLineIntersectAxis::ShowVisualization(bool show) } //--------------------------------------------------------------------------------------------------------------------- -void VToolLineIntersectAxis::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolLineIntersectAxis::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h index 67821e646..6547c1f42 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h @@ -81,8 +81,9 @@ public: void SetSecondPointId(const quint32 &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp index cefc4d031..bb901a15e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp @@ -217,24 +217,6 @@ QString VToolNormal::SecondPointName() const return VAbstractTool::data.GetGObject(secondPointId)->name(); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolNormal::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief RemoveReferens decrement value of reference. @@ -327,3 +309,17 @@ void VToolNormal::ShowVisualization(bool show) { ShowToolVisualization(show); } + +//--------------------------------------------------------------------------------------------------------------------- +void VToolNormal::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h index 3218bad9f..a02d8e0b8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h @@ -72,8 +72,9 @@ public: void SetSecondPointId(const quint32 &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp index 7a9e3db4d..6c798f71c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp @@ -259,24 +259,6 @@ QString VToolShoulderPoint::ShoulderPointName() const return VAbstractTool::data.GetGObject(pShoulder)->name(); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolShoulderPoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief RemoveReferens decrement value of reference. @@ -374,6 +356,20 @@ QString VToolShoulderPoint::MakeToolTip() const return toolTip; } +//--------------------------------------------------------------------------------------------------------------------- +void VToolShoulderPoint::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- // cppcheck-suppress unusedFunction quint32 VToolShoulderPoint::getPShoulder() const diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h index bb20162ca..18ae1c0c9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h @@ -78,13 +78,14 @@ public: virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SetVisualization() Q_DECL_OVERRIDE; virtual QString MakeToolTip() const Q_DECL_OVERRIDE; +private slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolShoulderPoint) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp index 7070218a6..587e82d01 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp @@ -371,11 +371,7 @@ void VToolBasePoint::ReadToolAttributes(const QDomElement &domElement) } //--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolBasePoint::contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) +void VToolBasePoint::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { qCDebug(vTool, "Context menu base point"); #ifndef QT_NO_CURSOR @@ -388,12 +384,12 @@ void VToolBasePoint::contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) if (doc->CountPP() > 1) { qCDebug(vTool, "PP count > 1"); - ContextMenu(this, event, RemoveOption::Enable, Referens::Ignore); + ContextMenu(event, id, RemoveOption::Enable, Referens::Ignore); } else { qCDebug(vTool, "PP count = 1"); - ContextMenu(this, event, RemoveOption::Disable); + ContextMenu(event, id, RemoveOption::Disable); } } catch(const VExceptionToolWasDeleted &e) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h index c41fd8dce..47f7cc351 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h @@ -75,7 +75,6 @@ signals: */ void LiteUpdateTree(); protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void AddToFile() Q_DECL_OVERRIDE; virtual QVariant itemChange ( GraphicsItemChange change, const QVariant &value ) Q_DECL_OVERRIDE; virtual void DeleteTool(bool ask = true) Q_DECL_OVERRIDE; @@ -87,6 +86,8 @@ protected: virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SetVisualization() Q_DECL_OVERRIDE {} +private slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolBasePoint) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp index ebc62a94b..a16881b57 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp @@ -223,24 +223,6 @@ QString VToolLineIntersect::Line2P2Name() const return VAbstractTool::data.GetGObject(p2Line2)->name(); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolLineIntersect::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief RemoveReferens decrement value of reference. @@ -367,6 +349,20 @@ void VToolLineIntersect::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolLineIntersect::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- quint32 VToolLineIntersect::GetP1Line2() const { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h index 950dc7587..cf7820099 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h @@ -80,8 +80,9 @@ public: void SetP2Line2(const quint32 &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp index 114896457..c580d910a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp @@ -284,6 +284,20 @@ void VToolPointFromArcAndTangent::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolPointFromArcAndTangent::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolPointFromArcAndTangent::RemoveReferens() { @@ -294,20 +308,6 @@ void VToolPointFromArcAndTangent::RemoveReferens() doc->DecrementReferens(tP->getIdTool()); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolPointFromArcAndTangent::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- void VToolPointFromArcAndTangent::SaveDialog(QDomElement &domElement) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h index 75c9bc8bb..9e9b0f8ea 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h @@ -73,9 +73,10 @@ public: void SetCrossCirclesPoint(const CrossCirclesPoint &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void RemoveReferens() Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp index edf47eabf..01979c794 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp @@ -269,6 +269,20 @@ void VToolPointFromCircleAndTangent::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolPointFromCircleAndTangent::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolPointFromCircleAndTangent::RemoveReferens() { @@ -279,20 +293,6 @@ void VToolPointFromCircleAndTangent::RemoveReferens() doc->DecrementReferens(tangentPoint->getIdTool()); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolPointFromCircleAndTangent::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- void VToolPointFromCircleAndTangent::SaveDialog(QDomElement &domElement) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h index 915bfe8d2..892a54094 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h @@ -78,9 +78,10 @@ public: void SetCrossCirclesPoint(const CrossCirclesPoint &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void RemoveReferens() Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp index 6a485ad78..85aff7237 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp @@ -269,24 +269,6 @@ QString VToolPointOfContact::SecondPointName() const return VAbstractTool::data.GetGObject(secondPointId)->name(); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolPointOfContact::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief RemoveReferens decrement value of reference. @@ -403,6 +385,20 @@ void VToolPointOfContact::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolPointOfContact::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- quint32 VToolPointOfContact::GetFirstPointId() const { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h index 5ef7fb410..b08b57bd5 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h @@ -84,8 +84,9 @@ public: void SetSecondPointId(const quint32 &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void RemoveReferens() Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp index 7a920d9bd..4960f5283 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp @@ -195,24 +195,6 @@ void VToolPointOfIntersection::RemoveReferens() doc->DecrementReferens(secondPoint->getIdTool()); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolPointOfIntersection::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief SaveDialog save options into file after change in dialog. @@ -258,6 +240,20 @@ void VToolPointOfIntersection::SetVisualization() } } +//--------------------------------------------------------------------------------------------------------------------- +void VToolPointOfIntersection::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- quint32 VToolPointOfIntersection::GetSecondPointId() const { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h index f316a786f..1e8a61fff 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h @@ -73,11 +73,12 @@ public: virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; protected: virtual void RemoveReferens() Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SetVisualization() Q_DECL_OVERRIDE; +private slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolPointOfIntersection) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp index 4b698ec9f..663ba92d6 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp @@ -291,6 +291,20 @@ void VToolPointOfIntersectionArcs::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolPointOfIntersectionArcs::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolPointOfIntersectionArcs::RemoveReferens() { @@ -301,20 +315,6 @@ void VToolPointOfIntersectionArcs::RemoveReferens() doc->DecrementReferens(secondArc->getIdTool()); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolPointOfIntersectionArcs::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- void VToolPointOfIntersectionArcs::SaveDialog(QDomElement &domElement) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h index 132b981a5..779a145f5 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h @@ -75,9 +75,10 @@ public: void SetCrossCirclesPoint(const CrossCirclesPoint &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void RemoveReferens() Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp index 272d0f2ac..7328976b5 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp @@ -308,6 +308,20 @@ void VToolPointOfIntersectionCircles::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolPointOfIntersectionCircles::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolPointOfIntersectionCircles::RemoveReferens() { @@ -318,20 +332,6 @@ void VToolPointOfIntersectionCircles::RemoveReferens() doc->DecrementReferens(secondCircleCenter->getIdTool()); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolPointOfIntersectionCircles::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- void VToolPointOfIntersectionCircles::SaveDialog(QDomElement &domElement) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h index 7bf004115..f961be30e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h @@ -84,9 +84,10 @@ public: void SetCrossCirclesPoint(const CrossCirclesPoint &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void RemoveReferens() Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp index 3242ce3e2..f552d800a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp @@ -346,6 +346,20 @@ void VToolPointOfIntersectionCurves::ShowVisualization(bool show) ShowToolVisualization(show); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolPointOfIntersectionCurves::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolPointOfIntersectionCurves::RemoveReferens() { @@ -356,20 +370,6 @@ void VToolPointOfIntersectionCurves::RemoveReferens() doc->DecrementReferens(curve2->getIdTool()); } -//--------------------------------------------------------------------------------------------------------------------- -void VToolPointOfIntersectionCurves::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- void VToolPointOfIntersectionCurves::SaveDialog(QDomElement &domElement) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h index 976320aa8..57e69153e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h @@ -80,9 +80,10 @@ public: void SetHCrossPoint(const HCrossCurvesPoint &value); virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void RemoveReferens() Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index 76d34a05e..ea00e9ad4 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -271,7 +271,7 @@ void VToolSinglePoint::keyReleaseEvent(QKeyEvent *event) //--------------------------------------------------------------------------------------------------------------------- void VToolSinglePoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { - Q_UNUSED(event) + ShowContextMenu(event, id); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp index f6d504703..27f64d3d4 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp @@ -273,24 +273,6 @@ void VToolTriangle::RemoveReferens() doc->DecrementReferens(secondPoint->getIdTool()); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolTriangle::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - try - { - ContextMenu(this, event); - } - catch(const VExceptionToolWasDeleted &e) - { - Q_UNUSED(e) - return;//Leave this method immediately!!! - } -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief SaveDialog save options into file after change in dialog. @@ -344,6 +326,20 @@ void VToolTriangle::SetVisualization() } } +//--------------------------------------------------------------------------------------------------------------------- +void VToolTriangle::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) +{ + try + { + ContextMenu(event, id); + } + catch(const VExceptionToolWasDeleted &e) + { + Q_UNUSED(e) + return;//Leave this method immediately!!! + } +} + //--------------------------------------------------------------------------------------------------------------------- quint32 VToolTriangle::GetSecondPointId() const { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h index aacc401ee..4d00789f2 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h @@ -85,11 +85,12 @@ public: virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE; protected: virtual void RemoveReferens() Q_DECL_OVERRIDE; - virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SetVisualization() Q_DECL_OVERRIDE; +private slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolTriangle) /** @brief axisP1Id id first axis point. */ diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.h b/src/libs/vtools/tools/drawTools/vdrawtool.h index 98202cf50..12e4ebf77 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.h +++ b/src/libs/vtools/tools/drawTools/vdrawtool.h @@ -76,6 +76,8 @@ public slots: virtual void EnableToolMove(bool move); virtual void Disable(bool disable, const QString &namePP)=0; virtual void DetailsMode(bool mode); +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID)=0; protected: enum class RemoveOption : bool {Disable = false, Enable = true}; @@ -102,8 +104,8 @@ protected: void ReadAttributes(); virtual void ReadToolAttributes(const QDomElement &domElement)=0; - template - void ContextMenu(Tool *tool, QGraphicsSceneContextMenuEvent *event, + template + void ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemId, const RemoveOption &showRemove = RemoveOption::Enable, const Referens &ref = Referens::Follow); @@ -120,18 +122,18 @@ private: }; //--------------------------------------------------------------------------------------------------------------------- -template +template /** * @brief ContextMenu show context menu for tool. - * @param tool tool. * @param event context menu event. + * @param itemId id of point. 0 if not a point * @param showRemove true - tool enable option delete. * @param ref true - do not ignore referens value. */ -void VDrawTool::ContextMenu(Tool *tool, QGraphicsSceneContextMenuEvent *event, const RemoveOption &showRemove, +void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemId, const RemoveOption &showRemove, const Referens &ref) { - SCASSERT(tool != nullptr) + Q_UNUSED(itemId) SCASSERT(event != nullptr) if (m_suppressContextMenu) @@ -178,10 +180,10 @@ void VDrawTool::ContextMenu(Tool *tool, QGraphicsSceneContextMenuEvent *event, c m_dialog = QSharedPointer(new Dialog(getData(), id, qApp->getMainWindow())); m_dialog->setModal(true); - connect(m_dialog.data(), &DialogTool::DialogClosed, tool, &Tool::FullUpdateFromGuiOk); - connect(m_dialog.data(), &DialogTool::DialogApplied, tool, &Tool::FullUpdateFromGuiApply); + connect(m_dialog.data(), &DialogTool::DialogClosed, this, &VDrawTool::FullUpdateFromGuiOk); + connect(m_dialog.data(), &DialogTool::DialogApplied, this, &VDrawTool::FullUpdateFromGuiApply); - tool->setDialog(); + this->setDialog(); m_dialog->show(); } diff --git a/src/libs/vtools/tools/drawTools/vtoolline.cpp b/src/libs/vtools/tools/drawTools/vtoolline.cpp index 0e8cdb8d9..dc59a6a73 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.cpp +++ b/src/libs/vtools/tools/drawTools/vtoolline.cpp @@ -256,15 +256,11 @@ void VToolLine::AllowSelecting(bool enabled) } //--------------------------------------------------------------------------------------------------------------------- -/** - * @brief contextMenuEvent handle context menu events. - * @param event context menu event. - */ -void VToolLine::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +void VToolLine::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { try { - ContextMenu(this, event); + ContextMenu(event, id); } catch(const VExceptionToolWasDeleted &e) { @@ -273,6 +269,16 @@ void VToolLine::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) } } +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief contextMenuEvent handle context menu events. + * @param event context menu event. + */ +void VToolLine::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + ShowContextMenu(event); +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief AddToFile add tag with informations about tool into file. diff --git a/src/libs/vtools/tools/drawTools/vtoolline.h b/src/libs/vtools/tools/drawTools/vtoolline.h index 337a2ccd6..9bca1b25a 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.h +++ b/src/libs/vtools/tools/drawTools/vtoolline.h @@ -89,6 +89,8 @@ public slots: virtual void Disable(bool disable, const QString &namePP) Q_DECL_OVERRIDE; virtual void AllowHover(bool enabled) Q_DECL_OVERRIDE; virtual void AllowSelecting(bool enabled) Q_DECL_OVERRIDE; +protected slots: + virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void AddToFile() Q_DECL_OVERRIDE; From f6923a92f4083938a521e69d39fe16ec92fe5d7c Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 16 Sep 2017 17:25:14 +0300 Subject: [PATCH 02/12] Show option Show label. --HG-- branch : feature --- src/libs/vgeometry/vpointf.cpp | 12 ++++++++++ src/libs/vgeometry/vpointf.h | 3 +++ src/libs/vgeometry/vpointf_p.h | 13 ++++++----- src/libs/vpatterndb/vcontainer.h | 5 +++++ .../operation/vabstractoperation.cpp | 8 +++---- .../tooldoublepoint/vtooldoublepoint.cpp | 4 ++-- src/libs/vtools/tools/drawTools/vdrawtool.h | 22 +++++++++++++++++-- src/libs/vwidgets/vabstractsimple.cpp | 6 ----- src/libs/vwidgets/vabstractsimple.h | 5 +---- src/libs/vwidgets/vsimplepoint.cpp | 4 ++-- 10 files changed, 57 insertions(+), 25 deletions(-) diff --git a/src/libs/vgeometry/vpointf.cpp b/src/libs/vgeometry/vpointf.cpp index 12de7bc1c..3812244af 100644 --- a/src/libs/vgeometry/vpointf.cpp +++ b/src/libs/vgeometry/vpointf.cpp @@ -214,6 +214,18 @@ void VPointF::setY(const qreal &value) d->_y = value; } +//--------------------------------------------------------------------------------------------------------------------- +bool VPointF::IsShowLabel() const +{ + return d->m_showLabel; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPointF::SetHideLabel(bool hide) +{ + d->m_showLabel = hide; +} + //--------------------------------------------------------------------------------------------------------------------- QPointF VPointF::RotatePF(const QPointF &originPoint, const QPointF &point, qreal degrees) { diff --git a/src/libs/vgeometry/vpointf.h b/src/libs/vgeometry/vpointf.h index b84d8c48e..ce0ebb13c 100644 --- a/src/libs/vgeometry/vpointf.h +++ b/src/libs/vgeometry/vpointf.h @@ -82,6 +82,9 @@ public: qreal y() const; void setY(const qreal &value); + bool IsShowLabel() const; + void SetHideLabel(bool hide); + static QPointF RotatePF(const QPointF &originPoint, const QPointF &point, qreal degrees); static QPointF FlipPF(const QLineF &axis, const QPointF &point); static QPointF MovePF(const QPointF &originPoint, qreal length, qreal angle); diff --git a/src/libs/vgeometry/vpointf_p.h b/src/libs/vgeometry/vpointf_p.h index 5885768a3..cc18db341 100644 --- a/src/libs/vgeometry/vpointf_p.h +++ b/src/libs/vgeometry/vpointf_p.h @@ -43,23 +43,23 @@ class VPointFData : public QSharedData public: VPointFData() - : _mx(0), _my(0), _x(0), _y(0) + : _mx(0), _my(0), _x(0), _y(0), m_showLabel(true) {} VPointFData(const VPointFData &point) - :QSharedData(point), _mx(point._mx), _my(point._my), _x(point._x), _y(point._y) + :QSharedData(point), _mx(point._mx), _my(point._my), _x(point._x), _y(point._y), m_showLabel(point.m_showLabel) {} explicit VPointFData(const QPointF &point) - :_mx(0), _my(0), _x(point.x()), _y(point.y()) + :_mx(0), _my(0), _x(point.x()), _y(point.y()), m_showLabel(true) {} VPointFData(qreal x, qreal y, qreal mx, qreal my) - :_mx(mx), _my(my), _x(x), _y(y) + :_mx(mx), _my(my), _x(x), _y(y), m_showLabel(true) {} VPointFData(const QPointF &point, qreal mx, qreal my) - :_mx(mx), _my(my), _x(point.x()), _y(point.y()) + :_mx(mx), _my(my), _x(point.x()), _y(point.y()), m_showLabel(true) {} virtual ~VPointFData(); @@ -76,6 +76,9 @@ public: /** @brief _y y coordinate */ qreal _y; + /** @brief m_hideLabel show or not label for this point */ + bool m_showLabel; + private: VPointFData &operator=(const VPointFData &) Q_DECL_EQ_DELETE; }; diff --git a/src/libs/vpatterndb/vcontainer.h b/src/libs/vpatterndb/vcontainer.h index 6f5e882a6..5abca636f 100644 --- a/src/libs/vpatterndb/vcontainer.h +++ b/src/libs/vpatterndb/vcontainer.h @@ -239,6 +239,11 @@ Q_DECLARE_TYPEINFO(VContainer, Q_MOVABLE_TYPE); template const QSharedPointer VContainer::GeometricObject(const quint32 &id) const { + if (id == NULL_ID) + { + throw VExceptionBadId(tr("Can't find object"), id); + } + QSharedPointer gObj = QSharedPointer(); if (d->gObjects.contains(id)) { diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp index 91035aea5..12759fe93 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp @@ -474,9 +474,9 @@ void VAbstractOperation::InitCurve(quint32 id, VContainer *data, GOType curveTyp curve->setParentItem(this); curve->SetType(curveType); connect(curve, &VSimpleCurve::Selected, this, &VAbstractOperation::ObjectSelected); - connect(curve, &VSimpleCurve::ShowContextMenu, this, [this](QGraphicsSceneContextMenuEvent * event) + connect(curve, &VSimpleCurve::ShowContextMenu, this, [this](QGraphicsSceneContextMenuEvent * event, quint32 id) { - contextMenuEvent(event); + ShowContextMenu(event, id); }); connect(curve, &VSimpleCurve::Choosed, this, [this, sceneType](quint32 id) { @@ -576,9 +576,9 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") }); connect(point, &VSimplePoint::Selected, this, &VAbstractOperation::ObjectSelected); connect(point, &VSimplePoint::ShowContextMenu, - this, [this](QGraphicsSceneContextMenuEvent * event) + this, [this](QGraphicsSceneContextMenuEvent * event, quint32 id) { - contextMenuEvent(event); + ShowContextMenu(event, id); }); connect(point, &VSimplePoint::Delete, this, &VAbstractOperation::DeleteFromLabel); connect(point, &VSimplePoint::NameChangedPosition, this, &VAbstractOperation::LabelChangePosition); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp index fd28c852d..ac326d90c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp @@ -67,7 +67,7 @@ VToolDoublePoint::VToolDoublePoint(VAbstractPattern *doc, VContainer *data, quin firstPoint->setParentItem(this); connect(firstPoint, &VSimplePoint::Choosed, this, &VToolDoublePoint::Point1Choosed); connect(firstPoint, &VSimplePoint::Selected, this, &VToolDoublePoint::Point1Selected); - connect(firstPoint, &VSimplePoint::ShowContextMenu, this, &VToolDoublePoint::contextMenuEvent); + connect(firstPoint, &VSimplePoint::ShowContextMenu, this, &VToolDoublePoint::ShowContextMenu); connect(firstPoint, &VSimplePoint::Delete, this, &VToolDoublePoint::DeleteFromLabel); connect(firstPoint, &VSimplePoint::NameChangedPosition, this, &VToolDoublePoint::Label1ChangePosition); firstPoint->RefreshPointGeometry(*VAbstractTool::data.GeometricObject(p1id)); @@ -76,7 +76,7 @@ VToolDoublePoint::VToolDoublePoint(VAbstractPattern *doc, VContainer *data, quin secondPoint->setParentItem(this); connect(secondPoint, &VSimplePoint::Choosed, this, &VToolDoublePoint::Point2Choosed); connect(secondPoint, &VSimplePoint::Selected, this, &VToolDoublePoint::Point2Selected); - connect(secondPoint, &VSimplePoint::ShowContextMenu, this, &VToolDoublePoint::contextMenuEvent); + connect(secondPoint, &VSimplePoint::ShowContextMenu, this, &VToolDoublePoint::ShowContextMenu); connect(secondPoint, &VSimplePoint::Delete, this, &VToolDoublePoint::DeleteFromLabel); connect(secondPoint, &VSimplePoint::NameChangedPosition, this, &VToolDoublePoint::Label2ChangePosition); secondPoint->RefreshPointGeometry(*VAbstractTool::data.GeometricObject(p2id)); diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.h b/src/libs/vtools/tools/drawTools/vdrawtool.h index 12e4ebf77..f769864fd 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.h +++ b/src/libs/vtools/tools/drawTools/vdrawtool.h @@ -49,6 +49,7 @@ #include "../vwidgets/vmaingraphicsscene.h" #include "../vwidgets/vmaingraphicsview.h" #include "../vdatatool.h" +#include "../vgeometry/vpointf.h" template class QSharedPointer; @@ -133,7 +134,6 @@ template void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemId, const RemoveOption &showRemove, const Referens &ref) { - Q_UNUSED(itemId) SCASSERT(event != nullptr) if (m_suppressContextMenu) @@ -144,6 +144,20 @@ void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemI qCDebug(vTool, "Creating tool context menu."); QMenu menu; QAction *actionOption = menu.addAction(QIcon::fromTheme("preferences-other"), tr("Options")); + + QAction *actionShowLabel = menu.addAction(tr("Show label")); + actionShowLabel->setCheckable(true); + + try + { + const QSharedPointer point = VAbstractTool::data.GeometricObject(itemId); + actionShowLabel->setChecked(point->IsShowLabel()); + } + catch(const VExceptionBadId &) + { + actionShowLabel->setVisible(false); + } + QAction *actionRemove = menu.addAction(QIcon::fromTheme("edit-delete"), tr("Delete")); if (showRemove == RemoveOption::Enable) { @@ -187,12 +201,16 @@ void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemI m_dialog->show(); } - if (selectedAction == actionRemove) + else if (selectedAction == actionRemove) { qCDebug(vTool, "Deleting tool."); DeleteTool(); // do not catch exception here return; //Leave this method immediately after call!!! } + else if (selectedAction == actionShowLabel) + { + // do something here to show/hide a label + } } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vwidgets/vabstractsimple.cpp b/src/libs/vwidgets/vabstractsimple.cpp index 7ac7409f6..220ed8bd2 100644 --- a/src/libs/vwidgets/vabstractsimple.cpp +++ b/src/libs/vwidgets/vabstractsimple.cpp @@ -43,12 +43,6 @@ void VAbstractSimple::ToolSelectionType(const SelectionType &type) selectionType = type; } -//--------------------------------------------------------------------------------------------------------------------- -void VAbstractSimple::ContextMenu(QGraphicsSceneContextMenuEvent *event) -{ - emit ShowContextMenu(event); -} - //--------------------------------------------------------------------------------------------------------------------- GOType VAbstractSimple::GetType() const { diff --git a/src/libs/vwidgets/vabstractsimple.h b/src/libs/vwidgets/vabstractsimple.h index 23b624777..ecffd9c47 100644 --- a/src/libs/vwidgets/vabstractsimple.h +++ b/src/libs/vwidgets/vabstractsimple.h @@ -56,12 +56,9 @@ public: void SetType(const GOType &value); signals: - void ShowContextMenu(QGraphicsSceneContextMenuEvent * event); + void ShowContextMenu(QGraphicsSceneContextMenuEvent * event, quint32 id = NULL_ID); void Delete(); -public slots: - void ContextMenu(QGraphicsSceneContextMenuEvent * event); - protected: /** @brief id spline id. */ quint32 id; diff --git a/src/libs/vwidgets/vsimplepoint.cpp b/src/libs/vwidgets/vsimplepoint.cpp index 12ab1ab42..3bc87accd 100644 --- a/src/libs/vwidgets/vsimplepoint.cpp +++ b/src/libs/vwidgets/vsimplepoint.cpp @@ -55,7 +55,7 @@ VSimplePoint::VSimplePoint(quint32 id, const QColor ¤tColor, QObject *pare m_alwaysHovered(false) { m_baseColor = currentColor; - connect(m_namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VSimplePoint::ContextMenu); + connect(m_namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VSimplePoint::contextMenuEvent); connect(m_namePoint, &VGraphicsSimpleTextItem::DeleteTool, this, &VSimplePoint::DeleteFromLabel); connect(m_namePoint, &VGraphicsSimpleTextItem::PointChoosed, this, &VSimplePoint::PointChoosed); connect(m_namePoint, &VGraphicsSimpleTextItem::PointSelected, this, &VSimplePoint::PointSelected); @@ -234,5 +234,5 @@ QVariant VSimplePoint::itemChange(QGraphicsItem::GraphicsItemChange change, cons //--------------------------------------------------------------------------------------------------------------------- void VSimplePoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { - emit ShowContextMenu(event); + emit ShowContextMenu(event, id); } From f2d1b4b9160d3c630227bac3cad0b8dc640080f9 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 17 Sep 2017 09:17:37 +0300 Subject: [PATCH 03/12] Forgot to refactor this name. --HG-- branch : feature --- src/libs/vgeometry/vpointf.cpp | 2 +- src/libs/vgeometry/vpointf.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/vgeometry/vpointf.cpp b/src/libs/vgeometry/vpointf.cpp index 3812244af..369d2cb12 100644 --- a/src/libs/vgeometry/vpointf.cpp +++ b/src/libs/vgeometry/vpointf.cpp @@ -221,7 +221,7 @@ bool VPointF::IsShowLabel() const } //--------------------------------------------------------------------------------------------------------------------- -void VPointF::SetHideLabel(bool hide) +void VPointF::SetShowLabel(bool hide) { d->m_showLabel = hide; } diff --git a/src/libs/vgeometry/vpointf.h b/src/libs/vgeometry/vpointf.h index ce0ebb13c..c4468eced 100644 --- a/src/libs/vgeometry/vpointf.h +++ b/src/libs/vgeometry/vpointf.h @@ -83,7 +83,7 @@ public: void setY(const qreal &value); bool IsShowLabel() const; - void SetHideLabel(bool hide); + void SetShowLabel(bool hide); static QPointF RotatePF(const QPointF &originPoint, const QPointF &point, qreal degrees); static QPointF FlipPF(const QLineF &axis, const QPointF &point); From fa74e32769ab2375c15c2301392954f2e8d403c8 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 17 Sep 2017 09:19:13 +0300 Subject: [PATCH 04/12] First working result. Doesn't change file. --HG-- branch : feature --- src/libs/vpatterndb/vcontainer.cpp | 18 +++++++------ src/libs/vpatterndb/vcontainer.h | 3 ++- .../toolsinglepoint/vtoolsinglepoint.cpp | 25 +++++++++++++++++++ .../toolsinglepoint/vtoolsinglepoint.h | 3 +++ src/libs/vtools/tools/drawTools/vdrawtool.cpp | 21 ++++++++++++++++ src/libs/vtools/tools/drawTools/vdrawtool.h | 6 ++++- src/libs/vwidgets/vscenepoint.cpp | 8 ++++-- src/libs/vwidgets/vscenepoint.h | 1 + 8 files changed, 73 insertions(+), 12 deletions(-) diff --git a/src/libs/vpatterndb/vcontainer.cpp b/src/libs/vpatterndb/vcontainer.cpp index 11f116c79..6a8d67aee 100644 --- a/src/libs/vpatterndb/vcontainer.cpp +++ b/src/libs/vpatterndb/vcontainer.cpp @@ -245,21 +245,16 @@ void VContainer::UpdateId(quint32 newId) //--------------------------------------------------------------------------------------------------------------------- /** * @brief UpdateObject update object in container - * @param obj container * @param id id of existing object * @param point object */ template -void VContainer::UpdateObject(QHash &obj, const quint32 &id, val point) +void VContainer::UpdateObject(const quint32 &id, val point) { Q_ASSERT_X(id != NULL_ID, Q_FUNC_INFO, "id == 0"); //-V654 //-V712 SCASSERT(point.isNull() == false) point->setId(id); - if (d->gObjects.contains(id)) - { - d->gObjects[id].clear(); - } - obj[id] = point; + d->gObjects.insert(id, point); UpdateId(id); } @@ -505,7 +500,14 @@ void VContainer::UpdateGObject(quint32 id, VGObject* obj) { SCASSERT(obj != nullptr) QSharedPointer pointer(obj); - UpdateObject(d->gObjects, id, pointer); + UpdateGObject(id, pointer); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VContainer::UpdateGObject(quint32 id, const QSharedPointer &obj) +{ + SCASSERT(not obj.isNull()) + UpdateObject(id, obj); uniqueNames.insert(obj->name()); } diff --git a/src/libs/vpatterndb/vcontainer.h b/src/libs/vpatterndb/vcontainer.h index 5abca636f..54dde76cf 100644 --- a/src/libs/vpatterndb/vcontainer.h +++ b/src/libs/vpatterndb/vcontainer.h @@ -160,6 +160,7 @@ public: void RemovePiece(quint32 id); void UpdateGObject(quint32 id, VGObject* obj); + void UpdateGObject(quint32 id, const QSharedPointer &obj); void UpdatePiece(quint32 id, const VPiece &detail); void UpdatePiecePath(quint32 id, const VPiecePath &path); @@ -220,7 +221,7 @@ private: const val GetObject(const QHash &obj, key id) const; template - void UpdateObject(QHash &obj, const quint32 &id, val point); + void UpdateObject(const quint32 &id, val point); template static quint32 AddObject(QHash &obj, val value); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index ea00e9ad4..9f918fee9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -114,6 +114,31 @@ void VToolSinglePoint::GroupVisibility(quint32 object, bool visible) setVisible(visible); } +//--------------------------------------------------------------------------------------------------------------------- +bool VToolSinglePoint::IsLabelVisible(quint32 id) const +{ + if (this->id == id) + { + const QSharedPointer point = VAbstractTool::data.GeometricObject(id); + return point->IsShowLabel(); + } + else + { + return false; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void VToolSinglePoint::SetLabelVisible(quint32 id, bool visible) +{ + if (this->id == id) + { + const QSharedPointer point = VAbstractTool::data.GeometricObject(id); + point->SetShowLabel(visible); + RefreshPointGeometry(*point); + } +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief NameChangePosition handle change posion point label. diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h index 4696ef3c6..d913d3638 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h @@ -63,6 +63,9 @@ public: void SetEnabled(bool enabled); virtual void GroupVisibility(quint32 object, bool visible) Q_DECL_OVERRIDE; + + virtual bool IsLabelVisible(quint32 id) const Q_DECL_OVERRIDE; + virtual void SetLabelVisible(quint32 id, bool visible) Q_DECL_OVERRIDE; public slots: void NameChangePosition(const QPointF &pos); virtual void Disable(bool disable, const QString &namePP) Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.cpp b/src/libs/vtools/tools/drawTools/vdrawtool.cpp index aa0377242..a801e492f 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.cpp +++ b/src/libs/vtools/tools/drawTools/vdrawtool.cpp @@ -210,6 +210,13 @@ void VDrawTool::DetailsMode(bool mode) // Do nothing. } +//--------------------------------------------------------------------------------------------------------------------- +void VDrawTool::ChangeLabelVisibility(quint32 id, bool visible) +{ + Q_UNUSED(id) + Q_UNUSED(visible) +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief AddToCalculation add tool to calculation tag in pattern file. @@ -236,3 +243,17 @@ void VDrawTool::SetTypeLine(const QString &value) QSharedPointer obj = VAbstractTool::data.GetGObject(id); SaveOption(obj); } + +//--------------------------------------------------------------------------------------------------------------------- +bool VDrawTool::IsLabelVisible(quint32 id) const +{ + Q_UNUSED(id) + return false; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VDrawTool::SetLabelVisible(quint32 id, bool visible) +{ + Q_UNUSED(id) + Q_UNUSED(visible) +} diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.h b/src/libs/vtools/tools/drawTools/vdrawtool.h index f769864fd..fba5dd07c 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.h +++ b/src/libs/vtools/tools/drawTools/vdrawtool.h @@ -67,6 +67,9 @@ public: QString getLineType() const; virtual void SetTypeLine(const QString &value); + virtual bool IsLabelVisible(quint32 id) const; + virtual void SetLabelVisible(quint32 id, bool visible); + signals: void ChangedToolSelection(bool selected, quint32 object, quint32 tool); @@ -79,6 +82,7 @@ public slots: virtual void DetailsMode(bool mode); protected slots: virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID)=0; + virtual void ChangeLabelVisibility(quint32 id, bool visible); protected: enum class RemoveOption : bool {Disable = false, Enable = true}; @@ -209,7 +213,7 @@ void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemI } else if (selectedAction == actionShowLabel) { - // do something here to show/hide a label + SetLabelVisible(itemId, selectedAction->isChecked()); } } diff --git a/src/libs/vwidgets/vscenepoint.cpp b/src/libs/vwidgets/vscenepoint.cpp index 1294845c6..60701fb8c 100644 --- a/src/libs/vwidgets/vscenepoint.cpp +++ b/src/libs/vwidgets/vscenepoint.cpp @@ -44,6 +44,7 @@ VScenePoint::VScenePoint(QGraphicsItem *parent) m_lineName(nullptr), m_onlyPoint(false), m_isHovered(false), + m_showLabel(true), m_baseColor(Qt::black) { m_namePoint = new VGraphicsSimpleTextItem(this); @@ -74,7 +75,7 @@ void VScenePoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio if (not m_onlyPoint) { - m_namePoint->setVisible(true); + m_namePoint->setVisible(m_showLabel); QPen lPen = m_lineName->pen(); lPen.setColor(CorrectColor(m_lineName, Qt::black)); @@ -94,9 +95,12 @@ void VScenePoint::RefreshPointGeometry(const VPointF &point) setPos(static_cast(point)); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + m_showLabel = point.IsShowLabel(); + m_namePoint->blockSignals(true); m_namePoint->setText(point.name()); m_namePoint->setPos(QPointF(point.mx(), point.my())); + m_namePoint->setVisible(m_showLabel); m_namePoint->blockSignals(false); RefreshLine(); @@ -151,7 +155,7 @@ void VScenePoint::RefreshLine() else { m_lineName->setLine(QLineF(p1, pRec - scenePos())); - m_lineName->setVisible(true); + m_lineName->setVisible(m_showLabel); } } else diff --git a/src/libs/vwidgets/vscenepoint.h b/src/libs/vwidgets/vscenepoint.h index 8d997d080..23bb23258 100644 --- a/src/libs/vwidgets/vscenepoint.h +++ b/src/libs/vwidgets/vscenepoint.h @@ -55,6 +55,7 @@ protected: bool m_onlyPoint; bool m_isHovered; + bool m_showLabel; /** @brief m_baseColor base color of point. */ QColor m_baseColor; From dbe1981eb5a8981a3fd9a5211b904a302a9f8d39 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 17 Sep 2017 09:45:18 +0300 Subject: [PATCH 05/12] Refactor to avoid hidding class member. --HG-- branch : feature --- .../flipping/vtoolflippingbyaxis.cpp | 2 +- .../operation/vabstractoperation.cpp | 8 +- .../tools/drawTools/operation/vtoolmove.cpp | 8 +- .../drawTools/operation/vtoolrotation.cpp | 4 +- .../drawTools/toolcurve/vabstractspline.cpp | 22 ++--- .../tools/drawTools/toolcurve/vtoolarc.cpp | 30 +++---- .../toolcurve/vtoolarcwithlength.cpp | 30 +++---- .../drawTools/toolcurve/vtoolcubicbezier.cpp | 20 ++--- .../toolcurve/vtoolcubicbezierpath.cpp | 12 +-- .../toolcurve/vtoolellipticalarc.cpp | 42 +++++----- .../tools/drawTools/toolcurve/vtoolspline.cpp | 22 ++--- .../drawTools/toolcurve/vtoolsplinepath.cpp | 26 +++--- .../tooldoublepoint/vtooldoublepoint.cpp | 10 +-- .../tooldoublepoint/vtooltruedarts.cpp | 10 +-- .../toolsinglepoint/toolcut/vtoolcut.cpp | 8 +- .../toolsinglepoint/toolcut/vtoolcutarc.cpp | 2 +- .../toolcut/vtoolcutspline.cpp | 2 +- .../toolcut/vtoolcutsplinepath.cpp | 2 +- .../toollinepoint/vtoolalongline.cpp | 6 +- .../toollinepoint/vtoolbisector.cpp | 6 +- .../toollinepoint/vtoolcurveintersectaxis.cpp | 8 +- .../toollinepoint/vtoolendline.cpp | 6 +- .../toollinepoint/vtoolheight.cpp | 8 +- .../toollinepoint/vtoollineintersectaxis.cpp | 12 +-- .../toollinepoint/vtoollinepoint.cpp | 16 ++-- .../toollinepoint/vtoolnormal.cpp | 4 +- .../toollinepoint/vtoolshoulderpoint.cpp | 8 +- .../toolsinglepoint/vtoolbasepoint.cpp | 12 +-- .../toolsinglepoint/vtoollineintersect.cpp | 12 +-- .../vtoolpointfromarcandtangent.cpp | 8 +- .../vtoolpointfromcircleandtangent.cpp | 12 +-- .../toolsinglepoint/vtoolpointofcontact.cpp | 10 +-- .../vtoolpointofintersection.cpp | 6 +- .../vtoolpointofintersectionarcs.cpp | 8 +- .../vtoolpointofintersectioncircles.cpp | 16 ++-- .../vtoolpointofintersectioncurves.cpp | 10 +-- .../toolsinglepoint/vtoolsinglepoint.cpp | 18 ++-- .../toolsinglepoint/vtooltriangle.cpp | 10 +-- src/libs/vtools/tools/drawTools/vdrawtool.cpp | 22 ++--- src/libs/vtools/tools/drawTools/vdrawtool.h | 4 +- src/libs/vtools/tools/drawTools/vtoolline.cpp | 2 +- .../tools/nodeDetails/vabstractnode.cpp | 4 +- .../vtools/tools/nodeDetails/vnodearc.cpp | 2 +- .../tools/nodeDetails/vnodeellipticalarc.cpp | 2 +- .../vtools/tools/nodeDetails/vnodepoint.cpp | 16 ++-- .../vtools/tools/nodeDetails/vnodespline.cpp | 2 +- .../tools/nodeDetails/vnodesplinepath.cpp | 2 +- .../tools/nodeDetails/vtoolpiecepath.cpp | 18 ++-- .../vtools/tools/nodeDetails/vtoolpin.cpp | 4 +- src/libs/vtools/tools/vabstracttool.cpp | 6 +- src/libs/vtools/tools/vabstracttool.h | 4 +- src/libs/vtools/tools/vtoolseamallowance.cpp | 82 +++++++++---------- src/libs/vtools/tools/vtooluniondetails.cpp | 8 +- 53 files changed, 317 insertions(+), 317 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp index 76365e933..2def0519e 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp @@ -151,7 +151,7 @@ void VToolFlippingByAxis::SetAxisType(AxisType value) { m_axisType = value; - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp index 12759fe93..e541fa396 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp @@ -51,7 +51,7 @@ void VAbstractOperation::SetSuffix(const QString &suffix) { // Don't know if need check name here. this->suffix = suffix; - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } @@ -371,7 +371,7 @@ void VAbstractOperation::Disable(bool disable, const QString &namePP) //--------------------------------------------------------------------------------------------------------------------- void VAbstractOperation::ObjectSelected(bool selected, quint32 objId) { - emit ChangedToolSelection(selected, objId, id); + emit ChangedToolSelection(selected, objId, m_id); } //--------------------------------------------------------------------------------------------------------------------- @@ -420,7 +420,7 @@ VAbstractOperation::VAbstractOperation(VAbstractPattern *doc, VContainer *data, void VAbstractOperation::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOptions(domElement, obj); AddToCalculation(domElement); } @@ -429,7 +429,7 @@ void VAbstractOperation::AddToFile() void VAbstractOperation::UpdateNamePosition(quint32 id) { const QSharedPointer point = VAbstractTool::data.GeometricObject(id); - auto moveLabel = new OperationMoveLabel(this->id, doc, point->mx(), point->my(), id); + auto moveLabel = new OperationMoveLabel(m_id, doc, point->mx(), point->my(), id); connect(moveLabel, &OperationMoveLabel::ChangePosition, this, &VAbstractOperation::DoChangePosition); qApp->getUndoStack()->push(moveLabel); } diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp index 148c265d8..2e49e96ac 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp @@ -239,7 +239,7 @@ VFormula VToolMove::GetFormulaAngle() const { VFormula fAngle(formulaAngle, getData()); fAngle.setCheckZero(false); - fAngle.setToolId(id); + fAngle.setToolId(m_id); fAngle.setPostfix(degreeSymbol); return fAngle; } @@ -251,7 +251,7 @@ void VToolMove::SetFormulaAngle(const VFormula &value) { formulaAngle = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } } @@ -261,7 +261,7 @@ VFormula VToolMove::GetFormulaLength() const { VFormula fLength(formulaLength, getData()); fLength.setCheckZero(true); - fLength.setToolId(id); + fLength.setToolId(m_id); fLength.setPostfix(UnitsToStr(qApp->patternUnit())); return fLength; } @@ -273,7 +273,7 @@ void VToolMove::SetFormulaLength(const VFormula &value) { formulaLength = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp index be8d27c6a..85c451025 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp @@ -262,7 +262,7 @@ VFormula VToolRotation::GetFormulaAngle() const { VFormula fAngle(formulaAngle, getData()); fAngle.setCheckZero(false); - fAngle.setToolId(id); + fAngle.setToolId(m_id); fAngle.setPostfix(degreeSymbol); return fAngle; } @@ -274,7 +274,7 @@ void VToolRotation::SetFormulaAngle(const VFormula &value) { formulaAngle = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp index d3f533caf..df570a709 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp @@ -69,7 +69,7 @@ VAbstractSpline::VAbstractSpline(VAbstractPattern *doc, VContainer *data, quint3 //--------------------------------------------------------------------------------------------------------------------- QPainterPath VAbstractSpline::shape() const { - const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + const QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); const QVector points = curve->GetPoints(); QPainterPath path; @@ -94,7 +94,7 @@ void VAbstractSpline::paint(QPainter *painter, const QStyleOptionGraphicsItem *o { const qreal width = ScaleWidth(m_isHovered ? widthMainLine : widthHairLine, SceneScale(scene())); - const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + const QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); setPen(QPen(CorrectColor(this, curve->GetColor()), width, LineStyleToPenStyle(curve->GetPenStyle()), Qt::RoundCap)); RefreshCtrlPoints(); @@ -166,7 +166,7 @@ void VAbstractSpline::AllowSelecting(bool enabled) //--------------------------------------------------------------------------------------------------------------------- QString VAbstractSpline::MakeToolTip() const { - const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + const QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); const QString toolTip = QString("" "" @@ -232,7 +232,7 @@ QVariant VAbstractSpline::itemChange(QGraphicsItem::GraphicsItemChange change, c { if (change == QGraphicsItem::ItemSelectedChange) { - emit ChangedToolSelection(value.toBool(), id, id); + emit ChangedToolSelection(value.toBool(), m_id, m_id); } return QGraphicsPathItem::itemChange(change, value); @@ -288,7 +288,7 @@ void VAbstractSpline::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { - emit ChoosedTool(id, sceneType); + emit ChoosedTool(m_id, sceneType); } QGraphicsPathItem::mouseReleaseEvent(event); } @@ -392,7 +392,7 @@ VSpline VAbstractSpline::CorrectedSpline(const VSpline &spline, const SplinePoin //--------------------------------------------------------------------------------------------------------------------- void VAbstractSpline::InitDefShape() { - const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + const QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); this->setPath(curve->GetPath()); } @@ -408,14 +408,14 @@ void VAbstractSpline::ShowHandles(bool show) //--------------------------------------------------------------------------------------------------------------------- QString VAbstractSpline::GetLineColor() const { - const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + const QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); return curve->GetColor(); } //--------------------------------------------------------------------------------------------------------------------- void VAbstractSpline::SetLineColor(const QString &value) { - QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); curve->SetColor(value); QSharedPointer obj = qSharedPointerCast(curve); SaveOption(obj); @@ -424,14 +424,14 @@ void VAbstractSpline::SetLineColor(const QString &value) //--------------------------------------------------------------------------------------------------------------------- QString VAbstractSpline::GetPenStyle() const { - const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + const QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); return curve->GetPenStyle(); } //--------------------------------------------------------------------------------------------------------------------- void VAbstractSpline::SetPenStyle(const QString &value) { - QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); curve->SetPenStyle(value); QSharedPointer obj = qSharedPointerCast(curve); SaveOption(obj); @@ -440,7 +440,7 @@ void VAbstractSpline::SetPenStyle(const QString &value) //--------------------------------------------------------------------------------------------------------------------- QString VAbstractSpline::name() const { - return ObjectName(id); + return ObjectName(m_id); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp index a42cfb74b..cd751f40f 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp @@ -87,7 +87,7 @@ void VToolArc::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetCenter(arc->GetCenter().id()); dialogTool->SetF1(arc->GetFormulaF1()); dialogTool->SetF2(arc->GetFormulaF2()); @@ -198,7 +198,7 @@ QString VToolArc::CenterPointName() const //--------------------------------------------------------------------------------------------------------------------- quint32 VToolArc::getCenter() const { - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(arc.isNull() == false) return arc->GetCenter().id(); @@ -209,7 +209,7 @@ void VToolArc::setCenter(const quint32 &value) { if (value != NULL_ID) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer arc = qSharedPointerDynamicCast(obj); QSharedPointer point = VAbstractTool::data.GeometricObject(value); @@ -221,12 +221,12 @@ void VToolArc::setCenter(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolArc::GetFormulaRadius() const { - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(arc.isNull() == false) VFormula radius(arc->GetFormulaRadius(), getData()); radius.setCheckZero(true); - radius.setToolId(id); + radius.setToolId(m_id); radius.setPostfix(UnitsToStr(qApp->patternUnit())); return radius; } @@ -238,7 +238,7 @@ void VToolArc::SetFormulaRadius(const VFormula &value) { if (value.getDoubleValue() > 0)// Formula don't check this, but radius can't be 0 or negative { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer arc = qSharedPointerDynamicCast(obj); arc->SetFormulaRadius(value.GetFormula(FormulaType::FromUser), value.getDoubleValue()); SaveOption(obj); @@ -249,12 +249,12 @@ void VToolArc::SetFormulaRadius(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolArc::GetFormulaF1() const { - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(arc.isNull() == false) VFormula f1(arc->GetFormulaF1(), getData()); f1.setCheckZero(false); - f1.setToolId(id); + f1.setToolId(m_id); f1.setPostfix(degreeSymbol); return f1; } @@ -264,7 +264,7 @@ void VToolArc::SetFormulaF1(const VFormula &value) { if (value.error() == false) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer arc = qSharedPointerDynamicCast(obj); if (not VFuzzyComparePossibleNulls(value.getDoubleValue(), arc->GetEndAngle()))// Angles can't be equal @@ -278,12 +278,12 @@ void VToolArc::SetFormulaF1(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolArc::GetFormulaF2() const { - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(arc.isNull() == false) VFormula f2(arc->GetFormulaF2(), getData()); f2.setCheckZero(false); - f2.setToolId(id); + f2.setToolId(m_id); f2.setPostfix(degreeSymbol); return f2; } @@ -293,7 +293,7 @@ void VToolArc::SetFormulaF2(const VFormula &value) { if (value.error() == false) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer arc = qSharedPointerDynamicCast(obj); if (not VFuzzyComparePossibleNulls(value.getDoubleValue(), arc->GetStartAngle()))// Angles can't be equal { @@ -329,7 +329,7 @@ void VToolArc::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id */ void VToolArc::RemoveReferens() { - const auto arc = VAbstractTool::data.GeometricObject(id); + const auto arc = VAbstractTool::data.GeometricObject(m_id); doc->DecrementReferens(arc->GetCenter().getIdTool()); } @@ -370,7 +370,7 @@ void VToolArc::SetVisualization() { if (not vis.isNull()) { - const QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); VisToolArc *visual = qobject_cast(vis); SCASSERT(visual != nullptr) @@ -387,7 +387,7 @@ void VToolArc::SetVisualization() //--------------------------------------------------------------------------------------------------------------------- QString VToolArc::MakeToolTip() const { - const QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); const QString toolTip = QString("
%1: %2 %3
" "" diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp index b3c4e3acf..58a6df7f1 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp @@ -76,7 +76,7 @@ void VToolArcWithLength::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetCenter(arc->GetCenter().id()); dialogTool->SetF1(arc->GetFormulaF1()); dialogTool->SetLength(arc->GetFormulaLength()); @@ -167,7 +167,7 @@ QString VToolArcWithLength::CenterPointName() const //--------------------------------------------------------------------------------------------------------------------- quint32 VToolArcWithLength::getCenter() const { - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(arc.isNull() == false) return arc->GetCenter().id(); @@ -178,7 +178,7 @@ void VToolArcWithLength::setCenter(const quint32 &value) { if (value != NULL_ID) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer arc = qSharedPointerDynamicCast(obj); QSharedPointer point = VAbstractTool::data.GeometricObject(value); @@ -190,12 +190,12 @@ void VToolArcWithLength::setCenter(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolArcWithLength::GetFormulaRadius() const { - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(arc.isNull() == false) VFormula radius(arc->GetFormulaRadius(), getData()); radius.setCheckZero(true); - radius.setToolId(id); + radius.setToolId(m_id); radius.setPostfix(UnitsToStr(qApp->patternUnit())); return radius; } @@ -207,7 +207,7 @@ void VToolArcWithLength::SetFormulaRadius(const VFormula &value) { if (value.getDoubleValue() > 0)// Formula don't check this, but radius can't be 0 or negative { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer arc = qSharedPointerDynamicCast(obj); arc->SetFormulaRadius(value.GetFormula(FormulaType::FromUser), value.getDoubleValue()); SaveOption(obj); @@ -218,12 +218,12 @@ void VToolArcWithLength::SetFormulaRadius(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolArcWithLength::GetFormulaF1() const { - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(arc.isNull() == false) VFormula f1(arc->GetFormulaF1(), getData()); f1.setCheckZero(false); - f1.setToolId(id); + f1.setToolId(m_id); f1.setPostfix(degreeSymbol); return f1; } @@ -233,7 +233,7 @@ void VToolArcWithLength::SetFormulaF1(const VFormula &value) { if (value.error() == false) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer arc = qSharedPointerDynamicCast(obj); if (not VFuzzyComparePossibleNulls(value.getDoubleValue(), arc->GetEndAngle()))// Angles can't be equal @@ -247,12 +247,12 @@ void VToolArcWithLength::SetFormulaF1(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolArcWithLength::GetFormulaLength() const { - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(arc.isNull() == false) VFormula radius(arc->GetFormulaLength(), getData()); radius.setCheckZero(true); - radius.setToolId(id); + radius.setToolId(m_id); radius.setPostfix(UnitsToStr(qApp->patternUnit())); return radius; } @@ -262,7 +262,7 @@ void VToolArcWithLength::SetFormulaLength(const VFormula &value) { if (value.error() == false) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer arc = qSharedPointerDynamicCast(obj); arc->SetFormulaLength(value.GetFormula(FormulaType::FromUser), value.getDoubleValue()); SaveOption(obj); @@ -292,7 +292,7 @@ void VToolArcWithLength::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, //--------------------------------------------------------------------------------------------------------------------- void VToolArcWithLength::RemoveReferens() { - const auto arc = VAbstractTool::data.GeometricObject(id); + const auto arc = VAbstractTool::data.GeometricObject(m_id); doc->DecrementReferens(arc->GetCenter().getIdTool()); } @@ -330,7 +330,7 @@ void VToolArcWithLength::SetVisualization() { if (not vis.isNull()) { - const QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); VisToolArcWithLength *visual = qobject_cast(vis); SCASSERT(visual != nullptr) @@ -347,7 +347,7 @@ void VToolArcWithLength::SetVisualization() //--------------------------------------------------------------------------------------------------------------------- QString VToolArcWithLength::MakeToolTip() const { - const QSharedPointer arc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); const QString toolTip = QString("
%1: %2 %3
" "" diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp index 3fefdd047..690653db1 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp @@ -74,7 +74,7 @@ void VToolCubicBezier::setDialog() SCASSERT(not m_dialog.isNull()) auto dialogTool = qobject_cast(m_dialog); SCASSERT(dialogTool != nullptr) - const auto spl = VAbstractTool::data.GeometricObject(id); + const auto spl = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetSpline(*spl); dialogTool->SetColor(spl->GetColor()); dialogTool->SetPenStyle(spl->GetPenStyle()); @@ -141,42 +141,42 @@ VToolCubicBezier *VToolCubicBezier::Create(const quint32 _id, VCubicBezier *spli //--------------------------------------------------------------------------------------------------------------------- QString VToolCubicBezier::FirstPointName() const { - auto spline = VAbstractTool::data.GeometricObject(id); + auto spline = VAbstractTool::data.GeometricObject(m_id); return spline->GetP1().name(); } //--------------------------------------------------------------------------------------------------------------------- QString VToolCubicBezier::SecondPointName() const { - auto spline = VAbstractTool::data.GeometricObject(id); + auto spline = VAbstractTool::data.GeometricObject(m_id); return spline->GetP2().name(); } //--------------------------------------------------------------------------------------------------------------------- QString VToolCubicBezier::ThirdPointName() const { - auto spline = VAbstractTool::data.GeometricObject(id); + auto spline = VAbstractTool::data.GeometricObject(m_id); return spline->GetP3().name(); } //--------------------------------------------------------------------------------------------------------------------- QString VToolCubicBezier::ForthPointName() const { - auto spline = VAbstractTool::data.GeometricObject(id); + auto spline = VAbstractTool::data.GeometricObject(m_id); return spline->GetP4().name(); } //--------------------------------------------------------------------------------------------------------------------- VCubicBezier VToolCubicBezier::getSpline() const { - auto spline = VAbstractTool::data.GeometricObject(id); + auto spline = VAbstractTool::data.GeometricObject(m_id); return *spline.data(); } //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezier::setSpline(const VCubicBezier &spl) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer spline = qSharedPointerDynamicCast(obj); *spline.data() = spl; SaveOption(obj); @@ -205,7 +205,7 @@ void VToolCubicBezier::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, qu //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezier::RemoveReferens() { - const auto spl = VAbstractTool::data.GeometricObject(id); + const auto spl = VAbstractTool::data.GeometricObject(m_id); doc->DecrementReferens(spl->GetP1().getIdTool()); doc->DecrementReferens(spl->GetP2().getIdTool()); doc->DecrementReferens(spl->GetP3().getIdTool()); @@ -244,7 +244,7 @@ void VToolCubicBezier::SetVisualization() auto visual = qobject_cast(vis); SCASSERT(visual != nullptr) - const QSharedPointer spl = VAbstractTool::data.GeometricObject(id); + const QSharedPointer spl = VAbstractTool::data.GeometricObject(m_id); visual->setObject1Id(spl->GetP1().id()); visual->setObject2Id(spl->GetP2().id()); visual->setObject3Id(spl->GetP3().id()); @@ -258,7 +258,7 @@ void VToolCubicBezier::SetVisualization() //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezier::RefreshGeometry() { - const QSharedPointer spl = VAbstractTool::data.GeometricObject(id); + const QSharedPointer spl = VAbstractTool::data.GeometricObject(m_id); this->setPath(spl->GetPath()); SetVisualization(); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp index 5d7376d58..56eb7bcbf 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp @@ -76,7 +76,7 @@ void VToolCubicBezierPath::setDialog() SCASSERT(not m_dialog.isNull()) auto dialogTool = qobject_cast(m_dialog); SCASSERT(dialogTool != nullptr) - const QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + const QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetPath(*splPath); dialogTool->SetColor(splPath->GetColor()); dialogTool->SetPenStyle(splPath->GetPenStyle()); @@ -153,14 +153,14 @@ void VToolCubicBezierPath::UpdatePathPoints(VAbstractPattern *doc, QDomElement & //--------------------------------------------------------------------------------------------------------------------- VCubicBezierPath VToolCubicBezierPath::getSplinePath() const { - QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); return *splPath.data(); } //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezierPath::setSplinePath(const VCubicBezierPath &splPath) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer splinePath = qSharedPointerDynamicCast(obj); *splinePath.data() = splPath; SaveOption(obj); @@ -189,7 +189,7 @@ void VToolCubicBezierPath::ShowContextMenu(QGraphicsSceneContextMenuEvent *event //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezierPath::RemoveReferens() { - const QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + const QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); for (qint32 i = 0; i < splPath->CountSubSpl(); ++i) { doc->DecrementReferens(splPath->at(i).getIdTool()); @@ -227,7 +227,7 @@ void VToolCubicBezierPath::SetVisualization() auto visual = qobject_cast(vis); SCASSERT(visual != nullptr) - QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); visual->setPath(*splPath.data()); visual->setLineStyle(LineStyleToPenStyle(splPath->GetPenStyle())); visual->SetMode(Mode::Show); @@ -238,7 +238,7 @@ void VToolCubicBezierPath::SetVisualization() //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezierPath::RefreshGeometry() { - QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); setPath(splPath->GetPath()); SetVisualization(); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp index b8af92abc..e1d8267cc 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp @@ -87,7 +87,7 @@ void VToolEllipticalArc::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetCenter(elArc->GetCenter().id()); dialogTool->SetF1(elArc->GetFormulaF1()); dialogTool->SetF2(elArc->GetFormulaF2()); @@ -211,7 +211,7 @@ QString VToolEllipticalArc::CenterPointName() const //--------------------------------------------------------------------------------------------------------------------- quint32 VToolEllipticalArc::getCenter() const { - QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(elArc.isNull() == false) return elArc->GetCenter().id(); @@ -222,7 +222,7 @@ void VToolEllipticalArc::setCenter(const quint32 &value) { if (value != NULL_ID) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer elArc = qSharedPointerDynamicCast(obj); QSharedPointer point = VAbstractTool::data.GeometricObject(value); @@ -234,12 +234,12 @@ void VToolEllipticalArc::setCenter(const quint32 &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolEllipticalArc::GetFormulaRadius1() const { - QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(elArc.isNull() == false) VFormula radius1(elArc->GetFormulaRadius1(), getData()); radius1.setCheckZero(true); - radius1.setToolId(id); + radius1.setToolId(m_id); radius1.setPostfix(UnitsToStr(qApp->patternUnit())); return radius1; } @@ -251,7 +251,7 @@ void VToolEllipticalArc::SetFormulaRadius1(const VFormula &value) { if (value.getDoubleValue() > 0)// Formula don't check this, but radius1 can't be 0 or negative { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer elArc = qSharedPointerDynamicCast(obj); elArc->SetFormulaRadius1(value.GetFormula(FormulaType::FromUser), value.getDoubleValue()); SaveOption(obj); @@ -262,12 +262,12 @@ void VToolEllipticalArc::SetFormulaRadius1(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolEllipticalArc::GetFormulaRadius2() const { - QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(elArc.isNull() == false) VFormula radius2(elArc->GetFormulaRadius2(), getData()); radius2.setCheckZero(true); - radius2.setToolId(id); + radius2.setToolId(m_id); radius2.setPostfix(UnitsToStr(qApp->patternUnit())); return radius2; } @@ -279,7 +279,7 @@ void VToolEllipticalArc::SetFormulaRadius2(const VFormula &value) { if (value.getDoubleValue() > 0)// Formula don't check this, but radius2 can't be 0 or negative { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer elArc = qSharedPointerDynamicCast(obj); elArc->SetFormulaRadius2(value.GetFormula(FormulaType::FromUser), value.getDoubleValue()); SaveOption(obj); @@ -290,12 +290,12 @@ void VToolEllipticalArc::SetFormulaRadius2(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolEllipticalArc::GetFormulaF1() const { - QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(elArc.isNull() == false) VFormula f1(elArc->GetFormulaF1(), getData()); f1.setCheckZero(false); - f1.setToolId(id); + f1.setToolId(m_id); f1.setPostfix(degreeSymbol); return f1; } @@ -305,7 +305,7 @@ void VToolEllipticalArc::SetFormulaF1(const VFormula &value) { if (value.error() == false) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer elArc = qSharedPointerDynamicCast(obj); if (not VFuzzyComparePossibleNulls(value.getDoubleValue(), elArc->GetEndAngle()))// Angles can't be equal @@ -319,12 +319,12 @@ void VToolEllipticalArc::SetFormulaF1(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolEllipticalArc::GetFormulaF2() const { - QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(elArc.isNull() == false) VFormula f2(elArc->GetFormulaF2(), getData()); f2.setCheckZero(false); - f2.setToolId(id); + f2.setToolId(m_id); f2.setPostfix(degreeSymbol); return f2; } @@ -334,7 +334,7 @@ void VToolEllipticalArc::SetFormulaF2(const VFormula &value) { if (value.error() == false) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer elArc = qSharedPointerDynamicCast(obj); if (not VFuzzyComparePossibleNulls(value.getDoubleValue(), elArc->GetStartAngle()))// Angles can't be equal { @@ -347,12 +347,12 @@ void VToolEllipticalArc::SetFormulaF2(const VFormula &value) //--------------------------------------------------------------------------------------------------------------------- VFormula VToolEllipticalArc::GetFormulaRotationAngle() const { - QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); SCASSERT(elArc.isNull() == false) VFormula rotationAngle(elArc->GetFormulaRotationAngle(), getData()); rotationAngle.setCheckZero(false); - rotationAngle.setToolId(id); + rotationAngle.setToolId(m_id); rotationAngle.setPostfix(degreeSymbol); return rotationAngle; } @@ -362,7 +362,7 @@ void VToolEllipticalArc::SetFormulaRotationAngle(const VFormula &value) { if (value.error() == false) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer elArc = qSharedPointerDynamicCast(obj); elArc->SetFormulaRotationAngle(value.GetFormula(FormulaType::FromUser), value.getDoubleValue()); SaveOption(obj); @@ -395,7 +395,7 @@ void VToolEllipticalArc::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, */ void VToolEllipticalArc::RemoveReferens() { - const auto elArc = VAbstractTool::data.GeometricObject(id); + const auto elArc = VAbstractTool::data.GeometricObject(m_id); doc->DecrementReferens(elArc->GetCenter().getIdTool()); } @@ -440,7 +440,7 @@ void VToolEllipticalArc::SetVisualization() { if (not vis.isNull()) { - const QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); VisToolEllipticalArc *visual = qobject_cast(vis); SCASSERT(visual != nullptr) @@ -460,7 +460,7 @@ void VToolEllipticalArc::SetVisualization() //--------------------------------------------------------------------------------------------------------------------- QString VToolEllipticalArc::MakeToolTip() const { - const QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); + const QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); const QString toolTip = QString("
%1: %2 %3
" "" diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp index b855a09a0..b8903244c 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp @@ -131,7 +131,7 @@ void VToolSpline::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const auto spl = VAbstractTool::data.GeometricObject(id); + const auto spl = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetSpline(*spl); dialogTool->SetColor(spl->GetColor()); dialogTool->SetPenStyle(spl->GetPenStyle()); @@ -242,14 +242,14 @@ VToolSpline *VToolSpline::Create(const quint32 _id, quint32 point1, quint32 poin //--------------------------------------------------------------------------------------------------------------------- VSpline VToolSpline::getSpline() const { - auto spline = VAbstractTool::data.GeometricObject(id); + auto spline = VAbstractTool::data.GeometricObject(m_id); return *spline.data(); } //--------------------------------------------------------------------------------------------------------------------- void VToolSpline::setSpline(const VSpline &spl) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer spline = qSharedPointerDynamicCast(obj); *spline.data() = spl; SaveOption(obj); @@ -272,10 +272,10 @@ void VToolSpline::ControlPointChangePosition(const qint32 &indexSpline, const Sp const QPointF &pos) { Q_UNUSED(indexSpline) - const QSharedPointer spline = VAbstractTool::data.GeometricObject(id); + const QSharedPointer spline = VAbstractTool::data.GeometricObject(m_id); const VSpline spl = CorrectedSpline(*spline, position, pos); - MoveSpline *moveSpl = new MoveSpline(doc, spline.data(), spl, id); + MoveSpline *moveSpl = new MoveSpline(doc, spline.data(), spl, m_id); connect(moveSpl, &MoveSpline::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveSpl); } @@ -292,7 +292,7 @@ void VToolSpline::EnableToolMove(bool move) */ void VToolSpline::RemoveReferens() { - const auto spl = VAbstractTool::data.GeometricObject(id); + const auto spl = VAbstractTool::data.GeometricObject(m_id); doc->DecrementReferens(spl->GetP1().getIdTool()); doc->DecrementReferens(spl->GetP4().getIdTool()); } @@ -380,7 +380,7 @@ void VToolSpline::mouseMoveEvent(QGraphicsSceneMouseEvent *event) // "weight" describes how the influence of the drag should be distributed // among the handles; 0 = front handle only, 1 = back handle only. - const auto spline = VAbstractTool::data.GeometricObject(id); + const auto spline = VAbstractTool::data.GeometricObject(m_id); const qreal t = spline->ParamT(oldPosition); if (qFloor(t) == -1) @@ -417,7 +417,7 @@ void VToolSpline::mouseMoveEvent(QGraphicsSceneMouseEvent *event) VSpline spl = VSpline(spline->GetP1(), p2, p3, spline->GetP4()); - MoveSpline *moveSpl = new MoveSpline(doc, spline.data(), spl, id); + MoveSpline *moveSpl = new MoveSpline(doc, spline.data(), spl, m_id); connect(moveSpl, &MoveSpline::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveSpl); @@ -480,7 +480,7 @@ void VToolSpline::SetVisualization() VisToolSpline *visual = qobject_cast(vis); SCASSERT(visual != nullptr) - const QSharedPointer spl = VAbstractTool::data.GeometricObject(id); + const QSharedPointer spl = VAbstractTool::data.GeometricObject(m_id); visual->setObject1Id(spl->GetP1().id()); visual->setObject4Id(spl->GetP4().id()); visual->SetAngle1(spl->GetStartAngle()); @@ -497,7 +497,7 @@ void VToolSpline::SetVisualization() //--------------------------------------------------------------------------------------------------------------------- bool VToolSpline::IsMovable() const { - const auto spline = VAbstractTool::data.GeometricObject(id); + const auto spline = VAbstractTool::data.GeometricObject(m_id); return qmu::QmuTokenParser::IsSingle(spline->GetStartAngleFormula()) && qmu::QmuTokenParser::IsSingle(spline->GetEndAngleFormula()) && @@ -514,7 +514,7 @@ void VToolSpline::RefreshCtrlPoints() point->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false); } - const auto spl = VAbstractTool::data.GeometricObject(id); + const auto spl = VAbstractTool::data.GeometricObject(m_id); controlPoints[0]->blockSignals(true); controlPoints[1]->blockSignals(true); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp index 983c05d60..619e130f5 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp @@ -140,7 +140,7 @@ void VToolSplinePath::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + const QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetPath(*splPath); dialogTool->SetColor(splPath->GetColor()); dialogTool->SetPenStyle(splPath->GetPenStyle()); @@ -265,12 +265,12 @@ VToolSplinePath *VToolSplinePath::Create(const quint32 _id, const QVector(id); + const VSplinePath oldSplPath = *VAbstractTool::data.GeometricObject(m_id); VSplinePath newSplPath = oldSplPath; const VSpline spl = CorrectedSpline(newSplPath.GetSpline(indexSpline), position, pos); UpdateControlPoints(spl, newSplPath, indexSpline); - MoveSplinePath *moveSplPath = new MoveSplinePath(doc, oldSplPath, newSplPath, id); + MoveSplinePath *moveSplPath = new MoveSplinePath(doc, oldSplPath, newSplPath, m_id); connect(moveSplPath, &VUndoCommand::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveSplPath); } @@ -359,14 +359,14 @@ void VToolSplinePath::UpdatePathPoints(VAbstractPattern *doc, QDomElement &eleme //--------------------------------------------------------------------------------------------------------------------- VSplinePath VToolSplinePath::getSplinePath() const { - QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); return *splPath.data(); } //--------------------------------------------------------------------------------------------------------------------- void VToolSplinePath::setSplinePath(const VSplinePath &splPath) { - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); QSharedPointer splinePath = qSharedPointerDynamicCast(obj); *splinePath.data() = splPath; SaveOption(obj); @@ -419,7 +419,7 @@ void VToolSplinePath::AddPathPoint(VAbstractPattern *doc, QDomElement &domElemen */ void VToolSplinePath::RemoveReferens() { - const QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + const QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); for (qint32 i = 0; i < splPath->CountSubSpl(); ++i) { doc->DecrementReferens(splPath->at(i).P().getIdTool()); @@ -476,7 +476,7 @@ void VToolSplinePath::mousePressEvent(QGraphicsSceneMouseEvent *event) if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) { oldPosition = event->scenePos(); - const auto splPath = VAbstractTool::data.GeometricObject(id); + const auto splPath = VAbstractTool::data.GeometricObject(m_id); splIndex = splPath->Segment(oldPosition); if (IsMovable(splIndex)) { @@ -511,7 +511,7 @@ void VToolSplinePath::mouseMoveEvent(QGraphicsSceneMouseEvent *event) if (IsMovable(splIndex)) { - VSplinePath oldSplPath = *VAbstractTool::data.GeometricObject(id); + VSplinePath oldSplPath = *VAbstractTool::data.GeometricObject(m_id); VSplinePath newSplPath = oldSplPath; VSpline spline = newSplPath.GetSpline(splIndex); @@ -557,7 +557,7 @@ void VToolSplinePath::mouseMoveEvent(QGraphicsSceneMouseEvent *event) UpdateControlPoints(spl, newSplPath, splIndex); - MoveSplinePath *moveSplPath = new MoveSplinePath(doc, oldSplPath, newSplPath, id); + MoveSplinePath *moveSplPath = new MoveSplinePath(doc, oldSplPath, newSplPath, m_id); connect(moveSplPath, &VUndoCommand::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveSplPath); @@ -590,7 +590,7 @@ void VToolSplinePath::hoverEnterEvent(QGraphicsSceneHoverEvent *event) if (flags() & QGraphicsItem::ItemIsMovable) { oldPosition = event->scenePos(); - const auto splPath = VAbstractTool::data.GeometricObject(id); + const auto splPath = VAbstractTool::data.GeometricObject(m_id); splIndex = splPath->Segment(oldPosition); if (IsMovable(splIndex)) { @@ -621,7 +621,7 @@ void VToolSplinePath::SetVisualization() VisToolSplinePath *visual = qobject_cast(vis); SCASSERT(visual != nullptr) - QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + QSharedPointer splPath = VAbstractTool::data.GeometricObject(m_id); visual->setPath(*splPath.data()); visual->setLineStyle(LineStyleToPenStyle(splPath->GetPenStyle())); visual->SetMode(Mode::Show); @@ -632,7 +632,7 @@ void VToolSplinePath::SetVisualization() //--------------------------------------------------------------------------------------------------------------------- bool VToolSplinePath::IsMovable(int index) const { - const auto splPath = VAbstractTool::data.GeometricObject(id); + const auto splPath = VAbstractTool::data.GeometricObject(m_id); //index == -1 - can delete, but decided to left if (index == -1 || index < 1 || index > splPath->CountSubSpl()) @@ -655,7 +655,7 @@ void VToolSplinePath::RefreshCtrlPoints() point->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false); } - const auto splPath = VAbstractTool::data.GeometricObject(id); + const auto splPath = VAbstractTool::data.GeometricObject(m_id); for (qint32 i = 1; i<=splPath->CountSubSpl(); ++i) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp index ac326d90c..78e25637a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp @@ -162,13 +162,13 @@ void VToolDoublePoint::Point2Choosed() //--------------------------------------------------------------------------------------------------------------------- void VToolDoublePoint::Point1Selected(bool selected) { - emit ChangedToolSelection(selected, p1id, id); + emit ChangedToolSelection(selected, p1id, m_id); } //--------------------------------------------------------------------------------------------------------------------- void VToolDoublePoint::Point2Selected(bool selected) { - emit ChangedToolSelection(selected, p2id, id); + emit ChangedToolSelection(selected, p2id, m_id); } //--------------------------------------------------------------------------------------------------------------------- @@ -244,7 +244,7 @@ void VToolDoublePoint::UpdateNamePosition(quint32 id) { const VPointF *p1 = VAbstractTool::data.GeometricObject(p1id).data(); - auto moveLabel = new MoveDoubleLabel(doc, p1->mx(), p1->my(), DoublePoint::FirstPoint, this->id, p1id); + auto moveLabel = new MoveDoubleLabel(doc, p1->mx(), p1->my(), DoublePoint::FirstPoint, m_id, p1id); connect(moveLabel, &MoveDoubleLabel::ChangePosition, this, &VToolDoublePoint::DoChangePosition); qApp->getUndoStack()->push(moveLabel); } @@ -252,7 +252,7 @@ void VToolDoublePoint::UpdateNamePosition(quint32 id) { const VPointF *p2 = VAbstractTool::data.GeometricObject(p2id).data(); - auto moveLabel = new MoveDoubleLabel(doc, p2->mx(), p2->my(), DoublePoint::SecondPoint, this->id, p2id); + auto moveLabel = new MoveDoubleLabel(doc, p2->mx(), p2->my(), DoublePoint::SecondPoint, m_id, p2id); connect(moveLabel, &MoveDoubleLabel::ChangePosition, this, &VToolDoublePoint::DoChangePosition); qApp->getUndoStack()->push(moveLabel); } @@ -359,7 +359,7 @@ void VToolDoublePoint::SaveOptions(QDomElement &tag, QSharedPointer &o void VToolDoublePoint::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOptions(domElement, obj); AddToCalculation(domElement); } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp index a8538bd24..438513ca4 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp @@ -256,7 +256,7 @@ void VToolTrueDarts::SetBaseLineP1Id(const quint32 &value) { baseLineP1Id = value; - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } } @@ -274,7 +274,7 @@ void VToolTrueDarts::SetBaseLineP2Id(const quint32 &value) { baseLineP2Id = value; - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } } @@ -292,7 +292,7 @@ void VToolTrueDarts::SetDartP1Id(const quint32 &value) { dartP1Id = value; - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } } @@ -310,7 +310,7 @@ void VToolTrueDarts::SetDartP2Id(const quint32 &value) { dartP2Id = value; - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } } @@ -328,7 +328,7 @@ void VToolTrueDarts::SetDartP3Id(const quint32 &value) { dartP3Id = value; - QSharedPointer obj = VContainer::GetFakeGObject(id); + QSharedPointer obj = VContainer::GetFakeGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.cpp index beba6ad56..b0f06284a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.cpp @@ -105,7 +105,7 @@ void VToolCut::setCurveCutId(const quint32 &value) if (value != NULL_ID) { curveCutId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -115,7 +115,7 @@ VFormula VToolCut::GetFormula() const { VFormula val(formula, getData()); val.setCheckZero(true); - val.setToolId(id); + val.setToolId(m_id); val.setPostfix(UnitsToStr(qApp->patternUnit())); return val; } @@ -127,7 +127,7 @@ void VToolCut::SetFormula(const VFormula &value) { formula = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -144,7 +144,7 @@ QString VToolCut::CurveName() const */ void VToolCut::RefreshGeometry() { - VToolSinglePoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject(id)); + VToolSinglePoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject(m_id)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp index 1e7095e59..d350d6301 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp @@ -83,7 +83,7 @@ void VToolCutArc::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer point = VAbstractTool::data.GeometricObject(id); + const QSharedPointer point = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetFormula(formula); dialogTool->setArcId(curveCutId); dialogTool->SetPointName(point->name()); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp index 3f714c0d9..812f18ac5 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp @@ -86,7 +86,7 @@ void VToolCutSpline::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer point = VAbstractTool::data.GeometricObject(id); + const QSharedPointer point = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetFormula(formula); dialogTool->setSplineId(curveCutId); dialogTool->SetPointName(point->name()); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp index 7cbc98ee5..16941aec7 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp @@ -90,7 +90,7 @@ void VToolCutSplinePath::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer point = VAbstractTool::data.GeometricObject(id); + const QSharedPointer point = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetFormula(formula); dialogTool->setSplinePathId(curveCutId); dialogTool->SetPointName(point->name()); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp index 65d01e47c..c35c0a54e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp @@ -149,7 +149,7 @@ QString VToolAlongLine::MakeToolTip() const { const QSharedPointer basePoint = VAbstractTool::data.GeometricObject(basePointId); const QSharedPointer secondPoint = VAbstractTool::data.GeometricObject(secondPointId); - const QSharedPointer current = VAbstractTool::data.GeometricObject(id); + const QSharedPointer current = VAbstractTool::data.GeometricObject(m_id); const QLineF curLine(static_cast(*basePoint), static_cast(*current)); const QLineF curToSecond(static_cast(*current), static_cast(*secondPoint)); @@ -184,7 +184,7 @@ void VToolAlongLine::SetSecondPointId(const quint32 &value) { secondPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -218,7 +218,7 @@ void VToolAlongLine::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetFormula(formulaLength); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp index de414c60b..691cfb6ba 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp @@ -124,7 +124,7 @@ void VToolBisector::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetFormula(formulaLength); @@ -326,7 +326,7 @@ void VToolBisector::SetThirdPointId(const quint32 &value) { thirdPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -364,7 +364,7 @@ void VToolBisector::SetFirstPointId(const quint32 &value) { firstPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp index dac92aed2..28cd9eceb 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp @@ -88,7 +88,7 @@ void VToolCurveIntersectAxis::setDialog() m_dialog->setModal(true); QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetAngle(formulaAngle); @@ -214,7 +214,7 @@ VFormula VToolCurveIntersectAxis::GetFormulaAngle() const { VFormula fAngle(formulaAngle, getData()); fAngle.setCheckZero(false); - fAngle.setToolId(id); + fAngle.setToolId(m_id); fAngle.setPostfix(degreeSymbol); return fAngle; } @@ -226,7 +226,7 @@ void VToolCurveIntersectAxis::SetFormulaAngle(const VFormula &value) { formulaAngle = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -250,7 +250,7 @@ void VToolCurveIntersectAxis::setCurveId(const quint32 &value) { curveId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp index d5cc465d9..5f04f5132 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp @@ -88,7 +88,7 @@ void VToolEndLine::setDialog() m_dialog->setModal(true); QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetFormula(formulaLength); @@ -248,7 +248,7 @@ VFormula VToolEndLine::GetFormulaAngle() const { VFormula fAngle(formulaAngle, getData()); fAngle.setCheckZero(false); - fAngle.setToolId(id); + fAngle.setToolId(m_id); fAngle.setPostfix(degreeSymbol); return fAngle; } @@ -260,7 +260,7 @@ void VToolEndLine::SetFormulaAngle(const VFormula &value) { formulaAngle = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp index effa4c4ff..1c691abbc 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp @@ -83,7 +83,7 @@ void VToolHeight::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetBasePointId(basePointId); @@ -273,7 +273,7 @@ QString VToolHeight::MakeToolTip() const const QSharedPointer basePoint = VAbstractTool::data.GeometricObject(basePointId); const QSharedPointer p1Line = VAbstractTool::data.GeometricObject(p1LineId); const QSharedPointer p2Line = VAbstractTool::data.GeometricObject(p2LineId); - const QSharedPointer current = VAbstractTool::data.GeometricObject(id); + const QSharedPointer current = VAbstractTool::data.GeometricObject(m_id); const QLineF curLine(static_cast(*basePoint), static_cast(*current)); const QLineF p1ToCur(static_cast(*p1Line), static_cast(*current)); @@ -310,7 +310,7 @@ void VToolHeight::SetP2LineId(const quint32 &value) { p2LineId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -348,7 +348,7 @@ void VToolHeight::SetP1LineId(const quint32 &value) { p1LineId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp index ea8351368..d6e9771c5 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp @@ -74,7 +74,7 @@ void VToolLineIntersectAxis::setDialog() m_dialog->setModal(true); QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetAngle(formulaAngle); @@ -204,7 +204,7 @@ VFormula VToolLineIntersectAxis::GetFormulaAngle() const { VFormula fAngle(formulaAngle, getData()); fAngle.setCheckZero(false); - fAngle.setToolId(id); + fAngle.setToolId(m_id); fAngle.setPostfix(degreeSymbol); return fAngle; } @@ -216,7 +216,7 @@ void VToolLineIntersectAxis::SetFormulaAngle(const VFormula &value) { formulaAngle = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -234,7 +234,7 @@ void VToolLineIntersectAxis::SetFirstPointId(const quint32 &value) { firstPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -252,7 +252,7 @@ void VToolLineIntersectAxis::SetSecondPointId(const quint32 &value) { secondPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -338,7 +338,7 @@ QString VToolLineIntersectAxis::MakeToolTip() const const QSharedPointer basePoint = VAbstractTool::data.GeometricObject(basePointId); const QSharedPointer firstPoint = VAbstractTool::data.GeometricObject(firstPointId); const QSharedPointer secondPoint = VAbstractTool::data.GeometricObject(secondPointId); - const QSharedPointer current = VAbstractTool::data.GeometricObject(id); + const QSharedPointer current = VAbstractTool::data.GeometricObject(m_id); const QLineF curLine(static_cast(*basePoint), static_cast(*current)); const QLineF firstToCur(static_cast(*firstPoint), static_cast(*current)); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp index e79f22d25..5429d3918 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp @@ -104,8 +104,8 @@ void VToolLinePoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *op */ void VToolLinePoint::RefreshGeometry() { - VToolSinglePoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject(id)); - QPointF point = static_cast(*VDrawTool::data.GeometricObject(id)); + VToolSinglePoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject(m_id)); + QPointF point = static_cast(*VDrawTool::data.GeometricObject(m_id)); QPointF basePoint = static_cast(*VDrawTool::data.GeometricObject(basePointId)); mainLine->setLine(QLineF(basePoint - point, QPointF())); } @@ -147,7 +147,7 @@ void VToolLinePoint::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) QString VToolLinePoint::MakeToolTip() const { const QSharedPointer first = VAbstractTool::data.GeometricObject(basePointId); - const QSharedPointer second = VAbstractTool::data.GeometricObject(id); + const QSharedPointer second = VAbstractTool::data.GeometricObject(m_id); const QLineF line(static_cast(*first), static_cast(*second)); @@ -191,7 +191,7 @@ qreal VToolLinePoint::GetAngle() const void VToolLinePoint::SetAngle(const qreal &value) { angle = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } @@ -206,7 +206,7 @@ void VToolLinePoint::SetLineColor(const QString &value) { lineColor = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } @@ -223,7 +223,7 @@ void VToolLinePoint::SetBasePointId(const quint32 &value) { basePointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -233,7 +233,7 @@ VFormula VToolLinePoint::GetFormulaLength() const { VFormula fLength(formulaLength, this->getData()); fLength.setCheckZero(true); - fLength.setToolId(id); + fLength.setToolId(m_id); fLength.setPostfix(UnitsToStr(qApp->patternUnit())); return fLength; @@ -246,7 +246,7 @@ void VToolLinePoint::SetFormulaLength(const VFormula &value) { formulaLength = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp index bb901a15e..e212ff69e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp @@ -90,7 +90,7 @@ void VToolNormal::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetTypeLine(m_lineType); dialogTool->SetFormula(formulaLength); dialogTool->SetAngle(angle); @@ -299,7 +299,7 @@ void VToolNormal::SetSecondPointId(const quint32 &value) { secondPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp index 6c798f71c..a2dabea2a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp @@ -92,7 +92,7 @@ void VToolShoulderPoint::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetFormula(formulaLength); @@ -336,7 +336,7 @@ QString VToolShoulderPoint::MakeToolTip() const { const QSharedPointer first = VAbstractTool::data.GeometricObject(basePointId); const QSharedPointer second = VAbstractTool::data.GeometricObject(p2Line); - const QSharedPointer current = VAbstractTool::data.GeometricObject(id); + const QSharedPointer current = VAbstractTool::data.GeometricObject(m_id); const QLineF firstToCur(static_cast(*first), static_cast(*current)); const QLineF secondToCur(static_cast(*second), static_cast(*current)); @@ -385,7 +385,7 @@ void VToolShoulderPoint::setPShoulder(const quint32 &value) { pShoulder = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -409,7 +409,7 @@ void VToolShoulderPoint::SetP2Line(const quint32 &value) { p2Line = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp index 587e82d01..1d2a89cd6 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp @@ -99,7 +99,7 @@ void VToolBasePoint::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetData(p->name(), static_cast(*p)); } @@ -153,7 +153,7 @@ void VToolBasePoint::AddToFile() QDomElement sPoint = doc->createElement(getTagName()); // Create SPoint tag - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOptions(sPoint, obj); //Create pattern piece structure @@ -193,7 +193,7 @@ QVariant VToolBasePoint::itemChange(QGraphicsItem::GraphicsItemChange change, co // value - this is new position. QPointF newPos = value.toPointF(); - MoveSPoint *moveSP = new MoveSPoint(doc, newPos.x(), newPos.y(), id, this->scene()); + MoveSPoint *moveSP = new MoveSPoint(doc, newPos.x(), newPos.y(), m_id, this->scene()); connect(moveSP, &MoveSPoint::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveSP); const QList viewList = scene()->views(); @@ -244,7 +244,7 @@ void VToolBasePoint::decrementReferens() //--------------------------------------------------------------------------------------------------------------------- QPointF VToolBasePoint::GetBasePointPos() const { - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); QPointF pos(qApp->fromPixel(p->x()), qApp->fromPixel(p->y())); return pos; } @@ -252,7 +252,7 @@ QPointF VToolBasePoint::GetBasePointPos() const //--------------------------------------------------------------------------------------------------------------------- void VToolBasePoint::SetBasePointPos(const QPointF &pos) { - QSharedPointer p = VAbstractTool::data.GeometricObject(id); + QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); p->setX(qApp->toPixel(pos.x())); p->setY(qApp->toPixel(pos.y())); @@ -407,7 +407,7 @@ void VToolBasePoint::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quin */ void VToolBasePoint::FullUpdateFromFile() { - RefreshPointGeometry(*VAbstractTool::data.GeometricObject(id)); + RefreshPointGeometry(*VAbstractTool::data.GeometricObject(m_id)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp index a16881b57..22792bed0 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp @@ -87,7 +87,7 @@ void VToolLineIntersect::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetP1Line1(p1Line1); dialogTool->SetP2Line1(p2Line1); dialogTool->SetP1Line2(p1Line2); @@ -300,7 +300,7 @@ QString VToolLineIntersect::MakeToolTip() const const QSharedPointer p2L1 = VAbstractTool::data.GeometricObject(p2Line1); const QSharedPointer p1L2 = VAbstractTool::data.GeometricObject(p1Line2); const QSharedPointer p2L2 = VAbstractTool::data.GeometricObject(p2Line2); - const QSharedPointer current = VAbstractTool::data.GeometricObject(id); + const QSharedPointer current = VAbstractTool::data.GeometricObject(m_id); const QLineF p1L1ToCur(static_cast(*p1L1), static_cast(*current)); const QLineF curToP2L1(static_cast(*current), static_cast(*p2L1)); @@ -338,7 +338,7 @@ void VToolLineIntersect::SetP2Line2(const quint32 &value) { p2Line2 = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -376,7 +376,7 @@ void VToolLineIntersect::SetP1Line2(const quint32 &value) { p1Line2 = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -394,7 +394,7 @@ void VToolLineIntersect::SetP2Line1(const quint32 &value) { p2Line1 = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -412,7 +412,7 @@ void VToolLineIntersect::SetP1Line1(const quint32 &value) { p1Line1 = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp index c580d910a..f1e4009ee 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp @@ -70,7 +70,7 @@ void VToolPointFromArcAndTangent::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetArcId(arcId); dialogTool->SetCrossCirclesPoint(crossPoint); dialogTool->SetTangentPointId(tangentPointId); @@ -240,7 +240,7 @@ void VToolPointFromArcAndTangent::SetTangentPointId(const quint32 &value) { tangentPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -258,7 +258,7 @@ void VToolPointFromArcAndTangent::SetArcId(const quint32 &value) { arcId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -274,7 +274,7 @@ void VToolPointFromArcAndTangent::SetCrossCirclesPoint(const CrossCirclesPoint & { crossPoint = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp index 01979c794..feedfe8ad 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp @@ -73,7 +73,7 @@ void VToolPointFromCircleAndTangent::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetCircleCenterId(circleCenterId); dialogTool->SetCircleRadius(circleRadius); dialogTool->SetCrossCirclesPoint(crossPoint); @@ -201,7 +201,7 @@ void VToolPointFromCircleAndTangent::SetTangentPointId(const quint32 &value) { tangentPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -219,7 +219,7 @@ void VToolPointFromCircleAndTangent::SetCircleCenterId(const quint32 &value) { circleCenterId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -229,7 +229,7 @@ VFormula VToolPointFromCircleAndTangent::GetCircleRadius() const { VFormula radius(circleRadius, getData()); radius.setCheckZero(true); - radius.setToolId(id); + radius.setToolId(m_id); radius.setPostfix(UnitsToStr(qApp->patternUnit())); return radius; } @@ -242,7 +242,7 @@ void VToolPointFromCircleAndTangent::SetCircleRadius(const VFormula &value) if (value.getDoubleValue() > 0)// Formula don't check this, but radius can't be 0 or negative { circleRadius = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -259,7 +259,7 @@ void VToolPointFromCircleAndTangent::SetCrossCirclesPoint(const CrossCirclesPoin { crossPoint = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp index 85aff7237..dc9397633 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp @@ -92,7 +92,7 @@ void VToolPointOfContact::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->setRadius(arcRadius); dialogTool->setCenter(center); dialogTool->SetFirstPoint(firstPointId); @@ -343,7 +343,7 @@ QString VToolPointOfContact::MakeToolTip() const const QSharedPointer p1 = VAbstractTool::data.GeometricObject(firstPointId); const QSharedPointer p2 = VAbstractTool::data.GeometricObject(secondPointId); const QSharedPointer centerP = VAbstractTool::data.GeometricObject(center); - const QSharedPointer current = VAbstractTool::data.GeometricObject(id); + const QSharedPointer current = VAbstractTool::data.GeometricObject(m_id); const QLineF p1ToCur(static_cast(*p1), static_cast(*current)); const QLineF p2ToCur(static_cast(*p2), static_cast(*current)); @@ -424,7 +424,7 @@ void VToolPointOfContact::setCenter(const quint32 &value) { center = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -434,7 +434,7 @@ VFormula VToolPointOfContact::getArcRadius() const { VFormula radius(arcRadius, this->getData()); radius.setCheckZero(true); - radius.setToolId(id); + radius.setToolId(m_id); radius.setPostfix(UnitsToStr(qApp->patternUnit())); return radius; @@ -447,7 +447,7 @@ void VToolPointOfContact::setArcRadius(const VFormula &value) { arcRadius = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp index 4960f5283..871ede5b7 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp @@ -81,7 +81,7 @@ void VToolPointOfIntersection::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetFirstPointId(firstPointId); dialogTool->SetSecondPointId(secondPointId); dialogTool->SetPointName(p->name()); @@ -267,7 +267,7 @@ void VToolPointOfIntersection::SetSecondPointId(const quint32 &value) { secondPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -291,7 +291,7 @@ void VToolPointOfIntersection::SetFirstPointId(const quint32 &value) { firstPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp index 663ba92d6..824eb7636 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp @@ -70,7 +70,7 @@ void VToolPointOfIntersectionArcs::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetFirstArcId(firstArcId); dialogTool->SetSecondArcId(secondArcId); dialogTool->SetCrossArcPoint(crossPoint); @@ -247,7 +247,7 @@ void VToolPointOfIntersectionArcs::SetFirstArcId(const quint32 &value) { firstArcId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -265,7 +265,7 @@ void VToolPointOfIntersectionArcs::SetSecondArcId(const quint32 &value) { secondArcId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -281,7 +281,7 @@ void VToolPointOfIntersectionArcs::SetCrossCirclesPoint(const CrossCirclesPoint { crossPoint = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp index 7328976b5..e95b672ae 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp @@ -78,7 +78,7 @@ void VToolPointOfIntersectionCircles::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetFirstCircleCenterId(firstCircleCenterId); dialogTool->SetSecondCircleCenterId(secondCircleCenterId); dialogTool->SetFirstCircleRadius(firstCircleRadius); @@ -216,7 +216,7 @@ void VToolPointOfIntersectionCircles::SetFirstCircleCenterId(const quint32 &valu { firstCircleCenterId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -234,7 +234,7 @@ void VToolPointOfIntersectionCircles::SetSecondCircleCenterId(const quint32 &val { secondCircleCenterId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -244,7 +244,7 @@ VFormula VToolPointOfIntersectionCircles::GetFirstCircleRadius() const { VFormula radius(firstCircleRadius, getData()); radius.setCheckZero(true); - radius.setToolId(id); + radius.setToolId(m_id); radius.setPostfix(UnitsToStr(qApp->patternUnit())); return radius; } @@ -257,7 +257,7 @@ void VToolPointOfIntersectionCircles::SetFirstCircleRadius(const VFormula &value if (value.getDoubleValue() > 0)// Formula don't check this, but radius can't be 0 or negative { firstCircleRadius = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -268,7 +268,7 @@ VFormula VToolPointOfIntersectionCircles::GetSecondCircleRadius() const { VFormula radius(secondCircleRadius, getData()); radius.setCheckZero(true); - radius.setToolId(id); + radius.setToolId(m_id); radius.setPostfix(UnitsToStr(qApp->patternUnit())); return radius; } @@ -281,7 +281,7 @@ void VToolPointOfIntersectionCircles::SetSecondCircleRadius(const VFormula &valu if (value.getDoubleValue() > 0)// Formula don't check this, but radius can't be 0 or negative { secondCircleRadius = value.GetFormula(FormulaType::FromUser); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -298,7 +298,7 @@ void VToolPointOfIntersectionCircles::SetCrossCirclesPoint(const CrossCirclesPoi { crossPoint = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp index f552d800a..cf4d5175f 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp @@ -75,7 +75,7 @@ void VToolPointOfIntersectionCurves::setDialog() SCASSERT(not m_dialog.isNull()) auto dialogTool = qobject_cast(m_dialog); SCASSERT(dialogTool != nullptr) - auto p = VAbstractTool::data.GeometricObject(id); + auto p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetFirstCurveId(firstCurveId); dialogTool->SetSecondCurveId(secondCurveId); dialogTool->SetVCrossPoint(vCrossPoint); @@ -287,7 +287,7 @@ void VToolPointOfIntersectionCurves::SetFirstCurveId(const quint32 &value) { firstCurveId = value; - auto obj = VAbstractTool::data.GetGObject(id); + auto obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -305,7 +305,7 @@ void VToolPointOfIntersectionCurves::SetSecondCurveId(const quint32 &value) { secondCurveId = value; - auto obj = VAbstractTool::data.GetGObject(id); + auto obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -321,7 +321,7 @@ void VToolPointOfIntersectionCurves::SetVCrossPoint(const VCrossCurvesPoint &val { vCrossPoint = value; - auto obj = VAbstractTool::data.GetGObject(id); + auto obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } @@ -336,7 +336,7 @@ void VToolPointOfIntersectionCurves::SetHCrossPoint(const HCrossCurvesPoint &val { hCrossPoint = value; - auto obj = VAbstractTool::data.GetGObject(id); + auto obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index 9f918fee9..eab9beeda 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -91,13 +91,13 @@ VToolSinglePoint::VToolSinglePoint(VAbstractPattern *doc, VContainer *data, quin //--------------------------------------------------------------------------------------------------------------------- QString VToolSinglePoint::name() const { - return ObjectName(id); + return ObjectName(m_id); } //--------------------------------------------------------------------------------------------------------------------- void VToolSinglePoint::setName(const QString &name) { - SetPointName(id, name); + SetPointName(m_id, name); } //--------------------------------------------------------------------------------------------------------------------- @@ -117,7 +117,7 @@ void VToolSinglePoint::GroupVisibility(quint32 object, bool visible) //--------------------------------------------------------------------------------------------------------------------- bool VToolSinglePoint::IsLabelVisible(quint32 id) const { - if (this->id == id) + if (m_id == id) { const QSharedPointer point = VAbstractTool::data.GeometricObject(id); return point->IsShowLabel(); @@ -131,7 +131,7 @@ bool VToolSinglePoint::IsLabelVisible(quint32 id) const //--------------------------------------------------------------------------------------------------------------------- void VToolSinglePoint::SetLabelVisible(quint32 id, bool visible) { - if (this->id == id) + if (m_id == id) { const QSharedPointer point = VAbstractTool::data.GeometricObject(id); point->SetShowLabel(visible); @@ -146,7 +146,7 @@ void VToolSinglePoint::SetLabelVisible(quint32 id, bool visible) */ void VToolSinglePoint::NameChangePosition(const QPointF &pos) { - ChangePosition(this, id, pos); + ChangePosition(this, m_id, pos); } //--------------------------------------------------------------------------------------------------------------------- @@ -203,7 +203,7 @@ void VToolSinglePoint::EnableToolMove(bool move) //--------------------------------------------------------------------------------------------------------------------- void VToolSinglePoint::PointChoosed() { - emit ChoosedTool(id, SceneObject::Point); + emit ChoosedTool(m_id, SceneObject::Point); } //--------------------------------------------------------------------------------------------------------------------- @@ -219,7 +219,7 @@ void VToolSinglePoint::PointSelected(bool selected) void VToolSinglePoint::FullUpdateFromFile() { ReadAttributes(); - RefreshPointGeometry(*VAbstractTool::data.GeometricObject(id)); + RefreshPointGeometry(*VAbstractTool::data.GeometricObject(m_id)); SetVisualization(); } @@ -261,7 +261,7 @@ QVariant VToolSinglePoint::itemChange(QGraphicsItem::GraphicsItemChange change, m_namePoint->blockSignals(true); m_namePoint->setSelected(value.toBool()); m_namePoint->blockSignals(false); - emit ChangedToolSelection(value.toBool(), id, id); + emit ChangedToolSelection(value.toBool(), m_id, m_id); } return VScenePoint::itemChange(change, value); @@ -296,7 +296,7 @@ void VToolSinglePoint::keyReleaseEvent(QKeyEvent *event) //--------------------------------------------------------------------------------------------------------------------- void VToolSinglePoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { - ShowContextMenu(event, id); + ShowContextMenu(event, m_id); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp index 27f64d3d4..12f95cce9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp @@ -86,7 +86,7 @@ void VToolTriangle::setDialog() SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QSharedPointer p = VAbstractTool::data.GeometricObject(id); + const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetAxisP1Id(axisP1Id); dialogTool->SetAxisP2Id(axisP2Id); dialogTool->SetFirstPointId(firstPointId); @@ -353,7 +353,7 @@ void VToolTriangle::SetSecondPointId(const quint32 &value) { secondPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -377,7 +377,7 @@ void VToolTriangle::SetFirstPointId(const quint32 &value) { firstPointId = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -395,7 +395,7 @@ void VToolTriangle::SetAxisP2Id(const quint32 &value) { axisP2Id = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } @@ -413,7 +413,7 @@ void VToolTriangle::SetAxisP1Id(const quint32 &value) { axisP1Id = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } } diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.cpp b/src/libs/vtools/tools/drawTools/vdrawtool.cpp index a801e492f..2040d147c 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.cpp +++ b/src/libs/vtools/tools/drawTools/vdrawtool.cpp @@ -106,19 +106,19 @@ void VDrawTool::ChangedNameDraw(const QString &oldName, const QString &newName) void VDrawTool::SaveDialogChange() { qCDebug(vTool, "Saving tool options after using dialog"); - QDomElement oldDomElement = doc->elementById(id, getTagName()); + QDomElement oldDomElement = doc->elementById(m_id, getTagName()); if (oldDomElement.isElement()) { QDomElement newDomElement = oldDomElement.cloneNode().toElement(); SaveDialog(newDomElement); - SaveToolOptions *saveOptions = new SaveToolOptions(oldDomElement, newDomElement, doc, id); + SaveToolOptions *saveOptions = new SaveToolOptions(oldDomElement, newDomElement, doc, m_id); connect(saveOptions, &SaveToolOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(saveOptions); } else { - qCDebug(vTool, "Can't find tool with id = %u", id); + qCDebug(vTool, "Can't find tool with id = %u", m_id); } } @@ -129,7 +129,7 @@ void VDrawTool::SaveDialogChange() void VDrawTool::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOptions(domElement, obj); AddToCalculation(domElement); } @@ -138,20 +138,20 @@ void VDrawTool::AddToFile() void VDrawTool::SaveOption(QSharedPointer &obj) { qCDebug(vTool, "Saving tool options"); - QDomElement oldDomElement = doc->elementById(id, getTagName()); + QDomElement oldDomElement = doc->elementById(m_id, getTagName()); if (oldDomElement.isElement()) { QDomElement newDomElement = oldDomElement.cloneNode().toElement(); SaveOptions(newDomElement, obj); - SaveToolOptions *saveOptions = new SaveToolOptions(oldDomElement, newDomElement, doc, id); + SaveToolOptions *saveOptions = new SaveToolOptions(oldDomElement, newDomElement, doc, m_id); connect(saveOptions, &SaveToolOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(saveOptions); } else { - qCDebug(vTool, "Can't find tool with id = %u", id); + qCDebug(vTool, "Can't find tool with id = %u", m_id); } } @@ -160,7 +160,7 @@ void VDrawTool::SaveOptions(QDomElement &tag, QSharedPointer &obj) { Q_UNUSED(obj) - doc->SetAttribute(tag, VDomDocument::AttrId, id); + doc->SetAttribute(tag, VDomDocument::AttrId, m_id); } //--------------------------------------------------------------------------------------------------------------------- @@ -185,14 +185,14 @@ bool VDrawTool::CorrectDisable(bool disable, const QString &namePP) const //--------------------------------------------------------------------------------------------------------------------- void VDrawTool::ReadAttributes() { - const QDomElement domElement = doc->elementById(id, getTagName()); + const QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { ReadToolAttributes(domElement); } else { - qCDebug(vTool, "Can't find tool with id = %u", id); + qCDebug(vTool, "Can't find tool with id = %u", m_id); } } @@ -240,7 +240,7 @@ void VDrawTool::SetTypeLine(const QString &value) { m_lineType = value; - QSharedPointer obj = VAbstractTool::data.GetGObject(id); + QSharedPointer obj = VAbstractTool::data.GetGObject(m_id); SaveOption(obj); } diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.h b/src/libs/vtools/tools/drawTools/vdrawtool.h index fba5dd07c..266fc7ea7 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.h +++ b/src/libs/vtools/tools/drawTools/vdrawtool.h @@ -195,7 +195,7 @@ void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemI { qCDebug(vTool, "Show options."); qApp->getSceneView()->itemClicked(nullptr); - m_dialog = QSharedPointer(new Dialog(getData(), id, qApp->getMainWindow())); + m_dialog = QSharedPointer(new Dialog(getData(), m_id, qApp->getMainWindow())); m_dialog->setModal(true); connect(m_dialog.data(), &DialogTool::DialogClosed, this, &VDrawTool::FullUpdateFromGuiOk); @@ -228,7 +228,7 @@ template void VDrawTool::ShowItem(Item *item, quint32 id, bool enable) { SCASSERT(item != nullptr) - if (id == item->id) + if (id == item->m_id) { ShowVisualization(enable); } diff --git a/src/libs/vtools/tools/drawTools/vtoolline.cpp b/src/libs/vtools/tools/drawTools/vtoolline.cpp index dc59a6a73..80314bd5d 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.cpp +++ b/src/libs/vtools/tools/drawTools/vtoolline.cpp @@ -341,7 +341,7 @@ QVariant VToolLine::itemChange(QGraphicsItem::GraphicsItemChange change, const Q { if (change == QGraphicsItem::ItemSelectedChange) { - emit ChangedToolSelection(value.toBool(), id, id); + emit ChangedToolSelection(value.toBool(), m_id, m_id); } return QGraphicsItem::itemChange(change, value); diff --git a/src/libs/vtools/tools/nodeDetails/vabstractnode.cpp b/src/libs/vtools/tools/nodeDetails/vabstractnode.cpp index c710648d6..edd234080 100644 --- a/src/libs/vtools/tools/nodeDetails/vabstractnode.cpp +++ b/src/libs/vtools/tools/nodeDetails/vabstractnode.cpp @@ -90,7 +90,7 @@ void VAbstractNode::incrementReferens() doc->IncrementReferens(node->getIdTool()); } ShowNode(); - QDomElement domElement = doc->elementById(id, getTagName()); + QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { doc->SetParametrUsage(domElement, AttrInUse, NodeUsage::InUse); @@ -117,7 +117,7 @@ void VAbstractNode::decrementReferens() doc->DecrementReferens(node->getIdTool()); } HideNode(); - QDomElement domElement = doc->elementById(id, getTagName()); + QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { doc->SetParametrUsage(domElement, AttrInUse, NodeUsage::NotInUse); diff --git a/src/libs/vtools/tools/nodeDetails/vnodearc.cpp b/src/libs/vtools/tools/nodeDetails/vnodearc.cpp index 4e5398cac..49d79847a 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodearc.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodearc.cpp @@ -126,7 +126,7 @@ void VNodeArc::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - doc->SetAttribute(domElement, VDomDocument::AttrId, id); + doc->SetAttribute(domElement, VDomDocument::AttrId, m_id); doc->SetAttribute(domElement, AttrType, ToolType); doc->SetAttribute(domElement, AttrIdObject, idNode); if (idTool != NULL_ID) diff --git a/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp b/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp index 22044d11e..cb66e0ba1 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp @@ -96,7 +96,7 @@ void VNodeEllipticalArc::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - doc->SetAttribute(domElement, VDomDocument::AttrId, id); + doc->SetAttribute(domElement, VDomDocument::AttrId, m_id); doc->SetAttribute(domElement, AttrType, ToolType); doc->SetAttribute(domElement, AttrIdObject, idNode); if (idTool != NULL_ID) diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp index 194a84e4b..fe61d8783 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp @@ -143,7 +143,7 @@ QString VNodePoint::getTagName() const //--------------------------------------------------------------------------------------------------------------------- void VNodePoint::PointChoosed() { - emit ChoosedTool(id, SceneObject::Point); + emit ChoosedTool(m_id, SceneObject::Point); } //--------------------------------------------------------------------------------------------------------------------- @@ -152,7 +152,7 @@ void VNodePoint::PointChoosed() */ void VNodePoint::FullUpdateFromFile() { - RefreshPointGeometry(*VAbstractTool::data.GeometricObject(id)); + RefreshPointGeometry(*VAbstractTool::data.GeometricObject(m_id)); } //--------------------------------------------------------------------------------------------------------------------- @@ -161,10 +161,10 @@ void VNodePoint::FullUpdateFromFile() */ void VNodePoint::AddToFile() { - const QSharedPointer point = VAbstractTool::data.GeometricObject(id); + const QSharedPointer point = VAbstractTool::data.GeometricObject(m_id); QDomElement domElement = doc->createElement(getTagName()); - doc->SetAttribute(domElement, VDomDocument::AttrId, id); + doc->SetAttribute(domElement, VDomDocument::AttrId, m_id); doc->SetAttribute(domElement, AttrType, ToolType); doc->SetAttribute(domElement, AttrIdObject, idNode); doc->SetAttribute(domElement, AttrMx, qApp->fromPixel(point->mx())); @@ -201,7 +201,7 @@ void VNodePoint::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { - emit ChoosedTool(id, SceneObject::Point); + emit ChoosedTool(m_id, SceneObject::Point); } VScenePoint::mouseReleaseEvent(event); } @@ -213,13 +213,13 @@ void VNodePoint::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) */ void VNodePoint::NameChangePosition(const QPointF &pos) { - VPointF *point = new VPointF(*VAbstractTool::data.GeometricObject(id)); + VPointF *point = new VPointF(*VAbstractTool::data.GeometricObject(m_id)); QPointF p = pos - this->pos(); point->setMx(p.x()); point->setMy(p.y()); RefreshLine(); UpdateNamePosition(point->mx(), point->my()); - VAbstractTool::data.UpdateGObject(id, point); + VAbstractTool::data.UpdateGObject(m_id, point); } //--------------------------------------------------------------------------------------------------------------------- @@ -230,7 +230,7 @@ void VNodePoint::NameChangePosition(const QPointF &pos) */ void VNodePoint::UpdateNamePosition(qreal mx, qreal my) { - QDomElement domElement = doc->elementById(id, getTagName()); + QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { doc->SetAttribute(domElement, AttrMx, QString().setNum(qApp->fromPixel(mx))); diff --git a/src/libs/vtools/tools/nodeDetails/vnodespline.cpp b/src/libs/vtools/tools/nodeDetails/vnodespline.cpp index dc7a8d2b0..6d45d4868 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodespline.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodespline.cpp @@ -130,7 +130,7 @@ void VNodeSpline::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - doc->SetAttribute(domElement, VDomDocument::AttrId, id); + doc->SetAttribute(domElement, VDomDocument::AttrId, m_id); doc->SetAttribute(domElement, AttrType, ToolType); doc->SetAttribute(domElement, AttrIdObject, idNode); if (idTool != NULL_ID) diff --git a/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp b/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp index 153312218..90477d5a9 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp @@ -128,7 +128,7 @@ void VNodeSplinePath::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - doc->SetAttribute(domElement, VDomDocument::AttrId, id); + doc->SetAttribute(domElement, VDomDocument::AttrId, m_id); doc->SetAttribute(domElement, AttrType, ToolType); doc->SetAttribute(domElement, AttrIdObject, idNode); if (idTool != 0) diff --git a/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp b/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp index c52351f91..7efd911b7 100644 --- a/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp +++ b/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp @@ -143,10 +143,10 @@ void VToolPiecePath::incrementReferens() } else { - IncrementNodes(VAbstractTool::data.GetPiecePath(id)); + IncrementNodes(VAbstractTool::data.GetPiecePath(m_id)); } ShowNode(); - QDomElement domElement = doc->elementById(id, getTagName()); + QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { doc->SetParametrUsage(domElement, AttrInUse, NodeUsage::InUse); @@ -166,10 +166,10 @@ void VToolPiecePath::decrementReferens() } else { - DecrementNodes(VAbstractTool::data.GetPiecePath(id)); + DecrementNodes(VAbstractTool::data.GetPiecePath(m_id)); } HideNode(); - QDomElement domElement = doc->elementById(id, getTagName()); + QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { doc->SetParametrUsage(domElement, AttrInUse, NodeUsage::NotInUse); @@ -215,9 +215,9 @@ void VToolPiecePath::AllowSelecting(bool enabled) void VToolPiecePath::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - const VPiecePath path = VAbstractTool::data.GetPiecePath(id); + const VPiecePath path = VAbstractTool::data.GetPiecePath(m_id); - AddAttributes(doc, domElement, id, path); + AddAttributes(doc, domElement, m_id, path); if (idTool != NULL_ID) { @@ -235,12 +235,12 @@ void VToolPiecePath::AddToFile() if (path.GetType() == PiecePathType::InternalPath) { - newDet.GetInternalPaths().append(id); + newDet.GetInternalPaths().append(m_id); } else if (path.GetType() == PiecePathType::CustomSeamAllowance) { CustomSARecord record; - record.path = id; + record.path = m_id; newDet.GetCustomSARecords().append(record); } @@ -300,7 +300,7 @@ VToolPiecePath::VToolPiecePath(VAbstractPattern *doc, VContainer *data, quint32 //--------------------------------------------------------------------------------------------------------------------- void VToolPiecePath::RefreshGeometry() { - const VPiecePath path = VAbstractTool::data.GetPiecePath(id); + const VPiecePath path = VAbstractTool::data.GetPiecePath(m_id); if (path.GetType() == PiecePathType::InternalPath) { QPainterPath p = path.PainterPath(this->getData()); diff --git a/src/libs/vtools/tools/nodeDetails/vtoolpin.cpp b/src/libs/vtools/tools/nodeDetails/vtoolpin.cpp index 9d54ea4e0..320fda85e 100644 --- a/src/libs/vtools/tools/nodeDetails/vtoolpin.cpp +++ b/src/libs/vtools/tools/nodeDetails/vtoolpin.cpp @@ -128,7 +128,7 @@ void VToolPin::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - doc->SetAttribute(domElement, VDomDocument::AttrId, id); + doc->SetAttribute(domElement, VDomDocument::AttrId, m_id); doc->SetAttribute(domElement, AttrType, ToolType); doc->SetAttribute(domElement, AttrIdObject, idNode); if (idTool != NULL_ID) @@ -143,7 +143,7 @@ void VToolPin::AddToFile() const VPiece oldDet = VAbstractTool::data.GetPiece(m_pieceId); VPiece newDet = oldDet; - newDet.GetPins().append(id); + newDet.GetPins().append(m_id); SavePieceOptions *saveCommand = new SavePieceOptions(oldDet, newDet, doc, m_pieceId); qApp->getUndoStack()->push(saveCommand);// First push then make a connect diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index 2a14a9350..7cd8ef53f 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -123,7 +123,7 @@ quint32 CreateNodeSplinePath(VContainer *data, quint32 id) VAbstractTool::VAbstractTool(VAbstractPattern *doc, VContainer *data, quint32 id, QObject *parent) :VDataTool(data, parent), doc(doc), - id(id), + m_id(id), vis(), selectionType(SelectionType::ByMouseRelease) { @@ -254,7 +254,7 @@ void VAbstractTool::DeleteTool(bool ask) } qCDebug(vTool, "Begin deleting."); - DelTool *delTool = new DelTool(doc, id); + DelTool *delTool = new DelTool(doc, m_id); connect(delTool, &DelTool::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); qApp->getUndoStack()->push(delTool); @@ -384,7 +384,7 @@ QMap VAbstractTool::PointsList() const QHash >::const_iterator i; for (i = objs->constBegin(); i != objs->constEnd(); ++i) { - if (i.key() != id) + if (i.key() != m_id) { QSharedPointer obj = i.value(); if (obj->getType() == GOType::Point && obj->getMode() == Draw::Calculation) diff --git a/src/libs/vtools/tools/vabstracttool.h b/src/libs/vtools/tools/vabstracttool.h index f72896166..fc2b6d7f5 100644 --- a/src/libs/vtools/tools/vabstracttool.h +++ b/src/libs/vtools/tools/vabstracttool.h @@ -109,7 +109,7 @@ protected: VAbstractPattern *doc; /** @brief id object id. */ - const quint32 id; + const quint32 m_id; QPointer vis; SelectionType selectionType; @@ -153,7 +153,7 @@ private: */ inline quint32 VAbstractTool::getId() const { - return id; + return m_id; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp index 2e8ec0d32..ebc89ff94 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.cpp +++ b/src/libs/vtools/tools/vtoolseamallowance.cpp @@ -483,7 +483,7 @@ void VToolSeamAllowance::AllowSelecting(bool enabled) void VToolSeamAllowance::ResetChildren(QGraphicsItem *pItem) { const bool selected = isSelected(); - const VPiece detail = VAbstractTool::data.GetPiece(id); + const VPiece detail = VAbstractTool::data.GetPiece(m_id); VTextGraphicsItem* pVGI = qgraphicsitem_cast(pItem); if (pVGI != m_dataLabel) { @@ -529,7 +529,7 @@ void VToolSeamAllowance::retranslateUi() //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::Highlight(quint32 id) { - setSelected(this->id == id); + setSelected(m_id == id); } //--------------------------------------------------------------------------------------------------------------------- @@ -538,7 +538,7 @@ void VToolSeamAllowance::Highlight(quint32 id) */ void VToolSeamAllowance::UpdateDetailLabel() { - const VPiece detail = VAbstractTool::data.GetPiece(id); + const VPiece detail = VAbstractTool::data.GetPiece(m_id); const VPieceLabelData& labelData = detail.GetPatternPieceData(); if (labelData.IsVisible() == true) @@ -564,7 +564,7 @@ void VToolSeamAllowance::UpdateDetailLabel() */ void VToolSeamAllowance::UpdatePatternInfo() { - const VPiece detail = VAbstractTool::data.GetPiece(id); + const VPiece detail = VAbstractTool::data.GetPiece(m_id); const VPatternLabelData& geom = detail.GetPatternInfo(); if (geom.IsVisible() == true) @@ -590,7 +590,7 @@ void VToolSeamAllowance::UpdatePatternInfo() */ void VToolSeamAllowance::UpdateGrainline() { - const VPiece detail = VAbstractTool::data.GetPiece(id); + const VPiece detail = VAbstractTool::data.GetPiece(m_id); const VGrainlineData& geom = detail.GetGrainlineGeometry(); if (geom.IsVisible() == true) @@ -623,11 +623,11 @@ void VToolSeamAllowance::UpdateGrainline() */ void VToolSeamAllowance::SaveMoveDetail(const QPointF& ptPos) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; newDet.GetPatternPieceData().SetPos(ptPos); - SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); moveCommand->setText(tr("move pattern piece label")); connect(moveCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveCommand); @@ -639,7 +639,7 @@ void VToolSeamAllowance::SaveMoveDetail(const QPointF& ptPos) */ void VToolSeamAllowance::SaveResizeDetail(qreal dLabelW, int iFontSize) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; dLabelW = FromPixel(dLabelW, *VDataTool::data.GetPatternUnit()); @@ -648,7 +648,7 @@ void VToolSeamAllowance::SaveResizeDetail(qreal dLabelW, int iFontSize) newDet.GetPatternPieceData().SetLabelHeight(QString().setNum(height)); newDet.GetPatternPieceData().SetFontSize(iFontSize); - SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); resizeCommand->setText(tr("resize pattern piece label")); connect(resizeCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(resizeCommand); @@ -660,7 +660,7 @@ void VToolSeamAllowance::SaveResizeDetail(qreal dLabelW, int iFontSize) */ void VToolSeamAllowance::SaveRotationDetail(qreal dRot) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; newDet.GetPatternPieceData().SetPos(m_dataLabel->pos()); newDet.GetPatternPieceData().SetFontSize(m_dataLabel->GetFontSize()); @@ -670,7 +670,7 @@ void VToolSeamAllowance::SaveRotationDetail(qreal dRot) line.setAngle(-dRot); newDet.GetPatternPieceData().SetRotationWay(QString().setNum(line.angle())); - SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); rotateCommand->setText(tr("rotate pattern piece label")); connect(rotateCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(rotateCommand); @@ -683,11 +683,11 @@ void VToolSeamAllowance::SaveRotationDetail(qreal dRot) */ void VToolSeamAllowance::SaveMovePattern(const QPointF &ptPos) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; newDet.GetPatternInfo().SetPos(ptPos); - SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); moveCommand->setText(tr("move pattern info label")); connect(moveCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveCommand); @@ -699,7 +699,7 @@ void VToolSeamAllowance::SaveMovePattern(const QPointF &ptPos) */ void VToolSeamAllowance::SaveResizePattern(qreal dLabelW, int iFontSize) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; dLabelW = FromPixel(dLabelW, *VDataTool::data.GetPatternUnit()); @@ -708,7 +708,7 @@ void VToolSeamAllowance::SaveResizePattern(qreal dLabelW, int iFontSize) newDet.GetPatternInfo().SetLabelHeight(QString().setNum(height)); newDet.GetPatternInfo().SetFontSize(iFontSize); - SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); resizeCommand->setText(tr("resize pattern info label")); connect(resizeCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(resizeCommand); @@ -717,7 +717,7 @@ void VToolSeamAllowance::SaveResizePattern(qreal dLabelW, int iFontSize) //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::SaveRotationPattern(qreal dRot) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; newDet.GetPatternInfo().SetPos(m_patternInfo->pos()); @@ -728,7 +728,7 @@ void VToolSeamAllowance::SaveRotationPattern(qreal dRot) line.setAngle(-dRot); newDet.GetPatternInfo().SetRotation(QString().setNum(line.angle())); - SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); rotateCommand->setText(tr("rotate pattern info label")); connect(rotateCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(rotateCommand); @@ -738,12 +738,12 @@ void VToolSeamAllowance::SaveRotationPattern(qreal dRot) //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::SaveMoveGrainline(const QPointF& ptPos) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; newDet.GetGrainlineGeometry().SetPos(ptPos); qDebug() << "******* new grainline pos" << ptPos; - SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); moveCommand->setText(tr("move grainline")); connect(moveCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveCommand); @@ -752,13 +752,13 @@ void VToolSeamAllowance::SaveMoveGrainline(const QPointF& ptPos) //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::SaveResizeGrainline(qreal dLength) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; dLength = FromPixel(dLength, *VDataTool::data.GetPatternUnit()); newDet.GetGrainlineGeometry().SetPos(m_grainLine->pos()); newDet.GetGrainlineGeometry().SetLength(QString().setNum(dLength)); - SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); resizeCommand->setText(tr("resize grainline")); connect(resizeCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(resizeCommand); @@ -767,12 +767,12 @@ void VToolSeamAllowance::SaveResizeGrainline(qreal dLength) //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::SaveRotateGrainline(qreal dRot, const QPointF& ptPos) { - VPiece oldDet = VAbstractTool::data.GetPiece(id); + VPiece oldDet = VAbstractTool::data.GetPiece(m_id); VPiece newDet = oldDet; newDet.GetGrainlineGeometry().SetRotation(QString().setNum(qRadiansToDegrees(dRot))); newDet.GetGrainlineGeometry().SetPos(ptPos); - SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); rotateCommand->setText(tr("rotate grainline")); connect(rotateCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(rotateCommand); @@ -829,11 +829,11 @@ QPainterPath VToolSeamAllowance::shape() const //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::AddToFile() { - const VPiece piece = VAbstractTool::data.GetPiece(id); + const VPiece piece = VAbstractTool::data.GetPiece(m_id); QDomElement domElement = doc->createElement(getTagName()); - AddAttributes(doc, domElement, id, piece); + AddAttributes(doc, domElement, m_id, piece); AddPatternPieceData(doc, domElement, piece); AddPatternInfo(doc, domElement, piece); AddGrainline(doc, domElement, piece); @@ -853,7 +853,7 @@ void VToolSeamAllowance::AddToFile() //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::RefreshDataInFile() { - QDomElement domElement = doc->elementById(id, getTagName()); + QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { // Refresh only parts that we possibly need to update @@ -865,7 +865,7 @@ void VToolSeamAllowance::RefreshDataInFile() const uint version = doc->GetParametrUInt(domElement, VToolSeamAllowance::AttrVersion, "1"); if (version == 1) { - const VPiece piece = VAbstractTool::data.GetPiece(id); + const VPiece piece = VAbstractTool::data.GetPiece(m_id); doc->SetAttribute(domElement, AttrVersion, QString().setNum(pieceVersion)); @@ -897,7 +897,7 @@ QVariant VToolSeamAllowance::itemChange(QGraphicsItem::GraphicsItemChange change // value - this is new position. const QPointF newPos = value.toPointF(); - MovePiece *moveDet = new MovePiece(doc, newPos.x(), newPos.y(), id, scene()); + MovePiece *moveDet = new MovePiece(doc, newPos.x(), newPos.y(), m_id, scene()); connect(moveDet, &MovePiece::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveDet); @@ -929,10 +929,10 @@ QVariant VToolSeamAllowance::itemChange(QGraphicsItem::GraphicsItemChange change } } // Don't forget to update geometry, because first change never call full parse - VPiece detail = VAbstractTool::data.GetPiece(id); + VPiece detail = VAbstractTool::data.GetPiece(m_id); detail.SetMx(newPos.x()); detail.SetMy(newPos.y()); - VAbstractTool::data.UpdatePiece(id, detail); + VAbstractTool::data.UpdatePiece(m_id, detail); RefreshGeometry(); changeFinished = true; @@ -977,8 +977,8 @@ void VToolSeamAllowance::mousePressEvent(QGraphicsSceneMouseEvent *event) if (event->button() == Qt::LeftButton && event->type() != QEvent::GraphicsSceneMouseDoubleClick) { - doc->SelectedDetail(id); - emit ChoosedTool(id, SceneObject::Detail); + doc->SelectedDetail(m_id); + emit ChoosedTool(m_id, SceneObject::Detail); } event->accept();// Special for not selectable item first need to call standard mousePressEvent then accept event @@ -1028,7 +1028,7 @@ void VToolSeamAllowance::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) QAction *inLayoutOption = menu.addAction(tr("In layout")); inLayoutOption->setCheckable(true); - const VPiece detail = VAbstractTool::data.GetPiece(id); + const VPiece detail = VAbstractTool::data.GetPiece(m_id); inLayoutOption->setChecked(detail.IsInLayout()); QAction *actionRemove = menu.addAction(QIcon::fromTheme("edit-delete"), tr("Delete")); @@ -1038,7 +1038,7 @@ void VToolSeamAllowance::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) if (selectedAction == actionOption) { QSharedPointer dialog = - QSharedPointer(new DialogSeamAllowance(getData(), id, qApp->getMainWindow())); + QSharedPointer(new DialogSeamAllowance(getData(), m_id, qApp->getMainWindow())); dialog->EnableApply(true); m_dialog = dialog; m_dialog->setModal(true); @@ -1049,7 +1049,7 @@ void VToolSeamAllowance::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) } else if (selectedAction == inLayoutOption) { - TogglePieceInLayout *togglePrint = new TogglePieceInLayout(id, selectedAction->isChecked(), + TogglePieceInLayout *togglePrint = new TogglePieceInLayout(m_id, selectedAction->isChecked(), &(VAbstractTool::data), doc); connect(togglePrint, &TogglePieceInLayout::UpdateList, doc, &VAbstractPattern::CheckInLayoutList); qApp->getUndoStack()->push(togglePrint); @@ -1098,7 +1098,7 @@ void VToolSeamAllowance::SetDialog() SCASSERT(not m_dialog.isNull()); QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - dialogTool->SetPiece(VAbstractTool::data.GetPiece(id)); + dialogTool->SetPiece(VAbstractTool::data.GetPiece(m_id)); dialogTool->EnableApply(true); } @@ -1165,7 +1165,7 @@ VToolSeamAllowance::VToolSeamAllowance(VAbstractPattern *doc, VContainer *data, //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::UpdateExcludeState() { - const VPiece detail = VAbstractTool::data.GetPiece(id); + const VPiece detail = VAbstractTool::data.GetPiece(m_id); for (int i = 0; i< detail.GetPath().CountNodes(); ++i) { const VPieceNode &node = detail.GetPath().at(i); @@ -1185,7 +1185,7 @@ void VToolSeamAllowance::RefreshGeometry() { this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false); - const VPiece detail = VAbstractTool::data.GetPiece(id); + const VPiece detail = VAbstractTool::data.GetPiece(m_id); QPainterPath path = detail.MainPathPath(this->getData()); if (not detail.IsHideMainPath() || not detail.IsSeamAllowance() || detail.IsSeamAllowanceBuiltIn()) @@ -1237,9 +1237,9 @@ void VToolSeamAllowance::SaveDialogChange() DialogSeamAllowance *dialogTool = qobject_cast(m_dialog.data()); SCASSERT(dialogTool != nullptr); const VPiece newDet = dialogTool->GetPiece(); - const VPiece oldDet = VAbstractTool::data.GetPiece(id); + const VPiece oldDet = VAbstractTool::data.GetPiece(m_id); - SavePieceOptions *saveCommand = new SavePieceOptions(oldDet, newDet, doc, id); + SavePieceOptions *saveCommand = new SavePieceOptions(oldDet, newDet, doc, m_id); connect(saveCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(saveCommand); UpdateDetailLabel(); @@ -1514,7 +1514,7 @@ void VToolSeamAllowance::InitPins(const VPiece &detail) //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::DeleteTool(bool ask) { - QScopedPointer delDet(new DeletePiece(doc, id, VAbstractTool::data.GetPiece(id))); + QScopedPointer delDet(new DeletePiece(doc, m_id, VAbstractTool::data.GetPiece(m_id))); if (ask) { if (ConfirmDeletion() == QMessageBox::No) diff --git a/src/libs/vtools/tools/vtooluniondetails.cpp b/src/libs/vtools/tools/vtooluniondetails.cpp index 274b6702a..e19d876fd 100644 --- a/src/libs/vtools/tools/vtooluniondetails.cpp +++ b/src/libs/vtools/tools/vtooluniondetails.cpp @@ -1369,7 +1369,7 @@ void VToolUnionDetails::incrementReferens() doc->IncrementReferens(objects.at(i)); } - QDomElement domElement = doc->elementById(id, getTagName()); + QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { doc->SetParametrUsage(domElement, AttrInUse, NodeUsage::InUse); @@ -1389,7 +1389,7 @@ void VToolUnionDetails::decrementReferens() doc->DecrementReferens(objects.at(i)); } - QDomElement domElement = doc->elementById(id, getTagName()); + QDomElement domElement = doc->elementById(m_id, getTagName()); if (domElement.isElement()) { doc->SetParametrUsage(domElement, AttrInUse, NodeUsage::NotInUse); @@ -1480,7 +1480,7 @@ void VToolUnionDetails::AddToFile() { QDomElement domElement = doc->createElement(getTagName()); - doc->SetAttribute(domElement, VDomDocument::AttrId, id); + doc->SetAttribute(domElement, VDomDocument::AttrId, m_id); doc->SetAttribute(domElement, AttrType, ToolType); doc->SetAttribute(domElement, AttrIndexD1, indexD1); doc->SetAttribute(domElement, AttrIndexD2, indexD2); @@ -1536,7 +1536,7 @@ void VToolUnionDetails::AddToModeling(const QDomElement &domElement) QVector VToolUnionDetails::GetReferenceObjects() const { QVector list; - const QDomElement tool = doc->elementById(id, getTagName()); + const QDomElement tool = doc->elementById(m_id, getTagName()); if (tool.isNull()) { return list; From 6f160ebd9c2150be325938a76140fcc50634e254 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 17 Sep 2017 10:24:34 +0300 Subject: [PATCH 06/12] Improve tooltip. It should show object label. --HG-- branch : feature --- .../drawTools/toolcurve/vabstractspline.cpp | 5 ++++- .../tools/drawTools/toolcurve/vtoolarc.cpp | 5 ++++- .../drawTools/toolcurve/vtoolarcwithlength.cpp | 5 ++++- .../drawTools/toolcurve/vtoolellipticalarc.cpp | 5 ++++- .../toolsinglepoint/toolcut/vtoolcut.cpp | 17 ----------------- .../toolsinglepoint/toolcut/vtoolcut.h | 1 - .../toolsinglepoint/toolcut/vtoolcutarc.cpp | 7 +++++-- .../toolsinglepoint/toolcut/vtoolcutspline.cpp | 8 +++++++- .../toolcut/vtoolcutsplinepath.cpp | 8 +++++++- .../toollinepoint/vtoolalongline.cpp | 5 ++++- .../toollinepoint/vtoolheight.cpp | 5 ++++- .../toollinepoint/vtoollineintersectaxis.cpp | 5 ++++- .../toollinepoint/vtoollinepoint.cpp | 5 ++++- .../toollinepoint/vtoolshoulderpoint.cpp | 5 ++++- .../toolsinglepoint/vtoolbasepoint.cpp | 13 +++++++++++++ .../toolpoint/toolsinglepoint/vtoolbasepoint.h | 1 + .../toolsinglepoint/vtoollineintersect.cpp | 5 ++++- .../toolsinglepoint/vtoolpointofcontact.cpp | 5 ++++- 18 files changed, 77 insertions(+), 33 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp index df570a709..585381a15 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp @@ -169,11 +169,14 @@ QString VAbstractSpline::MakeToolTip() const const QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); const QString toolTip = QString("
%1: %2 %3
" + "" "" "
%4: %5
%1: %2 %3
") .arg(tr("Length")) .arg(qApp->fromPixel(curve->GetLength())) - .arg(UnitsToStr(qApp->patternUnit(), true)); + .arg(UnitsToStr(qApp->patternUnit(), true)) + .arg(tr("Label")) + .arg(curve->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp index cd751f40f..f04aaf1ab 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp @@ -390,6 +390,7 @@ QString VToolArc::MakeToolTip() const const QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); const QString toolTip = QString("" + "" "" "" "" @@ -403,6 +404,8 @@ QString VToolArc::MakeToolTip() const .arg(tr("Start angle")) .arg(qApp->fromPixel(arc->GetStartAngle())) .arg(tr("End angle")) - .arg(qApp->fromPixel(arc->GetEndAngle())); + .arg(qApp->fromPixel(arc->GetEndAngle())) + .arg(tr("Label")) + .arg(arc->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp index 58a6df7f1..d8493b20e 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp @@ -350,6 +350,7 @@ QString VToolArcWithLength::MakeToolTip() const const QSharedPointer arc = VAbstractTool::data.GeometricObject(m_id); const QString toolTip = QString("
%10: %11
%1: %2 %3
%4: %5 %3
%6: %7°
" + "" "" "" "" @@ -363,6 +364,8 @@ QString VToolArcWithLength::MakeToolTip() const .arg(tr("Start angle")) .arg(qApp->fromPixel(arc->GetStartAngle())) .arg(tr("End angle")) - .arg(qApp->fromPixel(arc->GetEndAngle())); + .arg(qApp->fromPixel(arc->GetEndAngle())) + .arg(tr("Label")) + .arg(arc->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp index e1d8267cc..9f707d428 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp @@ -463,6 +463,7 @@ QString VToolEllipticalArc::MakeToolTip() const const QSharedPointer elArc = VAbstractTool::data.GeometricObject(m_id); const QString toolTip = QString("
%10: %11
%1: %2 %3
%4: %5 %3
%6: %7°
" + "" "" "" "" @@ -479,6 +480,8 @@ QString VToolEllipticalArc::MakeToolTip() const .arg(tr("Start angle")) .arg(elArc->GetStartAngle()) .arg(tr("End angle")) - .arg(elArc->GetEndAngle()); + .arg(elArc->GetEndAngle()) + .arg(tr("Label")) + .arg(elArc->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.cpp index b0f06284a..9e15e0665 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.cpp @@ -74,23 +74,6 @@ void VToolCut::FullUpdateFromFile() SetVisualization(); } -//--------------------------------------------------------------------------------------------------------------------- -QString VToolCut::MakeToolTip() const -{ - const QSharedPointer curve = VAbstractTool::data.GeometricObject(curveCutId); - - const QString toolTip = QString("
%12: %13
%1: %2 %3
%4: %5 %3
%6: %7 %3
" - "" - "" - "" - "" - "
%1: %2 %3
%4: %5 %3
%6: %7°
%8: %9°
") - .arg(tr("Length")) - .arg(qApp->fromPixel(curve->GetLength())) - .arg(UnitsToStr(qApp->patternUnit(), true)); - return toolTip; -} - //--------------------------------------------------------------------------------------------------------------------- // cppcheck-suppress unusedFunction quint32 VToolCut::getCurveCutId() const diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.h index 4b12c02ab..dfe251a80 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcut.h @@ -66,7 +66,6 @@ public slots: virtual void Disable(bool disable, const QString &namePP) Q_DECL_OVERRIDE; virtual void DetailsMode(bool mode) Q_DECL_OVERRIDE; virtual void FullUpdateFromFile() Q_DECL_OVERRIDE; - virtual QString MakeToolTip() const Q_DECL_OVERRIDE; protected: /** @brief formula keep formula of length */ QString formula; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp index d350d6301..d16d97ebd 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp @@ -271,7 +271,8 @@ QString VToolCutArc::MakeToolTip() const auto ArcToolTip = [arcStr, lengthStr, startAngleStr, endAngleStr, radiusStr](QString toolTip, const VArc &arc, const QString &arcNumber) { - toolTip += QString(" %1: %2 %3 " + toolTip += QString(" %10: %11 " + " %1: %2 %3 " " %4: %5 %3 " " %6: %7° " " %8: %9° ") @@ -283,7 +284,9 @@ QString VToolCutArc::MakeToolTip() const .arg(arcStr + arcNumber + QLatin1String(" ") + startAngleStr) .arg(qApp->fromPixel(arc.GetStartAngle())) .arg(arcStr + arcNumber + QLatin1String(" ") + endAngleStr) - .arg(qApp->fromPixel(arc.GetEndAngle())); + .arg(qApp->fromPixel(arc.GetEndAngle())) + .arg(arcStr + arcNumber + QLatin1String(" ") + tr("label")) + .arg(arc.name()); return toolTip; }; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp index 812f18ac5..def45024c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp @@ -268,14 +268,20 @@ QString VToolCutSpline::MakeToolTip() const const QString lengthStr = tr("length"); const QString toolTip = QString("" + "" "" + "" "" "
%6: %7
%1: %2 %3
%8: %9
%4: %5 %3
") .arg(curveStr + QLatin1String("1 ") + lengthStr) .arg(qApp->fromPixel(spline1.GetLength())) .arg(UnitsToStr(qApp->patternUnit(), true)) .arg(curveStr + QLatin1String("2 ") + lengthStr) - .arg(qApp->fromPixel(spline2.GetLength())); + .arg(qApp->fromPixel(spline2.GetLength())) + .arg(curveStr + QLatin1String(" 1") + tr("label")) + .arg(spline1.name()) + .arg(curveStr + QLatin1String(" 2") + tr("label")) + .arg(spline2.name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp index 16941aec7..3dadb1f31 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp @@ -354,14 +354,20 @@ QString VToolCutSplinePath::MakeToolTip() const const QString lengthStr = tr("length"); const QString toolTip = QString("" + "" "" + "" "" "
%6: %7
%1: %2 %3
%8: %9
%4: %5 %3
") .arg(curveStr + QLatin1String("1 ") + lengthStr) .arg(qApp->fromPixel(splPath1->GetLength())) .arg(UnitsToStr(qApp->patternUnit(), true)) .arg(curveStr + QLatin1String("2 ") + lengthStr) - .arg(qApp->fromPixel(splPath2->GetLength())); + .arg(qApp->fromPixel(splPath2->GetLength())) + .arg(curveStr + QLatin1String(" 1") + tr("label")) + .arg(splPath1->name()) + .arg(curveStr + QLatin1String(" 2") + tr("label")) + .arg(splPath2->name()); delete splPath1; delete splPath2; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp index c35c0a54e..250e4cca5 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp @@ -155,6 +155,7 @@ QString VToolAlongLine::MakeToolTip() const const QLineF curToSecond(static_cast(*current), static_cast(*secondPoint)); const QString toolTip = QString("" + "" "" "" "" @@ -167,7 +168,9 @@ QString VToolAlongLine::MakeToolTip() const .arg(curLine.angle()) .arg(QString("%1->%2").arg(basePoint->name(), current->name())) .arg(QString("%1->%2").arg(current->name(), secondPoint->name())) - .arg(qApp->fromPixel(curToSecond.length())); + .arg(qApp->fromPixel(curToSecond.length())) + .arg(tr("Label")) + .arg(current->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp index 1c691abbc..f971340cd 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp @@ -280,6 +280,7 @@ QString VToolHeight::MakeToolTip() const const QLineF p2ToCur(static_cast(*p2Line), static_cast(*current)); const QString toolTip = QString("
%9: %10
%1: %2 %3
%4: %5°
%6: %2 %3
" + "" "" "" "" @@ -293,7 +294,9 @@ QString VToolHeight::MakeToolTip() const .arg(QString("%1->%2").arg(p1Line->name(), current->name())) .arg(qApp->fromPixel(p1ToCur.length())) .arg(QString("%1->%2").arg(p2Line->name(), current->name())) - .arg(qApp->fromPixel(p2ToCur.length())); + .arg(qApp->fromPixel(p2ToCur.length())) + .arg(tr("Label")) + .arg(current->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp index d6e9771c5..8bb55fedb 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp @@ -345,6 +345,7 @@ QString VToolLineIntersectAxis::MakeToolTip() const const QLineF curToSecond(static_cast(*current), static_cast(*secondPoint)); const QString toolTip = QString("
%10: %11
%1: %2 %3
%4: %5°
%6: %7 %3
" + "" "" "" "" @@ -358,6 +359,8 @@ QString VToolLineIntersectAxis::MakeToolTip() const .arg(QString("%1->%2").arg(firstPoint->name(), current->name())) .arg(qApp->fromPixel(firstToCur.length())) .arg(QString("%1->%2").arg(current->name(), secondPoint->name())) - .arg(qApp->fromPixel(curToSecond.length())); + .arg(qApp->fromPixel(curToSecond.length())) + .arg(tr("Label")) + .arg(current->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp index 5429d3918..b259978c6 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp @@ -152,6 +152,7 @@ QString VToolLinePoint::MakeToolTip() const const QLineF line(static_cast(*first), static_cast(*second)); const QString toolTip = QString("
%10: %11
%1: %2 %3
%4: %5°
%6: %7 %3
" + "" "" "" "
%6: %7
%1: %2 %3
%4: %5°
") @@ -159,7 +160,9 @@ QString VToolLinePoint::MakeToolTip() const .arg(qApp->fromPixel(line.length())) .arg(UnitsToStr(qApp->patternUnit(), true)) .arg(tr("Angle")) - .arg(line.angle()); + .arg(line.angle()) + .arg(tr("Label")) + .arg(second->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp index a2dabea2a..76ca60a49 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp @@ -342,6 +342,7 @@ QString VToolShoulderPoint::MakeToolTip() const const QLineF secondToCur(static_cast(*second), static_cast(*current)); const QString toolTip = QString("" + "" "" "" "" @@ -352,7 +353,9 @@ QString VToolShoulderPoint::MakeToolTip() const .arg(tr("Angle")) .arg(firstToCur.angle()) .arg(QString("%1->%2").arg(second->name(), current->name())) - .arg(qApp->fromPixel(secondToCur.length())); + .arg(qApp->fromPixel(secondToCur.length())) + .arg(tr("Label")) + .arg(current->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp index 1d2a89cd6..bb0792f0c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp @@ -370,6 +370,19 @@ void VToolBasePoint::ReadToolAttributes(const QDomElement &domElement) // This tool doesn't need read attributes from file. } +//--------------------------------------------------------------------------------------------------------------------- +QString VToolBasePoint::MakeToolTip() const +{ + const QSharedPointer point = VAbstractTool::data.GeometricObject(m_id); + + const QString toolTip = QString("
%8: %9
%1: %2 %3
%4: %5°
%6: %7 %3
" + "" + "
%1: %2
") + .arg(tr("Label")) + .arg(point->name()); + return toolTip; +} + //--------------------------------------------------------------------------------------------------------------------- void VToolBasePoint::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h index 47f7cc351..893cbfab1 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h @@ -86,6 +86,7 @@ protected: virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SetVisualization() Q_DECL_OVERRIDE {} + virtual QString MakeToolTip() const Q_DECL_OVERRIDE; private slots: virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; private: diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp index 22792bed0..8fc6a6f75 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp @@ -308,6 +308,7 @@ QString VToolLineIntersect::MakeToolTip() const const QLineF curToP2L2(static_cast(*current), static_cast(*p2L2)); const QString toolTip = QString("" + "" "" "" "" @@ -321,7 +322,9 @@ QString VToolLineIntersect::MakeToolTip() const .arg(QString("%1->%2").arg(p1L2->name(), current->name())) .arg(qApp->fromPixel(p1L2ToCur.length())) .arg(QString("%1->%2").arg(current->name(), p2L2->name())) - .arg(qApp->fromPixel(curToP2L2.length())); + .arg(qApp->fromPixel(curToP2L2.length())) + .arg(tr("Label")) + .arg(current->name()); return toolTip; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp index dc9397633..966b50da8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp @@ -350,6 +350,7 @@ QString VToolPointOfContact::MakeToolTip() const const QLineF centerToCur(static_cast(*centerP), static_cast(*current)); const QString toolTip = QString("
%10: %11
%1: %2 %3
%4: %5 %3
%6: %7 %3
" + "" "" "" "" @@ -363,7 +364,9 @@ QString VToolPointOfContact::MakeToolTip() const .arg(QString("%1 %2->%3").arg(tr("Length"), centerP->name(), current->name())) .arg(qApp->fromPixel(centerToCur.length())) .arg(QString("%1 %2->%3").arg(tr("Angle"), centerP->name(), current->name())) - .arg(centerToCur.angle()); + .arg(centerToCur.angle()) + .arg(tr("Label")) + .arg(current->name()); return toolTip; } From 2e8f113e3e09b56becc5c628ad223dd18c166e2b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 17 Sep 2017 13:58:43 +0300 Subject: [PATCH 07/12] Tooltip for complex tools. --HG-- branch : feature --- .../flipping/vtoolflippingbyaxis.cpp | 9 +++++ .../operation/flipping/vtoolflippingbyaxis.h | 9 ++--- .../flipping/vtoolflippingbyline.cpp | 12 +++++++ .../operation/flipping/vtoolflippingbyline.h | 9 ++--- .../operation/vabstractoperation.cpp | 36 +++++++++++++++++++ .../drawTools/operation/vabstractoperation.h | 3 ++ .../tools/drawTools/operation/vtoolmove.cpp | 13 +++++++ .../tools/drawTools/operation/vtoolmove.h | 10 +++--- .../drawTools/operation/vtoolrotation.cpp | 12 +++++++ .../tools/drawTools/operation/vtoolrotation.h | 9 ++--- .../drawTools/toolcurve/vabstractspline.h | 2 +- .../tooldoublepoint/vtooldoublepoint.cpp | 17 +++++++++ .../tooldoublepoint/vtooldoublepoint.h | 2 ++ 13 files changed, 125 insertions(+), 18 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp index 2def0519e..810e59917 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp @@ -229,6 +229,15 @@ void VToolFlippingByAxis::SaveOptions(QDomElement &tag, QSharedPointer SaveSourceDestination(tag); } +//--------------------------------------------------------------------------------------------------------------------- +QString VToolFlippingByAxis::MakeToolTip() const +{ + const QString toolTip = QString("") + .arg(tr("Origin point")) + .arg(OriginPointName()); + return toolTip; +} + //--------------------------------------------------------------------------------------------------------------------- VToolFlippingByAxis::VToolFlippingByAxis(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 originPointId, AxisType axisType, const QString &suffix, diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h index 85cf1a92d..7ef398d5e 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h @@ -61,10 +61,11 @@ public: protected slots: virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void SetVisualization() Q_DECL_OVERRIDE; - virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; - virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; - virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; + virtual void SetVisualization() Q_DECL_OVERRIDE; + virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; + virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; + virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; + virtual QString MakeToolTip() const Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolFlippingByAxis) diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp index 6ff449632..5fc6a5986 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp @@ -215,6 +215,18 @@ void VToolFlippingByLine::SaveOptions(QDomElement &tag, QSharedPointer SaveSourceDestination(tag); } +//--------------------------------------------------------------------------------------------------------------------- +QString VToolFlippingByLine::MakeToolTip() const +{ + const QString toolTip = QString("" + "") + .arg(tr("First line point")) + .arg(FirstLinePointName()) + .arg(tr("Second line point")) + .arg(SecondLinePointName()); + return toolTip; +} + //--------------------------------------------------------------------------------------------------------------------- VToolFlippingByLine::VToolFlippingByLine(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 firstLinePointId, quint32 secondLinePointId, const QString &suffix, diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h index 3efd5a593..249395dfd 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h @@ -59,10 +59,11 @@ public: protected slots: virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void SetVisualization() Q_DECL_OVERRIDE; - virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; - virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; - virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; + virtual void SetVisualization() Q_DECL_OVERRIDE; + virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; + virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; + virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; + virtual QString MakeToolTip() const Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolFlippingByLine) diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp index e541fa396..e0021f661 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp @@ -138,12 +138,14 @@ void VAbstractOperation::FullUpdateFromFile() { VSimplePoint *item = qobject_cast(i.value()); SCASSERT(item != nullptr) + item->setToolTip(ComplexPointToolTip(i.key())); item->RefreshPointGeometry(*VAbstractTool::data.GeometricObject(i.key())); } else { VSimpleCurve *item = qobject_cast(i.value()); SCASSERT(item != nullptr) + item->setToolTip(ComplexCurveToolTip(i.key())); item->RefreshGeometry(VAbstractTool::data.GeometricObject(i.key())); } } @@ -473,6 +475,7 @@ void VAbstractOperation::InitCurve(quint32 id, VContainer *data, GOType curveTyp VSimpleCurve *curve = new VSimpleCurve(id, initCurve); curve->setParentItem(this); curve->SetType(curveType); + curve->setToolTip(ComplexCurveToolTip(id)); connect(curve, &VSimpleCurve::Selected, this, &VAbstractOperation::ObjectSelected); connect(curve, &VSimpleCurve::ShowContextMenu, this, [this](QGraphicsSceneContextMenuEvent * event, quint32 id) { @@ -570,6 +573,7 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") VSimplePoint *point = new VSimplePoint(object.id, QColor(Qt::black)); point->setParentItem(this); point->SetType(GOType::Point); + point->setToolTip(ComplexPointToolTip(object.id)); connect(point, &VSimplePoint::Choosed, this, [this](quint32 id) { emit ChoosedTool(id, SceneObject::Point); @@ -606,3 +610,35 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") QT_WARNING_POP } } + +//--------------------------------------------------------------------------------------------------------------------- +QString VAbstractOperation::ComplexPointToolTip(quint32 itemId) const +{ + const QSharedPointer point = VAbstractTool::data.GeometricObject(itemId); + + const QString toolTip = QString("
%10: %11
%1: %2 %3
%4: %5 %3
%6: %7 %3
%1: %2
%1: %2
%3: %4
" + "" + "%3" + "
%1: %2
") + .arg(tr("Label"), point->name(), MakeToolTip()); + return toolTip; +} + +//--------------------------------------------------------------------------------------------------------------------- +QString VAbstractOperation::ComplexCurveToolTip(quint32 itemId) const +{ + const QSharedPointer curve = VAbstractTool::data.GeometricObject(itemId); + + const QString toolTip = QString("" + "" + "" + "%6" + "
%1: %2
%3: %4 %5
") + .arg(tr("Label")) + .arg(curve->name()) + .arg(tr("Length")) + .arg(qApp->fromPixel(curve->GetLength())) + .arg(UnitsToStr(qApp->patternUnit(), true)) + .arg(MakeToolTip()); + return toolTip; +} diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h index ce0111ee7..bc70bf867 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h @@ -131,6 +131,9 @@ protected: static void InitOperationToolConnections(VMainGraphicsScene *scene, T *tool); void InitOperatedObjects(); + + QString ComplexPointToolTip(quint32 itemId) const; + QString ComplexCurveToolTip(quint32 itemId) const; protected slots: void DoChangePosition(quint32 id, qreal mx, qreal my); private: diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp index 2e49e96ac..27127f122 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp @@ -347,6 +347,19 @@ void VToolMove::SaveOptions(QDomElement &tag, QSharedPointer &obj) SaveSourceDestination(tag); } +//--------------------------------------------------------------------------------------------------------------------- +QString VToolMove::MakeToolTip() const +{ + const QString toolTip = QString(" %1: %2° " + " %3: %4 %5 ") + .arg(tr("Rotation angle")) + .arg(GetFormulaAngle().getDoubleValue()) + .arg(tr("Length")) + .arg(GetFormulaLength().getDoubleValue()) + .arg(UnitsToStr(qApp->patternUnit(), true)); + return toolTip; +} + //--------------------------------------------------------------------------------------------------------------------- VToolMove::VToolMove(VAbstractPattern *doc, VContainer *data, quint32 id, const QString &formulaAngle, const QString &formulaLength, const QString &suffix, diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.h b/src/libs/vtools/tools/drawTools/operation/vtoolmove.h index 1426936e1..6c30bbff9 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.h +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.h @@ -73,11 +73,11 @@ public: protected slots: virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void SetVisualization() Q_DECL_OVERRIDE; - virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; - virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; - virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; - + virtual void SetVisualization() Q_DECL_OVERRIDE; + virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; + virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; + virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; + virtual QString MakeToolTip() const Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolMove) QString formulaAngle; diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp index 85c451025..1342f4f40 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp @@ -347,6 +347,18 @@ void VToolRotation::SaveOptions(QDomElement &tag, QSharedPointer &obj) SaveSourceDestination(tag); } +//--------------------------------------------------------------------------------------------------------------------- +QString VToolRotation::MakeToolTip() const +{ + const QString toolTip = QString(" %1: %2 " + " %3: %4° ") + .arg(tr("Origin point")) + .arg(OriginPointName()) + .arg(tr("Rotation angle")) + .arg(GetFormulaAngle().getDoubleValue()); + return toolTip; +} + //--------------------------------------------------------------------------------------------------------------------- DestinationItem VToolRotation::CreatePoint(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle, const QString &suffix, VContainer *data) diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h index 2292eab98..bbdc81adb 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h @@ -72,10 +72,11 @@ public: protected slots: virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE; protected: - virtual void SetVisualization() Q_DECL_OVERRIDE; - virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; - virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; - virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; + virtual void SetVisualization() Q_DECL_OVERRIDE; + virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; + virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; + virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; + virtual QString MakeToolTip() const Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolRotation) diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h index dc9e4bc83..0782bdbf2 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h @@ -83,7 +83,6 @@ public slots: virtual void DetailsMode(bool mode) Q_DECL_OVERRIDE; virtual void AllowHover(bool enabled) Q_DECL_OVERRIDE; virtual void AllowSelecting(bool enabled) Q_DECL_OVERRIDE; - virtual QString MakeToolTip() const Q_DECL_OVERRIDE; signals: /** * @brief setEnabledPoint disable control points. @@ -113,6 +112,7 @@ protected: virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void RefreshCtrlPoints(); virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; + virtual QString MakeToolTip() const Q_DECL_OVERRIDE; VSpline CorrectedSpline(const VSpline &spline, const SplinePointPosition &position, const QPointF &pos) const; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp index 78e25637a..a8ff6331c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp @@ -65,6 +65,7 @@ VToolDoublePoint::VToolDoublePoint(VAbstractPattern *doc, VContainer *data, quin { firstPoint = new VSimplePoint(p1id, QColor(Qt::black)); firstPoint->setParentItem(this); + firstPoint->setToolTip(ComplexToolTip(p1id)); connect(firstPoint, &VSimplePoint::Choosed, this, &VToolDoublePoint::Point1Choosed); connect(firstPoint, &VSimplePoint::Selected, this, &VToolDoublePoint::Point1Selected); connect(firstPoint, &VSimplePoint::ShowContextMenu, this, &VToolDoublePoint::ShowContextMenu); @@ -74,6 +75,7 @@ VToolDoublePoint::VToolDoublePoint(VAbstractPattern *doc, VContainer *data, quin secondPoint = new VSimplePoint(p2id, QColor(Qt::black)); secondPoint->setParentItem(this); + secondPoint->setToolTip(ComplexToolTip(p2id)); connect(secondPoint, &VSimplePoint::Choosed, this, &VToolDoublePoint::Point2Choosed); connect(secondPoint, &VSimplePoint::Selected, this, &VToolDoublePoint::Point2Selected); connect(secondPoint, &VSimplePoint::ShowContextMenu, this, &VToolDoublePoint::ShowContextMenu); @@ -175,7 +177,9 @@ void VToolDoublePoint::Point2Selected(bool selected) void VToolDoublePoint::FullUpdateFromFile() { ReadAttributes(); + firstPoint->setToolTip(ComplexToolTip(p1id)); firstPoint->RefreshPointGeometry(*VAbstractTool::data.GeometricObject(p1id)); + secondPoint->setToolTip(ComplexToolTip(p2id)); secondPoint->RefreshPointGeometry(*VAbstractTool::data.GeometricObject(p2id)); SetVisualization(); } @@ -363,3 +367,16 @@ void VToolDoublePoint::AddToFile() SaveOptions(domElement, obj); AddToCalculation(domElement); } + +//--------------------------------------------------------------------------------------------------------------------- +QString VToolDoublePoint::ComplexToolTip(quint32 itemId) const +{ + const QSharedPointer point = VAbstractTool::data.GeometricObject(itemId); + + const QString toolTip = QString("" + "" + "%3" + "
%1: %2
") + .arg(tr("Label"), point->name(), MakeToolTip()); + return toolTip; +} diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.h index b069959fd..c4e2453d0 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.h @@ -94,6 +94,8 @@ protected: virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void AddToFile() Q_DECL_OVERRIDE; + QString ComplexToolTip(quint32 itemId) const; + private: Q_DISABLE_COPY(VToolDoublePoint) }; From b01adfa388255239418b88602dbdc23b7149f367 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 17 Sep 2017 19:52:18 +0300 Subject: [PATCH 08/12] Saving to file works for simple point. --HG-- branch : feature --- src/app/valentina/xml/vpattern.cpp | 121 ++- src/app/valentina/xml/vpattern.h | 4 +- src/libs/ifc/ifcdef.cpp | 1 + src/libs/ifc/ifcdef.h | 1 + src/libs/ifc/schema.qrc | 1 + src/libs/ifc/schema/pattern/v0.6.3.xsd | 969 ++++++++++++++++++ src/libs/ifc/xml/vpatternconverter.cpp | 22 +- src/libs/ifc/xml/vpatternconverter.h | 3 +- .../toolsinglepoint/toolcut/vtoolcutarc.cpp | 9 +- .../toolsinglepoint/toolcut/vtoolcutarc.h | 4 +- .../toolcut/vtoolcutspline.cpp | 7 +- .../toolsinglepoint/toolcut/vtoolcutspline.h | 2 +- .../toolcut/vtoolcutsplinepath.cpp | 5 +- .../toolcut/vtoolcutsplinepath.h | 2 +- .../toollinepoint/vtoolalongline.cpp | 13 +- .../toollinepoint/vtoolalongline.h | 2 +- .../toollinepoint/vtoolbisector.cpp | 20 +- .../toollinepoint/vtoolbisector.h | 11 +- .../toollinepoint/vtoolcurveintersectaxis.cpp | 14 +- .../toollinepoint/vtoolcurveintersectaxis.h | 4 +- .../toollinepoint/vtoolendline.cpp | 16 +- .../toollinepoint/vtoolendline.h | 2 +- .../toollinepoint/vtoolheight.cpp | 16 +- .../toollinepoint/vtoolheight.h | 4 +- .../toollinepoint/vtoollineintersectaxis.cpp | 16 +- .../toollinepoint/vtoollineintersectaxis.h | 6 +- .../toollinepoint/vtoolnormal.cpp | 20 +- .../toollinepoint/vtoolnormal.h | 9 +- .../toollinepoint/vtoolshoulderpoint.cpp | 21 +- .../toollinepoint/vtoolshoulderpoint.h | 6 +- .../toolsinglepoint/vtoollineintersect.cpp | 22 +- .../toolsinglepoint/vtoollineintersect.h | 6 +- .../vtoolpointfromarcandtangent.cpp | 14 +- .../vtoolpointfromarcandtangent.h | 7 +- .../vtoolpointfromcircleandtangent.cpp | 15 +- .../vtoolpointfromcircleandtangent.h | 2 +- .../toolsinglepoint/vtoolpointofcontact.cpp | 18 +- .../toolsinglepoint/vtoolpointofcontact.h | 6 +- .../vtoolpointofintersection.cpp | 17 +- .../vtoolpointofintersection.h | 4 +- .../vtoolpointofintersectionarcs.cpp | 21 +- .../vtoolpointofintersectionarcs.h | 6 +- .../vtoolpointofintersectioncircles.cpp | 17 +- .../vtoolpointofintersectioncircles.h | 2 +- .../vtoolpointofintersectioncurves.cpp | 15 +- .../vtoolpointofintersectioncurves.h | 2 +- .../toolsinglepoint/vtoolsinglepoint.cpp | 11 + .../toolsinglepoint/vtoolsinglepoint.h | 1 + .../toolsinglepoint/vtooltriangle.cpp | 16 +- .../toolpoint/toolsinglepoint/vtooltriangle.h | 6 +- src/libs/vtools/tools/drawTools/vdrawtool.h | 15 +- .../vtools/undocommands/label/showlabel.cpp | 95 ++ .../vtools/undocommands/label/showlabel.h | 55 + src/libs/vtools/undocommands/undocommands.pri | 6 +- 54 files changed, 1478 insertions(+), 232 deletions(-) create mode 100644 src/libs/ifc/schema/pattern/v0.6.3.xsd create mode 100644 src/libs/vtools/undocommands/label/showlabel.cpp create mode 100644 src/libs/vtools/undocommands/label/showlabel.h diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index 4f206a78c..0d779a307 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -988,18 +988,20 @@ void VPattern::ParseDetails(const QDomElement &domElement, const Document &parse //--------------------------------------------------------------------------------------------------------------------- void VPattern::PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, qreal &my, - QString &typeLine, QString &lineColor) + bool &labelVisible, QString &typeLine, QString &lineColor) { - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, labelVisible); typeLine = GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = GetParametrString(domElement, AttrLineColor, ColorBlack); } //--------------------------------------------------------------------------------------------------------------------- -void VPattern::PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, qreal &my) +void VPattern::PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, qreal &my, + bool &labelVisible) { PointsCommonAttributes(domElement, id, mx, my); name = GetParametrString(domElement, AttrName, "A"); + labelVisible = GetParametrBool(domElement, AttrShowLabel, trueStr); } //--------------------------------------------------------------------------------------------------------------------- @@ -1259,12 +1261,14 @@ void VPattern::ParseToolBasePoint(VMainGraphicsScene *scene, const QDomElement & QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const qreal x = qApp->toPixel(GetParametrDouble(domElement, AttrX, "10.0")); const qreal y = qApp->toPixel(GetParametrDouble(domElement, AttrY, "10.0")); VPointF *point = new VPointF(x, y, name, mx, my); + point->SetShowLabel(showLabel); spoint = VToolBasePoint::Create(id, nameActivPP, point, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) @@ -1291,8 +1295,9 @@ void VPattern::ParseToolEndLine(VMainGraphicsScene *scene, QDomElement &domEleme qreal my = 0; QString typeLine; QString lineColor; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my, typeLine, lineColor); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); const QString formula = GetParametrString(domElement, AttrLength, "100.0"); QString f = formula;//need for saving fixed formula; @@ -1302,8 +1307,8 @@ void VPattern::ParseToolEndLine(VMainGraphicsScene *scene, QDomElement &domEleme const QString angle = GetParametrString(domElement, AttrAngle, "0.0"); QString angleFix = angle; - VToolEndLine::Create(id, name, typeLine, lineColor, f, angleFix, basePointId, mx, my, scene, this, data, - parse, Source::FromFile); + VToolEndLine::Create(id, name, typeLine, lineColor, f, angleFix, basePointId, mx, my, showLabel, scene, this, + data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != formula || angleFix != angle) { @@ -1341,14 +1346,15 @@ void VPattern::ParseToolAlongLine(VMainGraphicsScene *scene, QDomElement &domEle qreal my = 0; QString typeLine; QString lineColor; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my, typeLine, lineColor); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); const QString formula = GetParametrString(domElement, AttrLength, "100.0"); QString f = formula;//need for saving fixed formula; const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - VToolAlongLine::Create(id, name, typeLine, lineColor, f, firstPointId, secondPointId, mx, my, scene, + VToolAlongLine::Create(id, name, typeLine, lineColor, f, firstPointId, secondPointId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != formula) @@ -1386,16 +1392,17 @@ void VPattern::ParseToolShoulderPoint(VMainGraphicsScene *scene, QDomElement &do qreal my = 0; QString typeLine; QString lineColor; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my, typeLine, lineColor); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); const QString formula = GetParametrString(domElement, AttrLength, "100.0"); QString f = formula;//need for saving fixed formula; const quint32 p1Line = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); const quint32 p2Line = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); const quint32 pShoulder = GetParametrUInt(domElement, AttrPShoulder, NULL_ID_STR); - VToolShoulderPoint::Create(id, f, p1Line, p2Line, pShoulder, typeLine, lineColor, name, mx, my, scene, - this, data, parse, Source::FromFile); + VToolShoulderPoint::Create(id, f, p1Line, p2Line, pShoulder, typeLine, lineColor, name, mx, my, showLabel, + scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != formula) { @@ -1432,16 +1439,17 @@ void VPattern::ParseToolNormal(VMainGraphicsScene *scene, QDomElement &domElemen qreal my = 0; QString typeLine; QString lineColor; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my, typeLine, lineColor); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); const QString formula = GetParametrString(domElement, AttrLength, "100.0"); QString f = formula;//need for saving fixed formula; const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); const qreal angle = GetParametrDouble(domElement, AttrAngle, "0.0"); - VToolNormal::Create(id, f, firstPointId, secondPointId, typeLine, lineColor, name, angle, mx, my, scene, - this, data, parse, Source::FromFile); + VToolNormal::Create(id, f, firstPointId, secondPointId, typeLine, lineColor, name, angle, mx, my, showLabel, + scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != formula) { @@ -1478,8 +1486,9 @@ void VPattern::ParseToolBisector(VMainGraphicsScene *scene, QDomElement &domElem qreal my = 0; QString typeLine; QString lineColor; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my, typeLine, lineColor); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); const QString formula = GetParametrString(domElement, AttrLength, "100.0"); QString f = formula;//need for saving fixed formula; const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); @@ -1487,7 +1496,7 @@ void VPattern::ParseToolBisector(VMainGraphicsScene *scene, QDomElement &domElem const quint32 thirdPointId = GetParametrUInt(domElement, AttrThirdPoint, NULL_ID_STR); VToolBisector::Create(id, f, firstPointId, secondPointId, thirdPointId, - typeLine, lineColor, name, mx, my, scene, this, data, parse, Source::FromFile); + typeLine, lineColor, name, mx, my, showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != formula) { @@ -1522,15 +1531,16 @@ void VPattern::ParseToolLineIntersect(VMainGraphicsScene *scene, const QDomEleme QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const quint32 p1Line1Id = GetParametrUInt(domElement, AttrP1Line1, NULL_ID_STR); const quint32 p2Line1Id = GetParametrUInt(domElement, AttrP2Line1, NULL_ID_STR); const quint32 p1Line2Id = GetParametrUInt(domElement, AttrP1Line2, NULL_ID_STR); const quint32 p2Line2Id = GetParametrUInt(domElement, AttrP2Line2, NULL_ID_STR); VToolLineIntersect::Create(id, p1Line1Id, p2Line1Id, p1Line2Id, p2Line2Id, name, - mx, my, scene, this, data, parse, Source::FromFile); + mx, my, showLabel, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) { @@ -1552,15 +1562,16 @@ void VPattern::ParseToolPointOfContact(VMainGraphicsScene *scene, QDomElement &d QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const QString radius = GetParametrString(domElement, AttrRadius, "0"); QString f = radius;//need for saving fixed formula; const quint32 center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - VToolPointOfContact::Create(id, f, center, firstPointId, secondPointId, name, mx, my, scene, this, + VToolPointOfContact::Create(id, f, center, firstPointId, secondPointId, name, mx, my, showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != radius) @@ -1656,14 +1667,15 @@ void VPattern::ParseToolHeight(VMainGraphicsScene *scene, const QDomElement &dom qreal my = 0; QString typeLine; QString lineColor; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my, typeLine, lineColor); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); const quint32 basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); const quint32 p1LineId = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); const quint32 p2LineId = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); VToolHeight::Create(id, name, typeLine, lineColor, basePointId, p1LineId, p2LineId, - mx, my, scene, this, data, parse, Source::FromFile); + mx, my, showLabel, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) { @@ -1685,14 +1697,15 @@ void VPattern::ParseToolTriangle(VMainGraphicsScene *scene, const QDomElement &d QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const quint32 axisP1Id = GetParametrUInt(domElement, AttrAxisP1, NULL_ID_STR); const quint32 axisP2Id = GetParametrUInt(domElement, AttrAxisP2, NULL_ID_STR); const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - VToolTriangle::Create(id, name, axisP1Id, axisP2Id, firstPointId, secondPointId, mx, my, scene, this, + VToolTriangle::Create(id, name, axisP1Id, axisP2Id, firstPointId, secondPointId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) @@ -1716,12 +1729,13 @@ void VPattern::ParseToolPointOfIntersection(VMainGraphicsScene *scene, const QDo QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - VToolPointOfIntersection::Create(id, name, firstPointId, secondPointId, mx, my, scene, this, data, + VToolPointOfIntersection::Create(id, name, firstPointId, secondPointId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) @@ -1744,13 +1758,14 @@ void VPattern::ParseToolCutSpline(VMainGraphicsScene *scene, QDomElement &domEle QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const QString formula = GetParametrString(domElement, AttrLength, "0"); QString f = formula;//need for saving fixed formula; const quint32 splineId = GetParametrUInt(domElement, VToolCutSpline::AttrSpline, NULL_ID_STR); - VToolCutSpline::Create(id, name, f, splineId, mx, my, scene, this, data, parse, Source::FromFile); + VToolCutSpline::Create(id, name, f, splineId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != formula) { @@ -1785,14 +1800,16 @@ void VPattern::ParseToolCutSplinePath(VMainGraphicsScene *scene, QDomElement &do QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const QString formula = GetParametrString(domElement, AttrLength, "0"); QString f = formula;//need for saving fixed formula; const quint32 splinePathId = GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, NULL_ID_STR); - VToolCutSplinePath::Create(id, name, f, splinePathId, mx, my, scene, this, data, parse, Source::FromFile); + VToolCutSplinePath::Create(id, name, f, splinePathId, mx, my, showLabel, scene, this, data, parse, + Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != formula) { @@ -1827,13 +1844,14 @@ void VPattern::ParseToolCutArc(VMainGraphicsScene *scene, QDomElement &domElemen QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const QString formula = GetParametrString(domElement, AttrLength, "0"); QString f = formula;//need for saving fixed formula; const quint32 arcId = GetParametrUInt(domElement, AttrArc, NULL_ID_STR); - VToolCutArc::Create(id, name, f, arcId, mx, my, scene, this, data, parse, Source::FromFile); + VToolCutArc::Create(id, name, f, arcId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (f != formula) { @@ -1871,8 +1889,9 @@ void VPattern::ParseToolLineIntersectAxis(VMainGraphicsScene *scene, QDomElement qreal my = 0; QString typeLine; QString lineColor; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my, typeLine, lineColor); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); const quint32 basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); const quint32 firstPointId = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); @@ -1882,7 +1901,7 @@ void VPattern::ParseToolLineIntersectAxis(VMainGraphicsScene *scene, QDomElement QString angleFix = angle; VToolLineIntersectAxis::Create(id, name, typeLine, lineColor, angleFix, basePointId, firstPointId, - secondPointId, mx, my, scene, this, data, parse, Source::FromFile); + secondPointId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (angleFix != angle) { @@ -1922,8 +1941,9 @@ void VPattern::ParseToolCurveIntersectAxis(VMainGraphicsScene *scene, QDomElemen qreal my = 0; QString typeLine; QString lineColor; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my, typeLine, lineColor); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); const quint32 basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); const quint32 curveId = GetParametrUInt(domElement, AttrCurve, NULL_ID_STR); @@ -1931,7 +1951,7 @@ void VPattern::ParseToolCurveIntersectAxis(VMainGraphicsScene *scene, QDomElemen QString angleFix = angle; VToolCurveIntersectAxis::Create(id, name, typeLine, lineColor, angleFix, basePointId, curveId, mx, my, - scene, this, data, parse, Source::FromFile); + showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (angleFix != angle) { @@ -1969,16 +1989,17 @@ void VPattern::ParseToolPointOfIntersectionArcs(VMainGraphicsScene *scene, const QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const quint32 firstArcId = GetParametrUInt(domElement, AttrFirstArc, NULL_ID_STR); const quint32 secondArcId = GetParametrUInt(domElement, AttrSecondArc, NULL_ID_STR); const CrossCirclesPoint crossPoint = static_cast(GetParametrUInt(domElement, AttrCrossPoint, "1")); - VToolPointOfIntersectionArcs::Create(id, name, firstArcId, secondArcId, crossPoint, mx, my, scene, this, - data, parse, Source::FromFile); + VToolPointOfIntersectionArcs::Create(id, name, firstArcId, secondArcId, crossPoint, mx, my, showLabel, scene, + this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) { @@ -2001,8 +2022,9 @@ void VPattern::ParseToolPointOfIntersectionCircles(VMainGraphicsScene *scene, QD QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const quint32 c1CenterId = GetParametrUInt(domElement, AttrC1Center, NULL_ID_STR); const quint32 c2CenterId = GetParametrUInt(domElement, AttrC2Center, NULL_ID_STR); const QString c1Radius = GetParametrString(domElement, AttrC1Radius); @@ -2013,7 +2035,7 @@ void VPattern::ParseToolPointOfIntersectionCircles(VMainGraphicsScene *scene, QD AttrCrossPoint, "1")); VToolPointOfIntersectionCircles::Create(id, name, c1CenterId, c2CenterId, c1R, c2R, crossPoint, mx, my, - scene, this, data, parse, Source::FromFile); + showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (c1R != c1Radius || c2R != c2Radius) { @@ -2044,15 +2066,16 @@ void VPattern::ParseToolPointOfIntersectionCurves(VMainGraphicsScene *scene, QDo QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const auto curve1Id = GetParametrUInt(domElement, AttrCurve1, NULL_ID_STR); const auto curve2Id = GetParametrUInt(domElement, AttrCurve2, NULL_ID_STR); const auto vCrossPoint = static_cast(GetParametrUInt(domElement, AttrVCrossPoint, "1")); const auto hCrossPoint = static_cast(GetParametrUInt(domElement, AttrHCrossPoint, "1")); VToolPointOfIntersectionCurves::Create(id, name, curve1Id, curve2Id, vCrossPoint, hCrossPoint, mx, my, - scene, this, data, parse, Source::FromFile); + showLabel, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) { @@ -2075,8 +2098,9 @@ void VPattern::ParseToolPointFromCircleAndTangent(VMainGraphicsScene *scene, QDo QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const quint32 cCenterId = GetParametrUInt(domElement, AttrCCenter, NULL_ID_STR); const quint32 tangentId = GetParametrUInt(domElement, AttrTangent, NULL_ID_STR); const QString cRadius = GetParametrString(domElement, AttrCRadius); @@ -2085,7 +2109,7 @@ void VPattern::ParseToolPointFromCircleAndTangent(VMainGraphicsScene *scene, QDo AttrCrossPoint, "1")); - VToolPointFromCircleAndTangent::Create(id, name, cCenterId, cR, tangentId, crossPoint, mx, my, + VToolPointFromCircleAndTangent::Create(id, name, cCenterId, cR, tangentId, crossPoint, mx, my, showLabel, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (cR != cRadius) @@ -2116,15 +2140,16 @@ void VPattern::ParseToolPointFromArcAndTangent(VMainGraphicsScene *scene, const QString name; qreal mx = 0; qreal my = 0; + bool showLabel = true; - PointsCommonAttributes(domElement, id, name, mx, my); + PointsCommonAttributes(domElement, id, name, mx, my, showLabel); const quint32 arcId = GetParametrUInt(domElement, AttrArc, NULL_ID_STR); const quint32 tangentId = GetParametrUInt(domElement, AttrTangent, NULL_ID_STR); const CrossCirclesPoint crossPoint = static_cast(GetParametrUInt(domElement, AttrCrossPoint, "1")); - VToolPointFromArcAndTangent::Create(id, name, arcId, tangentId, crossPoint, mx, my, + VToolPointFromArcAndTangent::Create(id, name, arcId, tangentId, crossPoint, mx, my, showLabel, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) diff --git a/src/app/valentina/xml/vpattern.h b/src/app/valentina/xml/vpattern.h index d3a98c638..dd2023ba7 100644 --- a/src/app/valentina/xml/vpattern.h +++ b/src/app/valentina/xml/vpattern.h @@ -156,9 +156,9 @@ private: void PrepareForParse(const Document &parse); void ToolsCommonAttributes(const QDomElement &domElement, quint32 &id); void PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, - qreal &my, QString &typeLine, QString &lineColor); + qreal &my, bool &labelVisible, QString &typeLine, QString &lineColor); void PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, - qreal &my); + qreal &my, bool &labelVisible); void PointsCommonAttributes(const QDomElement &domElement, quint32 &id, qreal &mx, qreal &my); void SplinesCommonAttributes(const QDomElement &domElement, quint32 &id, quint32 &idObject, quint32 &idTool); diff --git a/src/libs/ifc/ifcdef.cpp b/src/libs/ifc/ifcdef.cpp index 1a88d5c34..33e62e8f0 100644 --- a/src/libs/ifc/ifcdef.cpp +++ b/src/libs/ifc/ifcdef.cpp @@ -122,6 +122,7 @@ const QString AttrIdObject = QStringLiteral("idObject"); const QString AttrInLayout = QStringLiteral("inLayout"); const QString AttrRotationAngle = QStringLiteral("rotationAngle"); const QString AttrClosed = QStringLiteral("closed"); +const QString AttrShowLabel = QStringLiteral("showLabel"); const QString TypeLineNone = QStringLiteral("none"); const QString TypeLineLine = QStringLiteral("hair"); diff --git a/src/libs/ifc/ifcdef.h b/src/libs/ifc/ifcdef.h index a6a0df2ec..86cdbb41c 100644 --- a/src/libs/ifc/ifcdef.h +++ b/src/libs/ifc/ifcdef.h @@ -141,6 +141,7 @@ extern const QString AttrSuffix; extern const QString AttrIdObject; extern const QString AttrInLayout; extern const QString AttrClosed; +extern const QString AttrShowLabel; extern const QString TypeLineNone; extern const QString TypeLineLine; diff --git a/src/libs/ifc/schema.qrc b/src/libs/ifc/schema.qrc index 9b12757fb..a60d729ca 100644 --- a/src/libs/ifc/schema.qrc +++ b/src/libs/ifc/schema.qrc @@ -37,6 +37,7 @@ schema/pattern/v0.6.0.xsd schema/pattern/v0.6.1.xsd schema/pattern/v0.6.2.xsd + schema/pattern/v0.6.3.xsd schema/standard_measurements/v0.3.0.xsd schema/standard_measurements/v0.4.0.xsd schema/standard_measurements/v0.4.1.xsd diff --git a/src/libs/ifc/schema/pattern/v0.6.3.xsd b/src/libs/ifc/schema/pattern/v0.6.3.xsd new file mode 100644 index 000000000..3a990fe84 --- /dev/null +++ b/src/libs/ifc/schema/pattern/v0.6.3.xsd @@ -0,0 +1,969 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libs/ifc/xml/vpatternconverter.cpp b/src/libs/ifc/xml/vpatternconverter.cpp index 01edf624e..9bef2aea3 100644 --- a/src/libs/ifc/xml/vpatternconverter.cpp +++ b/src/libs/ifc/xml/vpatternconverter.cpp @@ -58,8 +58,8 @@ class QDomElement; */ const QString VPatternConverter::PatternMinVerStr = QStringLiteral("0.1.0"); -const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.6.2"); -const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.6.2.xsd"); +const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.6.3"); +const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.6.3.xsd"); //VPatternConverter::PatternMinVer; // <== DON'T FORGET TO UPDATE TOO!!!! //VPatternConverter::PatternMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!! @@ -246,6 +246,8 @@ QString VPatternConverter::XSDSchema(int ver) const case (0x000601): return QStringLiteral("://schema/pattern/v0.6.1.xsd"); case (0x000602): + return QStringLiteral("://schema/pattern/v0.6.2.xsd"); + case (0x000603): return CurrentSchema; default: InvalidVersion(ver); @@ -404,6 +406,10 @@ void VPatternConverter::ApplyPatches() ValidateXML(XSDSchema(0x000602), m_convertedFileName); V_FALLTHROUGH case (0x000602): + ToV0_6_3(); + ValidateXML(XSDSchema(0x000603), m_convertedFileName); + V_FALLTHROUGH + case (0x000603): break; default: InvalidVersion(m_ver); @@ -422,7 +428,7 @@ void VPatternConverter::DowngradeToCurrentMaxVersion() bool VPatternConverter::IsReadOnly() const { // Check if attribute readOnly was not changed in file format - Q_STATIC_ASSERT_X(VPatternConverter::PatternMaxVer == CONVERTER_VERSION_CHECK(0, 6, 2), + Q_STATIC_ASSERT_X(VPatternConverter::PatternMaxVer == CONVERTER_VERSION_CHECK(0, 6, 3), "Check attribute readOnly."); // Possibly in future attribute readOnly will change position etc. @@ -846,6 +852,16 @@ void VPatternConverter::ToV0_6_2() Save(); } +//--------------------------------------------------------------------------------------------------------------------- +void VPatternConverter::ToV0_6_3() +{ + // TODO. Delete if minimal supported version is 0.6.3 + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < CONVERTER_VERSION_CHECK(0, 6, 3), + "Time to refactor the code."); + SetVersion(QStringLiteral("0.6.3")); + Save(); +} + //--------------------------------------------------------------------------------------------------------------------- void VPatternConverter::TagUnitToV0_2_0() { diff --git a/src/libs/ifc/xml/vpatternconverter.h b/src/libs/ifc/xml/vpatternconverter.h index bb4dd407a..441cbd584 100644 --- a/src/libs/ifc/xml/vpatternconverter.h +++ b/src/libs/ifc/xml/vpatternconverter.h @@ -53,7 +53,7 @@ public: static const QString PatternMaxVerStr; static const QString CurrentSchema; static Q_DECL_CONSTEXPR const int PatternMinVer = CONVERTER_VERSION_CHECK(0, 1, 0); - static Q_DECL_CONSTEXPR const int PatternMaxVer = CONVERTER_VERSION_CHECK(0, 6, 2); + static Q_DECL_CONSTEXPR const int PatternMaxVer = CONVERTER_VERSION_CHECK(0, 6, 3); protected: virtual int MinVer() const Q_DECL_OVERRIDE; @@ -108,6 +108,7 @@ private: void ToV0_6_0(); void ToV0_6_1(); void ToV0_6_2(); + void ToV0_6_3(); void TagUnitToV0_2_0(); void TagIncrementToV0_2_0(); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp index d16d97ebd..181f6b5f2 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp @@ -106,7 +106,7 @@ VToolCutArc* VToolCutArc::Create(QSharedPointer dialog, VMainGraphic const QString pointName = dialogTool->getPointName(); QString formula = dialogTool->GetFormula(); const quint32 arcId = dialogTool->getArcId(); - VToolCutArc* point = Create(0, pointName, formula, arcId, 5, 10, scene, doc, data, Document::FullParse, + VToolCutArc* point = Create(0, pointName, formula, arcId, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -130,8 +130,8 @@ VToolCutArc* VToolCutArc::Create(QSharedPointer dialog, VMainGraphic * @param parse parser file mode. * @param typeCreation way we create this tool. */ -VToolCutArc* VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VAbstractPattern *doc, +VToolCutArc* VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &formula, quint32 arcId, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { const QSharedPointer arc = data->GeometricObject(arcId); @@ -143,7 +143,10 @@ VToolCutArc* VToolCutArc::Create(const quint32 _id, const QString &pointName, QS QPointF point = arc->CutArc(qApp->toPixel(result), arc1, arc2); quint32 id = _id; + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + auto a1 = QSharedPointer(new VArc(arc1)); auto a2 = QSharedPointer(new VArc(arc2)); if (typeCreation == Source::FromGui) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h index df46da7de..aa3eb0a53 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h @@ -53,8 +53,8 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolCutArc* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCutArc* Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + static VToolCutArc* Create(const quint32 _id, const QString &pointName, QString &formula, quint32 arcId, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static const QString ToolType; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp index def45024c..9cff3d991 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp @@ -109,7 +109,7 @@ VToolCutSpline* VToolCutSpline::Create(QSharedPointer dialog, VMainG const QString pointName = dialogTool->getPointName(); QString formula = dialogTool->GetFormula(); const quint32 splineId = dialogTool->getSplineId(); - VToolCutSpline* point = Create(0, pointName, formula, splineId, 5, 10, scene, doc, data, Document::FullParse, + VToolCutSpline* point = Create(0, pointName, formula, splineId, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -134,7 +134,7 @@ VToolCutSpline* VToolCutSpline::Create(QSharedPointer dialog, VMainG * @param typeCreation way we create this tool. */ VToolCutSpline* VToolCutSpline::Create(const quint32 _id, const QString &pointName, QString &formula, - const quint32 &splineId, const qreal &mx, const qreal &my, + quint32 splineId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { @@ -146,7 +146,10 @@ VToolCutSpline* VToolCutSpline::Create(const quint32 _id, const QString &pointNa QPointF point = spl->CutSpline(qApp->toPixel(result), spl1p2, spl1p3, spl2p2, spl2p3); quint32 id = _id; + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + auto spline1 = QSharedPointer(new VSpline(spl->GetP1(), spl1p2, spl1p3, *p)); auto spline2 = QSharedPointer(new VSpline(*p, spl2p2, spl2p3, spl->GetP4())); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h index d849c2db0..0c62c260e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h @@ -54,7 +54,7 @@ public: static VToolCutSpline *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); static VToolCutSpline *Create(const quint32 _id, const QString &pointName, QString &formula, - const quint32 &splineId, const qreal &mx, const qreal &my, + quint32 splineId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp index 3dadb1f31..b49029f07 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp @@ -113,7 +113,7 @@ VToolCutSplinePath* VToolCutSplinePath::Create(QSharedPointer dialog const QString pointName = dialogTool->getPointName(); QString formula = dialogTool->GetFormula(); const quint32 splinePathId = dialogTool->getSplinePathId(); - VToolCutSplinePath* point = Create(0, pointName, formula, splinePathId, 5, 10, scene, doc, data, + VToolCutSplinePath* point = Create(0, pointName, formula, splinePathId, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -138,7 +138,7 @@ VToolCutSplinePath* VToolCutSplinePath::Create(QSharedPointer dialog * @param typeCreation way we create this tool. */ VToolCutSplinePath* VToolCutSplinePath::Create(const quint32 _id, const QString &pointName, QString &formula, - const quint32 &splinePathId, const qreal &mx, const qreal &my, + quint32 splinePathId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { @@ -151,6 +151,7 @@ VToolCutSplinePath* VToolCutSplinePath::Create(const quint32 _id, const QString VSplinePath *splPath1 = nullptr; VSplinePath *splPath2 = nullptr; VPointF *p = VToolCutSplinePath::CutSplinePath(qApp->toPixel(result), splPath, pointName, &splPath1, &splPath2); + p->SetShowLabel(showLabel); SCASSERT(splPath1 != nullptr) SCASSERT(splPath2 != nullptr) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h index a5b815ae7..8e98848f8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h @@ -56,7 +56,7 @@ public: static VToolCutSplinePath *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); static VToolCutSplinePath *Create(const quint32 _id, const QString &pointName, QString &formula, - const quint32 &splinePathId, const qreal &mx, const qreal &my, + quint32 splinePathId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static const QString ToolType; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp index 250e4cca5..8d3e7c03e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp @@ -251,7 +251,7 @@ VToolAlongLine* VToolAlongLine::Create(QSharedPointer dialog, VMainG const QString lineColor = dialogTool->GetLineColor(); const QString pointName = dialogTool->getPointName(); VToolAlongLine *point = Create(0, pointName, typeLine, lineColor, formula, firstPointId, secondPointId, - 5, 10, scene, doc, data, Document::FullParse, Source::FromGui); + 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -270,6 +270,7 @@ VToolAlongLine* VToolAlongLine::Create(QSharedPointer dialog, VMainG * @param secondPointId id second point of line. * @param mx label bias x axis. * @param my label bias y axis. + * @param showLabel show/hide label. * @param scene pointer to scene. * @param doc dom document container. * @param data container with variables. @@ -278,7 +279,7 @@ VToolAlongLine* VToolAlongLine::Create(QSharedPointer dialog, VMainG */ VToolAlongLine* VToolAlongLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, const QString &lineColor, QString &formula, const quint32 &firstPointId, - const quint32 &secondPointId, const qreal &mx, const qreal &my, + quint32 secondPointId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { @@ -295,15 +296,19 @@ VToolAlongLine* VToolAlongLine::Create(const quint32 _id, const QString &pointNa line.setLength(qApp->toPixel(CheckFormula(_id, formula, data))); quint32 id = _id; + + VPointF *p = new VPointF(line.p2(), pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject( new VPointF(line.p2(), pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(firstPointId, id); data->AddLine(id, secondPointId); } else { - data->UpdateGObject(id, new VPointF(line.p2(), pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(firstPointId, id); data->AddLine(id, secondPointId); if (parse != Document::FullParse) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h index dc873e96a..260f99bef 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h @@ -55,7 +55,7 @@ public: VAbstractPattern *doc, VContainer *data); static VToolAlongLine* Create(const quint32 _id, const QString &pointName, const QString &typeLine, const QString &lineColor, QString &formula, const quint32 &firstPointId, - const quint32 &secondPointId, const qreal &mx, const qreal &my, + quint32 secondPointId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp index 691cfb6ba..be1c5f055 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp @@ -156,7 +156,7 @@ VToolBisector* VToolBisector::Create(QSharedPointer dialog, VMainGra const QString lineColor = dialogTool->GetLineColor(); const QString pointName = dialogTool->getPointName(); VToolBisector *point = Create(0, formula, firstPointId, secondPointId, thirdPointId, typeLine, lineColor, - pointName, 5, 10, scene, doc, data, Document::FullParse, Source::FromGui); + pointName, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -176,17 +176,17 @@ VToolBisector* VToolBisector::Create(QSharedPointer dialog, VMainGra * @param pointName point name. * @param mx label bias x axis. * @param my label bias y axis. + * @param showLabel show/hide label. * @param scene pointer to scene. * @param doc dom document container. * @param data container with variables. * @param parse parser file mode. * @param typeCreation way we create this tool. */ -VToolBisector* VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &firstPointId, - const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine, - const QString &lineColor, const QString &pointName, const qreal &mx, - const qreal &my, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, +VToolBisector* VToolBisector::Create(const quint32 _id, QString &formula, quint32 firstPointId, quint32 secondPointId, + quint32 thirdPointId, const QString &typeLine, const QString &lineColor, + const QString &pointName, qreal mx, qreal my, bool showLabel, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { const QSharedPointer firstPoint = data->GeometricObject(firstPointId); @@ -198,14 +198,18 @@ VToolBisector* VToolBisector::Create(const quint32 _id, QString &formula, const QPointF fPoint = VToolBisector::FindPoint(static_cast(*firstPoint), static_cast(*secondPoint), static_cast(*thirdPoint), qApp->toPixel(result)); quint32 id = _id; + + VPointF *p = new VPointF(fPoint, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(fPoint, pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(secondPointId, id); } else { - data->UpdateGObject(id, new VPointF(fPoint, pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(secondPointId, id); if (parse != Document::FullParse) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h index 185ce7940..05c11acf0 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h @@ -57,12 +57,11 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolBisector* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolBisector* Create(const quint32 _id, QString &formula, const quint32 &firstPointId, - const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine, - const QString &lineColor, const QString &pointName, const qreal &mx, const qreal &my, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation); + static VToolBisector* Create(const quint32 _id, QString &formula, quint32 firstPointId, quint32 secondPointId, + quint32 thirdPointId, const QString &typeLine, const QString &lineColor, + const QString &pointName, qreal mx, qreal my, bool showLabel, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, + const Document &parse, const Source &typeCreation); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::Bisector)}; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp index 28cd9eceb..8a04dd63d 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp @@ -113,7 +113,8 @@ VToolCurveIntersectAxis *VToolCurveIntersectAxis::Create(QSharedPointergetCurveId(); VToolCurveIntersectAxis *point = Create(0, pointName, typeLine, lineColor, formulaAngle, basePointId, - curveId, 5, 10, scene, doc, data, Document::FullParse, Source::FromGui); + curveId, 5, 10, true, scene, doc, data, Document::FullParse, + Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -124,11 +125,11 @@ VToolCurveIntersectAxis *VToolCurveIntersectAxis::Create(QSharedPointer basePoint = data->GeometricObject(basePointId); const qreal angle = CheckFormula(_id, formulaAngle, data); @@ -137,7 +138,10 @@ VToolCurveIntersectAxis *VToolCurveIntersectAxis::Create(const quint32 _id, cons const QPointF fPoint = FindPoint(static_cast(*basePoint), angle, curve); const qreal segLength = curve->GetLengthByPoint(fPoint); quint32 id = _id; + VPointF *p = new VPointF(fPoint, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { id = data->AddGObject(p); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h index e5ca57bf9..2df2fb29e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h @@ -56,8 +56,8 @@ public: static VToolCurveIntersectAxis *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); static VToolCurveIntersectAxis *Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, QString &formulaAngle, const quint32 &basePointId, - const quint32 &curveId, const qreal &mx, const qreal &my, + const QString &lineColor, QString &formulaAngle, quint32 basePointId, + quint32 curveId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp index 5f04f5132..b896febd8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp @@ -120,7 +120,7 @@ VToolEndLine* VToolEndLine::Create(QSharedPointer dialog, VMainGraph const quint32 basePointId = dialogTool->GetBasePointId(); VToolEndLine *point = Create(0, pointName, typeLine, lineColor, formulaLength, formulaAngle, - basePointId, 5, 10, scene, doc, data, Document::FullParse, Source::FromGui); + basePointId, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -140,6 +140,7 @@ VToolEndLine* VToolEndLine::Create(QSharedPointer dialog, VMainGraph * @param basePointId id first point of line. * @param mx label bias x axis. * @param my label bias y axis. + * @param showLabel show/hide label * @param scene pointer to scene. * @param doc dom document container. * @param data container with variables. @@ -149,10 +150,9 @@ VToolEndLine* VToolEndLine::Create(QSharedPointer dialog, VMainGraph */ VToolEndLine* VToolEndLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, const QString &lineColor, QString &formulaLength, QString &formulaAngle, - const quint32 &basePointId, const qreal &mx, const qreal &my, + quint32 basePointId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation) + const Document &parse, const Source &typeCreation) { const QSharedPointer basePoint = data->GeometricObject(basePointId); QLineF line = QLineF(static_cast(*basePoint), QPointF(basePoint->x()+100, basePoint->y())); @@ -160,14 +160,18 @@ VToolEndLine* VToolEndLine::Create(const quint32 _id, const QString &pointName, line.setAngle(CheckFormula(_id, formulaAngle, data)); //First set angle. line.setLength(qApp->toPixel(CheckFormula(_id, formulaLength, data))); quint32 id = _id; + + VPointF *p = new VPointF(line.p2(), pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(line.p2(), pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(basePointId, id); } else { - data->UpdateGObject(id, new VPointF(line.p2(), pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(basePointId, id); if (parse != Document::FullParse) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h index 5c234b382..c063ab959 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h @@ -57,7 +57,7 @@ public: VContainer *data); static VToolEndLine *Create(const quint32 _id, const QString &pointName, const QString &typeLine, const QString &lineColor, QString &formulaLength, QString &formulaAngle, - const quint32 &basePointId, const qreal &mx, const qreal &my, + quint32 basePointId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp index f971340cd..c9a3d541a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp @@ -114,8 +114,8 @@ VToolHeight* VToolHeight::Create(QSharedPointer dialog, VMainGraphic const quint32 p1LineId = dialogTool->GetP1LineId(); const quint32 p2LineId = dialogTool->GetP2LineId(); - VToolHeight *point = Create(0, pointName, typeLine, lineColor, basePointId, p1LineId, p2LineId, 5, 10, scene, doc, - data, Document::FullParse, Source::FromGui); + VToolHeight *point = Create(0, pointName, typeLine, lineColor, basePointId, p1LineId, p2LineId, 5, 10, true, scene, + doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -142,8 +142,8 @@ VToolHeight* VToolHeight::Create(QSharedPointer dialog, VMainGraphic * @return the created tool */ VToolHeight* VToolHeight::Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, const quint32 &basePointId, const quint32 &p1LineId, - const quint32 &p2LineId, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + const QString &lineColor, quint32 basePointId, quint32 p1LineId, + quint32 p2LineId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { @@ -154,16 +154,20 @@ VToolHeight* VToolHeight::Create(const quint32 _id, const QString &pointName, co QPointF pHeight = FindPoint(QLineF(static_cast(*p1Line), static_cast(*p2Line)), static_cast(*basePoint)); quint32 id = _id; + + VPointF *p = new VPointF(pHeight, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(pHeight, pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(basePointId, id); data->AddLine(p1LineId, id); data->AddLine(p2LineId, id); } else { - data->UpdateGObject(id, new VPointF(pHeight, pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(basePointId, id); data->AddLine(p1LineId, id); data->AddLine(p2LineId, id); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h index c22e50215..b66d0682e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h @@ -56,8 +56,8 @@ public: static VToolHeight *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); static VToolHeight *Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, const quint32 &basePointId, const quint32 &p1LineId, - const quint32 &p2LineId, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + const QString &lineColor, quint32 basePointId, quint32 p1LineId, + quint32 p2LineId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static QPointF FindPoint(const QLineF &line, const QPointF &point); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp index 8bb55fedb..d185c708c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp @@ -100,7 +100,7 @@ VToolLineIntersectAxis *VToolLineIntersectAxis::Create(QSharedPointerGetSecondPointId(); VToolLineIntersectAxis *point = Create(0, pointName, typeLine, lineColor, formulaAngle, - basePointId, firstPointId, secondPointId, 5, 10, + basePointId, firstPointId, secondPointId, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -112,9 +112,9 @@ VToolLineIntersectAxis *VToolLineIntersectAxis::Create(QSharedPointerSetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(fPoint, pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(basePointId, id); data->AddLine(firstPointId, id); data->AddLine(id, secondPointId); } else { - data->UpdateGObject(id, new VPointF(fPoint, pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(basePointId, id); data->AddLine(firstPointId, id); data->AddLine(id, secondPointId); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h index 6547c1f42..33f06fcb1 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h @@ -56,9 +56,9 @@ public: static VToolLineIntersectAxis *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); static VToolLineIntersectAxis *Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, QString &formulaAngle, const quint32 &basePointId, - const quint32 &firstPointId, const quint32 &secondPointId, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + const QString &lineColor, QString &formulaAngle, quint32 basePointId, + quint32 firstPointId, quint32 secondPointId, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp index e212ff69e..c576b04ff 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp @@ -121,7 +121,7 @@ VToolNormal* VToolNormal::Create(QSharedPointer dialog, VMainGraphic const QString pointName = dialogTool->getPointName(); const qreal angle = dialogTool->GetAngle(); VToolNormal *point = Create(0, formula, firstPointId, secondPointId, typeLine, lineColor, pointName, angle, 5, 10, - scene, doc, data, Document::FullParse, Source::FromGui); + true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -141,18 +141,18 @@ VToolNormal* VToolNormal::Create(QSharedPointer dialog, VMainGraphic * @param angle additional angle. * @param mx label bias x axis. * @param my label bias y axis. + * @param showLabel show/hide label. * @param scene pointer to scene. * @param doc dom document container. * @param data container with variables. * @param parse parser file mode. * @param typeCreation way we create this tool. */ -VToolNormal* VToolNormal::Create(const quint32 _id, QString &formula, const quint32 &firstPointId, - const quint32 &secondPointId, const QString &typeLine, const QString &lineColor, - const QString &pointName, const qreal angle, const qreal &mx, const qreal &my, +VToolNormal* VToolNormal::Create(const quint32 _id, QString &formula, quint32 firstPointId, quint32 secondPointId, + const QString &typeLine, const QString &lineColor, + const QString &pointName, qreal angle, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation) + const Document &parse, const Source &typeCreation) { const QSharedPointer firstPoint = data->GeometricObject(firstPointId); const QSharedPointer secondPoint = data->GeometricObject(secondPointId); @@ -162,14 +162,18 @@ VToolNormal* VToolNormal::Create(const quint32 _id, QString &formula, const quin QPointF fPoint = VToolNormal::FindPoint(static_cast(*firstPoint), static_cast(*secondPoint), qApp->toPixel(result), angle); quint32 id = _id; + + VPointF *p = new VPointF(fPoint, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(fPoint, pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(firstPointId, id); } else { - data->UpdateGObject(id, new VPointF(fPoint, pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(firstPointId, id); if (parse != Document::FullParse) { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h index a02d8e0b8..bbfcd32d2 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h @@ -54,12 +54,11 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolNormal* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolNormal* Create(const quint32 _id, QString &formula, const quint32 &firstPointId, - const quint32 &secondPointId, const QString &typeLine, const QString &lineColor, - const QString &pointName, const qreal angle, const qreal &mx, const qreal &my, + static VToolNormal* Create(const quint32 _id, QString &formula, quint32 firstPointId, + quint32 secondPointId, const QString &typeLine, const QString &lineColor, + const QString &pointName, const qreal angle, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation); + const Document &parse, const Source &typeCreation); static QPointF FindPoint(const QPointF &firstPoint, const QPointF &secondPoint, const qreal &length, const qreal &angle = 0); static const QString ToolType; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp index 76ca60a49..496f0fc06 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp @@ -170,7 +170,7 @@ VToolShoulderPoint* VToolShoulderPoint::Create(QSharedPointer dialog const QString lineColor = dialogTool->GetLineColor(); const QString pointName = dialogTool->getPointName(); VToolShoulderPoint * point = Create(0, formula, p1Line, p2Line, pShoulder, typeLine, lineColor, pointName, 5, - 10, scene, doc, data, Document::FullParse, Source::FromGui); + 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -190,6 +190,7 @@ VToolShoulderPoint* VToolShoulderPoint::Create(QSharedPointer dialog * @param pointName point name. * @param mx label bias x axis. * @param my label bias y axis. + * @param showLabel show/hide label. * @param scene pointer to scene. * @param doc dom document container. * @param data container with variables. @@ -197,11 +198,11 @@ VToolShoulderPoint* VToolShoulderPoint::Create(QSharedPointer dialog * @param typeCreation way we create this tool. * @return the created tool */ -VToolShoulderPoint* VToolShoulderPoint::Create(const quint32 _id, QString &formula, const quint32 &p1Line, - const quint32 &p2Line, const quint32 &pShoulder, const QString &typeLine, - const QString &lineColor, const QString &pointName, const qreal &mx, - const qreal &my, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation) +VToolShoulderPoint* VToolShoulderPoint::Create(const quint32 _id, QString &formula, quint32 p1Line, quint32 p2Line, + quint32 pShoulder, const QString &typeLine, const QString &lineColor, + const QString &pointName, qreal mx, qreal my, bool showLabel, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, + const Document &parse, const Source &typeCreation) { const QSharedPointer firstPoint = data->GeometricObject(p1Line); const QSharedPointer secondPoint = data->GeometricObject(p2Line); @@ -213,15 +214,19 @@ VToolShoulderPoint* VToolShoulderPoint::Create(const quint32 _id, QString &formu static_cast(*secondPoint), static_cast(*shoulderPoint), qApp->toPixel(result)); quint32 id = _id; + + VPointF *p = new VPointF(fPoint, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(fPoint, pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(p1Line, id); data->AddLine(p2Line, id); } else { - data->UpdateGObject(id, new VPointF(fPoint, pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(p1Line, id); data->AddLine(p2Line, id); if (parse != Document::FullParse) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h index 18ae1c0c9..23897c804 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h @@ -57,9 +57,9 @@ public: const qreal &length); static VToolShoulderPoint* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolShoulderPoint* Create(const quint32 _id, QString &formula, const quint32 &p1Line, const quint32 &p2Line, - const quint32 &pShoulder, const QString &typeLine, const QString &lineColor, - const QString &pointName, const qreal &mx, const qreal &my, + static VToolShoulderPoint* Create(const quint32 _id, QString &formula, quint32 p1Line, quint32 p2Line, + quint32 pShoulder, const QString &typeLine, const QString &lineColor, + const QString &pointName, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp index 8fc6a6f75..baa90523c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp @@ -115,8 +115,8 @@ VToolLineIntersect* VToolLineIntersect::Create(QSharedPointer dialog const quint32 p1Line2Id = dialogTool->GetP1Line2(); const quint32 p2Line2Id = dialogTool->GetP2Line2(); const QString pointName = dialogTool->getPointName(); - VToolLineIntersect* point = Create(0, p1Line1Id, p2Line1Id, p1Line2Id, p2Line2Id, pointName, 5, 10, scene, doc, - data, Document::FullParse, Source::FromGui); + VToolLineIntersect* point = Create(0, p1Line1Id, p2Line1Id, p1Line2Id, p2Line2Id, pointName, 5, 10, true, scene, + doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -142,11 +142,11 @@ VToolLineIntersect* VToolLineIntersect::Create(QSharedPointer dialog * @param typeCreation way we create this tool. * @return the created tool */ -VToolLineIntersect* VToolLineIntersect::Create(const quint32 _id, const quint32 &p1Line1Id, const quint32 &p2Line1Id, - const quint32 &p1Line2Id, const quint32 &p2Line2Id, - const QString &pointName, const qreal &mx, const qreal &my, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolLineIntersect* VToolLineIntersect::Create(const quint32 _id, quint32 p1Line1Id, quint32 p2Line1Id, + quint32 p1Line2Id, quint32 p2Line2Id, const QString &pointName, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, + const Source &typeCreation) { const QSharedPointer p1Line1 = data->GeometricObject(p1Line1Id); const QSharedPointer p2Line1 = data->GeometricObject(p2Line1Id); @@ -160,9 +160,13 @@ VToolLineIntersect* VToolLineIntersect::Create(const quint32 _id, const quint32 if (intersect == QLineF::UnboundedIntersection || intersect == QLineF::BoundedIntersection) { quint32 id = _id; + + VPointF *p = new VPointF(fPoint, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(fPoint, pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(p1Line1Id, id); data->AddLine(id, p2Line1Id); data->AddLine(p1Line2Id, id); @@ -170,7 +174,7 @@ VToolLineIntersect* VToolLineIntersect::Create(const quint32 _id, const quint32 } else { - data->UpdateGObject(id, new VPointF(fPoint, pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(p1Line1Id, id); data->AddLine(id, p2Line1Id); data->AddLine(p1Line2Id, id); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h index cf7820099..5db39bfe8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h @@ -53,9 +53,9 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolLineIntersect *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolLineIntersect *Create(const quint32 _id, const quint32 &p1Line1Id, const quint32 &p2Line1Id, - const quint32 &p1Line2Id, const quint32 &p2Line2Id, const QString &pointName, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + static VToolLineIntersect *Create(const quint32 _id, quint32 p1Line1Id, quint32 p2Line1Id, + quint32 p1Line2Id, quint32 p2Line2Id, const QString &pointName, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static const QString ToolType; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp index f1e4009ee..f722b4803 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp @@ -89,7 +89,7 @@ VToolPointFromArcAndTangent *VToolPointFromArcAndTangent::Create(QSharedPointer< const quint32 tangentPointId = dialogTool->GetTangentPointId(); const CrossCirclesPoint pType = dialogTool->GetCrossCirclesPoint(); const QString pointName = dialogTool->getPointName(); - VToolPointFromArcAndTangent *point = Create(0, pointName, arcId, tangentPointId, pType, 5, 10, scene, doc, + VToolPointFromArcAndTangent *point = Create(0, pointName, arcId, tangentPointId, pType, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -101,8 +101,8 @@ VToolPointFromArcAndTangent *VToolPointFromArcAndTangent::Create(QSharedPointer< //--------------------------------------------------------------------------------------------------------------------- VToolPointFromArcAndTangent *VToolPointFromArcAndTangent::Create(const quint32 _id, const QString &pointName, quint32 arcId, quint32 tangentPointId, - CrossCirclesPoint crossPoint, const qreal &mx, - const qreal &my, VMainGraphicsScene *scene, + CrossCirclesPoint crossPoint, qreal mx, + qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { @@ -111,13 +111,17 @@ VToolPointFromArcAndTangent *VToolPointFromArcAndTangent::Create(const quint32 _ const QPointF point = VToolPointFromArcAndTangent::FindPoint(static_cast(tPoint), &arc, crossPoint); quint32 id = _id; + + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(point, pointName, mx, my)); + id = data->AddGObject(p); } else { - data->UpdateGObject(id, new VPointF(point, pointName, mx, my)); + data->UpdateGObject(id, p); if (parse != Document::FullParse) { doc->UpdateToolData(id, data); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h index 9e9b0f8ea..0fec16103 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h @@ -52,9 +52,10 @@ public: static VToolPointFromArcAndTangent *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); static VToolPointFromArcAndTangent *Create(const quint32 _id, const QString &pointName, quint32 arcId, - quint32 tangentPointId, CrossCirclesPoint crossPoint, const qreal &mx, - const qreal &my, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation); + quint32 tangentPointId, CrossCirclesPoint crossPoint, qreal mx, + qreal my, bool showLabel, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, + const Source &typeCreation); static QPointF FindPoint(const QPointF &p, const VArc *arc, const CrossCirclesPoint pType); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp index feedfe8ad..e26dc783c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp @@ -95,7 +95,7 @@ VToolPointFromCircleAndTangent *VToolPointFromCircleAndTangent::Create(QSharedPo const CrossCirclesPoint pType = dialogTool->GetCrossCirclesPoint(); const QString pointName = dialogTool->getPointName(); VToolPointFromCircleAndTangent *point = Create(0, pointName, circleCenterId, circleRadius, tangentPointId, pType, - 5, 10, scene, doc, data, Document::FullParse, Source::FromGui); + 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -107,8 +107,9 @@ VToolPointFromCircleAndTangent *VToolPointFromCircleAndTangent::Create(QSharedPo VToolPointFromCircleAndTangent *VToolPointFromCircleAndTangent::Create(const quint32 _id, const QString &pointName, quint32 circleCenterId, QString &circleRadius, quint32 tangentPointId, - CrossCirclesPoint crossPoint, const qreal &mx, - const qreal &my, VMainGraphicsScene *scene, + CrossCirclesPoint crossPoint, qreal mx, + qreal my, bool showLabel, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) @@ -120,13 +121,17 @@ VToolPointFromCircleAndTangent *VToolPointFromCircleAndTangent::Create(const qui const QPointF point = VToolPointFromCircleAndTangent::FindPoint(static_cast(tPoint), static_cast(cPoint), radius, crossPoint); quint32 id = _id; + + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(point, pointName, mx, my)); + id = data->AddGObject(p); } else { - data->UpdateGObject(id, new VPointF(point, pointName, mx, my)); + data->UpdateGObject(id, p); if (parse != Document::FullParse) { doc->UpdateToolData(id, data); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h index 892a54094..769c1b823 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h @@ -54,7 +54,7 @@ public: VAbstractPattern *doc, VContainer *data); static VToolPointFromCircleAndTangent *Create(const quint32 _id, const QString &pointName, quint32 circleCenterId, QString &circleRadius, quint32 tangentPointId, - CrossCirclesPoint crossPoint, const qreal &mx, const qreal &my, + CrossCirclesPoint crossPoint, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static QPointF FindPoint(const QPointF &p, const QPointF ¢er, qreal radius, const CrossCirclesPoint crossPoint); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp index 966b50da8..ef2dec366 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp @@ -175,8 +175,8 @@ VToolPointOfContact* VToolPointOfContact::Create(QSharedPointer dial const quint32 firstPointId = dialogTool->GetFirstPoint(); const quint32 secondPointId = dialogTool->GetSecondPoint(); const QString pointName = dialogTool->getPointName(); - VToolPointOfContact *point = Create(0, radius, center, firstPointId, secondPointId, pointName, 5, 10, scene, doc, - data, Document::FullParse, Source::FromGui); + VToolPointOfContact *point = Create(0, radius, center, firstPointId, secondPointId, pointName, 5, 10, true, scene, + doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -201,9 +201,9 @@ VToolPointOfContact* VToolPointOfContact::Create(QSharedPointer dial * @param parse parser file mode. * @param typeCreation way we create this tool. */ -VToolPointOfContact* VToolPointOfContact::Create(const quint32 _id, QString &radius, const quint32 ¢er, - const quint32 &firstPointId, const quint32 &secondPointId, - const QString &pointName, const qreal &mx, const qreal &my, +VToolPointOfContact* VToolPointOfContact::Create(const quint32 _id, QString &radius, quint32 center, + quint32 firstPointId, quint32 secondPointId, + const QString &pointName, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { @@ -216,16 +216,20 @@ VToolPointOfContact* VToolPointOfContact::Create(const quint32 _id, QString &rad QPointF fPoint = VToolPointOfContact::FindPoint(qApp->toPixel(result), static_cast(*centerP), static_cast(*firstP), static_cast(*secondP)); quint32 id = _id; + + VPointF *p = new VPointF(fPoint, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(fPoint, pointName, mx, my)); + id = data->AddGObject(p); data->AddLine(firstPointId, id); data->AddLine(secondPointId, id); data->AddLine(center, id); } else { - data->UpdateGObject(id, new VPointF(fPoint, pointName, mx, my)); + data->UpdateGObject(id, p); data->AddLine(firstPointId, id); data->AddLine(secondPointId, id); data->AddLine(center, id); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h index b08b57bd5..545542090 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h @@ -57,10 +57,10 @@ public: const QPointF &secondPoint); static VToolPointOfContact* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointOfContact* Create(const quint32 _id, QString &radius, const quint32 ¢er, - const quint32 &firstPointId, const quint32 &secondPointId, + static VToolPointOfContact* Create(const quint32 _id, QString &radius, quint32 center, + quint32 firstPointId, quint32 secondPointId, const QString &pointName, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static const QString ToolType; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp index 871ede5b7..5e859b528 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp @@ -105,7 +105,7 @@ VToolPointOfIntersection *VToolPointOfIntersection::Create(QSharedPointerGetFirstPointId(); const quint32 secondPointId = dialogTool->GetSecondPointId(); const QString pointName = dialogTool->getPointName(); - VToolPointOfIntersection *point = Create(0, pointName, firstPointId, secondPointId, 5, 10, scene, doc, + VToolPointOfIntersection *point = Create(0, pointName, firstPointId, secondPointId, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -131,24 +131,27 @@ VToolPointOfIntersection *VToolPointOfIntersection::Create(QSharedPointer firstPoint = data->GeometricObject(firstPointId); const QSharedPointer secondPoint = data->GeometricObject(secondPointId); QPointF point(firstPoint->x(), secondPoint->y()); quint32 id = _id; + + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(point, pointName, mx, my)); + id = data->AddGObject(p); } else { - data->UpdateGObject(id, new VPointF(point, pointName, mx, my)); + data->UpdateGObject(id, p); if (parse != Document::FullParse) { doc->UpdateToolData(id, data); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h index 1e8a61fff..800282974 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h @@ -53,8 +53,8 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolPointOfIntersection *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointOfIntersection *Create(const quint32 _id, const QString &pointName, const quint32 &firstPointId, - const quint32 &secondPointId, const qreal &mx, const qreal &my, + static VToolPointOfIntersection *Create(const quint32 _id, const QString &pointName, quint32 firstPointId, + quint32 secondPointId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static const QString ToolType; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp index 824eb7636..a0a24032b 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp @@ -89,7 +89,7 @@ VToolPointOfIntersectionArcs *VToolPointOfIntersectionArcs::Create(QSharedPointe const quint32 secondArcId = dialogTool->GetSecondArcId(); const CrossCirclesPoint pType = dialogTool->GetCrossArcPoint(); const QString pointName = dialogTool->getPointName(); - VToolPointOfIntersectionArcs *point = Create(0, pointName, firstArcId, secondArcId, pType, 5, 10, scene, doc, + VToolPointOfIntersectionArcs *point = Create(0, pointName, firstArcId, secondArcId, pType, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -100,25 +100,28 @@ VToolPointOfIntersectionArcs *VToolPointOfIntersectionArcs::Create(QSharedPointe //--------------------------------------------------------------------------------------------------------------------- VToolPointOfIntersectionArcs *VToolPointOfIntersectionArcs::Create(const quint32 _id, const QString &pointName, - const quint32 &firstArcId, - const quint32 &secondArcId, CrossCirclesPoint pType, - const qreal &mx, const qreal &my, - VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, - const Source &typeCreation) + quint32 firstArcId, quint32 secondArcId, + CrossCirclesPoint pType, qreal mx, qreal my, + bool showLabel, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, + const Document &parse, const Source &typeCreation) { const QSharedPointer firstArc = data->GeometricObject(firstArcId); const QSharedPointer secondArc = data->GeometricObject(secondArcId); const QPointF point = FindPoint(firstArc.data(), secondArc.data(), pType); quint32 id = _id; + + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(point, pointName, mx, my)); + id = data->AddGObject(p); } else { - data->UpdateGObject(id, new VPointF(point, pointName, mx, my)); + data->UpdateGObject(id, p); if (parse != Document::FullParse) { doc->UpdateToolData(id, data); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h index 779a145f5..b4cc84af8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h @@ -52,9 +52,9 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolPointOfIntersectionArcs *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointOfIntersectionArcs *Create(const quint32 _id, const QString &pointName, const quint32 &firstArcId, - const quint32 &secondArcId, CrossCirclesPoint pType, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + static VToolPointOfIntersectionArcs *Create(const quint32 _id, const QString &pointName, quint32 firstArcId, + quint32 secondArcId, CrossCirclesPoint pType, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static QPointF FindPoint(const VArc *arc1, const VArc *arc2, const CrossCirclesPoint pType); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp index e95b672ae..68e7cb236 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp @@ -103,8 +103,8 @@ VToolPointOfIntersectionCircles *VToolPointOfIntersectionCircles::Create(QShared const CrossCirclesPoint pType = dialogTool->GetCrossCirclesPoint(); const QString pointName = dialogTool->getPointName(); VToolPointOfIntersectionCircles *point = Create(0, pointName, firstCircleCenterId, secondCircleCenterId, - firstCircleRadius, secondCircleRadius, pType, 5, 10, scene, doc, - data, Document::FullParse, Source::FromGui); + firstCircleRadius, secondCircleRadius, pType, 5, 10, true, scene, + doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -118,8 +118,9 @@ VToolPointOfIntersectionCircles *VToolPointOfIntersectionCircles::Create(const q quint32 secondCircleCenterId, QString &firstCircleRadius, QString &secondCircleRadius, - CrossCirclesPoint crossPoint, const qreal &mx, - const qreal &my, VMainGraphicsScene *scene, + CrossCirclesPoint crossPoint, qreal mx, + qreal my, bool showLabel, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) @@ -133,13 +134,17 @@ VToolPointOfIntersectionCircles *VToolPointOfIntersectionCircles::Create(const q const QPointF point = FindPoint(static_cast(c1Point), static_cast(c2Point), calcC1Radius, calcC2Radius, crossPoint); quint32 id = _id; + + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(point, pointName, mx, my)); + id = data->AddGObject(p); } else { - data->UpdateGObject(id, new VPointF(point, pointName, mx, my)); + data->UpdateGObject(id, p); if (parse != Document::FullParse) { doc->UpdateToolData(id, data); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h index f961be30e..75f42229e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h @@ -56,7 +56,7 @@ public: quint32 firstCircleCenterId, quint32 secondCircleCenterId, QString &firstCircleRadius, QString &secondCircleRadius, CrossCirclesPoint crossPoint, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static QPointF FindPoint(const QPointF &c1Point, const QPointF &c2Point, qreal c1Radius, qreal c2Radius, diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp index cf4d5175f..5e704cb72 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp @@ -97,7 +97,7 @@ VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(QSharedPo const HCrossCurvesPoint hCrossPoint = dialogTool->GetHCrossPoint(); const QString pointName = dialogTool->getPointName(); VToolPointOfIntersectionCurves *point = Create(0, pointName, firstCurveId, secondCurveId, vCrossPoint, hCrossPoint, - 5, 10, scene, doc, data, Document::FullParse, Source::FromGui); + 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -109,8 +109,9 @@ VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(QSharedPo VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(const quint32 _id, const QString &pointName, quint32 firstCurveId, quint32 secondCurveId, VCrossCurvesPoint vCrossPoint, - HCrossCurvesPoint hCrossPoint, const qreal &mx, - const qreal &my, VMainGraphicsScene *scene, + HCrossCurvesPoint hCrossPoint,qreal mx, + qreal my, bool showLabel, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) @@ -121,13 +122,17 @@ VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(const qui const QPointF point = VToolPointOfIntersectionCurves::FindPoint(curve1->GetPoints(), curve2->GetPoints(), vCrossPoint, hCrossPoint); quint32 id = _id; + + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(point, pointName, mx, my)); + id = data->AddGObject(p); } else { - data->UpdateGObject(id, new VPointF(point, pointName, mx, my)); + data->UpdateGObject(id, p); if (parse != Document::FullParse) { doc->UpdateToolData(id, data); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h index 57e69153e..2db1b7dba 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h @@ -55,7 +55,7 @@ public: static VToolPointOfIntersectionCurves *Create(const quint32 _id, const QString &pointName, quint32 firstCurveId, quint32 secondCurveId, VCrossCurvesPoint vCrossPoint, HCrossCurvesPoint hCrossPoint, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static QPointF FindPoint(const QVector &curve1Points, const QVector &curve2Points, diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index eab9beeda..8fe6d6ddc 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -44,6 +44,7 @@ #include #include "../../../../undocommands/label/movelabel.h" +#include "../../../../undocommands/label/showlabel.h" #include "../ifc/exception/vexception.h" #include "../ifc/exception/vexceptionbadid.h" #include "../ifc/ifcdef.h" @@ -310,6 +311,16 @@ void VToolSinglePoint::SaveOptions(QDomElement &tag, QSharedPointer &o doc->SetAttribute(tag, AttrName, point->name()); doc->SetAttribute(tag, AttrMx, qApp->fromPixel(point->mx())); doc->SetAttribute(tag, AttrMy, qApp->fromPixel(point->my())); + doc->SetAttribute(tag, AttrShowLabel, point->IsShowLabel()); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VToolSinglePoint::ChangeLabelVisibility(quint32 id, bool visible) +{ + if (id == m_id) + { + qApp->getUndoStack()->push(new ShowLabel(doc, id, visible)); + } } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h index d913d3638..cb4479bbb 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h @@ -88,6 +88,7 @@ protected: virtual void keyReleaseEvent(QKeyEvent * event) Q_DECL_OVERRIDE; virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; + virtual void ChangeLabelVisibility(quint32 id, bool visible); private: Q_DISABLE_COPY(VToolSinglePoint) }; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp index 12f95cce9..73a616a60 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp @@ -114,7 +114,7 @@ VToolTriangle* VToolTriangle::Create(QSharedPointer dialog, VMainGra const quint32 firstPointId = dialogTool->GetFirstPointId(); const quint32 secondPointId = dialogTool->GetSecondPointId(); const QString pointName = dialogTool->getPointName(); - VToolTriangle* point = Create(0, pointName, axisP1Id, axisP2Id, firstPointId, secondPointId, 5, 10, + VToolTriangle* point = Create(0, pointName, axisP1Id, axisP2Id, firstPointId, secondPointId, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -141,9 +141,9 @@ VToolTriangle* VToolTriangle::Create(QSharedPointer dialog, VMainGra * @param typeCreation way we create this tool. * @return the created tool */ -VToolTriangle* VToolTriangle::Create(const quint32 _id, const QString &pointName, const quint32 &axisP1Id, - const quint32 &axisP2Id, const quint32 &firstPointId, const quint32 &secondPointId, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VAbstractPattern *doc, +VToolTriangle* VToolTriangle::Create(const quint32 _id, const QString &pointName, quint32 axisP1Id, quint32 axisP2Id, + quint32 firstPointId, quint32 secondPointId, qreal mx, qreal my, bool showLabel, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { const QSharedPointer axisP1 = data->GeometricObject(axisP1Id); @@ -154,13 +154,17 @@ VToolTriangle* VToolTriangle::Create(const quint32 _id, const QString &pointName QPointF point = FindPoint(static_cast(*axisP1), static_cast(*axisP2), static_cast(*firstPoint), static_cast(*secondPoint)); quint32 id = _id; + + VPointF *p = new VPointF(point, pointName, mx, my); + p->SetShowLabel(showLabel); + if (typeCreation == Source::FromGui) { - id = data->AddGObject(new VPointF(point, pointName, mx, my)); + id = data->AddGObject(p); } else { - data->UpdateGObject(id, new VPointF(point, pointName, mx, my)); + data->UpdateGObject(id, p); if (parse != Document::FullParse) { doc->UpdateToolData(id, data); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h index 4d00789f2..d0b1d9b86 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h @@ -55,9 +55,9 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolTriangle *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolTriangle *Create(const quint32 _id, const QString &pointName, const quint32 &axisP1Id, - const quint32 &axisP2Id, const quint32 &firstPointId, const quint32 &secondPointId, - const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VAbstractPattern *doc, + static VToolTriangle *Create(const quint32 _id, const QString &pointName, quint32 axisP1Id, + quint32 axisP2Id, quint32 firstPointId, quint32 secondPointId, + qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static QPointF FindPoint(const QPointF &axisP1, const QPointF &axisP2, const QPointF &firstPoint, const QPointF &secondPoint); diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.h b/src/libs/vtools/tools/drawTools/vdrawtool.h index 266fc7ea7..c2169c25c 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.h +++ b/src/libs/vtools/tools/drawTools/vdrawtool.h @@ -82,7 +82,6 @@ public slots: virtual void DetailsMode(bool mode); protected slots: virtual void ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID)=0; - virtual void ChangeLabelVisibility(quint32 id, bool visible); protected: enum class RemoveOption : bool {Disable = false, Enable = true}; @@ -108,6 +107,7 @@ protected: void ReadAttributes(); virtual void ReadToolAttributes(const QDomElement &domElement)=0; + virtual void ChangeLabelVisibility(quint32 id, bool visible); template void ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemId, @@ -151,16 +151,7 @@ void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemI QAction *actionShowLabel = menu.addAction(tr("Show label")); actionShowLabel->setCheckable(true); - - try - { - const QSharedPointer point = VAbstractTool::data.GeometricObject(itemId); - actionShowLabel->setChecked(point->IsShowLabel()); - } - catch(const VExceptionBadId &) - { - actionShowLabel->setVisible(false); - } + actionShowLabel->setChecked(IsLabelVisible(itemId)); QAction *actionRemove = menu.addAction(QIcon::fromTheme("edit-delete"), tr("Delete")); if (showRemove == RemoveOption::Enable) @@ -213,7 +204,7 @@ void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemI } else if (selectedAction == actionShowLabel) { - SetLabelVisible(itemId, selectedAction->isChecked()); + ChangeLabelVisibility(itemId, selectedAction->isChecked()); } } diff --git a/src/libs/vtools/undocommands/label/showlabel.cpp b/src/libs/vtools/undocommands/label/showlabel.cpp new file mode 100644 index 000000000..485099147 --- /dev/null +++ b/src/libs/vtools/undocommands/label/showlabel.cpp @@ -0,0 +1,95 @@ +/************************************************************************ + ** + ** @file + ** @author Roman Telezhynskyi + ** @date 17 9, 2017 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2017 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include "showlabel.h" + +#include + +#include "../ifc/xml/vabstractpattern.h" +#include "../vmisc/logging.h" +#include "../vwidgets/vmaingraphicsview.h" +#include "../vmisc/vabstractapplication.h" +#include "../vtools/tools/drawTools/vdrawtool.h" + +//--------------------------------------------------------------------------------------------------------------------- +ShowLabel::ShowLabel(VAbstractPattern *doc, quint32 id, bool visible, QUndoCommand *parent) + : VUndoCommand(QDomElement(), doc, parent), + m_visible(visible), + m_oldVisible(true), + m_scene(qApp->getCurrentScene()) +{ + setText(tr("toggle label")); + + nodeId = id; + + QDomElement domElement = doc->elementById(nodeId, VAbstractPattern::TagPoint); + if (domElement.isElement()) + { + m_oldVisible = doc->GetParametrBool(domElement, AttrShowLabel, trueStr); + } + else + { + qCDebug(vUndo, "Can't find point with id = %u.", nodeId); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void ShowLabel::undo() +{ + qCDebug(vUndo, "Undo."); + + Do(m_oldVisible); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ShowLabel::redo() +{ + qCDebug(vUndo, "Redo."); + + Do(m_visible); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ShowLabel::Do(bool visible) +{ + QDomElement domElement = doc->elementById(nodeId, VAbstractPattern::TagPoint); + if (domElement.isElement()) + { + doc->SetAttribute(domElement, AttrShowLabel, QString().setNum(visible)); + + VMainGraphicsView::NewSceneRect(m_scene, qApp->getSceneView()); + if (VDrawTool *tool = qobject_cast(VAbstractPattern::getTool(nodeId))) + { + tool->SetLabelVisible(nodeId, visible); + } + } + else + { + qCDebug(vUndo, "Can't find point with id = %u.", nodeId); + } +} diff --git a/src/libs/vtools/undocommands/label/showlabel.h b/src/libs/vtools/undocommands/label/showlabel.h new file mode 100644 index 000000000..540b43c0a --- /dev/null +++ b/src/libs/vtools/undocommands/label/showlabel.h @@ -0,0 +1,55 @@ +/************************************************************************ + ** + ** @file + ** @author Roman Telezhynskyi + ** @date 17 9, 2017 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2017 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#ifndef SHOWLABEL_H +#define SHOWLABEL_H + +#include "../vundocommand.h" + +class QGraphicsScene; + +class ShowLabel : public VUndoCommand +{ +public: + ShowLabel(VAbstractPattern *doc, quint32 id, bool visible, + QUndoCommand *parent = nullptr); + virtual ~ShowLabel()=default; + + virtual void undo() Q_DECL_OVERRIDE; + virtual void redo() Q_DECL_OVERRIDE; +private: + Q_DISABLE_COPY(ShowLabel) + bool m_visible; + bool m_oldVisible; + //Need for resizing scene rect + QGraphicsScene *m_scene; + + void Do(bool visible); +}; + +#endif // SHOWLABEL_H diff --git a/src/libs/vtools/undocommands/undocommands.pri b/src/libs/vtools/undocommands/undocommands.pri index b77b22ae9..731009a06 100644 --- a/src/libs/vtools/undocommands/undocommands.pri +++ b/src/libs/vtools/undocommands/undocommands.pri @@ -24,7 +24,8 @@ HEADERS += \ $$PWD/movepiece.h \ $$PWD/savepieceoptions.h \ $$PWD/togglepieceinlayout.h \ - $$PWD/savepiecepathoptions.h + $$PWD/savepiecepathoptions.h \ + $$PWD/label/showlabel.h SOURCES += \ $$PWD/addtocalc.cpp \ @@ -49,4 +50,5 @@ SOURCES += \ $$PWD/movepiece.cpp \ $$PWD/savepieceoptions.cpp \ $$PWD/togglepieceinlayout.cpp \ - $$PWD/savepiecepathoptions.cpp + $$PWD/savepiecepathoptions.cpp \ + $$PWD/label/showlabel.cpp From e7db934fb56e7687070434bd95df3395ca3f09d4 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 18 Sep 2017 11:37:23 +0300 Subject: [PATCH 09/12] Refactor tool clases to pass data in structure. --HG-- branch : feature --- src/app/valentina/mainwindow.cpp | 16 +- src/app/valentina/xml/vpattern.cpp | 1279 +++++++++-------- src/app/valentina/xml/vpattern.h | 8 +- .../operation/flipping/vabstractflipping.cpp | 77 +- .../operation/flipping/vabstractflipping.h | 5 +- .../flipping/vtoolflippingbyaxis.cpp | 67 +- .../operation/flipping/vtoolflippingbyaxis.h | 23 +- .../flipping/vtoolflippingbyline.cpp | 70 +- .../operation/flipping/vtoolflippingbyline.h | 24 +- .../operation/vabstractoperation.cpp | 11 +- .../drawTools/operation/vabstractoperation.h | 17 +- .../tools/drawTools/operation/vtoolmove.cpp | 139 +- .../tools/drawTools/operation/vtoolmove.h | 22 +- .../drawTools/operation/vtoolrotation.cpp | 136 +- .../tools/drawTools/operation/vtoolrotation.h | 22 +- .../drawTools/toolcurve/vabstractspline.h | 12 + .../tools/drawTools/toolcurve/vtoolarc.cpp | 95 +- .../tools/drawTools/toolcurve/vtoolarc.h | 23 +- .../toolcurve/vtoolarcwithlength.cpp | 79 +- .../drawTools/toolcurve/vtoolarcwithlength.h | 24 +- .../drawTools/toolcurve/vtoolcubicbezier.cpp | 60 +- .../drawTools/toolcurve/vtoolcubicbezier.h | 17 +- .../toolcurve/vtoolcubicbezierpath.cpp | 60 +- .../toolcurve/vtoolcubicbezierpath.h | 17 +- .../toolcurve/vtoolellipticalarc.cpp | 108 +- .../drawTools/toolcurve/vtoolellipticalarc.h | 29 +- .../tools/drawTools/toolcurve/vtoolspline.cpp | 96 +- .../tools/drawTools/toolcurve/vtoolspline.h | 34 +- .../drawTools/toolcurve/vtoolsplinepath.cpp | 96 +- .../drawTools/toolcurve/vtoolsplinepath.h | 33 +- .../tooldoublepoint/vtooltruedarts.cpp | 120 +- .../tooldoublepoint/vtooltruedarts.h | 59 +- .../toolsinglepoint/toolcut/vtoolcutarc.cpp | 92 +- .../toolsinglepoint/toolcut/vtoolcutarc.h | 20 +- .../toolcut/vtoolcutspline.cpp | 90 +- .../toolsinglepoint/toolcut/vtoolcutspline.h | 21 +- .../toolcut/vtoolcutsplinepath.cpp | 94 +- .../toolcut/vtoolcutsplinepath.h | 20 +- .../toollinepoint/vtoolalongline.cpp | 110 +- .../toollinepoint/vtoolalongline.h | 26 +- .../toollinepoint/vtoolbisector.cpp | 117 +- .../toollinepoint/vtoolbisector.h | 27 +- .../toollinepoint/vtoolcurveintersectaxis.cpp | 90 +- .../toollinepoint/vtoolcurveintersectaxis.h | 24 +- .../toollinepoint/vtoolendline.cpp | 105 +- .../toollinepoint/vtoolendline.h | 26 +- .../toollinepoint/vtoolheight.cpp | 116 +- .../toollinepoint/vtoolheight.h | 25 +- .../toollinepoint/vtoollineintersectaxis.cpp | 103 +- .../toollinepoint/vtoollineintersectaxis.h | 28 +- .../toollinepoint/vtoollinepoint.h | 12 + .../toollinepoint/vtoolnormal.cpp | 113 +- .../toollinepoint/vtoolnormal.h | 27 +- .../toollinepoint/vtoolshoulderpoint.cpp | 122 +- .../toollinepoint/vtoolshoulderpoint.h | 27 +- .../toolsinglepoint/vtoolbasepoint.cpp | 42 +- .../toolsinglepoint/vtoolbasepoint.h | 21 +- .../toolsinglepoint/vtoollineintersect.cpp | 127 +- .../toolsinglepoint/vtoollineintersect.h | 26 +- .../vtoolpointfromarcandtangent.cpp | 76 +- .../vtoolpointfromarcandtangent.h | 24 +- .../vtoolpointfromcircleandtangent.cpp | 89 +- .../vtoolpointfromcircleandtangent.h | 27 +- .../toolsinglepoint/vtoolpointofcontact.cpp | 118 +- .../toolsinglepoint/vtoolpointofcontact.h | 27 +- .../vtoolpointofintersection.cpp | 89 +- .../vtoolpointofintersection.h | 21 +- .../vtoolpointofintersectionarcs.cpp | 75 +- .../vtoolpointofintersectionarcs.h | 23 +- .../vtoolpointofintersectioncircles.cpp | 106 +- .../vtoolpointofintersectioncircles.h | 31 +- .../vtoolpointofintersectioncurves.cpp | 86 +- .../vtoolpointofintersectioncurves.h | 29 +- .../toolsinglepoint/vtoolsinglepoint.h | 16 + .../toolsinglepoint/vtooltriangle.cpp | 106 +- .../toolpoint/toolsinglepoint/vtooltriangle.h | 26 +- src/libs/vtools/tools/drawTools/vtoolline.cpp | 92 +- src/libs/vtools/tools/drawTools/vtoolline.h | 25 +- .../vtools/tools/nodeDetails/vabstractnode.h | 14 + .../vtools/tools/nodeDetails/vnodearc.cpp | 42 +- src/libs/vtools/tools/nodeDetails/vnodearc.h | 6 +- .../tools/nodeDetails/vnodeellipticalarc.cpp | 29 +- .../tools/nodeDetails/vnodeellipticalarc.h | 7 +- .../vtools/tools/nodeDetails/vnodepoint.cpp | 56 +- .../vtools/tools/nodeDetails/vnodepoint.h | 8 +- .../vtools/tools/nodeDetails/vnodespline.cpp | 43 +- .../vtools/tools/nodeDetails/vnodespline.h | 8 +- .../tools/nodeDetails/vnodesplinepath.cpp | 44 +- .../tools/nodeDetails/vnodesplinepath.h | 7 +- .../tools/nodeDetails/vtoolpiecepath.cpp | 66 +- .../vtools/tools/nodeDetails/vtoolpiecepath.h | 20 +- .../vtools/tools/nodeDetails/vtoolpin.cpp | 55 +- src/libs/vtools/tools/nodeDetails/vtoolpin.h | 18 +- src/libs/vtools/tools/vabstracttool.cpp | 30 +- src/libs/vtools/tools/vabstracttool.h | 20 + src/libs/vtools/tools/vtoolseamallowance.cpp | 88 +- src/libs/vtools/tools/vtoolseamallowance.h | 21 +- src/libs/vtools/tools/vtooluniondetails.cpp | 280 ++-- src/libs/vtools/tools/vtooluniondetails.h | 19 +- 99 files changed, 3365 insertions(+), 3131 deletions(-) diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index d1576778f..95c44e8f3 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -263,9 +263,19 @@ void MainWindow::AddPP(const QString &PPName) ui->view->itemClicked(nullptr);//hide options previous tool const QString label = doc->GenerateLabel(LabelType::NewPatternPiece); const QPointF startPosition = StartPositionNewPP(); - VPointF *point = new VPointF(startPosition.x(), startPosition.y(), label, 5, 10); - auto spoint = VToolBasePoint::Create(0, PPName, point, sceneDraw, doc, pattern, Document::FullParse, - Source::FromGui); + + VToolBasePointInitData initData; + initData.scene = sceneDraw; + initData.doc = doc; + initData.data = pattern; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + initData.x = startPosition.x(); + initData.y = startPosition.y(); + initData.name = label; + initData.nameActivPP = PPName; + + auto spoint = VToolBasePoint::Create(initData); ui->view->itemClicked(spoint); SetEnableTool(true); diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index 0d779a307..de6777e33 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -798,23 +798,24 @@ void VPattern::ParseDetailElement(QDomElement &domElement, const Document &parse Q_ASSERT_X(not domElement.isNull(), Q_FUNC_INFO, "domElement is null"); try { - VPiece detail; - const quint32 id = GetParametrId(domElement); - detail.SetName(GetParametrString(domElement, AttrName, tr("Detail"))); - detail.SetMx(qApp->toPixel(GetParametrDouble(domElement, AttrMx, "0.0"))); - detail.SetMy(qApp->toPixel(GetParametrDouble(domElement, AttrMy, "0.0"))); - detail.SetSeamAllowance(GetParametrBool(domElement, VToolSeamAllowance::AttrSeamAllowance, falseStr)); - detail.SetHideMainPath(GetParametrBool(domElement, VToolSeamAllowance::AttrHideMainPath, + VToolSeamAllowanceInitData initData; + initData.id = GetParametrId(domElement); + initData.detail.SetName(GetParametrString(domElement, AttrName, tr("Detail"))); + initData.detail.SetMx(qApp->toPixel(GetParametrDouble(domElement, AttrMx, "0.0"))); + initData.detail.SetMy(qApp->toPixel(GetParametrDouble(domElement, AttrMy, "0.0"))); + initData.detail.SetSeamAllowance(GetParametrBool(domElement, VToolSeamAllowance::AttrSeamAllowance, falseStr)); + initData.detail.SetHideMainPath(GetParametrBool(domElement, VToolSeamAllowance::AttrHideMainPath, QString().setNum(qApp->ValentinaSettings()->IsHideMainPath()))); - detail.SetSeamAllowanceBuiltIn(GetParametrBool(domElement, VToolSeamAllowance::AttrSeamAllowanceBuiltIn, - falseStr)); - detail.SetForbidFlipping(GetParametrBool(domElement, VToolSeamAllowance::AttrForbidFlipping, + initData.detail.SetSeamAllowanceBuiltIn(GetParametrBool(domElement, + VToolSeamAllowance::AttrSeamAllowanceBuiltIn, + falseStr)); + initData.detail.SetForbidFlipping(GetParametrBool(domElement, VToolSeamAllowance::AttrForbidFlipping, QString().setNum(qApp->ValentinaSettings()->GetForbidWorkpieceFlipping()))); - detail.SetInLayout(GetParametrBool(domElement, AttrInLayout, trueStr)); - detail.SetUnited(GetParametrBool(domElement, VToolSeamAllowance::AttrUnited, falseStr)); + initData.detail.SetInLayout(GetParametrBool(domElement, AttrInLayout, trueStr)); + initData.detail.SetUnited(GetParametrBool(domElement, VToolSeamAllowance::AttrUnited, falseStr)); - const QString width = GetParametrString(domElement, AttrWidth, "0.0"); - QString w = width;//need for saving fixed formula; + initData.width = GetParametrString(domElement, AttrWidth, "0.0"); + const QString w = initData.width;//need for saving fixed formula; const uint version = GetParametrUInt(domElement, VToolSeamAllowance::AttrVersion, "1"); const QStringList tags = QStringList() << TagNodes @@ -841,41 +842,48 @@ void VPattern::ParseDetailElement(QDomElement &domElement, const Document &parse "Time to refactor the code."); const bool closed = GetParametrUInt(domElement, AttrClosed, "1"); const qreal width = GetParametrDouble(domElement, AttrWidth, "0.0"); - ParseDetailNodes(element, detail, width, closed); + ParseDetailNodes(element, initData.detail, width, closed); } else { - detail.SetPath(ParsePieceNodes(element)); + initData.detail.SetPath(ParsePieceNodes(element)); } break; case 1:// TagData - ParsePieceDataTag(element, detail); + ParsePieceDataTag(element, initData.detail); break; case 2:// TagPatternInfo - ParsePiecePatternInfo(element, detail); + ParsePiecePatternInfo(element, initData.detail); break; case 3:// TagGrainline - ParsePieceGrainline(element, detail); + ParsePieceGrainline(element, initData.detail); break; case 4:// VToolSeamAllowance::TagCSA - detail.SetCustomSARecords(ParsePieceCSARecords(element)); + initData.detail.SetCustomSARecords(ParsePieceCSARecords(element)); break; case 5:// VToolSeamAllowance::TagIPaths - detail.SetInternalPaths(ParsePieceInternalPaths(element)); + initData.detail.SetInternalPaths(ParsePieceInternalPaths(element)); break; case 6:// VToolSeamAllowance::TagPins - detail.SetPins(ParsePiecePins(element)); + initData.detail.SetPins(ParsePiecePins(element)); break; default: break; } } } - VToolSeamAllowance::Create(id, detail, w, sceneDetail, this, data, parse, Source::FromFile); + + initData.scene = sceneDetail; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; + + VToolSeamAllowance::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (w != width) + if (w != initData.width) { - SetAttribute(domElement, AttrWidth, w); + SetAttribute(domElement, AttrWidth, initData.width); modified = true; haveLiteChange(); } @@ -987,21 +995,19 @@ void VPattern::ParseDetails(const QDomElement &domElement, const Document &parse } //--------------------------------------------------------------------------------------------------------------------- -void VPattern::PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, qreal &my, - bool &labelVisible, QString &typeLine, QString &lineColor) +void VPattern::PointsWithLineCommonAttributes(const QDomElement &domElement, VToolLinePointInitData &initData) { - PointsCommonAttributes(domElement, id, name, mx, my, labelVisible); - typeLine = GetParametrString(domElement, AttrTypeLine, TypeLineLine); - lineColor = GetParametrString(domElement, AttrLineColor, ColorBlack); + PointsCommonAttributes(domElement, initData); + initData.typeLine = GetParametrString(domElement, AttrTypeLine, TypeLineLine); + initData.lineColor = GetParametrString(domElement, AttrLineColor, ColorBlack); } //--------------------------------------------------------------------------------------------------------------------- -void VPattern::PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, qreal &my, - bool &labelVisible) +void VPattern::PointsCommonAttributes(const QDomElement &domElement, VToolSinglePointInitData &initData) { - PointsCommonAttributes(domElement, id, mx, my); - name = GetParametrString(domElement, AttrName, "A"); - labelVisible = GetParametrBool(domElement, AttrShowLabel, trueStr); + PointsCommonAttributes(domElement, initData.id, initData.mx, initData.my); + initData.name = GetParametrString(domElement, AttrName, "A"); + initData.showLabel = GetParametrBool(domElement, AttrShowLabel, trueStr); } //--------------------------------------------------------------------------------------------------------------------- @@ -1145,16 +1151,19 @@ void VPattern::ParseLineElement(VMainGraphicsScene *scene, const QDomElement &do Q_ASSERT_X(not domElement.isNull(), Q_FUNC_INFO, "domElement is null"); try { - quint32 id = 0; - ToolsCommonAttributes(domElement, id); - const quint32 firstPoint = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); - const quint32 secondPoint = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - const QString typeLine = GetParametrString(domElement, AttrTypeLine, - TypeLineLine); - const QString lineColor = GetParametrString(domElement, AttrLineColor, - ColorBlack); + VToolLineInitData initData; + ToolsCommonAttributes(domElement, initData.id); + initData.firstPoint = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); + initData.secondPoint = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); + initData.typeLine = GetParametrString(domElement, AttrTypeLine, TypeLineLine); + initData.lineColor = GetParametrString(domElement, AttrLineColor, ColorBlack); + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - VToolLine::Create(id, firstPoint, secondPoint, typeLine, lineColor, scene, this, data, parse, Source::FromFile); + VToolLine::Create(initData); } catch (const VExceptionBadId &e) { @@ -1257,19 +1266,18 @@ void VPattern::ParseToolBasePoint(VMainGraphicsScene *scene, const QDomElement & VToolBasePoint *spoint = nullptr; try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolBasePointInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const qreal x = qApp->toPixel(GetParametrDouble(domElement, AttrX, "10.0")); - const qreal y = qApp->toPixel(GetParametrDouble(domElement, AttrY, "10.0")); + PointsCommonAttributes(domElement, initData); + initData.x = qApp->toPixel(GetParametrDouble(domElement, AttrX, "10.0")); + initData.y = qApp->toPixel(GetParametrDouble(domElement, AttrY, "10.0")); - VPointF *point = new VPointF(x, y, name, mx, my); - point->SetShowLabel(showLabel); - spoint = VToolBasePoint::Create(id, nameActivPP, point, scene, this, data, parse, Source::FromFile); + spoint = VToolBasePoint::Create(initData); } catch (const VExceptionBadId &e) { @@ -1289,31 +1297,29 @@ void VPattern::ParseToolEndLine(VMainGraphicsScene *scene, QDomElement &domEleme try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - QString typeLine; - QString lineColor; - bool showLabel = true; + VToolEndLineInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); + PointsWithLineCommonAttributes(domElement, initData); - const QString formula = GetParametrString(domElement, AttrLength, "100.0"); - QString f = formula;//need for saving fixed formula; + initData.formulaLength = GetParametrString(domElement, AttrLength, "100.0"); + const QString f = initData.formulaLength;//need for saving fixed formula; - const quint32 basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); + initData.basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); - const QString angle = GetParametrString(domElement, AttrAngle, "0.0"); - QString angleFix = angle; + initData.formulaAngle = GetParametrString(domElement, AttrAngle, "0.0"); + const QString angleFix = initData.formulaAngle; - VToolEndLine::Create(id, name, typeLine, lineColor, f, angleFix, basePointId, mx, my, showLabel, scene, this, - data, parse, Source::FromFile); + VToolEndLine::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != formula || angleFix != angle) + if (f != initData.formulaLength || angleFix != initData.formulaAngle) { - SetAttribute(domElement, AttrLength, f); - SetAttribute(domElement, AttrAngle, angleFix); + SetAttribute(domElement, AttrLength, initData.formulaLength); + SetAttribute(domElement, AttrAngle, initData.formulaAngle); modified = true; haveLiteChange(); } @@ -1340,26 +1346,24 @@ void VPattern::ParseToolAlongLine(VMainGraphicsScene *scene, QDomElement &domEle try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - QString typeLine; - QString lineColor; - bool showLabel = true; + VToolAlongLineInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); - const QString formula = GetParametrString(domElement, AttrLength, "100.0"); - QString f = formula;//need for saving fixed formula; - const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); - const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); + PointsWithLineCommonAttributes(domElement, initData); + initData.formula = GetParametrString(domElement, AttrLength, "100.0"); + const QString f = initData.formula;//need for saving fixed formula; + initData.firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); + initData.secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - VToolAlongLine::Create(id, name, typeLine, lineColor, f, firstPointId, secondPointId, mx, my, showLabel, scene, - this, data, parse, Source::FromFile); + VToolAlongLine::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != formula) + if (f != initData.formula) { - SetAttribute(domElement, AttrLength, f); + SetAttribute(domElement, AttrLength, initData.formula); modified = true; haveLiteChange(); } @@ -1386,27 +1390,25 @@ void VPattern::ParseToolShoulderPoint(VMainGraphicsScene *scene, QDomElement &do try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - QString typeLine; - QString lineColor; - bool showLabel = true; + VToolShoulderPointInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); - const QString formula = GetParametrString(domElement, AttrLength, "100.0"); - QString f = formula;//need for saving fixed formula; - const quint32 p1Line = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); - const quint32 p2Line = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); - const quint32 pShoulder = GetParametrUInt(domElement, AttrPShoulder, NULL_ID_STR); + PointsWithLineCommonAttributes(domElement, initData); + initData.formula = GetParametrString(domElement, AttrLength, "100.0"); + const QString f = initData.formula;//need for saving fixed formula; + initData.p1Line = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); + initData.p2Line = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); + initData.pShoulder = GetParametrUInt(domElement, AttrPShoulder, NULL_ID_STR); - VToolShoulderPoint::Create(id, f, p1Line, p2Line, pShoulder, typeLine, lineColor, name, mx, my, showLabel, - scene, this, data, parse, Source::FromFile); + VToolShoulderPoint::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != formula) + if (f != initData.formula) { - SetAttribute(domElement, AttrLength, f); + SetAttribute(domElement, AttrLength, initData.formula); modified = true; haveLiteChange(); } @@ -1433,27 +1435,25 @@ void VPattern::ParseToolNormal(VMainGraphicsScene *scene, QDomElement &domElemen try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - QString typeLine; - QString lineColor; - bool showLabel = true; + VToolNormalInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); - const QString formula = GetParametrString(domElement, AttrLength, "100.0"); - QString f = formula;//need for saving fixed formula; - const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); - const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - const qreal angle = GetParametrDouble(domElement, AttrAngle, "0.0"); + PointsWithLineCommonAttributes(domElement, initData); + initData.formula = GetParametrString(domElement, AttrLength, "100.0"); + const QString f = initData.formula;//need for saving fixed formula; + initData.firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); + initData.secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); + initData.angle = GetParametrDouble(domElement, AttrAngle, "0.0"); - VToolNormal::Create(id, f, firstPointId, secondPointId, typeLine, lineColor, name, angle, mx, my, showLabel, - scene, this, data, parse, Source::FromFile); + VToolNormal::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != formula) + if (f != initData.formula) { - SetAttribute(domElement, AttrLength, f); + SetAttribute(domElement, AttrLength, initData.formula); modified = true; haveLiteChange(); } @@ -1480,27 +1480,25 @@ void VPattern::ParseToolBisector(VMainGraphicsScene *scene, QDomElement &domElem try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - QString typeLine; - QString lineColor; - bool showLabel = true; + VToolBisectorInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); - const QString formula = GetParametrString(domElement, AttrLength, "100.0"); - QString f = formula;//need for saving fixed formula; - const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); - const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - const quint32 thirdPointId = GetParametrUInt(domElement, AttrThirdPoint, NULL_ID_STR); + PointsWithLineCommonAttributes(domElement, initData); + initData.formula = GetParametrString(domElement, AttrLength, "100.0"); + const QString f = initData.formula;//need for saving fixed formula; + initData.firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); + initData.secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); + initData.thirdPointId = GetParametrUInt(domElement, AttrThirdPoint, NULL_ID_STR); - VToolBisector::Create(id, f, firstPointId, secondPointId, thirdPointId, - typeLine, lineColor, name, mx, my, showLabel, scene, this, data, parse, Source::FromFile); + VToolBisector::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != formula) + if (f != initData.formula) { - SetAttribute(domElement, AttrLength, f); + SetAttribute(domElement, AttrLength, initData.formula); modified = true; haveLiteChange(); } @@ -1527,20 +1525,20 @@ void VPattern::ParseToolLineIntersect(VMainGraphicsScene *scene, const QDomEleme try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolLineIntersectInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const quint32 p1Line1Id = GetParametrUInt(domElement, AttrP1Line1, NULL_ID_STR); - const quint32 p2Line1Id = GetParametrUInt(domElement, AttrP2Line1, NULL_ID_STR); - const quint32 p1Line2Id = GetParametrUInt(domElement, AttrP1Line2, NULL_ID_STR); - const quint32 p2Line2Id = GetParametrUInt(domElement, AttrP2Line2, NULL_ID_STR); + PointsCommonAttributes(domElement, initData); + initData.p1Line1Id = GetParametrUInt(domElement, AttrP1Line1, NULL_ID_STR); + initData.p2Line1Id = GetParametrUInt(domElement, AttrP2Line1, NULL_ID_STR); + initData.p1Line2Id = GetParametrUInt(domElement, AttrP1Line2, NULL_ID_STR); + initData.p2Line2Id = GetParametrUInt(domElement, AttrP2Line2, NULL_ID_STR); - VToolLineIntersect::Create(id, p1Line1Id, p2Line1Id, p1Line2Id, p2Line2Id, name, - mx, my, showLabel, scene, this, data, parse, Source::FromFile); + VToolLineIntersect::Create(initData); } catch (const VExceptionBadId &e) { @@ -1558,25 +1556,25 @@ void VPattern::ParseToolPointOfContact(VMainGraphicsScene *scene, QDomElement &d try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolPointOfContactInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const QString radius = GetParametrString(domElement, AttrRadius, "0"); - QString f = radius;//need for saving fixed formula; - const quint32 center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); - const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); - const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); + PointsCommonAttributes(domElement, initData); + initData.radius = GetParametrString(domElement, AttrRadius, "0"); + const QString f = initData.radius;//need for saving fixed formula; + initData.center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); + initData.firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); + initData.secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - VToolPointOfContact::Create(id, f, center, firstPointId, secondPointId, name, mx, my, showLabel, scene, this, - data, parse, Source::FromFile); + VToolPointOfContact::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != radius) + if (f != initData.radius) { - SetAttribute(domElement, AttrRadius, f); + SetAttribute(domElement, AttrRadius, initData.radius); modified = true; haveLiteChange(); } @@ -1602,26 +1600,33 @@ void VPattern::ParseNodePoint(const QDomElement &domElement, const Document &par try { - quint32 id = 0; + VAbstractNodeInitData initData; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; + initData.scene = sceneDetail; + qreal mx = 0; qreal my = 0; - PointsCommonAttributes(domElement, id, mx, my); - const quint32 idObject = GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR); - const quint32 idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); + PointsCommonAttributes(domElement, initData.id, mx, my); + initData.idObject = GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR); + initData.idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); QSharedPointer point; try { - point = data->GeometricObject(idObject); + point = initData.data->GeometricObject(initData.idObject); } catch (const VExceptionBadId &e) { // Possible case. Parent was deleted, but the node object is still here. Q_UNUSED(e) return;// Just ignore } - data->UpdateGObject(id, new VPointF(static_cast(*point), point->name(), mx, my, idObject, - Draw::Modeling)); - VNodePoint::Create(this, data, sceneDetail, id, idObject, parse, Source::FromFile, "", idTool); + initData.data->UpdateGObject(initData.id, + new VPointF(static_cast(*point), point->name(), mx, my, initData.idObject, + Draw::Modeling)); + VNodePoint::Create(initData); } catch (const VExceptionBadId &e) { @@ -1638,12 +1643,16 @@ void VPattern::ParsePinPoint(const QDomElement &domElement, const Document &pars try { - quint32 id = 0; + VToolPinInitData initData; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 idObject = GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR); - const quint32 idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); - VToolPin::Create(id, idObject, NULL_ID, this, data, parse, Source::FromFile, "", idTool); + ToolsCommonAttributes(domElement, initData.id); + initData.pointId = GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR); + initData.idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); + VToolPin::Create(initData); } catch (const VExceptionBadId &e) { @@ -1661,21 +1670,19 @@ void VPattern::ParseToolHeight(VMainGraphicsScene *scene, const QDomElement &dom try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - QString typeLine; - QString lineColor; - bool showLabel = true; + VToolHeightInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); - const quint32 basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); - const quint32 p1LineId = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); - const quint32 p2LineId = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); + PointsWithLineCommonAttributes(domElement, initData); + initData.basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); + initData.p1LineId = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); + initData.p2LineId = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); - VToolHeight::Create(id, name, typeLine, lineColor, basePointId, p1LineId, p2LineId, - mx, my, showLabel, scene, this, data, parse, Source::FromFile); + VToolHeight::Create(initData); } catch (const VExceptionBadId &e) { @@ -1693,20 +1700,20 @@ void VPattern::ParseToolTriangle(VMainGraphicsScene *scene, const QDomElement &d try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolTriangleInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const quint32 axisP1Id = GetParametrUInt(domElement, AttrAxisP1, NULL_ID_STR); - const quint32 axisP2Id = GetParametrUInt(domElement, AttrAxisP2, NULL_ID_STR); - const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); - const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); + PointsCommonAttributes(domElement, initData); + initData.axisP1Id = GetParametrUInt(domElement, AttrAxisP1, NULL_ID_STR); + initData.axisP2Id = GetParametrUInt(domElement, AttrAxisP2, NULL_ID_STR); + initData.firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); + initData.secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - VToolTriangle::Create(id, name, axisP1Id, axisP2Id, firstPointId, secondPointId, mx, my, showLabel, scene, this, - data, parse, Source::FromFile); + VToolTriangle::Create(initData); } catch (const VExceptionBadId &e) { @@ -1725,18 +1732,18 @@ void VPattern::ParseToolPointOfIntersection(VMainGraphicsScene *scene, const QDo try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolPointOfIntersectionInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const quint32 firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); - const quint32 secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); + PointsCommonAttributes(domElement, initData); + initData.firstPointId = GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); + initData.secondPointId = GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - VToolPointOfIntersection::Create(id, name, firstPointId, secondPointId, mx, my, showLabel, scene, this, data, - parse, Source::FromFile); + VToolPointOfIntersection::Create(initData); } catch (const VExceptionBadId &e) { @@ -1754,22 +1761,23 @@ void VPattern::ParseToolCutSpline(VMainGraphicsScene *scene, QDomElement &domEle try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolCutSplineInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const QString formula = GetParametrString(domElement, AttrLength, "0"); - QString f = formula;//need for saving fixed formula; - const quint32 splineId = GetParametrUInt(domElement, VToolCutSpline::AttrSpline, NULL_ID_STR); + PointsCommonAttributes(domElement, initData); + initData.formula = GetParametrString(domElement, AttrLength, "0"); + const QString f = initData.formula;//need for saving fixed formula; + initData.splineId = GetParametrUInt(domElement, VToolCutSpline::AttrSpline, NULL_ID_STR); - VToolCutSpline::Create(id, name, f, splineId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); + VToolCutSpline::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != formula) + if (f != initData.formula) { - SetAttribute(domElement, AttrLength, f); + SetAttribute(domElement, AttrLength, initData.formula); modified = true; haveLiteChange(); } @@ -1796,24 +1804,23 @@ void VPattern::ParseToolCutSplinePath(VMainGraphicsScene *scene, QDomElement &do try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolCutSplinePathInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const QString formula = GetParametrString(domElement, AttrLength, "0"); - QString f = formula;//need for saving fixed formula; - const quint32 splinePathId = GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, - NULL_ID_STR); + PointsCommonAttributes(domElement, initData); + initData.formula = GetParametrString(domElement, AttrLength, "0"); + const QString f = initData.formula;//need for saving fixed formula; + initData.splinePathId = GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, NULL_ID_STR); - VToolCutSplinePath::Create(id, name, f, splinePathId, mx, my, showLabel, scene, this, data, parse, - Source::FromFile); + VToolCutSplinePath::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != formula) + if (f != initData.formula) { - SetAttribute(domElement, AttrLength, f); + SetAttribute(domElement, AttrLength, initData.formula); modified = true; haveLiteChange(); } @@ -1840,22 +1847,23 @@ void VPattern::ParseToolCutArc(VMainGraphicsScene *scene, QDomElement &domElemen try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolCutArcInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const QString formula = GetParametrString(domElement, AttrLength, "0"); - QString f = formula;//need for saving fixed formula; - const quint32 arcId = GetParametrUInt(domElement, AttrArc, NULL_ID_STR); + PointsCommonAttributes(domElement, initData); + initData.formula = GetParametrString(domElement, AttrLength, "0"); + const QString f = initData.formula;//need for saving fixed formula; + initData.arcId = GetParametrUInt(domElement, AttrArc, NULL_ID_STR); - VToolCutArc::Create(id, name, f, arcId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); + VToolCutArc::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (f != formula) + if (f != initData.formula) { - SetAttribute(domElement, AttrLength, f); + SetAttribute(domElement, AttrLength, initData.formula); modified = true; haveLiteChange(); } @@ -1883,29 +1891,27 @@ void VPattern::ParseToolLineIntersectAxis(VMainGraphicsScene *scene, QDomElement try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - QString typeLine; - QString lineColor; - bool showLabel = true; + VToolLineIntersectAxisInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); + PointsWithLineCommonAttributes(domElement, initData); - const quint32 basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); - const quint32 firstPointId = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); - const quint32 secondPointId = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); + initData.basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); + initData.firstPointId = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); + initData.secondPointId = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); - const QString angle = GetParametrString(domElement, AttrAngle, "0.0"); - QString angleFix = angle; + initData.formulaAngle = GetParametrString(domElement, AttrAngle, "0.0"); + const QString angleFix = initData.formulaAngle; - VToolLineIntersectAxis::Create(id, name, typeLine, lineColor, angleFix, basePointId, firstPointId, - secondPointId, mx, my, showLabel, scene, this, data, parse, Source::FromFile); + VToolLineIntersectAxis::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (angleFix != angle) + if (angleFix != initData.formulaAngle) { - SetAttribute(domElement, AttrAngle, angleFix); + SetAttribute(domElement, AttrAngle, initData.formulaAngle); modified = true; haveLiteChange(); } @@ -1935,27 +1941,25 @@ void VPattern::ParseToolCurveIntersectAxis(VMainGraphicsScene *scene, QDomElemen try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - QString typeLine; - QString lineColor; - bool showLabel = true; + VToolCurveIntersectAxisInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel, typeLine, lineColor); + PointsWithLineCommonAttributes(domElement, initData); - const quint32 basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); - const quint32 curveId = GetParametrUInt(domElement, AttrCurve, NULL_ID_STR); - const QString angle = GetParametrString(domElement, AttrAngle, "0.0"); - QString angleFix = angle; + initData.basePointId = GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); + initData.curveId = GetParametrUInt(domElement, AttrCurve, NULL_ID_STR); + initData.formulaAngle = GetParametrString(domElement, AttrAngle, "0.0"); + const QString angleFix = initData.formulaAngle; - VToolCurveIntersectAxis::Create(id, name, typeLine, lineColor, angleFix, basePointId, curveId, mx, my, - showLabel, scene, this, data, parse, Source::FromFile); + VToolCurveIntersectAxis::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (angleFix != angle) + if (angleFix != initData.formulaAngle) { - SetAttribute(domElement, AttrAngle, angleFix); + SetAttribute(domElement, AttrAngle, initData.formulaAngle); modified = true; haveLiteChange(); } @@ -1985,21 +1989,19 @@ void VPattern::ParseToolPointOfIntersectionArcs(VMainGraphicsScene *scene, const try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolPointOfIntersectionArcsInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const quint32 firstArcId = GetParametrUInt(domElement, AttrFirstArc, NULL_ID_STR); - const quint32 secondArcId = GetParametrUInt(domElement, AttrSecondArc, NULL_ID_STR); - const CrossCirclesPoint crossPoint = static_cast(GetParametrUInt(domElement, - AttrCrossPoint, - "1")); + PointsCommonAttributes(domElement, initData); + initData.firstArcId = GetParametrUInt(domElement, AttrFirstArc, NULL_ID_STR); + initData.secondArcId = GetParametrUInt(domElement, AttrSecondArc, NULL_ID_STR); + initData.pType = static_cast(GetParametrUInt(domElement, AttrCrossPoint, "1")); - VToolPointOfIntersectionArcs::Create(id, name, firstArcId, secondArcId, crossPoint, mx, my, showLabel, scene, - this, data, parse, Source::FromFile); + VToolPointOfIntersectionArcs::Create(initData); } catch (const VExceptionBadId &e) { @@ -2018,29 +2020,28 @@ void VPattern::ParseToolPointOfIntersectionCircles(VMainGraphicsScene *scene, QD try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolPointOfIntersectionCirclesInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const quint32 c1CenterId = GetParametrUInt(domElement, AttrC1Center, NULL_ID_STR); - const quint32 c2CenterId = GetParametrUInt(domElement, AttrC2Center, NULL_ID_STR); - const QString c1Radius = GetParametrString(domElement, AttrC1Radius); - QString c1R = c1Radius; - const QString c2Radius = GetParametrString(domElement, AttrC2Radius); - QString c2R = c2Radius; - const CrossCirclesPoint crossPoint = static_cast(GetParametrUInt(domElement, - AttrCrossPoint, "1")); + PointsCommonAttributes(domElement, initData); + initData.firstCircleCenterId = GetParametrUInt(domElement, AttrC1Center, NULL_ID_STR); + initData.secondCircleCenterId = GetParametrUInt(domElement, AttrC2Center, NULL_ID_STR); + initData.firstCircleRadius = GetParametrString(domElement, AttrC1Radius); + const QString c1R = initData.firstCircleRadius; + initData.secondCircleRadius = GetParametrString(domElement, AttrC2Radius); + const QString c2R = initData.secondCircleRadius; + initData.crossPoint = static_cast(GetParametrUInt(domElement, AttrCrossPoint, "1")); - VToolPointOfIntersectionCircles::Create(id, name, c1CenterId, c2CenterId, c1R, c2R, crossPoint, mx, my, - showLabel, scene, this, data, parse, Source::FromFile); + VToolPointOfIntersectionCircles::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (c1R != c1Radius || c2R != c2Radius) + if (c1R != initData.firstCircleRadius || c2R != initData.secondCircleRadius) { - SetAttribute(domElement, AttrC1Center, c1R); - SetAttribute(domElement, AttrC2Center, c2R); + SetAttribute(domElement, AttrC1Center, initData.firstCircleRadius); + SetAttribute(domElement, AttrC2Center, initData.secondCircleRadius); modified = true; haveLiteChange(); } @@ -2062,20 +2063,20 @@ void VPattern::ParseToolPointOfIntersectionCurves(VMainGraphicsScene *scene, QDo try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolPointOfIntersectionCurvesInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const auto curve1Id = GetParametrUInt(domElement, AttrCurve1, NULL_ID_STR); - const auto curve2Id = GetParametrUInt(domElement, AttrCurve2, NULL_ID_STR); - const auto vCrossPoint = static_cast(GetParametrUInt(domElement, AttrVCrossPoint, "1")); - const auto hCrossPoint = static_cast(GetParametrUInt(domElement, AttrHCrossPoint, "1")); + PointsCommonAttributes(domElement, initData); + initData.firstCurveId = GetParametrUInt(domElement, AttrCurve1, NULL_ID_STR); + initData.secondCurveId = GetParametrUInt(domElement, AttrCurve2, NULL_ID_STR); + initData.vCrossPoint = static_cast(GetParametrUInt(domElement, AttrVCrossPoint, "1")); + initData.hCrossPoint = static_cast(GetParametrUInt(domElement, AttrHCrossPoint, "1")); - VToolPointOfIntersectionCurves::Create(id, name, curve1Id, curve2Id, vCrossPoint, hCrossPoint, mx, my, - showLabel, scene, this, data, parse, Source::FromFile); + VToolPointOfIntersectionCurves::Create(initData); } catch (const VExceptionBadId &e) { @@ -2094,27 +2095,25 @@ void VPattern::ParseToolPointFromCircleAndTangent(VMainGraphicsScene *scene, QDo try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolPointFromCircleAndTangentInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const quint32 cCenterId = GetParametrUInt(domElement, AttrCCenter, NULL_ID_STR); - const quint32 tangentId = GetParametrUInt(domElement, AttrTangent, NULL_ID_STR); - const QString cRadius = GetParametrString(domElement, AttrCRadius); - QString cR = cRadius; - const CrossCirclesPoint crossPoint = static_cast(GetParametrUInt(domElement, - AttrCrossPoint, - "1")); + PointsCommonAttributes(domElement, initData); + initData.circleCenterId = GetParametrUInt(domElement, AttrCCenter, NULL_ID_STR); + initData.tangentPointId = GetParametrUInt(domElement, AttrTangent, NULL_ID_STR); + initData.circleRadius = GetParametrString(domElement, AttrCRadius); + const QString cR = initData.circleRadius; + initData.crossPoint = static_cast(GetParametrUInt(domElement, AttrCrossPoint, "1")); - VToolPointFromCircleAndTangent::Create(id, name, cCenterId, cR, tangentId, crossPoint, mx, my, showLabel, - scene, this, data, parse, Source::FromFile); + VToolPointFromCircleAndTangent::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (cR != cRadius) + if (cR != initData.circleRadius) { - SetAttribute(domElement, AttrCCenter, cR); + SetAttribute(domElement, AttrCCenter, initData.circleRadius); modified = true; haveLiteChange(); } @@ -2136,21 +2135,19 @@ void VPattern::ParseToolPointFromArcAndTangent(VMainGraphicsScene *scene, const try { - quint32 id = 0; - QString name; - qreal mx = 0; - qreal my = 0; - bool showLabel = true; + VToolPointFromArcAndTangentInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - PointsCommonAttributes(domElement, id, name, mx, my, showLabel); - const quint32 arcId = GetParametrUInt(domElement, AttrArc, NULL_ID_STR); - const quint32 tangentId = GetParametrUInt(domElement, AttrTangent, NULL_ID_STR); - const CrossCirclesPoint crossPoint = static_cast(GetParametrUInt(domElement, - AttrCrossPoint, - "1")); + PointsCommonAttributes(domElement, initData); + initData.arcId = GetParametrUInt(domElement, AttrArc, NULL_ID_STR); + initData.tangentPointId = GetParametrUInt(domElement, AttrTangent, NULL_ID_STR); + initData.crossPoint = static_cast(GetParametrUInt(domElement, AttrCrossPoint, "1")); - VToolPointFromArcAndTangent::Create(id, name, arcId, tangentId, crossPoint, mx, my, showLabel, - scene, this, data, parse, Source::FromFile); + VToolPointFromArcAndTangent::Create(initData); } catch (const VExceptionBadId &e) { @@ -2168,31 +2165,33 @@ void VPattern::ParseToolTrueDarts(VMainGraphicsScene *scene, const QDomElement & try { - quint32 id = 0; + VToolTrueDartsInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); + ToolsCommonAttributes(domElement, initData.id); - const quint32 p1Id = GetParametrUInt(domElement, AttrPoint1, NULL_ID_STR); - const quint32 p2Id = GetParametrUInt(domElement, AttrPoint2, NULL_ID_STR); + initData.p1id = GetParametrUInt(domElement, AttrPoint1, NULL_ID_STR); + initData.p2id = GetParametrUInt(domElement, AttrPoint2, NULL_ID_STR); - const quint32 baseLineP1Id = GetParametrUInt(domElement, AttrBaseLineP1, NULL_ID_STR); - const quint32 baseLineP2Id = GetParametrUInt(domElement, AttrBaseLineP2, NULL_ID_STR); - const quint32 dartP1Id = GetParametrUInt(domElement, AttrDartP1, NULL_ID_STR); - const quint32 dartP2Id = GetParametrUInt(domElement, AttrDartP2, NULL_ID_STR); - const quint32 dartP3Id = GetParametrUInt(domElement, AttrDartP3, NULL_ID_STR); + initData.baseLineP1Id = GetParametrUInt(domElement, AttrBaseLineP1, NULL_ID_STR); + initData.baseLineP2Id = GetParametrUInt(domElement, AttrBaseLineP2, NULL_ID_STR); + initData.dartP1Id = GetParametrUInt(domElement, AttrDartP1, NULL_ID_STR); + initData.dartP2Id = GetParametrUInt(domElement, AttrDartP2, NULL_ID_STR); + initData.dartP3Id = GetParametrUInt(domElement, AttrDartP3, NULL_ID_STR); - const QString name1 = GetParametrString(domElement, AttrName1, "A"); - const qreal mx1 = qApp->toPixel(GetParametrDouble(domElement, AttrMx1, "10.0")); - const qreal my1 = qApp->toPixel(GetParametrDouble(domElement, AttrMy1, "15.0")); + initData.name1 = GetParametrString(domElement, AttrName1, "A"); + initData.mx1 = qApp->toPixel(GetParametrDouble(domElement, AttrMx1, "10.0")); + initData.my1 = qApp->toPixel(GetParametrDouble(domElement, AttrMy1, "15.0")); - const QString name2 = GetParametrString(domElement, AttrName2, "A"); - const qreal mx2 = qApp->toPixel(GetParametrDouble(domElement, AttrMx2, "10.0")); - const qreal my2 = qApp->toPixel(GetParametrDouble(domElement, AttrMy2, "15.0")); + initData.name2 = GetParametrString(domElement, AttrName2, "A"); + initData.mx2 = qApp->toPixel(GetParametrDouble(domElement, AttrMx2, "10.0")); + initData.my2 = qApp->toPixel(GetParametrDouble(domElement, AttrMy2, "15.0")); - VToolTrueDarts::Create(id, p1Id, p2Id, - baseLineP1Id, baseLineP2Id, dartP1Id, dartP2Id, dartP3Id, - name1, mx1, my1, name2, mx2, my2, - scene, this, data, parse, Source::FromFile); + VToolTrueDarts::Create(initData); } catch (const VExceptionBadId &e) { @@ -2211,9 +2210,14 @@ void VPattern::ParseOldToolSpline(VMainGraphicsScene *scene, const QDomElement & try { - quint32 id = 0; + VToolSplineInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); + ToolsCommonAttributes(domElement, initData.id); const quint32 point1 = GetParametrUInt(domElement, AttrPoint1, NULL_ID_STR); const quint32 point4 = GetParametrUInt(domElement, AttrPoint4, NULL_ID_STR); const qreal angle1 = GetParametrDouble(domElement, AttrAngle1, "270.0"); @@ -2234,7 +2238,7 @@ void VPattern::ParseOldToolSpline(VMainGraphicsScene *scene, const QDomElement & } spline->SetColor(color); - VToolSpline::Create(id, spline, scene, this, data, parse, Source::FromFile); + VToolSpline::Create(initData, spline); } catch (const VExceptionBadId &e) { @@ -2252,30 +2256,34 @@ void VPattern::ParseToolSpline(VMainGraphicsScene *scene, QDomElement &domElemen try { - quint32 id = 0; + VToolSplineInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 point1 = GetParametrUInt(domElement, AttrPoint1, NULL_ID_STR); - const quint32 point4 = GetParametrUInt(domElement, AttrPoint4, NULL_ID_STR); + ToolsCommonAttributes(domElement, initData.id); + initData.point1 = GetParametrUInt(domElement, AttrPoint1, NULL_ID_STR); + initData.point4 = GetParametrUInt(domElement, AttrPoint4, NULL_ID_STR); - const QString angle1 = GetParametrString(domElement, AttrAngle1, "0"); - QString a1 = angle1;//need for saving fixed formula; + initData.a1 = GetParametrString(domElement, AttrAngle1, "0"); + const QString angle1 = initData.a1;//need for saving fixed formula; - const QString angle2 = GetParametrString(domElement, AttrAngle2, "0"); - QString a2 = angle2;//need for saving fixed formula; + initData.a2 = GetParametrString(domElement, AttrAngle2, "0"); + const QString angle2 = initData.a2;//need for saving fixed formula; - const QString length1 = GetParametrString(domElement, AttrLength1, "0"); - QString l1 = length1;//need for saving fixed formula; + initData.l1 = GetParametrString(domElement, AttrLength1, "0"); + const QString length1 = initData.l1;//need for saving fixed formula; - const QString length2 = GetParametrString(domElement, AttrLength2, "0"); - QString l2 = length2;//need for saving fixed formula; + initData.l2 = GetParametrString(domElement, AttrLength2, "0"); + const QString length2 = initData.l2;//need for saving fixed formula; - const QString color = GetParametrString(domElement, AttrColor, ColorBlack); - const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); - const quint32 duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); + initData.color = GetParametrString(domElement, AttrColor, ColorBlack); + initData.penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); + initData.duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); - VToolSpline *spl = VToolSpline::Create(id, point1, point4, a1, a2, l1, l2, duplicate, color, penStyle, scene, - this, data, parse, Source::FromFile); + VToolSpline *spl = VToolSpline::Create(initData); if (spl != nullptr) { @@ -2285,12 +2293,12 @@ void VPattern::ParseToolSpline(VMainGraphicsScene *scene, QDomElement &domElemen } //Rewrite attribute formula. Need for situation when we have wrong formula. - if (a1 != angle1 || a2 != angle2 || l1 != length1 || l2 != length2) + if (angle1 != initData.a1 || angle2 != initData.a2 || length1 != initData.l1 || length2 != initData.l2) { - SetAttribute(domElement, AttrAngle1, a1); - SetAttribute(domElement, AttrAngle2, a2); - SetAttribute(domElement, AttrLength1, l1); - SetAttribute(domElement, AttrLength2, l2); + SetAttribute(domElement, AttrAngle1, initData.a1); + SetAttribute(domElement, AttrAngle2, initData.a2); + SetAttribute(domElement, AttrLength1, initData.l1); + SetAttribute(domElement, AttrLength2, initData.l2); modified = true; haveLiteChange(); } @@ -2317,9 +2325,15 @@ void VPattern::ParseToolCubicBezier(VMainGraphicsScene *scene, const QDomElement try { - quint32 id = 0; + VToolCubicBezierInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; + + ToolsCommonAttributes(domElement, initData.id); - ToolsCommonAttributes(domElement, id); const quint32 point1 = GetParametrUInt(domElement, AttrPoint1, NULL_ID_STR); const quint32 point2 = GetParametrUInt(domElement, AttrPoint2, NULL_ID_STR); const quint32 point3 = GetParametrUInt(domElement, AttrPoint3, NULL_ID_STR); @@ -2334,15 +2348,15 @@ void VPattern::ParseToolCubicBezier(VMainGraphicsScene *scene, const QDomElement auto p3 = data->GeometricObject(point3); auto p4 = data->GeometricObject(point4); - VCubicBezier *spline = new VCubicBezier(*p1, *p2, *p3, *p4); + initData.spline = new VCubicBezier(*p1, *p2, *p3, *p4); if (duplicate > 0) { - spline->SetDuplicate(duplicate); + initData.spline->SetDuplicate(duplicate); } - spline->SetColor(color); - spline->SetPenStyle(penStyle); + initData.spline->SetColor(color); + initData.spline->SetPenStyle(penStyle); - VToolCubicBezier::Create(id, spline, scene, this, data, parse, Source::FromFile); + VToolCubicBezier::Create(initData); } catch (const VExceptionBadId &e) { @@ -2360,9 +2374,14 @@ void VPattern::ParseOldToolSplinePath(VMainGraphicsScene *scene, const QDomEleme try { - quint32 id = 0; + VToolSplinePathInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); + ToolsCommonAttributes(domElement, initData.id); const qreal kCurve = GetParametrDouble(domElement, AttrKCurve, "1.0"); const QString color = GetParametrString(domElement, AttrColor, ColorBlack); const quint32 duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); @@ -2404,7 +2423,7 @@ void VPattern::ParseOldToolSplinePath(VMainGraphicsScene *scene, const QDomEleme } path->SetColor(color); - VToolSplinePath::Create(id, path, scene, this, data, parse, Source::FromFile); + VToolSplinePath::Create(initData, path); } catch (const VExceptionBadId &e) { @@ -2422,18 +2441,17 @@ void VPattern::ParseToolSplinePath(VMainGraphicsScene *scene, const QDomElement try { - quint32 id = 0; + VToolSplinePathInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const QString color = GetParametrString(domElement, AttrColor, ColorBlack); - const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); - const quint32 duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); - - QVector points; - QVector angle1, a1; - QVector angle2, a2; - QVector length1, l1; - QVector length2, l2; + ToolsCommonAttributes(domElement, initData.id); + initData.color = GetParametrString(domElement, AttrColor, ColorBlack); + initData.penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); + initData.duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); const QDomNodeList nodeList = domElement.childNodes(); const qint32 num = nodeList.size(); @@ -2442,12 +2460,12 @@ void VPattern::ParseToolSplinePath(VMainGraphicsScene *scene, const QDomElement const QDomElement element = nodeList.at(i).toElement(); if (not element.isNull() && element.tagName() == AttrPathPoint) { - angle1.append(GetParametrString(element, AttrAngle1, "0")); - angle2.append(GetParametrString(element, AttrAngle2, "0")); - length1.append(GetParametrString(element, AttrLength1, "0")); - length2.append(GetParametrString(element, AttrLength2, "0")); + initData.a1.append(GetParametrString(element, AttrAngle1, "0")); + initData.a2.append(GetParametrString(element, AttrAngle2, "0")); + initData.l1.append(GetParametrString(element, AttrLength1, "0")); + initData.l2.append(GetParametrString(element, AttrLength2, "0")); const quint32 pSpline = GetParametrUInt(element, AttrPSpline, NULL_ID_STR); - points.append(pSpline); + initData.points.append(pSpline); if (parse == Document::FullParse) { @@ -2457,13 +2475,12 @@ void VPattern::ParseToolSplinePath(VMainGraphicsScene *scene, const QDomElement } //need for saving fixed formula; - a1 = angle1; - a2 = angle2; - l1 = length1; - l2 = length2; + const QVector angle1 = initData.a1; + const QVector angle2 = initData.a2; + const QVector length1 = initData.l1; + const QVector length2 = initData.l2; - VToolSplinePath *spl = VToolSplinePath::Create(id, points, a1, a2, l1, l2, color, penStyle, duplicate, scene, - this, data, parse, Source::FromFile); + VToolSplinePath *spl = VToolSplinePath::Create(initData); if (spl != nullptr) { @@ -2479,13 +2496,13 @@ void VPattern::ParseToolSplinePath(VMainGraphicsScene *scene, const QDomElement QDomElement element = nodeList.at(i).toElement(); if (not element.isNull() && element.tagName() == AttrPathPoint) { - if (a1.at(count) != angle1.at(count) || a2.at(count) != angle2.at(count) || - l1.at(count) != length1.at(count) || l2.at(count) != length2.at(count)) + if (angle1.at(count) != initData.a1.at(count) || angle2.at(count) != initData.a2.at(count) || + length1.at(count) != initData.l1.at(count) || length2.at(count) != initData.l2.at(count)) { - SetAttribute(element, AttrAngle1, a1.at(count)); - SetAttribute(element, AttrAngle2, a2.at(count)); - SetAttribute(element, AttrLength1, l1.at(count)); - SetAttribute(element, AttrLength2, l2.at(count)); + SetAttribute(element, AttrAngle1, initData.a1.at(count)); + SetAttribute(element, AttrAngle2, initData.a2.at(count)); + SetAttribute(element, AttrLength1, initData.l1.at(count)); + SetAttribute(element, AttrLength2, initData.l2.at(count)); modified = true; haveLiteChange(); } @@ -2515,9 +2532,14 @@ void VPattern::ParseToolCubicBezierPath(VMainGraphicsScene *scene, const QDomEle try { - quint32 id = 0; + VToolCubicBezierPathInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); + ToolsCommonAttributes(domElement, initData.id); const QString color = GetParametrString(domElement, AttrColor, ColorBlack); const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); const quint32 duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); @@ -2544,15 +2566,15 @@ void VPattern::ParseToolCubicBezierPath(VMainGraphicsScene *scene, const QDomEle } } - auto path = new VCubicBezierPath(points); + initData.path = new VCubicBezierPath(points); if (duplicate > 0) { - path->SetDuplicate(duplicate); + initData.path->SetDuplicate(duplicate); } - path->SetColor(color); - path->SetPenStyle(penStyle); + initData.path->SetColor(color); + initData.path->SetPenStyle(penStyle); - VToolCubicBezierPath::Create(id, path, scene, this, data, parse, Source::FromFile); + VToolCubicBezierPath::Create(initData); } catch (const VExceptionBadId &e) { @@ -2569,27 +2591,29 @@ void VPattern::ParseNodeSpline(const QDomElement &domElement, const Document &pa try { - quint32 id = 0; - quint32 idObject = 0; - quint32 idTool = 0; + VAbstractNodeInitData initData; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - SplinesCommonAttributes(domElement, id, idObject, idTool); + SplinesCommonAttributes(domElement, initData.id, initData.idObject, initData.idTool); try { - const auto obj = data->GetGObject(idObject); + const auto obj = initData.data->GetGObject(initData.idObject); if (obj->getType() == GOType::Spline) { - VSpline *spl = new VSpline(*data->GeometricObject(idObject)); - spl->setIdObject(idObject); + VSpline *spl = new VSpline(*data->GeometricObject(initData.idObject)); + spl->setIdObject(initData.idObject); spl->setMode(Draw::Modeling); - data->UpdateGObject(id, spl); + initData.data->UpdateGObject(initData.id, spl); } else { - VCubicBezier *spl = new VCubicBezier(*data->GeometricObject(idObject)); - spl->setIdObject(idObject); + VCubicBezier *spl = new VCubicBezier(*initData.data->GeometricObject(initData.idObject)); + spl->setIdObject(initData.idObject); spl->setMode(Draw::Modeling); - data->UpdateGObject(id, spl); + initData.data->UpdateGObject(initData.id, spl); } } catch (const VExceptionBadId &e) @@ -2598,7 +2622,7 @@ void VPattern::ParseNodeSpline(const QDomElement &domElement, const Document &pa return;// Just ignore } - VNodeSpline::Create(this, data, id, idObject, parse, Source::FromFile, "", idTool); + VNodeSpline::Create(initData); } catch (const VExceptionBadId &e) { @@ -2615,27 +2639,30 @@ void VPattern::ParseNodeSplinePath(const QDomElement &domElement, const Document try { - quint32 id = 0; - quint32 idObject = 0; - quint32 idTool = 0; + VAbstractNodeInitData initData; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - SplinesCommonAttributes(domElement, id, idObject, idTool); + SplinesCommonAttributes(domElement, initData.id, initData.idObject, initData.idTool); try { - const auto obj = data->GetGObject(idObject); + const auto obj = initData.data->GetGObject(initData.idObject); if (obj->getType() == GOType::SplinePath) { - VSplinePath *path = new VSplinePath(*data->GeometricObject(idObject)); - path->setIdObject(idObject); + VSplinePath *path = new VSplinePath(*initData.data->GeometricObject(initData.idObject)); + path->setIdObject(initData.idObject); path->setMode(Draw::Modeling); - data->UpdateGObject(id, path); + initData.data->UpdateGObject(initData.id, path); } else { - VCubicBezierPath *spl = new VCubicBezierPath(*data->GeometricObject(idObject)); - spl->setIdObject(idObject); + VCubicBezierPath *spl = + new VCubicBezierPath(*initData.data->GeometricObject(initData.idObject)); + spl->setIdObject(initData.idObject); spl->setMode(Draw::Modeling); - data->UpdateGObject(id, spl); + initData.data->UpdateGObject(initData.id, spl); } } catch (const VExceptionBadId &e) @@ -2643,7 +2670,7 @@ void VPattern::ParseNodeSplinePath(const QDomElement &domElement, const Document Q_UNUSED(e) return;// Just ignore } - VNodeSplinePath::Create(this, data, id, idObject, parse, Source::FromFile, "", idTool); + VNodeSplinePath::Create(initData); } catch (const VExceptionBadId &e) { @@ -2661,26 +2688,31 @@ void VPattern::ParseToolArc(VMainGraphicsScene *scene, QDomElement &domElement, try { - quint32 id = 0; + VToolArcInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); - const QString radius = GetParametrString(domElement, AttrRadius, "10"); - QString r = radius;//need for saving fixed formula; - const QString f1 = GetParametrString(domElement, AttrAngle1, "180"); - QString f1Fix = f1;//need for saving fixed formula; - const QString f2 = GetParametrString(domElement, AttrAngle2, "270"); - QString f2Fix = f2;//need for saving fixed formula; - const QString color = GetParametrString(domElement, AttrColor, ColorBlack); - const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); + ToolsCommonAttributes(domElement, initData.id); + initData.center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); + initData.radius = GetParametrString(domElement, AttrRadius, "10"); + const QString r = initData.radius;//need for saving fixed formula; + initData.f1 = GetParametrString(domElement, AttrAngle1, "180"); + const QString f1Fix = initData.f1;//need for saving fixed formula; + initData.f2 = GetParametrString(domElement, AttrAngle2, "270"); + const QString f2Fix = initData.f2;//need for saving fixed formula; + initData.color = GetParametrString(domElement, AttrColor, ColorBlack); + initData.penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); - VToolArc::Create(id, center, r, f1Fix, f2Fix, color, penStyle, scene, this, data, parse, Source::FromFile); + VToolArc::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (r != radius || f1Fix != f1 || f2Fix != f2) + if (r != initData.radius || f1Fix != initData.f1 || f2Fix != initData.f2) { - SetAttribute(domElement, AttrRadius, r); - SetAttribute(domElement, AttrAngle1, f1Fix); - SetAttribute(domElement, AttrAngle2, f2Fix); + SetAttribute(domElement, AttrRadius, initData.radius); + SetAttribute(domElement, AttrAngle1, initData.f1); + SetAttribute(domElement, AttrAngle2, initData.f2); modified = true; haveLiteChange(); } @@ -2707,33 +2739,38 @@ void VPattern::ParseToolEllipticalArc(VMainGraphicsScene *scene, QDomElement &do try { - quint32 id = 0; + VToolEllipticalArcInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); - const QString radius1 = GetParametrString(domElement, AttrRadius1, "10"); - const QString radius2 = GetParametrString(domElement, AttrRadius2, "10"); - QString r1 = radius1;//need for saving fixed formula; - QString r2 = radius2;//need for saving fixed formula; - const QString f1 = GetParametrString(domElement, AttrAngle1, "180"); - QString f1Fix = f1;//need for saving fixed formula; - const QString f2 = GetParametrString(domElement, AttrAngle2, "270"); - QString f2Fix = f2;//need for saving fixed formula; - const QString frotation = GetParametrString(domElement, AttrRotationAngle, "0"); - QString frotationFix = frotation;//need for saving fixed formula; - const QString color = GetParametrString(domElement, AttrColor, ColorBlack); - const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); + ToolsCommonAttributes(domElement, initData.id); + initData.center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); + initData.radius1 = GetParametrString(domElement, AttrRadius1, "10"); + initData.radius2 = GetParametrString(domElement, AttrRadius2, "10"); + const QString r1 = initData.radius1;//need for saving fixed formula; + const QString r2 = initData.radius2;//need for saving fixed formula; + initData.f1 = GetParametrString(domElement, AttrAngle1, "180"); + const QString f1Fix = initData.f1;//need for saving fixed formula; + initData.f2 = GetParametrString(domElement, AttrAngle2, "270"); + const QString f2Fix = initData.f2;//need for saving fixed formula; + initData.rotationAngle = GetParametrString(domElement, AttrRotationAngle, "0"); + const QString frotationFix = initData.rotationAngle;//need for saving fixed formula; + initData.color = GetParametrString(domElement, AttrColor, ColorBlack); + initData.penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); - VToolEllipticalArc::Create(id, center, r1, r2, f1Fix, f2Fix, frotationFix, color, penStyle, scene, this, data, - parse, Source::FromFile); + VToolEllipticalArc::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (r1 != radius1 || r2 != radius2 || f1Fix != f1 || f2Fix != f2 || frotationFix != frotation) + if (r1 != initData.radius1 || r2 != initData.radius2 || f1Fix != initData.f1 || f2Fix != initData.f2 + || frotationFix != initData.rotationAngle) { - SetAttribute(domElement, AttrRadius1, r1); - SetAttribute(domElement, AttrRadius2, r2); - SetAttribute(domElement, AttrAngle1, f1Fix); - SetAttribute(domElement, AttrAngle2, f2Fix); - SetAttribute(domElement, AttrRotationAngle, frotationFix); + SetAttribute(domElement, AttrRadius1, initData.radius1); + SetAttribute(domElement, AttrRadius2, initData.radius2); + SetAttribute(domElement, AttrAngle1, initData.f1); + SetAttribute(domElement, AttrAngle2, initData.f2); + SetAttribute(domElement, AttrRotationAngle, initData.rotationAngle); modified = true; haveLiteChange(); } @@ -2759,25 +2796,29 @@ void VPattern::ParseNodeEllipticalArc(const QDomElement &domElement, const Docum try { - quint32 id = 0; + VAbstractNodeInitData initData; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 idObject = GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR); - const quint32 idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); + ToolsCommonAttributes(domElement, initData.id); + initData.idObject = GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR); + initData.idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); VEllipticalArc *arc = nullptr; try { - arc = new VEllipticalArc(*data->GeometricObject(idObject)); + arc = new VEllipticalArc(*initData.data->GeometricObject(initData.idObject)); } catch (const VExceptionBadId &e) { // Possible case. Parent was deleted, but the node object is still here. Q_UNUSED(e) return;// Just ignore } - arc->setIdObject(idObject); + arc->setIdObject(initData.idObject); arc->setMode(Draw::Modeling); - data->UpdateGObject(id, arc); - VNodeEllipticalArc::Create(this, data, id, idObject, parse, Source::FromFile, "", idTool); + initData.data->UpdateGObject(initData.id, arc); + VNodeEllipticalArc::Create(initData); } catch (const VExceptionBadId &e) { @@ -2794,25 +2835,29 @@ void VPattern::ParseNodeArc(const QDomElement &domElement, const Document &parse try { - quint32 id = 0; + VAbstractNodeInitData initData; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 idObject = GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR); - const quint32 idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); + ToolsCommonAttributes(domElement, initData.id); + initData.idObject = GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR); + initData.idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); VArc *arc = nullptr; try { - arc = new VArc(*data->GeometricObject(idObject)); + arc = new VArc(*data->GeometricObject(initData.idObject)); } catch (const VExceptionBadId &e) { // Possible case. Parent was deleted, but the node object is still here. Q_UNUSED(e) return;// Just ignore } - arc->setIdObject(idObject); + arc->setIdObject(initData.idObject); arc->setMode(Draw::Modeling); - data->UpdateGObject(id, arc); - VNodeArc::Create(this, data, id, idObject, parse, Source::FromFile, "", idTool); + initData.data->UpdateGObject(initData.id, arc); + VNodeArc::Create(initData); } catch (const VExceptionBadId &e) { @@ -2830,27 +2875,31 @@ void VPattern::ParseToolArcWithLength(VMainGraphicsScene *scene, QDomElement &do try { - quint32 id = 0; + VToolArcWithLengthInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); - const QString radius = GetParametrString(domElement, AttrRadius, "10"); - QString r = radius;//need for saving fixed formula; - const QString f1 = GetParametrString(domElement, AttrAngle1, "180"); - QString f1Fix = f1;//need for saving fixed formula; - const QString length = GetParametrString(domElement, AttrLength, "10"); - QString lengthFix = length;//need for saving fixed length; - const QString color = GetParametrString(domElement, AttrColor, ColorBlack); - const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); + ToolsCommonAttributes(domElement, initData.id); + initData.center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); + initData.radius = GetParametrString(domElement, AttrRadius, "10"); + const QString r = initData.radius;//need for saving fixed formula; + initData.f1 = GetParametrString(domElement, AttrAngle1, "180"); + const QString f1Fix = initData.f1;//need for saving fixed formula; + initData.length = GetParametrString(domElement, AttrLength, "10"); + const QString lengthFix = initData.length;//need for saving fixed length; + initData.color = GetParametrString(domElement, AttrColor, ColorBlack); + initData.penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); - VToolArcWithLength::Create(id, center, r, f1Fix, lengthFix, color, penStyle, scene, this, data, parse, - Source::FromFile); + VToolArcWithLength::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (r != radius || f1Fix != f1 || lengthFix != length) + if (r != initData.radius || f1Fix != initData.f1 || lengthFix != initData.length) { - SetAttribute(domElement, AttrRadius, r); - SetAttribute(domElement, AttrAngle1, f1Fix); - SetAttribute(domElement, AttrLength, lengthFix); + SetAttribute(domElement, AttrRadius, initData.radius); + SetAttribute(domElement, AttrAngle1, initData.f1); + SetAttribute(domElement, AttrLength, initData.length); modified = true; haveLiteChange(); } @@ -2877,23 +2926,26 @@ void VPattern::ParseToolRotation(VMainGraphicsScene *scene, QDomElement &domElem try { - quint32 id = NULL_ID; + VToolRotationInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 center = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); - const QString angle = GetParametrString(domElement, AttrAngle, "10"); - QString a = angle;//need for saving fixed formula; - const QString suffix = GetParametrString(domElement, AttrSuffix, ""); + ToolsCommonAttributes(domElement, initData.id); + initData.origin = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); + initData.angle = GetParametrString(domElement, AttrAngle, "10"); + const QString a = initData.angle;//need for saving fixed formula; + initData.suffix = GetParametrString(domElement, AttrSuffix, ""); - QVector source; - QVector destination; - VAbstractOperation::ExtractData(domElement, source, destination); + VAbstractOperation::ExtractData(domElement, initData); - VToolRotation::Create(id, center, a, suffix, source, destination, scene, this, data, parse, Source::FromFile); + VToolRotation::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (a != angle) + if (a != initData.angle) { - SetAttribute(domElement, AttrAngle, a); + SetAttribute(domElement, AttrAngle, initData.angle); modified = true; haveLiteChange(); } @@ -2920,19 +2972,21 @@ void VPattern::ParseToolFlippingByLine(VMainGraphicsScene *scene, QDomElement &d try { - quint32 id = NULL_ID; + VToolFlippingByLineInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 p1 = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); - const quint32 p2 = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); - const QString suffix = GetParametrString(domElement, AttrSuffix, ""); + ToolsCommonAttributes(domElement, initData.id); + initData.firstLinePointId = GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); + initData.secondLinePointId = GetParametrUInt(domElement, AttrP2Line, NULL_ID_STR); + initData.suffix = GetParametrString(domElement, AttrSuffix, ""); - QVector source; - QVector destination; - VAbstractOperation::ExtractData(domElement, source, destination); + VAbstractOperation::ExtractData(domElement, initData); - VToolFlippingByLine::Create(id, p1, p2, suffix, source, destination, scene, this, data, parse, - Source::FromFile); + VToolFlippingByLine::Create(initData); } catch (const VExceptionBadId &e) { @@ -2950,19 +3004,21 @@ void VPattern::ParseToolFlippingByAxis(VMainGraphicsScene *scene, QDomElement &d try { - quint32 id = NULL_ID; + VToolFlippingByAxisInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const quint32 origin = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); - const auto axisType = static_cast(GetParametrUInt(domElement, AttrAxisType, "1")); - const QString suffix = GetParametrString(domElement, AttrSuffix, ""); + ToolsCommonAttributes(domElement, initData.id); + initData.originPointId = GetParametrUInt(domElement, AttrCenter, NULL_ID_STR); + initData.axisType = static_cast(GetParametrUInt(domElement, AttrAxisType, "1")); + initData.suffix = GetParametrString(domElement, AttrSuffix, ""); - QVector source; - QVector destination; - VAbstractOperation::ExtractData(domElement, source, destination); + VAbstractOperation::ExtractData(domElement, initData); - VToolFlippingByAxis::Create(id, origin, axisType, suffix, source, destination, scene, this, data, parse, - Source::FromFile); + VToolFlippingByAxis::Create(initData); } catch (const VExceptionBadId &e) { @@ -2980,25 +3036,28 @@ void VPattern::ParseToolMove(VMainGraphicsScene *scene, QDomElement &domElement, try { - quint32 id = NULL_ID; + VToolMoveInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; - ToolsCommonAttributes(domElement, id); - const QString angle = GetParametrString(domElement, AttrAngle, "0"); - QString a = angle;//need for saving fixed formula; - const QString length = GetParametrString(domElement, AttrLength, "0"); - QString len = length;//need for saving fixed formula; - const QString suffix = GetParametrString(domElement, AttrSuffix, ""); + ToolsCommonAttributes(domElement, initData.id); + initData.formulaAngle = GetParametrString(domElement, AttrAngle, "0"); + const QString a = initData.formulaAngle;//need for saving fixed formula; + initData.formulaLength = GetParametrString(domElement, AttrLength, "0"); + const QString len = initData.formulaLength;//need for saving fixed formula; + initData.suffix = GetParametrString(domElement, AttrSuffix, ""); - QVector source; - QVector destination; - VAbstractOperation::ExtractData(domElement, source, destination); + VAbstractOperation::ExtractData(domElement, initData); - VToolMove::Create(id, a, len, suffix, source, destination, scene, this, data, parse, Source::FromFile); + VToolMove::Create(initData); //Rewrite attribute formula. Need for situation when we have wrong formula. - if (a != angle || len != length) + if (a != initData.formulaAngle || len != initData.formulaLength) { - SetAttribute(domElement, AttrAngle, a); - SetAttribute(domElement, AttrLength, len); + SetAttribute(domElement, AttrAngle, initData.formulaAngle); + SetAttribute(domElement, AttrLength, initData.formulaLength); modified = true; haveLiteChange(); } @@ -3348,9 +3407,6 @@ void VPattern::ParseToolsElement(VMainGraphicsScene *scene, const QDomElement &d case 0: //VToolUnionDetails::ToolType try { - quint32 id = 0; - ToolsCommonAttributes(domElement, id); - VToolUnionDetailsInitData initData; initData.indexD1 = GetParametrUInt(domElement, VToolUnionDetails::AttrIndexD1, "-1"); initData.indexD2 = GetParametrUInt(domElement, VToolUnionDetails::AttrIndexD2, "-1"); @@ -3360,7 +3416,9 @@ void VPattern::ParseToolsElement(VMainGraphicsScene *scene, const QDomElement &d initData.parse = parse; initData.typeCreation = Source::FromFile; - VToolUnionDetails::Create(id, initData); + ToolsCommonAttributes(domElement, initData.id); + + VToolUnionDetails::Create(initData); } catch (const VExceptionBadId &e) { @@ -3415,28 +3473,29 @@ void VPattern::ParsePathElement(VMainGraphicsScene *scene, QDomElement &domEleme Q_ASSERT_X(not domElement.isNull(), Q_FUNC_INFO, "domElement is null"); try { - quint32 id = 0; - ToolsCommonAttributes(domElement, id); - const QString name = GetParametrString(domElement, AttrName, tr("Unnamed path")); - const QString defType = QString().setNum(static_cast(PiecePathType::CustomSeamAllowance)); - const PiecePathType type = static_cast(GetParametrUInt(domElement, AttrType, defType)); - const quint32 idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); - const QString penType = GetParametrString(domElement, AttrTypeLine, TypeLineLine); - const bool cut = GetParametrBool(domElement, AttrCut, falseStr); + VToolPiecePathInitData initData; + initData.scene = scene; + initData.doc = this; + initData.data = data; + initData.parse = parse; + initData.typeCreation = Source::FromFile; + + ToolsCommonAttributes(domElement, initData.id); + initData.idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, NULL_ID_STR); - VPiecePath path; const QDomElement element = domElement.firstChildElement(VAbstractPattern::TagNodes); if (not element.isNull()) { - path = ParsePathNodes(element); + initData.path = ParsePathNodes(element); } - path.SetType(type); - path.SetName(name); - path.SetPenType(LineStyleToPenStyle(penType)); - path.SetCutPath(cut); + const QString defType = QString().setNum(static_cast(PiecePathType::CustomSeamAllowance)); + initData.path.SetType(static_cast(GetParametrUInt(domElement, AttrType, defType))); + initData.path.SetName(GetParametrString(domElement, AttrName, tr("Unnamed path"))); + initData.path.SetPenType(LineStyleToPenStyle(GetParametrString(domElement, AttrTypeLine, TypeLineLine))); + initData.path.SetCutPath(GetParametrBool(domElement, AttrCut, falseStr)); - VToolPiecePath::Create(id, path, 0, scene, this, data, parse, Source::FromFile, "", idTool); + VToolPiecePath::Create(initData); } catch (const VExceptionBadId &e) { diff --git a/src/app/valentina/xml/vpattern.h b/src/app/valentina/xml/vpattern.h index dd2023ba7..15b1069e4 100644 --- a/src/app/valentina/xml/vpattern.h +++ b/src/app/valentina/xml/vpattern.h @@ -36,6 +36,8 @@ class VMainGraphicsScene; class VNodeDetail; +class VToolSinglePointInitData; +class VToolLinePointInitData; /** * @brief The VPattern class working with pattern file. @@ -155,10 +157,8 @@ private: void ParseIncrementsElement(const QDomNode& node); void PrepareForParse(const Document &parse); void ToolsCommonAttributes(const QDomElement &domElement, quint32 &id); - void PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, - qreal &my, bool &labelVisible, QString &typeLine, QString &lineColor); - void PointsCommonAttributes(const QDomElement &domElement, quint32 &id, QString &name, qreal &mx, - qreal &my, bool &labelVisible); + void PointsWithLineCommonAttributes(const QDomElement &domElement, VToolLinePointInitData &initData); + void PointsCommonAttributes(const QDomElement &domElement, VToolSinglePointInitData &initData); void PointsCommonAttributes(const QDomElement &domElement, quint32 &id, qreal &mx, qreal &my); void SplinesCommonAttributes(const QDomElement &domElement, quint32 &id, quint32 &idObject, quint32 &idTool); diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.cpp index f37fc9c1c..1e1f37e2a 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.cpp @@ -46,21 +46,19 @@ VAbstractFlipping::VAbstractFlipping(VAbstractPattern *doc, VContainer *data, qu } //--------------------------------------------------------------------------------------------------------------------- -void VAbstractFlipping::CreateDestination(Source typeCreation, quint32 &id, QVector &dest, - const QVector &source, const QPointF &fPoint, const QPointF &sPoint, - const QString &suffix, VAbstractPattern *doc, VContainer *data, - const Document &parse) +void VAbstractFlipping::CreateDestination(VAbstractOperationInitData &initData, const QPointF &fPoint, + const QPointF &sPoint) { - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - dest.clear();// Try to avoid mistake, value must be empty + initData.destination.clear();// Try to avoid mistake, value must be empty - id = VContainer::getNextId();//Just reserve id for tool + initData.id = VContainer::getNextId();//Just reserve id for tool - for (int i = 0; i < source.size(); ++i) + for (int i = 0; i < initData.source.size(); ++i) { - const quint32 idObject = source.at(i); - const QSharedPointer obj = data->GetGObject(idObject); + const quint32 idObject = initData.source.at(i); + const QSharedPointer obj = initData.data->GetGObject(idObject); // This check helps to find missed objects in the switch Q_STATIC_ASSERT_X(static_cast(GOType::Unknown) == 7, "Not all objects were handled."); @@ -70,25 +68,34 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") switch(static_cast(obj->getType())) { case GOType::Point: - dest.append(CreatePoint(id, idObject, fPoint, sPoint, suffix, data)); + initData.destination.append(CreatePoint(initData.id, idObject, fPoint, sPoint, initData.suffix, + initData.data)); break; case GOType::Arc: - dest.append(CreateArc(id, idObject, fPoint, sPoint, suffix, data)); + initData.destination.append(CreateArc(initData.id, idObject, fPoint, sPoint, initData.suffix, + initData.data)); break; case GOType::EllipticalArc: - dest.append(CreateArc(id, idObject, fPoint, sPoint, suffix, data)); + initData.destination.append(CreateArc(initData.id, idObject, fPoint, sPoint, + initData.suffix, initData.data)); break; case GOType::Spline: - dest.append(CreateCurve(id, idObject, fPoint, sPoint, suffix, data)); + initData.destination.append(CreateCurve(initData.id, idObject, fPoint, sPoint, + initData.suffix, initData.data)); break; case GOType::SplinePath: - dest.append(CreateCurveWithSegments(id, idObject, fPoint, sPoint, suffix, data)); + initData.destination.append(CreateCurveWithSegments(initData.id, idObject, fPoint, + sPoint, initData.suffix, + initData.data)); break; case GOType::CubicBezier: - dest.append(CreateCurve(id, idObject, fPoint, sPoint, suffix, data)); + initData.destination.append(CreateCurve(initData.id, idObject, fPoint, sPoint, + initData.suffix, initData.data)); break; case GOType::CubicBezierPath: - dest.append(CreateCurveWithSegments(id, idObject, fPoint, sPoint, suffix, data)); + initData.destination.append(CreateCurveWithSegments(initData.id, idObject, fPoint, + sPoint, initData.suffix, + initData.data)); break; case GOType::Unknown: break; @@ -98,10 +105,10 @@ QT_WARNING_POP } else { - for (int i = 0; i < source.size(); ++i) + for (int i = 0; i < initData.source.size(); ++i) { - const quint32 idObject = source.at(i); - const QSharedPointer obj = data->GetGObject(idObject); + const quint32 idObject = initData.source.at(i); + const QSharedPointer obj = initData.data->GetGObject(idObject); // This check helps to find missed objects in the switch Q_STATIC_ASSERT_X(static_cast(GOType::Unknown) == 7, "Not all objects were handled."); @@ -111,36 +118,44 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") switch(static_cast(obj->getType())) { case GOType::Point: - UpdatePoint(id, idObject, fPoint, sPoint, suffix, data, dest.at(i).id, dest.at(i).mx, - dest.at(i).my); + { + const DestinationItem &item = initData.destination.at(i); + UpdatePoint(initData.id, idObject, fPoint, sPoint, initData.suffix, initData.data, item.id, item.mx, + item.my); break; + } case GOType::Arc: - UpdateArc(id, idObject, fPoint, sPoint, suffix, data, dest.at(i).id); + UpdateArc(initData.id, idObject, fPoint, sPoint, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::EllipticalArc: - UpdateArc(id, idObject, fPoint, sPoint, suffix, data, dest.at(i).id); + UpdateArc(initData.id, idObject, fPoint, sPoint, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::Spline: - UpdateCurve(id, idObject, fPoint, sPoint, suffix, data, dest.at(i).id); + UpdateCurve(initData.id, idObject, fPoint, sPoint, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::SplinePath: - UpdateCurveWithSegments(id, idObject, fPoint, sPoint, suffix, data, dest.at(i).id); + UpdateCurveWithSegments(initData.id, idObject, fPoint, sPoint, initData.suffix, + initData.data, initData.destination.at(i).id); break; case GOType::CubicBezier: - UpdateCurve(id, idObject, fPoint, sPoint, suffix, data, dest.at(i).id); + UpdateCurve(initData.id, idObject, fPoint, sPoint, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::CubicBezierPath: - UpdateCurveWithSegments(id, idObject, fPoint, sPoint, suffix, data, - dest.at(i).id); + UpdateCurveWithSegments(initData.id, idObject, fPoint, sPoint, initData.suffix, + initData.data, initData.destination.at(i).id); break; case GOType::Unknown: break; } QT_WARNING_POP } - if (parse != Document::FullParse) + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } } diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.h b/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.h index f9f3558b2..f678ba646 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.h +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.h @@ -43,10 +43,7 @@ protected: const QVector &source, const QVector &destination, QGraphicsItem *parent = nullptr); - static void CreateDestination(Source typeCreation, quint32 &id, QVector &dest, - const QVector &source, const QPointF &fPoint, const QPointF &sPoint, - const QString &suffix, VAbstractPattern *doc, VContainer *data, - const Document &parse); + static void CreateDestination(VAbstractOperationInitData &initData, const QPointF &fPoint, const QPointF &sPoint); static DestinationItem CreatePoint(quint32 idTool, quint32 idItem, const QPointF &firstPoint, const QPointF &secondPoint, const QString &suffix, VContainer *data); diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp index 810e59917..d35cb8fcf 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp @@ -84,12 +84,19 @@ VToolFlippingByAxis *VToolFlippingByAxis::Create(QSharedPointer dial SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 originPointId = dialogTool->GetOriginPointId(); - const AxisType axisType = dialogTool->GetAxisType(); - const QString suffix = dialogTool->GetSuffix(); - const QVector source = dialogTool->GetObjects(); - VToolFlippingByAxis* operation = Create(0, originPointId, axisType, suffix, source, QVector(), - scene, doc, data, Document::FullParse, Source::FromGui); + + VToolFlippingByAxisInitData initData; + initData.originPointId = dialogTool->GetOriginPointId(); + initData.axisType = dialogTool->GetAxisType(); + initData.suffix = dialogTool->GetSuffix(); + initData.source = dialogTool->GetObjects(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolFlippingByAxis* operation = Create(initData); if (operation != nullptr) { operation->m_dialog = dialogTool; @@ -98,17 +105,13 @@ VToolFlippingByAxis *VToolFlippingByAxis::Create(QSharedPointer dial } //--------------------------------------------------------------------------------------------------------------------- -VToolFlippingByAxis *VToolFlippingByAxis::Create(const quint32 _id, quint32 originPointId, AxisType axisType, - const QString &suffix, const QVector &source, - const QVector &destination, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolFlippingByAxis *VToolFlippingByAxis::Create(VToolFlippingByAxisInitData initData) { - const auto originPoint = *data->GeometricObject(originPointId); + const auto originPoint = *initData.data->GeometricObject(initData.originPointId); const QPointF fPoint = static_cast(originPoint); QPointF sPoint; - if (axisType == AxisType::VerticalAxis) + if (initData.axisType == AxisType::VerticalAxis) { sPoint = QPointF(fPoint.x(), fPoint.y() + 100); } @@ -117,23 +120,19 @@ VToolFlippingByAxis *VToolFlippingByAxis::Create(const quint32 _id, quint32 orig sPoint = QPointF(fPoint.x() + 100, fPoint.y()); } - QVector dest = destination; + CreateDestination(initData, fPoint, sPoint); - quint32 id = _id; - CreateDestination(typeCreation, id, dest, source, fPoint, sPoint, suffix, doc, data, parse); - - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::FlippingByAxis, doc); - VToolFlippingByAxis *tool = new VToolFlippingByAxis(doc, data, id, originPointId, axisType, suffix, source, - dest, typeCreation); - scene->addItem(tool); - InitOperationToolConnections(scene, tool); - VAbstractPattern::AddTool(id, tool); - doc->IncrementReferens(originPoint.getIdTool()); - for (int i = 0; i < source.size(); ++i) + VAbstractTool::AddRecord(initData.id, Tool::FlippingByAxis, initData.doc); + VToolFlippingByAxis *tool = new VToolFlippingByAxis(initData); + initData.scene->addItem(tool); + InitOperationToolConnections(initData.scene, tool); + VAbstractPattern::AddTool(initData.id, tool); + initData.doc->IncrementReferens(originPoint.getIdTool()); + for (int i = 0; i < initData.source.size(); ++i) { - doc->IncrementReferens(data->GetGObject(source.at(i))->getIdTool()); + initData.doc->IncrementReferens(initData.data->GetGObject(initData.source.at(i))->getIdTool()); } return tool; } @@ -239,15 +238,13 @@ QString VToolFlippingByAxis::MakeToolTip() const } //--------------------------------------------------------------------------------------------------------------------- -VToolFlippingByAxis::VToolFlippingByAxis(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 originPointId, - AxisType axisType, const QString &suffix, - const QVector &source, const QVector &destination, - const Source &typeCreation, QGraphicsItem *parent) - : VAbstractFlipping(doc, data, id, suffix, source, destination, parent), - m_originPointId(originPointId), - m_axisType(axisType) +VToolFlippingByAxis::VToolFlippingByAxis(const VToolFlippingByAxisInitData &initData, QGraphicsItem *parent) + : VAbstractFlipping(initData.doc, initData.data, initData.id, initData.suffix, initData.source, + initData.destination, parent), + m_originPointId(initData.originPointId), + m_axisType(initData.axisType) { InitOperatedObjects(); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h index 7ef398d5e..6b30e6590 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.h @@ -33,6 +33,18 @@ #include "vabstractflipping.h" +struct VToolFlippingByAxisInitData : public VAbstractOperationInitData +{ + VToolFlippingByAxisInitData() + : VAbstractOperationInitData(), + originPointId(NULL_ID), + axisType(AxisType::VerticalAxis) + {} + + quint32 originPointId; + AxisType axisType; +}; + class VToolFlippingByAxis : public VAbstractFlipping { Q_OBJECT @@ -41,11 +53,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolFlippingByAxis* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolFlippingByAxis* Create(const quint32 _id, quint32 originPointId, AxisType axisType, - const QString &suffix, const QVector &source, - const QVector &destination, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolFlippingByAxis* Create(VToolFlippingByAxisInitData initData); static const QString ToolType; @@ -72,10 +80,7 @@ private: quint32 m_originPointId; AxisType m_axisType; - VToolFlippingByAxis(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 originPointId, - AxisType axisType, const QString &suffix, const QVector &source, - const QVector &destination, const Source &typeCreation, - QGraphicsItem *parent = nullptr); + VToolFlippingByAxis(const VToolFlippingByAxisInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLFLIPPINGBYAXIS_H diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp index 5fc6a5986..0c2214da5 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp @@ -84,13 +84,19 @@ VToolFlippingByLine *VToolFlippingByLine::Create(QSharedPointer dial SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 firstLinePointId = dialogTool->GetFirstLinePointId(); - const quint32 secondLinePointId = dialogTool->GetSecondLinePointId(); - const QString suffix = dialogTool->GetSuffix(); - const QVector source = dialogTool->GetObjects(); - VToolFlippingByLine* operation = Create(0, firstLinePointId, secondLinePointId, suffix, source, - QVector(), scene, doc, data, Document::FullParse, - Source::FromGui); + + VToolFlippingByLineInitData initData; + initData.firstLinePointId = dialogTool->GetFirstLinePointId(); + initData.secondLinePointId = dialogTool->GetSecondLinePointId(); + initData.suffix = dialogTool->GetSuffix(); + initData.source = dialogTool->GetObjects(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolFlippingByLine* operation = Create(initData); if (operation != nullptr) { operation->m_dialog = dialogTool; @@ -99,36 +105,28 @@ VToolFlippingByLine *VToolFlippingByLine::Create(QSharedPointer dial } //--------------------------------------------------------------------------------------------------------------------- -VToolFlippingByLine *VToolFlippingByLine::Create(const quint32 _id, quint32 firstLinePointId, quint32 secondLinePointId, - const QString &suffix, const QVector &source, - const QVector &destination, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolFlippingByLine *VToolFlippingByLine::Create(VToolFlippingByLineInitData initData) { - const auto firstPoint = *data->GeometricObject(firstLinePointId); + const auto firstPoint = *initData.data->GeometricObject(initData.firstLinePointId); const QPointF fPoint = static_cast(firstPoint); - const auto secondPoint = *data->GeometricObject(secondLinePointId); + const auto secondPoint = *initData.data->GeometricObject(initData.secondLinePointId); const QPointF sPoint = static_cast(secondPoint); - QVector dest = destination; + CreateDestination(initData, fPoint, sPoint); - quint32 id = _id; - CreateDestination(typeCreation, id, dest, source, fPoint, sPoint, suffix, doc, data, parse); - - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::FlippingByLine, doc); - VToolFlippingByLine *tool = new VToolFlippingByLine(doc, data, id, firstLinePointId, secondLinePointId, suffix, - source, dest, typeCreation); - scene->addItem(tool); - InitOperationToolConnections(scene, tool); - VAbstractPattern::AddTool(id, tool); - doc->IncrementReferens(firstPoint.getIdTool()); - doc->IncrementReferens(secondPoint.getIdTool()); - for (int i = 0; i < source.size(); ++i) + VAbstractTool::AddRecord(initData.id, Tool::FlippingByLine, initData.doc); + VToolFlippingByLine *tool = new VToolFlippingByLine(initData); + initData.scene->addItem(tool); + InitOperationToolConnections(initData.scene, tool); + VAbstractPattern::AddTool(initData.id, tool); + initData.doc->IncrementReferens(firstPoint.getIdTool()); + initData.doc->IncrementReferens(secondPoint.getIdTool()); + for (int i = 0; i < initData.source.size(); ++i) { - doc->IncrementReferens(data->GetGObject(source.at(i))->getIdTool()); + initData.doc->IncrementReferens(initData.data->GetGObject(initData.source.at(i))->getIdTool()); } return tool; } @@ -228,14 +226,12 @@ QString VToolFlippingByLine::MakeToolTip() const } //--------------------------------------------------------------------------------------------------------------------- -VToolFlippingByLine::VToolFlippingByLine(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 firstLinePointId, - quint32 secondLinePointId, const QString &suffix, - const QVector &source, const QVector &destination, - const Source &typeCreation, QGraphicsItem *parent) - : VAbstractFlipping(doc, data, id, suffix, source, destination, parent), - m_firstLinePointId(firstLinePointId), - m_secondLinePointId(secondLinePointId) +VToolFlippingByLine::VToolFlippingByLine(const VToolFlippingByLineInitData &initData, QGraphicsItem *parent) + : VAbstractFlipping(initData.doc, initData.data, initData.id, initData.suffix, initData.source, + initData.destination, parent), + m_firstLinePointId(initData.firstLinePointId), + m_secondLinePointId(initData.secondLinePointId) { InitOperatedObjects(); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h index 249395dfd..397dc47f3 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.h @@ -33,6 +33,19 @@ #include "vabstractflipping.h" +struct VToolFlippingByLineInitData : public VAbstractOperationInitData +{ + VToolFlippingByLineInitData() + : VAbstractOperationInitData(), + firstLinePointId(NULL_ID), + secondLinePointId(NULL_ID) + {} + + quint32 firstLinePointId; + quint32 secondLinePointId; +}; + + class VToolFlippingByLine : public VAbstractFlipping { Q_OBJECT @@ -41,11 +54,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolFlippingByLine* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolFlippingByLine* Create(const quint32 _id, quint32 firstLinePointId, quint32 secondLinePointId, - const QString &suffix, const QVector &source, - const QVector &destination, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolFlippingByLine* Create(VToolFlippingByLineInitData initData); static const QString ToolType; @@ -70,10 +79,7 @@ private: quint32 m_firstLinePointId; quint32 m_secondLinePointId; - VToolFlippingByLine(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 firstLinePointId, - quint32 secondLinePointId, const QString &suffix, const QVector &source, - const QVector &destination, const Source &typeCreation, - QGraphicsItem *parent = nullptr); + VToolFlippingByLine(const VToolFlippingByLineInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLFLIPPINGBYLINE_H diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp index e0021f661..52b2fa0d3 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp @@ -85,8 +85,7 @@ void VAbstractOperation::paint(QPainter *painter, const QStyleOptionGraphicsItem } //--------------------------------------------------------------------------------------------------------------------- -void VAbstractOperation::ExtractData(const QDomElement &domElement, QVector &source, - QVector &destination) +void VAbstractOperation::ExtractData(const QDomElement &domElement, VAbstractOperationInitData &initData) { const QDomNodeList nodeList = domElement.childNodes(); for (qint32 i = 0; i < nodeList.size(); ++i) @@ -94,21 +93,21 @@ void VAbstractOperation::ExtractData(const QDomElement &domElement, QVectortoPixel(VDomDocument::GetParametrDouble(element, AttrMx, QString::number(INT_MAX))); d.my = qApp->toPixel(VDomDocument::GetParametrDouble(element, AttrMy, QString::number(INT_MAX))); - destination.append(d); + initData.destination.append(d); } } } diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h index bc70bf867..195c6819b 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h @@ -49,6 +49,20 @@ struct DestinationItem qreal my; }; +struct VAbstractOperationInitData : public VAbstractToolInitData +{ + VAbstractOperationInitData() + : VAbstractToolInitData(), + suffix(), + source(), + destination() + {} + + QString suffix; + QVector source; + QVector destination; +}; + // FIXME. I don't know how to use QGraphicsItem properly, so just took first available finished class. // QGraphicsItem itself produce case where clicking on empty space produce call to QGraphicsItem. // And i don't know how to fix it. @@ -73,8 +87,7 @@ public: virtual void GroupVisibility(quint32 object, bool visible) Q_DECL_OVERRIDE; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE; - static void ExtractData(const QDomElement &domElement, QVector &source, - QVector &destination); + static void ExtractData(const QDomElement &domElement, VAbstractOperationInitData &initData); public slots: virtual void FullUpdateFromFile() Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp index 27127f122..6b9bad08c 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp @@ -92,12 +92,19 @@ VToolMove *VToolMove::Create(QSharedPointer dialog, VMainGraphicsSce SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - QString angle = dialogTool->GetAngle(); - QString length = dialogTool->GetLength(); - const QString suffix = dialogTool->GetSuffix(); - const QVector source = dialogTool->GetObjects(); - VToolMove* operation = Create(0, angle, length, suffix, source, QVector(), scene, doc, data, - Document::FullParse, Source::FromGui); + + VToolMoveInitData initData; + initData.formulaAngle = dialogTool->GetAngle(); + initData.formulaLength = dialogTool->GetLength(); + initData.suffix = dialogTool->GetSuffix(); + initData.source = dialogTool->GetObjects(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolMove* operation = Create(initData); if (operation != nullptr) { operation->m_dialog = dialogTool; @@ -106,31 +113,24 @@ VToolMove *VToolMove::Create(QSharedPointer dialog, VMainGraphicsSce } //--------------------------------------------------------------------------------------------------------------------- -VToolMove *VToolMove::Create(quint32 _id, QString &formulaAngle, QString &formulaLength, - const QString &suffix, const QVector &source, - const QVector &destination, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolMove *VToolMove::Create(VToolMoveInitData &initData) { qreal calcAngle = 0; qreal calcLength = 0; - calcAngle = CheckFormula(_id, formulaAngle, data); - calcLength = qApp->toPixel(CheckFormula(_id, formulaLength, data)); + calcAngle = CheckFormula(initData.id, initData.formulaAngle, initData.data); + calcLength = qApp->toPixel(CheckFormula(initData.id, initData.formulaLength, initData.data)); - QVector dest = destination; - - quint32 id = _id; - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - dest.clear();// Try to avoid mistake, value must be empty + initData.destination.clear();// Try to avoid mistake, value must be empty - id = VContainer::getNextId();//Just reserve id for tool + initData.id = VContainer::getNextId();//Just reserve id for tool - for (int i = 0; i < source.size(); ++i) + for (int i = 0; i < initData.source.size(); ++i) { - const quint32 idObject = source.at(i); - const QSharedPointer obj = data->GetGObject(idObject); + const quint32 idObject = initData.source.at(i); + const QSharedPointer obj = initData.data->GetGObject(idObject); // This check helps to find missed objects in the switch Q_STATIC_ASSERT_X(static_cast(GOType::Unknown) == 7, "Not all objects were handled."); @@ -140,27 +140,35 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") switch(static_cast(obj->getType())) { case GOType::Point: - dest.append(CreatePoint(id, idObject, calcAngle, calcLength, suffix, data)); + initData.destination.append(CreatePoint(initData.id, idObject, calcAngle, calcLength, + initData.suffix, initData.data)); break; case GOType::Arc: - dest.append(CreateArc(id, idObject, calcAngle, calcLength, suffix, data)); + initData.destination.append(CreateArc(initData.id, idObject, calcAngle, calcLength, + initData.suffix, initData.data)); break; case GOType::EllipticalArc: - dest.append(CreateArc(id, idObject, calcAngle, calcLength, suffix, data)); + initData.destination.append(CreateArc(initData.id, idObject, calcAngle, calcLength, + initData.suffix, initData.data)); break; case GOType::Spline: - dest.append(CreateCurve(id, idObject, calcAngle, calcLength, suffix, data)); + initData.destination.append(CreateCurve(initData.id, idObject, calcAngle, calcLength, + initData.suffix, initData.data)); break; case GOType::SplinePath: - dest.append(CreateCurveWithSegments(id, idObject, calcAngle, calcLength, suffix, - data)); + initData.destination.append(CreateCurveWithSegments(initData.id, idObject, calcAngle, + calcLength, initData.suffix, + initData.data)); break; case GOType::CubicBezier: - dest.append(CreateCurve(id, idObject, calcAngle, calcLength, suffix, data)); + initData.destination.append(CreateCurve(initData.id, idObject, calcAngle, calcLength, + initData.suffix, initData.data)); break; case GOType::CubicBezierPath: - dest.append(CreateCurveWithSegments(id, idObject, calcAngle, calcLength, suffix, - data)); + initData.destination.append(CreateCurveWithSegments(initData.id, idObject, + calcAngle, calcLength, + initData.suffix, + initData.data)); break; case GOType::Unknown: break; @@ -170,10 +178,10 @@ QT_WARNING_POP } else { - for (int i = 0; i < source.size(); ++i) + for (int i = 0; i < initData.source.size(); ++i) { - const quint32 idObject = source.at(i); - const QSharedPointer obj = data->GetGObject(idObject); + const quint32 idObject = initData.source.at(i); + const QSharedPointer obj = initData.data->GetGObject(idObject); // This check helps to find missed objects in the switch Q_STATIC_ASSERT_X(static_cast(GOType::Unknown) == 7, "Not all objects were handled."); @@ -183,51 +191,58 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") switch(static_cast(obj->getType())) { case GOType::Point: - UpdatePoint(id, idObject, calcAngle, calcLength, suffix, data, dest.at(i).id, dest.at(i).mx, - dest.at(i).my); + { + const DestinationItem &item = initData.destination.at(i); + UpdatePoint(initData.id, idObject, calcAngle, calcLength, initData.suffix, initData.data, item.id, + item.mx, item.my); break; + } case GOType::Arc: - UpdateArc(id, idObject, calcAngle, calcLength, suffix, data, dest.at(i).id); + UpdateArc(initData.id, idObject, calcAngle, calcLength, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::EllipticalArc: - UpdateArc(id, idObject, calcAngle, calcLength, suffix, data, dest.at(i).id); + UpdateArc(initData.id, idObject, calcAngle, calcLength, initData.suffix, + initData.data, initData.destination.at(i).id); break; case GOType::Spline: - UpdateCurve(id, idObject, calcAngle, calcLength, suffix, data, dest.at(i).id); + UpdateCurve(initData.id, idObject, calcAngle, calcLength, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::SplinePath: - UpdateCurveWithSegments(id, idObject, calcAngle, calcLength, suffix, data, - dest.at(i).id); + UpdateCurveWithSegments(initData.id, idObject, calcAngle, calcLength, initData.suffix, + initData.data, initData.destination.at(i).id); break; case GOType::CubicBezier: - UpdateCurve(id, idObject, calcAngle, calcLength, suffix, data, dest.at(i).id); + UpdateCurve(initData.id, idObject, calcAngle, calcLength, initData.suffix, + initData.data, initData.destination.at(i).id); break; case GOType::CubicBezierPath: - UpdateCurveWithSegments(id, idObject, calcAngle, calcLength, suffix, data, - dest.at(i).id); + UpdateCurveWithSegments(initData.id, idObject, calcAngle, calcLength, + initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::Unknown: break; } QT_WARNING_POP } - if (parse != Document::FullParse) + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Move, doc); - VToolMove *tool = new VToolMove(doc, data, id, formulaAngle, formulaLength, suffix, source, dest, - typeCreation); - scene->addItem(tool); - InitOperationToolConnections(scene, tool); - VAbstractPattern::AddTool(id, tool); - for (int i = 0; i < source.size(); ++i) + VAbstractTool::AddRecord(initData.id, Tool::Move, initData.doc); + VToolMove *tool = new VToolMove(initData); + initData.scene->addItem(tool); + InitOperationToolConnections(initData.scene, tool); + VAbstractPattern::AddTool(initData.id, tool); + for (int i = 0; i < initData.source.size(); ++i) { - doc->IncrementReferens(data->GetGObject(source.at(i))->getIdTool()); + initData.doc->IncrementReferens(initData.data->GetGObject(initData.source.at(i))->getIdTool()); } return tool; } @@ -361,16 +376,14 @@ QString VToolMove::MakeToolTip() const } //--------------------------------------------------------------------------------------------------------------------- -VToolMove::VToolMove(VAbstractPattern *doc, VContainer *data, quint32 id, - const QString &formulaAngle, const QString &formulaLength, const QString &suffix, - const QVector &source, const QVector &destination, - const Source &typeCreation, QGraphicsItem *parent) - : VAbstractOperation(doc, data, id, suffix, source, destination, parent), - formulaAngle(formulaAngle), - formulaLength(formulaLength) +VToolMove::VToolMove(const VToolMoveInitData &initData, QGraphicsItem *parent) + : VAbstractOperation(initData.doc, initData.data, initData.id, initData.suffix, initData.source, + initData.destination, parent), + formulaAngle(initData.formulaAngle), + formulaLength(initData.formulaLength) { InitOperatedObjects(); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.h b/src/libs/vtools/tools/drawTools/operation/vtoolmove.h index 6c30bbff9..b054f54e9 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.h +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.h @@ -45,6 +45,18 @@ template class QSharedPointer; class VFormula; +struct VToolMoveInitData : public VAbstractOperationInitData +{ + VToolMoveInitData() + : VAbstractOperationInitData(), + formulaAngle(), + formulaLength() + {} + + QString formulaAngle; + QString formulaLength; +}; + class VToolMove : public VAbstractOperation { Q_OBJECT @@ -53,10 +65,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolMove* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolMove* Create(quint32 _id, QString &formulaAngle, QString &formulaLength, const QString &suffix, - const QVector &source, const QVector &destination, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolMove* Create(VToolMoveInitData &initData); static const QString ToolType; @@ -83,10 +92,7 @@ private: QString formulaAngle; QString formulaLength; - VToolMove(VAbstractPattern *doc, VContainer *data, quint32 id, const QString &formulaAngle, - const QString &formulaLength, const QString &suffix, const QVector &source, - const QVector &destination, const Source &typeCreation, - QGraphicsItem *parent = nullptr); + VToolMove(const VToolMoveInitData &initData, QGraphicsItem *parent = nullptr); static DestinationItem CreatePoint(quint32 idTool, quint32 idItem, qreal angle, qreal length, const QString &suffix, VContainer *data); diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp index 1342f4f40..ae8779bfd 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp @@ -80,16 +80,14 @@ template class QSharedPointer; const QString VToolRotation::ToolType = QStringLiteral("rotation"); //--------------------------------------------------------------------------------------------------------------------- -VToolRotation::VToolRotation(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 origPointId, - const QString &angle, const QString &suffix, const QVector &source, - const QVector &destination, const Source &typeCreation, - QGraphicsItem *parent) - : VAbstractOperation(doc, data, id, suffix, source, destination, parent), - origPointId(origPointId), - formulaAngle(angle) +VToolRotation::VToolRotation(const VToolRotationInitData &initData, QGraphicsItem *parent) + : VAbstractOperation(initData.doc, initData.data, initData.id, initData.suffix, initData.source, + initData.destination, parent), + origPointId(initData.origin), + formulaAngle(initData.angle) { InitOperatedObjects(); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -110,12 +108,19 @@ VToolRotation *VToolRotation::Create(QSharedPointer dialog, VMainGra SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 originPointId = dialogTool->GetOrigPointId(); - QString angle = dialogTool->GetAngle(); - const QString suffix = dialogTool->GetSuffix(); - const QVector source = dialogTool->GetObjects(); - VToolRotation* operation = Create(0, originPointId, angle, suffix, source, QVector(), - scene, doc, data, Document::FullParse, Source::FromGui); + + VToolRotationInitData initData; + initData.origin = dialogTool->GetOrigPointId(); + initData.angle = dialogTool->GetAngle(); + initData.suffix = dialogTool->GetSuffix(); + initData.source = dialogTool->GetObjects(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolRotation* operation = Create(initData); if (operation != nullptr) { operation->m_dialog = dialogTool; @@ -124,32 +129,25 @@ VToolRotation *VToolRotation::Create(QSharedPointer dialog, VMainGra } //--------------------------------------------------------------------------------------------------------------------- -VToolRotation *VToolRotation::Create(const quint32 _id, const quint32 &origin, QString &angle, const QString &suffix, - const QVector &source, - const QVector &destination, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolRotation *VToolRotation::Create(VToolRotationInitData &initData) { qreal calcAngle = 0; - calcAngle = CheckFormula(_id, angle, data); + calcAngle = CheckFormula(initData.id, initData.angle, initData.data); - const auto originPoint = *data->GeometricObject(origin); + const auto originPoint = *initData.data->GeometricObject(initData.origin); const QPointF oPoint = static_cast(originPoint); - QVector dest = destination; - - quint32 id = _id; - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - dest.clear();// Try to avoid mistake, value must be empty + initData.destination.clear();// Try to avoid mistake, value must be empty - id = VContainer::getNextId();//Just reserve id for tool + initData.id = VContainer::getNextId();//Just reserve id for tool - for (int i = 0; i < source.size(); ++i) + for (int i = 0; i < initData.source.size(); ++i) { - const quint32 idObject = source.at(i); - const QSharedPointer obj = data->GetGObject(idObject); + const quint32 idObject = initData.source.at(i); + const QSharedPointer obj = initData.data->GetGObject(idObject); // This check helps to find missed objects in the switch Q_STATIC_ASSERT_X(static_cast(GOType::Unknown) == 7, "Not all objects were handled."); @@ -159,26 +157,34 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") switch(static_cast(obj->getType())) { case GOType::Point: - dest.append(CreatePoint(id, idObject, oPoint, calcAngle, suffix, data)); + initData.destination.append(CreatePoint(initData.id, idObject, oPoint, calcAngle, initData.suffix, + initData.data)); break; case GOType::Arc: - dest.append(CreateArc(id, idObject, oPoint, calcAngle, suffix, data)); + initData.destination.append(CreateArc(initData.id, idObject, oPoint, calcAngle, + initData.suffix, initData.data)); break; case GOType::EllipticalArc: - dest.append(CreateArc(id, idObject, oPoint, calcAngle, suffix, data)); + initData.destination.append(CreateArc(initData.id, idObject, oPoint, calcAngle, + initData.suffix, initData.data)); break; case GOType::Spline: - dest.append(CreateCurve(id, idObject, oPoint, calcAngle, suffix, data)); + initData.destination.append(CreateCurve(initData.id, idObject, oPoint, calcAngle, + initData.suffix, initData.data)); break; case GOType::SplinePath: - dest.append(CreateCurveWithSegments(id, idObject, oPoint, calcAngle, suffix, data)); + initData.destination.append(CreateCurveWithSegments(initData.id, idObject, oPoint, + calcAngle, initData.suffix, + initData.data)); break; case GOType::CubicBezier: - dest.append(CreateCurve(id, idObject, oPoint, calcAngle, suffix, data)); + initData.destination.append(CreateCurve(initData.id, idObject, oPoint, calcAngle, + initData.suffix, initData.data)); break; case GOType::CubicBezierPath: - dest.append(CreateCurveWithSegments(id, idObject, oPoint, calcAngle, suffix, - data)); + initData.destination.append(CreateCurveWithSegments(initData.id, idObject, oPoint, + calcAngle, initData.suffix, + initData.data)); break; case GOType::Unknown: break; @@ -188,10 +194,10 @@ QT_WARNING_POP } else { - for (int i = 0; i < source.size(); ++i) + for (int i = 0; i < initData.source.size(); ++i) { - const quint32 idObject = source.at(i); - const QSharedPointer obj = data->GetGObject(idObject); + const quint32 idObject = initData.source.at(i); + const QSharedPointer obj = initData.data->GetGObject(idObject); // This check helps to find missed objects in the switch Q_STATIC_ASSERT_X(static_cast(GOType::Unknown) == 7, "Not all objects were handled."); @@ -201,50 +207,58 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") switch(static_cast(obj->getType())) { case GOType::Point: - UpdatePoint(id, idObject, oPoint, calcAngle, suffix, data, dest.at(i).id, dest.at(i).mx, - dest.at(i).my); + { + const DestinationItem &item = initData.destination.at(i); + UpdatePoint(initData.id, idObject, oPoint, calcAngle, initData.suffix, initData.data, + item.id, item.mx, item.my); break; + } case GOType::Arc: - UpdateArc(id, idObject, oPoint, calcAngle, suffix, data, dest.at(i).id); + UpdateArc(initData.id, idObject, oPoint, calcAngle, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::EllipticalArc: - UpdateArc(id, idObject, oPoint, calcAngle, suffix, data, dest.at(i).id); + UpdateArc(initData.id, idObject, oPoint, calcAngle, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::Spline: - UpdateCurve(id, idObject, oPoint, calcAngle, suffix, data, dest.at(i).id); + UpdateCurve(initData.id, idObject, oPoint, calcAngle, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::SplinePath: - UpdateCurveWithSegments(id, idObject, oPoint, calcAngle, suffix, data, dest.at(i).id); + UpdateCurveWithSegments(initData.id, idObject, oPoint, calcAngle, initData.suffix, + initData.data, initData.destination.at(i).id); break; case GOType::CubicBezier: - UpdateCurve(id, idObject, oPoint, calcAngle, suffix, data, dest.at(i).id); + UpdateCurve(initData.id, idObject, oPoint, calcAngle, initData.suffix, initData.data, + initData.destination.at(i).id); break; case GOType::CubicBezierPath: - UpdateCurveWithSegments(id, idObject, oPoint, calcAngle, suffix, data, - dest.at(i).id); + UpdateCurveWithSegments(initData.id, idObject, oPoint, calcAngle, initData.suffix, + initData.data, initData.destination.at(i).id); break; case GOType::Unknown: break; } QT_WARNING_POP } - if (parse != Document::FullParse) + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Rotation, doc); - VToolRotation *tool = new VToolRotation(doc, data, id, origin, angle, suffix, source, dest, typeCreation); - scene->addItem(tool); - InitOperationToolConnections(scene, tool); - VAbstractPattern::AddTool(id, tool); - doc->IncrementReferens(originPoint.getIdTool()); - for (int i = 0; i < source.size(); ++i) + VAbstractTool::AddRecord(initData.id, Tool::Rotation, initData.doc); + VToolRotation *tool = new VToolRotation(initData); + initData.scene->addItem(tool); + InitOperationToolConnections(initData.scene, tool); + VAbstractPattern::AddTool(initData.id, tool); + initData.doc->IncrementReferens(originPoint.getIdTool()); + for (int i = 0; i < initData.source.size(); ++i) { - doc->IncrementReferens(data->GetGObject(source.at(i))->getIdTool()); + initData.doc->IncrementReferens(initData.data->GetGObject(initData.source.at(i))->getIdTool()); } return tool; } diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h index bbdc81adb..a660aae95 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h @@ -45,6 +45,18 @@ template class QSharedPointer; class VFormula; +struct VToolRotationInitData : public VAbstractOperationInitData +{ + VToolRotationInitData() + : VAbstractOperationInitData(), + origin(NULL_ID), + angle() + {} + + quint32 origin; + QString angle; +}; + class VToolRotation : public VAbstractOperation { Q_OBJECT @@ -53,10 +65,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolRotation* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolRotation* Create(const quint32 _id, const quint32 &origin, QString &angle, const QString &suffix, - const QVector &source, const QVector &destination, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolRotation* Create(VToolRotationInitData &initData); static const QString ToolType; @@ -83,10 +92,7 @@ private: quint32 origPointId; QString formulaAngle; - VToolRotation(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 origPointId, - const QString &angle, const QString &suffix, const QVector &source, - const QVector &destination, const Source &typeCreation, - QGraphicsItem *parent = nullptr); + VToolRotation(const VToolRotationInitData &initData, QGraphicsItem *parent = nullptr); static DestinationItem CreatePoint(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle, const QString &suffix, VContainer *data); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h index 0782bdbf2..569bedb0f 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h @@ -54,6 +54,18 @@ class VControlPointSpline; template class QSharedPointer; +struct VAbstractSplineInitData : public VAbstractToolInitData +{ + VAbstractSplineInitData() + : VAbstractToolInitData(), + color(ColorBlack), + penStyle(TypeLineLine) + {} + + QString color; + QString penStyle; +}; + class VAbstractSpline:public VDrawTool, public QGraphicsPathItem { Q_OBJECT diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp index f04aaf1ab..190a40d3c 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp @@ -61,21 +61,16 @@ const QString VToolArc::ToolType = QStringLiteral("simple"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolArc constuctor. - * @param doc dom document container - * @param data container with variables - * @param id object id in container - * @param typeCreation way we create this tool. - * @param parent parent object + * @param initData init data */ -VToolArc::VToolArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem *parent) - : VAbstractSpline(doc, data, id, parent) +VToolArc::VToolArc(const VToolArcInitData &initData, QGraphicsItem *parent) + : VAbstractSpline(initData.doc, initData.data, initData.id, parent) { sceneType = SceneObject::Arc; this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -110,14 +105,21 @@ VToolArc* VToolArc::Create(QSharedPointer dialog, VMainGraphicsScene SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 center = dialogTool->GetCenter(); - QString radius = dialogTool->GetRadius(); - QString f1 = dialogTool->GetF1(); - QString f2 = dialogTool->GetF2(); - const QString color = dialogTool->GetColor(); - const QString penStyle = dialogTool->GetPenStyle(); - VToolArc* point = Create(0, center, radius, f1, f2, color, penStyle, scene, doc, data, Document::FullParse, - Source::FromGui); + + VToolArcInitData initData; + initData.center = dialogTool->GetCenter(); + initData.radius = dialogTool->GetRadius(); + initData.f1 = dialogTool->GetF1(); + initData.f2 = dialogTool->GetF2(); + initData.color = dialogTool->GetColor(); + initData.penStyle = dialogTool->GetPenStyle(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolArc* point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -128,56 +130,45 @@ VToolArc* VToolArc::Create(QSharedPointer dialog, VMainGraphicsScene //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool form GUI. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param center id arc center point. - * @param radius arc radius. - * @param f1 start angle of arc. - * @param f2 end angle of arc. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. */ -VToolArc* VToolArc::Create(const quint32 _id, const quint32 ¢er, QString &radius, QString &f1, QString &f2, - const QString &color, const QString &penStyle, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) +VToolArc* VToolArc::Create(VToolArcInitData &initData) { qreal calcRadius = 0, calcF1 = 0, calcF2 = 0; - calcRadius = qApp->toPixel(CheckFormula(_id, radius, data)); + calcRadius = qApp->toPixel(CheckFormula(initData.id, initData.radius, initData.data)); - calcF1 = CheckFormula(_id, f1, data); - calcF2 = CheckFormula(_id, f2, data); + calcF1 = CheckFormula(initData.id, initData.f1, initData.data); + calcF2 = CheckFormula(initData.id, initData.f2, initData.data); - const VPointF c = *data->GeometricObject(center); - VArc *arc = new VArc(c, calcRadius, radius, calcF1, f1, calcF2, f2 ); - arc->SetColor(color); - arc->SetPenStyle(penStyle); - quint32 id = _id; - if (typeCreation == Source::FromGui) + const VPointF c = *initData.data->GeometricObject(initData.center); + VArc *arc = new VArc(c, calcRadius, initData.radius, calcF1, initData.f1, calcF2, initData.f2 ); + arc->SetColor(initData.color); + arc->SetPenStyle(initData.penStyle); + + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(arc); - data->AddArc(data->GeometricObject(id), id); + initData.id = initData.data->AddGObject(arc); + initData.data->AddArc(initData.data->GeometricObject(initData.id), initData.id); } else { - data->UpdateGObject(id, arc); - data->AddArc(data->GeometricObject(id), id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, arc); + initData.data->AddArc(initData.data->GeometricObject(initData.id), initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Arc, doc); - VToolArc *toolArc = new VToolArc(doc, data, id, typeCreation); - scene->addItem(toolArc); - InitArcToolConnections(scene, toolArc); - VAbstractPattern::AddTool(id, toolArc); - doc->IncrementReferens(c.getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::Arc, initData.doc); + VToolArc *toolArc = new VToolArc(initData); + initData.scene->addItem(toolArc); + InitArcToolConnections(initData.scene, toolArc); + VAbstractPattern::AddTool(initData.id, toolArc); + initData.doc->IncrementReferens(c.getIdTool()); return toolArc; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h index 2e0ae4c04..031fac3b9 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h @@ -43,6 +43,22 @@ class VFormula; template class QSharedPointer; +struct VToolArcInitData : public VAbstractSplineInitData +{ + VToolArcInitData() + : VAbstractSplineInitData(), + center(NULL_ID), + radius("0"), + f1("0"), + f2("0") + {} + + quint32 center; + QString radius; + QString f1; + QString f2; +}; + /** * @brief The VToolArc class tool for creation arc. */ @@ -53,9 +69,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolArc* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolArc* Create(const quint32 _id, const quint32 ¢er, QString &radius, QString &f1, QString &f2, - const QString &color, const QString &penStyle, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); + static VToolArc* Create(VToolArcInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -88,8 +102,7 @@ protected: private: Q_DISABLE_COPY(VToolArc) - VToolArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolArc(const VToolArcInitData &initData, QGraphicsItem * parent = nullptr); }; #endif // VTOOLARC_H diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp index d8493b20e..fd513ae21 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp @@ -59,15 +59,14 @@ const QString VToolArcWithLength::ToolType = QStringLiteral("arcWithLength"); //--------------------------------------------------------------------------------------------------------------------- -VToolArcWithLength::VToolArcWithLength(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem *parent) - :VAbstractSpline(doc, data, id, parent) +VToolArcWithLength::VToolArcWithLength(const VToolArcWithLengthInitData &initData, QGraphicsItem *parent) + :VAbstractSpline(initData.doc, initData.data, initData.id, parent) { sceneType = SceneObject::Arc; this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -92,14 +91,21 @@ VToolArcWithLength *VToolArcWithLength::Create(QSharedPointer dialog SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 center = dialogTool->GetCenter(); - QString radius = dialogTool->GetRadius(); - QString f1 = dialogTool->GetF1(); - QString length = dialogTool->GetLength(); - const QString color = dialogTool->GetColor(); - const QString penStyle = dialogTool->GetPenStyle(); - VToolArcWithLength* point = Create(0, center, radius, f1, length, color, penStyle, scene, doc, data, - Document::FullParse, Source::FromGui); + + VToolArcWithLengthInitData initData; + initData.center = dialogTool->GetCenter(); + initData.radius = dialogTool->GetRadius(); + initData.f1 = dialogTool->GetF1(); + initData.length = dialogTool->GetLength(); + initData.color = dialogTool->GetColor(); + initData.penStyle = dialogTool->GetPenStyle(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolArcWithLength* point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -108,45 +114,42 @@ VToolArcWithLength *VToolArcWithLength::Create(QSharedPointer dialog } //--------------------------------------------------------------------------------------------------------------------- -VToolArcWithLength *VToolArcWithLength::Create(const quint32 _id, const quint32 ¢er, QString &radius, QString &f1, - QString &length, const QString &color, const QString &penStyle, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolArcWithLength *VToolArcWithLength::Create(VToolArcWithLengthInitData &initData) { qreal calcRadius = 0, calcF1 = 0, calcLength = 0; - calcRadius = qApp->toPixel(CheckFormula(_id, radius, data)); - calcLength = qApp->toPixel(CheckFormula(_id, length, data)); - calcF1 = CheckFormula(_id, f1, data); + calcRadius = qApp->toPixel(CheckFormula(initData.id, initData.radius, initData.data)); + calcLength = qApp->toPixel(CheckFormula(initData.id, initData.length, initData.data)); + calcF1 = CheckFormula(initData.id, initData.f1, initData.data); - const VPointF c = *data->GeometricObject(center); - VArc *arc = new VArc(calcLength, length, c, calcRadius, radius, calcF1, f1); - arc->SetColor(color); - arc->SetPenStyle(penStyle); - quint32 id = _id; - if (typeCreation == Source::FromGui) + const VPointF c = *initData.data->GeometricObject(initData.center); + VArc *arc = new VArc(calcLength, initData.length, c, calcRadius, initData.radius, calcF1, initData.f1); + arc->SetColor(initData.color); + arc->SetPenStyle(initData.penStyle); + + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(arc); - data->AddArc(data->GeometricObject(id), id); + initData.id = initData.data->AddGObject(arc); + initData.data->AddArc(initData.data->GeometricObject(initData.id), initData.id); } else { - data->UpdateGObject(id, arc); - data->AddArc(data->GeometricObject(id), id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, arc); + initData.data->AddArc(initData.data->GeometricObject(initData.id), initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::ArcWithLength, doc); - VToolArcWithLength *toolArc = new VToolArcWithLength(doc, data, id, typeCreation); - scene->addItem(toolArc); - InitArcToolConnections(scene, toolArc); - VAbstractPattern::AddTool(id, toolArc); - doc->IncrementReferens(c.getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::ArcWithLength, initData.doc); + VToolArcWithLength *toolArc = new VToolArcWithLength(initData); + initData.scene->addItem(toolArc); + InitArcToolConnections(initData.scene, toolArc); + VAbstractPattern::AddTool(initData.id, toolArc); + initData.doc->IncrementReferens(c.getIdTool()); return toolArc; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h index fe1f70857..b2accec77 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h @@ -43,6 +43,22 @@ class VFormula; template class QSharedPointer; +struct VToolArcWithLengthInitData : public VAbstractSplineInitData +{ + VToolArcWithLengthInitData() + : VAbstractSplineInitData(), + center(NULL_ID), + radius("0"), + f1("0"), + length("0") + {} + + quint32 center; + QString radius; + QString f1; + QString length; +}; + class VToolArcWithLength : public VAbstractSpline { Q_OBJECT @@ -50,10 +66,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolArcWithLength* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolArcWithLength* Create(const quint32 _id, const quint32 ¢er, QString &radius, QString &f1, - QString &length, const QString &color, const QString &penStyle, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolArcWithLength* Create(VToolArcWithLengthInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -86,8 +99,7 @@ protected: private: Q_DISABLE_COPY(VToolArcWithLength) - VToolArcWithLength(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolArcWithLength(const VToolArcWithLengthInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLARCWITHLENGTH_H diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp index 690653db1..71cd2547c 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp @@ -57,15 +57,14 @@ const QString VToolCubicBezier::ToolType = QStringLiteral("cubicBezier"); //--------------------------------------------------------------------------------------------------------------------- -VToolCubicBezier::VToolCubicBezier(VAbstractPattern *doc, VContainer *data, quint32 id, - const Source &typeCreation, QGraphicsItem *parent) - :VAbstractSpline(doc, data, id, parent) +VToolCubicBezier::VToolCubicBezier(const VToolCubicBezierInitData &initData, QGraphicsItem *parent) + :VAbstractSpline(initData.doc, initData.data, initData.id, parent) { sceneType = SceneObject::Spline; this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -88,11 +87,17 @@ VToolCubicBezier *VToolCubicBezier::Create(QSharedPointer dialog, VM QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - VCubicBezier *spline = new VCubicBezier(dialogTool->GetSpline()); - spline->SetColor(dialogTool->GetColor()); - spline->SetPenStyle(dialogTool->GetPenStyle()); + VToolCubicBezierInitData initData; + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + initData.spline = new VCubicBezier(dialogTool->GetSpline()); + initData.spline->SetColor(dialogTool->GetColor()); + initData.spline->SetPenStyle(dialogTool->GetPenStyle()); - auto spl = Create(0, spline, scene, doc, data, Document::FullParse, Source::FromGui); + auto spl = Create(initData); if (spl != nullptr) { @@ -102,37 +107,34 @@ VToolCubicBezier *VToolCubicBezier::Create(QSharedPointer dialog, VM } //--------------------------------------------------------------------------------------------------------------------- -VToolCubicBezier *VToolCubicBezier::Create(const quint32 _id, VCubicBezier *spline, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolCubicBezier *VToolCubicBezier::Create(VToolCubicBezierInitData initData) { - quint32 id = _id; - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(spline); - data->AddSpline(data->GeometricObject(id), id); + initData.id = initData.data->AddGObject(initData.spline); + initData.data->AddSpline(initData.data->GeometricObject(initData.id), initData.id); } else { - data->UpdateGObject(id, spline); - data->AddSpline(data->GeometricObject(id), id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, initData.spline); + initData.data->AddSpline(initData.data->GeometricObject(initData.id), initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::CubicBezier, doc); - auto _spl = new VToolCubicBezier(doc, data, id, typeCreation); - scene->addItem(_spl); - InitSplineToolConnections(scene, _spl); - VAbstractPattern::AddTool(id, _spl); - doc->IncrementReferens(spline->GetP1().getIdTool()); - doc->IncrementReferens(spline->GetP1().getIdTool()); - doc->IncrementReferens(spline->GetP1().getIdTool()); - doc->IncrementReferens(spline->GetP4().getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::CubicBezier, initData.doc); + auto _spl = new VToolCubicBezier(initData); + initData.scene->addItem(_spl); + InitSplineToolConnections(initData.scene, _spl); + VAbstractPattern::AddTool(initData.id, _spl); + initData.doc->IncrementReferens(initData.spline->GetP1().getIdTool()); + initData.doc->IncrementReferens(initData.spline->GetP1().getIdTool()); + initData.doc->IncrementReferens(initData.spline->GetP1().getIdTool()); + initData.doc->IncrementReferens(initData.spline->GetP4().getIdTool()); return _spl; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h index 8f3750f66..95e992a88 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h @@ -43,6 +43,16 @@ class VCubicBezier; template class QSharedPointer; +struct VToolCubicBezierInitData : public VAbstractToolInitData +{ + VToolCubicBezierInitData() + : VAbstractToolInitData(), + spline(nullptr) + {} + + VCubicBezier *spline; +}; + class VToolCubicBezier : public VAbstractSpline { Q_OBJECT @@ -51,9 +61,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolCubicBezier *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCubicBezier *Create(const quint32 _id, VCubicBezier *spline, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolCubicBezier *Create(VToolCubicBezierInitData initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::CubicBezier)}; @@ -78,8 +86,7 @@ protected: private: Q_DISABLE_COPY(VToolCubicBezier) - VToolCubicBezier(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolCubicBezier(const VToolCubicBezierInitData &initData, QGraphicsItem *parent = nullptr); void SetSplineAttributes(QDomElement &domElement, const VCubicBezier &spl); }; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp index 56eb7bcbf..a8b0a6601 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp @@ -59,15 +59,14 @@ const QString VToolCubicBezierPath::ToolType = QStringLiteral("cubicBezierPath"); //--------------------------------------------------------------------------------------------------------------------- -VToolCubicBezierPath::VToolCubicBezierPath(VAbstractPattern *doc, VContainer *data, quint32 id, - const Source &typeCreation, QGraphicsItem *parent) - : VAbstractSpline(doc, data, id, parent) +VToolCubicBezierPath::VToolCubicBezierPath(const VToolCubicBezierPathInitData &initData, QGraphicsItem *parent) + : VAbstractSpline(initData.doc, initData.data, initData.id, parent) { sceneType = SceneObject::SplinePath; this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -89,17 +88,25 @@ VToolCubicBezierPath *VToolCubicBezierPath::Create(QSharedPointer di SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - auto path = new VCubicBezierPath(dialogTool->GetPath()); + + VToolCubicBezierPathInitData initData; + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + initData.path = new VCubicBezierPath(dialogTool->GetPath()); const QString color = dialogTool->GetColor(); const QString penStyle = dialogTool->GetPenStyle(); - for (qint32 i = 0; i < path->CountPoints(); ++i) + for (qint32 i = 0; i < initData.path->CountPoints(); ++i) { - doc->IncrementReferens((*path)[i].getIdTool()); + doc->IncrementReferens((*initData.path)[i].getIdTool()); } - path->SetColor(color); - path->SetPenStyle(penStyle); + initData.path->SetColor(color); + initData.path->SetPenStyle(penStyle); - VToolCubicBezierPath* spl = Create(0, path, scene, doc, data, Document::FullParse, Source::FromGui); + VToolCubicBezierPath* spl = Create(initData); if (spl != nullptr) { spl->m_dialog = dialogTool; @@ -108,33 +115,32 @@ VToolCubicBezierPath *VToolCubicBezierPath::Create(QSharedPointer di } //--------------------------------------------------------------------------------------------------------------------- -VToolCubicBezierPath *VToolCubicBezierPath::Create(const quint32 _id, VCubicBezierPath *path, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolCubicBezierPath *VToolCubicBezierPath::Create(VToolCubicBezierPathInitData initData) { - quint32 id = _id; - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(path); - data->AddCurveWithSegments(data->GeometricObject(id), id); + initData.id = initData.data->AddGObject(initData.path); + initData.data->AddCurveWithSegments(initData.data->GeometricObject(initData.id), + initData.id); } else { - data->UpdateGObject(id, path); - data->AddCurveWithSegments(data->GeometricObject(id), id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, initData.path); + initData.data->AddCurveWithSegments(initData.data->GeometricObject(initData.id), + initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::CubicBezierPath, doc); - VToolCubicBezierPath *spl = new VToolCubicBezierPath(doc, data, id, typeCreation); - scene->addItem(spl); - InitSplinePathToolConnections(scene, spl); - VAbstractPattern::AddTool(id, spl); + VAbstractTool::AddRecord(initData.id, Tool::CubicBezierPath, initData.doc); + VToolCubicBezierPath *spl = new VToolCubicBezierPath(initData); + initData.scene->addItem(spl); + InitSplinePathToolConnections(initData.scene, spl); + VAbstractPattern::AddTool(initData.id, spl); return spl; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h index 77ced21be..97cc6cf04 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h @@ -43,6 +43,16 @@ class VCubicBezierPath; template class QSharedPointer; +struct VToolCubicBezierPathInitData : public VAbstractToolInitData +{ + VToolCubicBezierPathInitData() + : VAbstractToolInitData(), + path(nullptr) + {} + + VCubicBezierPath *path; +}; + class VToolCubicBezierPath:public VAbstractSpline { Q_OBJECT @@ -51,9 +61,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolCubicBezierPath *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCubicBezierPath *Create(const quint32 _id, VCubicBezierPath *path, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolCubicBezierPath *Create(VToolCubicBezierPathInitData initData); static const QString ToolType; static void UpdatePathPoints(VAbstractPattern *doc, QDomElement &element, const VCubicBezierPath &path); @@ -75,8 +83,7 @@ protected: private: Q_DISABLE_COPY(VToolCubicBezierPath) - VToolCubicBezierPath(VAbstractPattern *doc, VContainer *data, quint32 id, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolCubicBezierPath(const VToolCubicBezierPathInitData &initData, QGraphicsItem * parent = nullptr); static void AddPathPoint(VAbstractPattern *doc, QDomElement &domElement, const VPointF &splPoint); void SetSplinePathAttributes(QDomElement &domElement, const VCubicBezierPath &path); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp index 9f707d428..29ae8a164 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp @@ -61,21 +61,17 @@ const QString VToolEllipticalArc::ToolType = QStringLiteral("simple"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolEllipticalArc constuctor. - * @param doc dom document container - * @param data container with variables - * @param id object id in container - * @param typeCreation way we create this tool. + * @param initData init data * @param parent parent object */ -VToolEllipticalArc::VToolEllipticalArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem *parent) - :VAbstractSpline(doc, data, id, parent) +VToolEllipticalArc::VToolEllipticalArc(const VToolEllipticalArcInitData &initData, QGraphicsItem *parent) + :VAbstractSpline(initData.doc, initData.data, initData.id, parent) { sceneType = SceneObject::ElArc; this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -113,16 +109,22 @@ VToolEllipticalArc* VToolEllipticalArc::Create(QSharedPointer dialog QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 center = dialogTool->GetCenter(); - QString radius1 = dialogTool->GetRadius1(); - QString radius2 = dialogTool->GetRadius2(); - QString f1 = dialogTool->GetF1(); - QString f2 = dialogTool->GetF2(); - QString rotationAngle = dialogTool->GetRotationAngle(); - const QString color = dialogTool->GetColor(); - const QString penStyle = dialogTool->GetPenStyle(); - VToolEllipticalArc* point = Create(0, center, radius1, radius2, f1, f2, rotationAngle, color, penStyle, scene, doc, - data, Document::FullParse, Source::FromGui); + VToolEllipticalArcInitData initData; + initData.center = dialogTool->GetCenter(); + initData.radius1 = dialogTool->GetRadius1(); + initData.radius2 = dialogTool->GetRadius2(); + initData.f1 = dialogTool->GetF1(); + initData.f2 = dialogTool->GetF2(); + initData.rotationAngle = dialogTool->GetRotationAngle(); + initData.color = dialogTool->GetColor(); + initData.penStyle = dialogTool->GetPenStyle(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolEllipticalArc* point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -134,63 +136,49 @@ VToolEllipticalArc* VToolEllipticalArc::Create(QSharedPointer dialog //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool form GUI. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param center id elliptical arc center point. - * @param radius1 elliptical arc radius1. - * @param radius2 elliptical arc radius2. - * @param f1 start angle of elliptical arc. - * @param f2 end angle of elliptical arc. - * @param rotationAngle rotation angle of elliptical arc. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. */ -VToolEllipticalArc* VToolEllipticalArc::Create(const quint32 _id, const quint32 ¢er, QString &radius1, - QString &radius2, QString &f1, QString &f2, QString &rotationAngle, - const QString &color, const QString &penStyle, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolEllipticalArc* VToolEllipticalArc::Create(VToolEllipticalArcInitData &initData) { qreal calcRadius1 = 0, calcRadius2 = 0, calcF1 = 0, calcF2 = 0, calcRotationAngle = 0; - calcRadius1 = qApp->toPixel(CheckFormula(_id, radius1, data)); - calcRadius2 = qApp->toPixel(CheckFormula(_id, radius2, data)); + calcRadius1 = qApp->toPixel(CheckFormula(initData.id, initData.radius1, initData.data)); + calcRadius2 = qApp->toPixel(CheckFormula(initData.id, initData.radius2, initData.data)); - calcF1 = CheckFormula(_id, f1, data); - calcF2 = CheckFormula(_id, f2, data); - calcRotationAngle = CheckFormula(_id, rotationAngle, data); + calcF1 = CheckFormula(initData.id, initData.f1, initData.data); + calcF2 = CheckFormula(initData.id, initData.f2, initData.data); + calcRotationAngle = CheckFormula(initData.id, initData.rotationAngle, initData.data); - const VPointF c = *data->GeometricObject(center); - VEllipticalArc *elArc = new VEllipticalArc(c, calcRadius1, calcRadius2, radius1, radius2, calcF1, f1, calcF2, f2, - calcRotationAngle, rotationAngle); - elArc->SetColor(color); - elArc->SetPenStyle(penStyle); - quint32 id = _id; - if (typeCreation == Source::FromGui) + const VPointF c = *initData.data->GeometricObject(initData.center); + VEllipticalArc *elArc = new VEllipticalArc(c, calcRadius1, calcRadius2, initData.radius1, initData.radius2, calcF1, + initData.f1, calcF2, initData.f2, calcRotationAngle, + initData.rotationAngle); + elArc->SetColor(initData.color); + elArc->SetPenStyle(initData.penStyle); + + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(elArc); - data->AddArc(data->GeometricObject(id), id); + initData.id = initData.data->AddGObject(elArc); + initData.data->AddArc(initData.data->GeometricObject(initData.id), initData.id); } else { - data->UpdateGObject(id, elArc); - data->AddArc(data->GeometricObject(id), id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, elArc); + initData.data->AddArc(initData.data->GeometricObject(initData.id), initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::EllipticalArc, doc); - VToolEllipticalArc *toolEllipticalArc = new VToolEllipticalArc(doc, data, id, typeCreation); - scene->addItem(toolEllipticalArc); - InitElArcToolConnections(scene, toolEllipticalArc); - VAbstractPattern::AddTool(id, toolEllipticalArc); - doc->IncrementReferens(c.getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::EllipticalArc, initData.doc); + VToolEllipticalArc *toolEllipticalArc = new VToolEllipticalArc(initData); + initData.scene->addItem(toolEllipticalArc); + InitElArcToolConnections(initData.scene, toolEllipticalArc); + VAbstractPattern::AddTool(initData.id, toolEllipticalArc); + initData.doc->IncrementReferens(c.getIdTool()); return toolEllipticalArc; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h index 4802c9643..dcd327a32 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h @@ -43,6 +43,26 @@ class VFormula; template class QSharedPointer; +struct VToolEllipticalArcInitData : public VAbstractSplineInitData +{ + VToolEllipticalArcInitData() + : VAbstractSplineInitData(), + center(NULL_ID), + radius1("0"), + radius2("0"), + f1("0"), + f2("0"), + rotationAngle("0") + {} + + quint32 center; + QString radius1; + QString radius2; + QString f1; + QString f2; + QString rotationAngle; +}; + /** * @brief The VToolEllipticalArc class tool for creation elliptical arc. */ @@ -53,11 +73,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolEllipticalArc* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolEllipticalArc* Create(const quint32 _id, const quint32 ¢er, QString &radius1, QString &radius2, - QString &f1, QString &f2, QString &rotationAngle, const QString &color, - const QString &penStyle, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolEllipticalArc* Create(VToolEllipticalArcInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::EllipticalArc)}; @@ -95,8 +111,7 @@ protected: private: Q_DISABLE_COPY(VToolEllipticalArc) - VToolEllipticalArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolEllipticalArc(const VToolEllipticalArcInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLELLIPTICALARC_H diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp index b8903244c..b195cd143 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp @@ -74,22 +74,19 @@ const QString VToolSpline::OldToolType = QStringLiteral("simple"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolSpline constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolSpline::VToolSpline(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem *parent) - :VAbstractSpline(doc, data, id, parent), oldPosition() +VToolSpline::VToolSpline(VToolSplineInitData initData, QGraphicsItem *parent) + : VAbstractSpline(initData.doc, initData.data, initData.id, parent), + oldPosition() { sceneType = SceneObject::Spline; this->setFlag(QGraphicsItem::ItemIsMovable, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - const auto spl = VAbstractTool::data.GeometricObject(id); + const auto spl = VAbstractTool::data.GeometricObject(initData.id); const bool freeAngle1 = qmu::QmuTokenParser::IsSingle(spl->GetStartAngleFormula()); const bool freeLength1 = qmu::QmuTokenParser::IsSingle(spl->GetC1LengthFormula()); @@ -119,7 +116,7 @@ VToolSpline::VToolSpline(VAbstractPattern *doc, VContainer *data, quint32 id, co ShowHandles(false); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -153,11 +150,18 @@ VToolSpline* VToolSpline::Create(QSharedPointer dialog, VMainGraphic QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) + VToolSplineInitData initData; + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + VSpline *spline = new VSpline(dialogTool->GetSpline()); spline->SetColor(dialogTool->GetColor()); spline->SetPenStyle(dialogTool->GetPenStyle()); - auto spl = Create(0, spline, scene, doc, data, Document::FullParse, Source::FromGui); + auto spl = Create(initData, spline); if (spl != nullptr) { @@ -169,74 +173,64 @@ VToolSpline* VToolSpline::Create(QSharedPointer dialog, VMainGraphic //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. + * @param initData init data. * @param spline spline. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. * @return the created tool */ -VToolSpline* VToolSpline::Create(const quint32 _id, VSpline *spline, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation) +VToolSpline* VToolSpline::Create(VToolSplineInitData &initData, VSpline *spline) { - quint32 id = _id; - - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(spline); - data->AddSpline(data->GeometricObject(id), id); + initData.id = initData.data->AddGObject(spline); + initData.data->AddSpline(initData.data->GeometricObject(initData.id), initData.id); } else { - data->UpdateGObject(id, spline); - data->AddSpline(data->GeometricObject(id), id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, spline); + initData.data->AddSpline(initData.data->GeometricObject(initData.id), initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Spline, doc); - auto _spl = new VToolSpline(doc, data, id, typeCreation); - scene->addItem(_spl); - InitSplineToolConnections(scene, _spl); - VAbstractPattern::AddTool(id, _spl); - doc->IncrementReferens(spline->GetP1().getIdTool()); - doc->IncrementReferens(spline->GetP4().getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::Spline, initData.doc); + auto _spl = new VToolSpline(initData); + initData.scene->addItem(_spl); + InitSplineToolConnections(initData.scene, _spl); + VAbstractPattern::AddTool(initData.id, _spl); + initData.doc->IncrementReferens(spline->GetP1().getIdTool()); + initData.doc->IncrementReferens(spline->GetP4().getIdTool()); return _spl; } return nullptr; } //--------------------------------------------------------------------------------------------------------------------- -VToolSpline *VToolSpline::Create(const quint32 _id, quint32 point1, quint32 point4, QString &a1, QString &a2, - QString &l1, QString &l2, quint32 duplicate, const QString &color, - const QString &penStyle, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation) +VToolSpline *VToolSpline::Create(VToolSplineInitData &initData) { - const qreal calcAngle1 = CheckFormula(_id, a1, data); - const qreal calcAngle2 = CheckFormula(_id, a2, data); + const qreal calcAngle1 = CheckFormula(initData.id, initData.a1, initData.data); + const qreal calcAngle2 = CheckFormula(initData.id, initData.a2, initData.data); - const qreal calcLength1 = qApp->toPixel(CheckFormula(_id, l1, data)); - const qreal calcLength2 = qApp->toPixel(CheckFormula(_id, l2, data)); + const qreal calcLength1 = qApp->toPixel(CheckFormula(initData.id, initData.l1, initData.data)); + const qreal calcLength2 = qApp->toPixel(CheckFormula(initData.id, initData.l2, initData.data)); - auto p1 = data->GeometricObject(point1); - auto p4 = data->GeometricObject(point4); + auto p1 = initData.data->GeometricObject(initData.point1); + auto p4 = initData.data->GeometricObject(initData.point4); - auto spline = new VSpline(*p1, *p4, calcAngle1, a1, calcAngle2, a2, calcLength1, l1, calcLength2, l2); - if (duplicate > 0) + auto spline = new VSpline(*p1, *p4, calcAngle1, initData.a1, calcAngle2, initData.a2, calcLength1, initData.l1, + calcLength2, initData.l2); + if (initData.duplicate > 0) { - spline->SetDuplicate(duplicate); + spline->SetDuplicate(initData.duplicate); } - spline->SetColor(color); - spline->SetPenStyle(penStyle); + spline->SetColor(initData.color); + spline->SetPenStyle(initData.penStyle); - return VToolSpline::Create(_id, spline, scene, doc, data, parse, typeCreation); + return VToolSpline::Create(initData, spline); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h index cddeaab28..6c1688827 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h @@ -44,6 +44,28 @@ template class QSharedPointer; +struct VToolSplineInitData : public VAbstractSplineInitData +{ + VToolSplineInitData() + : VAbstractSplineInitData(), + point1(NULL_ID), + point4(NULL_ID), + a1(), + a2(), + l1(), + l2(), + duplicate(0) + {} + + quint32 point1; + quint32 point4; + QString a1; + QString a2; + QString l1; + QString l2; + quint32 duplicate; +}; + /** * @brief The VToolSpline class tool for creation spline. I mean bezier curve. */ @@ -55,13 +77,8 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolSpline *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolSpline *Create(const quint32 _id, VSpline *spline, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); - static VToolSpline *Create(const quint32 _id, quint32 point1, quint32 point4, QString &a1, QString &a2, QString &l1, - QString &l2, quint32 duplicate, const QString &color, const QString &penStyle, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolSpline *Create(VToolSplineInitData &initData, VSpline *spline); + static VToolSpline *Create(VToolSplineInitData &initData); static const QString ToolType; static const QString OldToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -92,8 +109,7 @@ private: Q_DISABLE_COPY(VToolSpline) QPointF oldPosition; - VToolSpline (VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem * parent = nullptr ); + VToolSpline (VToolSplineInitData initData, QGraphicsItem *parent = nullptr ); bool IsMovable() const; void SetSplineAttributes(QDomElement &domElement, const VSpline &spl); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp index 619e130f5..025481e46 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp @@ -79,15 +79,11 @@ const QString VToolSplinePath::OldToolType = QStringLiteral("path"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolSplinePath constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolSplinePath::VToolSplinePath(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem *parent) - : VAbstractSpline(doc, data, id, parent), +VToolSplinePath::VToolSplinePath(const VToolSplinePathInitData &initData, QGraphicsItem *parent) + : VAbstractSpline(initData.doc, initData.data, initData.id, parent), oldPosition(), splIndex(-1) { @@ -96,7 +92,7 @@ VToolSplinePath::VToolSplinePath(VAbstractPattern *doc, VContainer *data, quint3 this->setFlag(QGraphicsItem::ItemIsMovable, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - const QSharedPointer splPath = data->GeometricObject(id); + const QSharedPointer splPath = initData.data->GeometricObject(initData.id); for (qint32 i = 1; i<=splPath->CountSubSpl(); ++i) { const VSpline spl = splPath->GetSpline(i); @@ -128,7 +124,7 @@ VToolSplinePath::VToolSplinePath(VAbstractPattern *doc, VContainer *data, quint3 ShowHandles(false); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -160,6 +156,14 @@ VToolSplinePath* VToolSplinePath::Create(QSharedPointer dialog, VMai SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) + + VToolSplinePathInitData initData; + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + VSplinePath *path = new VSplinePath(dialogTool->GetPath()); for (qint32 i = 0; i < path->CountPoints(); ++i) { @@ -169,7 +173,7 @@ VToolSplinePath* VToolSplinePath::Create(QSharedPointer dialog, VMai path->SetColor(dialogTool->GetColor()); path->SetPenStyle(dialogTool->GetPenStyle()); - VToolSplinePath* spl = Create(0, path, scene, doc, data, Document::FullParse, Source::FromGui); + VToolSplinePath* spl = Create(initData, path); if (spl != nullptr) { spl->m_dialog = dialogTool; @@ -180,79 +184,69 @@ VToolSplinePath* VToolSplinePath::Create(QSharedPointer dialog, VMai //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. + * @param initData init data. * @param path spline path. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. * @param typeCreation way we create this tool. */ -VToolSplinePath* VToolSplinePath::Create(const quint32 _id, VSplinePath *path, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolSplinePath* VToolSplinePath::Create(VToolSplinePathInitData &initData, VSplinePath *path) { - quint32 id = _id; - - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(path); - data->AddCurveWithSegments(data->GeometricObject(id), id); + initData.id = initData.data->AddGObject(path); + initData.data->AddCurveWithSegments(initData.data->GeometricObject(initData.id), + initData.id); } else { - data->UpdateGObject(id, path); - data->AddCurveWithSegments(data->GeometricObject(id), id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, path); + initData.data->AddCurveWithSegments(initData.data->GeometricObject(initData.id), + initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::SplinePath, doc); - VToolSplinePath *spl = new VToolSplinePath(doc, data, id, typeCreation); - scene->addItem(spl); - InitSplinePathToolConnections(scene, spl); - VAbstractPattern::AddTool(id, spl); + VAbstractTool::AddRecord(initData.id, Tool::SplinePath, initData.doc); + VToolSplinePath *spl = new VToolSplinePath(initData); + initData.scene->addItem(spl); + InitSplinePathToolConnections(initData.scene, spl); + VAbstractPattern::AddTool(initData.id, spl); return spl; } return nullptr; } //--------------------------------------------------------------------------------------------------------------------- -VToolSplinePath *VToolSplinePath::Create(const quint32 _id, const QVector &points, QVector &a1, - QVector &a2, QVector &l1, QVector &l2, - const QString &color, const QString &penStyle, quint32 duplicate, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolSplinePath *VToolSplinePath::Create(VToolSplinePathInitData &initData) { auto path = new VSplinePath(); - if (duplicate > 0) + if (initData.duplicate > 0) { - path->SetDuplicate(duplicate); + path->SetDuplicate(initData.duplicate); } - for (int i = 0; i < points.size(); ++i) + for (int i = 0; i < initData.points.size(); ++i) { - const qreal calcAngle1 = CheckFormula(_id, a1[i], data); - const qreal calcAngle2 = CheckFormula(_id, a2[i], data); + const qreal calcAngle1 = CheckFormula(initData.id, initData.a1[i], initData.data); + const qreal calcAngle2 = CheckFormula(initData.id, initData.a2[i], initData.data); - const qreal calcLength1 = qApp->toPixel(CheckFormula(_id, l1[i], data)); - const qreal calcLength2 = qApp->toPixel(CheckFormula(_id, l2[i], data)); + const qreal calcLength1 = qApp->toPixel(CheckFormula(initData.id, initData.l1[i], initData.data)); + const qreal calcLength2 = qApp->toPixel(CheckFormula(initData.id, initData.l2[i], initData.data)); - const auto p = *data->GeometricObject(points.at(i)); + const auto p = *initData.data->GeometricObject(initData.points.at(i)); - path->append(VSplinePoint(p, calcAngle1, a1.at(i), calcAngle2, a2.at(i), calcLength1, l1.at(i), calcLength2, - l2.at(i))); + path->append(VSplinePoint(p, calcAngle1, initData.a1.at(i), calcAngle2, initData.a2.at(i), calcLength1, + initData.l1.at(i), calcLength2, initData.l2.at(i))); } - path->SetColor(color); - path->SetPenStyle(penStyle); + path->SetColor(initData.color); + path->SetPenStyle(initData.penStyle); - return VToolSplinePath::Create(_id, path, scene, doc, data, parse, typeCreation); + return VToolSplinePath::Create(initData, path); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h index c6cba6075..06548fe82 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h @@ -46,6 +46,26 @@ class VSplinePath; template class QSharedPointer; +struct VToolSplinePathInitData : public VAbstractSplineInitData +{ + VToolSplinePathInitData() + : VAbstractSplineInitData(), + points(), + a1(), + a2(), + l1(), + l2(), + duplicate(0) + {} + + QVector points; + QVector a1; + QVector a2; + QVector l1; + QVector l2; + quint32 duplicate; +}; + /** * @brief The VToolSplinePath class tool for creation spline path. */ @@ -57,14 +77,8 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolSplinePath *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolSplinePath *Create(const quint32 _id, VSplinePath *path, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); - static VToolSplinePath *Create(const quint32 _id, const QVector &points, QVector &a1, - QVector &a2, QVector &l1, QVector &l2, - const QString &color, const QString &penStyle, quint32 duplicate, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolSplinePath *Create(VToolSplinePathInitData &initData, VSplinePath *path); + static VToolSplinePath *Create(VToolSplinePathInitData &initData); static const QString ToolType; static const QString OldToolType; static void UpdatePathPoints(VAbstractPattern *doc, QDomElement &element, const VSplinePath &path); @@ -108,8 +122,7 @@ private: QPointF oldPosition; int splIndex; - VToolSplinePath(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - QGraphicsItem *parent = nullptr); + VToolSplinePath(const VToolSplinePathInitData &initData, QGraphicsItem *parent = nullptr); bool IsMovable(int index) const; static void AddPathPoint(VAbstractPattern *doc, QDomElement &domElement, const VSplinePoint &splPoint); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp index 438513ca4..38fa56219 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp @@ -55,26 +55,15 @@ template class QSharedPointer; const QString VToolTrueDarts::ToolType = QStringLiteral("trueDarts"); //--------------------------------------------------------------------------------------------------------------------- -VToolTrueDarts::VToolTrueDarts(VAbstractPattern *doc, - VContainer *data, - const quint32 &id, - const quint32 &p1id, - const quint32 &p2id, - const quint32 &baseLineP1Id, - const quint32 &baseLineP2Id, - const quint32 &dartP1Id, - const quint32 &dartP2Id, - const quint32 &dartP3Id, - const Source &typeCreation, - QGraphicsItem *parent) - :VToolDoublePoint(doc, data, id, p1id, p2id, parent), - baseLineP1Id (baseLineP1Id), - baseLineP2Id(baseLineP2Id), - dartP1Id(dartP1Id), - dartP2Id(dartP2Id), - dartP3Id(dartP3Id) +VToolTrueDarts::VToolTrueDarts(const VToolTrueDartsInitData &initData, QGraphicsItem *parent) + :VToolDoublePoint(initData.doc, initData.data, initData.id, initData.p1id, initData.p2id, parent), + baseLineP1Id (initData.baseLineP1Id), + baseLineP2Id(initData.baseLineP2Id), + dartP1Id(initData.dartP1Id), + dartP2Id(initData.dartP2Id), + dartP3Id(initData.dartP3Id) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -128,17 +117,21 @@ VToolTrueDarts *VToolTrueDarts::Create(QSharedPointer dialog, VMainG QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QString point1Name = dialogTool->GetFirstNewDartPointName(); - const QString point2Name = dialogTool->GetSecondNewDartPointName(); - const quint32 baseLineP1Id = dialogTool->GetFirstBasePointId(); - const quint32 baseLineP2Id = dialogTool->GetSecondBasePointId(); - const quint32 dartP1Id = dialogTool->GetFirstDartPointId(); - const quint32 dartP2Id = dialogTool->GetSecondDartPointId(); - const quint32 dartP3Id = dialogTool->GetThirdDartPointId(); + VToolTrueDartsInitData initData; + initData.name1 = dialogTool->GetFirstNewDartPointName(); + initData.name2 = dialogTool->GetSecondNewDartPointName(); + initData.baseLineP1Id = dialogTool->GetFirstBasePointId(); + initData.baseLineP2Id = dialogTool->GetSecondBasePointId(); + initData.dartP1Id = dialogTool->GetFirstDartPointId(); + initData.dartP2Id = dialogTool->GetSecondDartPointId(); + initData.dartP3Id = dialogTool->GetThirdDartPointId(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; - VToolTrueDarts *point = Create(0, 0, 0, baseLineP1Id, baseLineP2Id, dartP1Id, dartP2Id, dartP3Id, - point1Name, 5, 10, point2Name, 5, 10, scene, doc, data, Document::FullParse, - Source::FromGui); + VToolTrueDarts *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -147,61 +140,52 @@ VToolTrueDarts *VToolTrueDarts::Create(QSharedPointer dialog, VMainG } //--------------------------------------------------------------------------------------------------------------------- -VToolTrueDarts *VToolTrueDarts::Create(quint32 _id, - const quint32 &_p1id, const quint32 &_p2id, - const quint32 &baseLineP1Id, - const quint32 &baseLineP2Id, - const quint32 &dartP1Id, - const quint32 &dartP2Id, - const quint32 &dartP3Id, - const QString &point1Name, const qreal &mx1, const qreal &my1, - const QString &point2Name, const qreal &mx2, const qreal &my2, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolTrueDarts *VToolTrueDarts::Create(VToolTrueDartsInitData initData) { - const QSharedPointer baseLineP1 = data->GeometricObject(baseLineP1Id); - const QSharedPointer baseLineP2 = data->GeometricObject(baseLineP2Id); - const QSharedPointer dartP1 = data->GeometricObject(dartP1Id); - const QSharedPointer dartP2 = data->GeometricObject(dartP2Id); - const QSharedPointer dartP3 = data->GeometricObject(dartP3Id); + const QSharedPointer baseLineP1 = initData.data->GeometricObject(initData.baseLineP1Id); + const QSharedPointer baseLineP2 = initData.data->GeometricObject(initData.baseLineP2Id); + const QSharedPointer dartP1 = initData.data->GeometricObject(initData.dartP1Id); + const QSharedPointer dartP2 = initData.data->GeometricObject(initData.dartP2Id); + const QSharedPointer dartP3 = initData.data->GeometricObject(initData.dartP3Id); QPointF fPoint1; QPointF fPoint2; VToolTrueDarts::FindPoint(static_cast(*baseLineP1), static_cast(*baseLineP2), static_cast(*dartP1), static_cast(*dartP2), static_cast(*dartP3), fPoint1, fPoint2); - quint32 id = _id; - quint32 p1id = _p1id; - quint32 p2id = _p2id; - if (typeCreation == Source::FromGui) + + if (initData.typeCreation == Source::FromGui) { - id = VContainer::getNextId();//Just reserve id for tool - p1id = data->AddGObject(new VPointF(fPoint1, point1Name, mx1, my1, id)); - p2id = data->AddGObject(new VPointF(fPoint2, point2Name, mx2, my2, id)); + initData.id = VContainer::getNextId();//Just reserve id for tool + initData.p1id = initData.data->AddGObject(new VPointF(fPoint1, initData.name1, initData.mx1, initData.my1, + initData.id)); + initData.p2id = initData.data->AddGObject(new VPointF(fPoint2, initData.name2, initData.mx2, initData.my2, + initData.id)); } else { - data->UpdateGObject(p1id, new VPointF(fPoint1, point1Name, mx1, my1, id)); - data->UpdateGObject(p2id, new VPointF(fPoint2, point2Name, mx2, my2, id)); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.p1id, new VPointF(fPoint1, initData.name1, initData.mx1, initData.my1, + initData.id)); + initData.data->UpdateGObject(initData.p2id, new VPointF(fPoint2, initData.name2, initData.mx2, initData.my2, + initData.id)); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::TrueDarts, doc); - VToolTrueDarts *points = new VToolTrueDarts(doc, data, id, p1id, p2id, baseLineP1Id, baseLineP2Id, - dartP1Id, dartP2Id, dartP3Id, typeCreation); - scene->addItem(points); - InitToolConnections(scene, points); - VAbstractPattern::AddTool(id, points); - doc->IncrementReferens(baseLineP1->getIdTool()); - doc->IncrementReferens(baseLineP2->getIdTool()); - doc->IncrementReferens(dartP1->getIdTool()); - doc->IncrementReferens(dartP2->getIdTool()); - doc->IncrementReferens(dartP3->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::TrueDarts, initData.doc); + VToolTrueDarts *points = new VToolTrueDarts(initData); + initData.scene->addItem(points); + InitToolConnections(initData.scene, points); + VAbstractPattern::AddTool(initData.id, points); + initData.doc->IncrementReferens(baseLineP1->getIdTool()); + initData.doc->IncrementReferens(baseLineP2->getIdTool()); + initData.doc->IncrementReferens(dartP1->getIdTool()); + initData.doc->IncrementReferens(dartP2->getIdTool()); + initData.doc->IncrementReferens(dartP3->getIdTool()); return points; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h index ab993334a..348a4341e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h @@ -44,6 +44,40 @@ template class QSharedPointer; +struct VToolTrueDartsInitData : public VAbstractToolInitData +{ + VToolTrueDartsInitData() + : VAbstractToolInitData(), + p1id(NULL_ID), + p2id(NULL_ID), + baseLineP1Id(NULL_ID), + baseLineP2Id(NULL_ID), + dartP1Id(NULL_ID), + dartP2Id(NULL_ID), + dartP3Id(NULL_ID), + name1(), + mx1(10), + my1(15), + name2(), + mx2(10), + my2(15) + {} + + quint32 p1id; + quint32 p2id; + quint32 baseLineP1Id; + quint32 baseLineP2Id; + quint32 dartP1Id; + quint32 dartP2Id; + quint32 dartP3Id; + QString name1; + qreal mx1; + qreal my1; + QString name2; + qreal mx2; + qreal my2; +}; + class VToolTrueDarts : public VToolDoublePoint { Q_OBJECT @@ -53,17 +87,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolTrueDarts* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolTrueDarts* Create(quint32 _id, - const quint32 &_p1id, const quint32 &_p2id, - const quint32 &baseLineP1Id, - const quint32 &baseLineP2Id, - const quint32 &dartP1Id, - const quint32 &dartP2Id, - const quint32 &dartP3Id, - const QString &point1Name, const qreal &mx1, const qreal &my1, - const QString &point2Name, const qreal &mx2, const qreal &my2, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolTrueDarts* Create(VToolTrueDartsInitData initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::TrueDarts)}; @@ -108,18 +132,7 @@ private: quint32 dartP2Id; quint32 dartP3Id; - VToolTrueDarts(VAbstractPattern *doc, - VContainer *data, - const quint32 &id, - const quint32 &p1id, - const quint32 &p2id, - const quint32 &baseLineP1Id, - const quint32 &baseLineP2Id, - const quint32 &dartP1Id, - const quint32 &dartP2Id, - const quint32 &dartP3Id, - const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolTrueDarts(const VToolTrueDartsInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLTRUEDARTS_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp index 181f6b5f2..a867961e2 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp @@ -59,19 +59,13 @@ const QString VToolCutArc::ToolType = QStringLiteral("cutArc"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolCutArc constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param formula string with formula length first arc. - * @param arcId id arc in data container. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolCutArc::VToolCutArc(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &formula, - const quint32 &arcId, const Source &typeCreation, QGraphicsItem * parent) - :VToolCut(doc, data, id, formula, arcId, parent) +VToolCutArc::VToolCutArc(const VToolCutArcInitData &initData, QGraphicsItem * parent) + :VToolCut(initData.doc, initData.data, initData.id, initData.formula, initData.arcId, parent) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -103,11 +97,18 @@ VToolCutArc* VToolCutArc::Create(QSharedPointer dialog, VMainGraphic SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QString pointName = dialogTool->getPointName(); - QString formula = dialogTool->GetFormula(); - const quint32 arcId = dialogTool->getArcId(); - VToolCutArc* point = Create(0, pointName, formula, arcId, 5, 10, true, scene, doc, data, Document::FullParse, - Source::FromGui); + + VToolCutArcInitData initData; + initData.formula = dialogTool->GetFormula(); + initData.arcId = dialogTool->getArcId(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolCutArc* point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -118,67 +119,54 @@ VToolCutArc* VToolCutArc::Create(QSharedPointer dialog, VMainGraphic //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param pointName point name. - * @param formula string with formula length first arc. - * @param arcId id arc in data container. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. + * @param initData init data. * @param typeCreation way we create this tool. */ -VToolCutArc* VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &formula, quint32 arcId, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation) +VToolCutArc* VToolCutArc::Create(VToolCutArcInitData &initData) { - const QSharedPointer arc = data->GeometricObject(arcId); + const QSharedPointer arc = initData.data->GeometricObject(initData.arcId); - const qreal result = CheckFormula(_id, formula, data); + const qreal result = CheckFormula(initData.id, initData.formula, initData.data); VArc arc1; VArc arc2; QPointF point = arc->CutArc(qApp->toPixel(result), arc1, arc2); - quint32 id = _id; - - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); auto a1 = QSharedPointer(new VArc(arc1)); auto a2 = QSharedPointer(new VArc(arc2)); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); a1->setId(VContainer::getNextId()); a2->setId(VContainer::getNextId()); - data->AddArc(a1, a1->id(), id); - data->AddArc(a2, a2->id(), id); + initData.data->AddArc(a1, a1->id(), initData.id); + initData.data->AddArc(a2, a2->id(), initData.id); } else { - data->UpdateGObject(id, p); - a1->setId(id + 1); - a2->setId(id + 2); - data->AddArc(a1, a1->id(), id); - data->AddArc(a2, a2->id(), id); + initData.data->UpdateGObject(initData.id, p); + a1->setId(initData.id + 1); + a2->setId(initData.id + 2); + initData.data->AddArc(a1, a1->id(), initData.id); + initData.data->AddArc(a2, a2->id(), initData.id); - if (parse != Document::FullParse) + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::CutArc, doc); - VToolCutArc *point = new VToolCutArc(doc, data, id, formula, arcId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(arc->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::CutArc, initData.doc); + VToolCutArc *point = new VToolCutArc(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(arc->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h index aa3eb0a53..92ffb4610 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.h @@ -43,6 +43,18 @@ template class QSharedPointer; +struct VToolCutArcInitData : public VToolSinglePointInitData +{ + VToolCutArcInitData() + : VToolSinglePointInitData(), + formula(), + arcId(NULL_ID) + {} + + QString formula; + quint32 arcId; +}; + /** * @brief The VToolCutArc class tool for cutting arc. */ @@ -53,10 +65,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolCutArc* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCutArc* Create(const quint32 _id, const QString &pointName, QString &formula, quint32 arcId, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolCutArc* Create(VToolCutArcInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::CutArc)}; @@ -72,8 +81,7 @@ protected: private: Q_DISABLE_COPY(VToolCutArc) - VToolCutArc(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &formula, - const quint32 &arcId, const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolCutArc(const VToolCutArcInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLCUTARC_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp index 9cff3d991..aa48d36ad 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp @@ -62,19 +62,13 @@ const QString VToolCutSpline::AttrSpline = QStringLiteral("spline"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolCutSpline constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param formula string with formula length first spline. - * @param splineId id spline in data container. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolCutSpline::VToolCutSpline(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &formula, - const quint32 &splineId, const Source &typeCreation, QGraphicsItem *parent) - :VToolCut(doc, data, id, formula, splineId, parent) +VToolCutSpline::VToolCutSpline(const VToolCutSplineInitData &initData, QGraphicsItem *parent) + :VToolCut(initData.doc, initData.data, initData.id, initData.formula, initData.splineId, parent) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -106,11 +100,18 @@ VToolCutSpline* VToolCutSpline::Create(QSharedPointer dialog, VMainG SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QString pointName = dialogTool->getPointName(); - QString formula = dialogTool->GetFormula(); - const quint32 splineId = dialogTool->getSplineId(); - VToolCutSpline* point = Create(0, pointName, formula, splineId, 5, 10, true, scene, doc, data, Document::FullParse, - Source::FromGui); + + VToolCutSplineInitData initData; + initData.formula = dialogTool->GetFormula(); + initData.splineId = dialogTool->getSplineId(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolCutSpline* point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -121,64 +122,49 @@ VToolCutSpline* VToolCutSpline::Create(QSharedPointer dialog, VMainG //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param pointName point name. - * @param formula string with formula length first spline. - * @param splineId id spline in data container. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. */ -VToolCutSpline* VToolCutSpline::Create(const quint32 _id, const QString &pointName, QString &formula, - quint32 splineId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolCutSpline* VToolCutSpline::Create(VToolCutSplineInitData &initData) { - const auto spl = data->GeometricObject(splineId); + const auto spl = initData.data->GeometricObject(initData.splineId); - const qreal result = CheckFormula(_id, formula, data); + const qreal result = CheckFormula(initData.id, initData.formula, initData.data); QPointF spl1p2, spl1p3, spl2p2, spl2p3; QPointF point = spl->CutSpline(qApp->toPixel(result), spl1p2, spl1p3, spl2p2, spl2p3); - quint32 id = _id; - - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); auto spline1 = QSharedPointer(new VSpline(spl->GetP1(), spl1p2, spl1p3, *p)); auto spline2 = QSharedPointer(new VSpline(*p, spl2p2, spl2p3, spl->GetP4())); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddSpline(spline1, NULL_ID, id); - data->AddSpline(spline2, NULL_ID, id); + initData.id = initData.data->AddGObject(p); + initData.data->AddSpline(spline1, NULL_ID, initData.id); + initData.data->AddSpline(spline2, NULL_ID, initData.id); } else { - data->UpdateGObject(id, p); - data->AddSpline(spline1, NULL_ID, id); - data->AddSpline(spline2, NULL_ID, id); + initData.data->UpdateGObject(initData.id, p); + initData.data->AddSpline(spline1, NULL_ID, initData.id); + initData.data->AddSpline(spline2, NULL_ID, initData.id); - if (parse != Document::FullParse) + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::CutSpline, doc); - VToolCutSpline *point = new VToolCutSpline(doc, data, id, formula, splineId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(spl->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::CutSpline, initData.doc); + VToolCutSpline *point = new VToolCutSpline(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(spl->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h index 0c62c260e..793345cfe 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.h @@ -43,6 +43,18 @@ template class QSharedPointer; +struct VToolCutSplineInitData : public VToolSinglePointInitData +{ + VToolCutSplineInitData() + : VToolSinglePointInitData(), + formula(), + splineId(NULL_ID) + {} + + QString formula; + quint32 splineId; +}; + /** * @brief The VToolCutSpline class for tool CutSpline. This tool find point on spline and cut spline on two. */ @@ -53,11 +65,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolCutSpline *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCutSpline *Create(const quint32 _id, const QString &pointName, QString &formula, - quint32 splineId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation); + static VToolCutSpline *Create(VToolCutSplineInitData &initData); static const QString ToolType; static const QString AttrSpline; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -74,8 +82,7 @@ protected: private: Q_DISABLE_COPY(VToolCutSpline) - VToolCutSpline(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &formula, - const quint32 &splineId, const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolCutSpline(const VToolCutSplineInitData &initData, QGraphicsItem * parent = nullptr); }; #endif // VTOOLCUTSPLINE_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp index b49029f07..37e4c744f 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp @@ -65,20 +65,13 @@ const QString VToolCutSplinePath::AttrSplinePath = QStringLiteral("splinePath"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolCutSplinePath constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param formula string with formula length first splinePath. - * @param splinePathId id splinePath (we cut this splinePath) in data container. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolCutSplinePath::VToolCutSplinePath(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const QString &formula, const quint32 &splinePathId, - const Source &typeCreation, QGraphicsItem *parent) - :VToolCut(doc, data, id, formula, splinePathId, parent) +VToolCutSplinePath::VToolCutSplinePath(const VToolCutSplinePathInitData &initData, QGraphicsItem *parent) + :VToolCut(initData.doc, initData.data, initData.id, initData.formula, initData.splinePathId, parent) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -110,11 +103,18 @@ VToolCutSplinePath* VToolCutSplinePath::Create(QSharedPointer dialog SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QString pointName = dialogTool->getPointName(); - QString formula = dialogTool->GetFormula(); - const quint32 splinePathId = dialogTool->getSplinePathId(); - VToolCutSplinePath* point = Create(0, pointName, formula, splinePathId, 5, 10, true, scene, doc, data, - Document::FullParse, Source::FromGui); + + VToolCutSplinePathInitData initData; + initData.formula = dialogTool->GetFormula(); + initData.splinePathId = dialogTool->getSplinePathId(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolCutSplinePath* point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -125,69 +125,55 @@ VToolCutSplinePath* VToolCutSplinePath::Create(QSharedPointer dialog //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param pointName point name. - * @param formula string with formula length first splinePath. - * @param splinePathId id of splinePath in data container. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. */ -VToolCutSplinePath* VToolCutSplinePath::Create(const quint32 _id, const QString &pointName, QString &formula, - quint32 splinePathId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation) +VToolCutSplinePath* VToolCutSplinePath::Create(VToolCutSplinePathInitData &initData) { - const auto splPath = data->GeometricObject(splinePathId); + const auto splPath = initData.data->GeometricObject(initData.splinePathId); SCASSERT(splPath != nullptr) - const qreal result = CheckFormula(_id, formula, data); + const qreal result = CheckFormula(initData.id, initData.formula, initData.data); - quint32 id = _id; VSplinePath *splPath1 = nullptr; VSplinePath *splPath2 = nullptr; - VPointF *p = VToolCutSplinePath::CutSplinePath(qApp->toPixel(result), splPath, pointName, &splPath1, &splPath2); - p->SetShowLabel(showLabel); + VPointF *p = VToolCutSplinePath::CutSplinePath(qApp->toPixel(result), splPath, initData.name, &splPath1, &splPath2); + p->SetShowLabel(initData.showLabel); SCASSERT(splPath1 != nullptr) SCASSERT(splPath2 != nullptr) SCASSERT(p != nullptr) - p->setMx(mx); - p->setMy(my); + p->setMx(initData.mx); + p->setMy(initData.my); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); - data->AddSpline(QSharedPointer(splPath1), NULL_ID, id); - data->AddSpline(QSharedPointer(splPath2), NULL_ID, id); + initData.data->AddSpline(QSharedPointer(splPath1), NULL_ID, initData.id); + initData.data->AddSpline(QSharedPointer(splPath2), NULL_ID, initData.id); } else { - data->UpdateGObject(id, p); + initData.data->UpdateGObject(initData.id, p); - data->AddSpline(QSharedPointer(splPath1), NULL_ID, id); - data->AddSpline(QSharedPointer(splPath2), NULL_ID, id); + initData.data->AddSpline(QSharedPointer(splPath1), NULL_ID, initData.id); + initData.data->AddSpline(QSharedPointer(splPath2), NULL_ID, initData.id); - if (parse != Document::FullParse) + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::CutSplinePath, doc); - VToolCutSplinePath *point = new VToolCutSplinePath(doc, data, id, formula, splinePathId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(splPath->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::CutSplinePath, initData.doc); + VToolCutSplinePath *point = new VToolCutSplinePath(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(splPath->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h index 8e98848f8..d9630c902 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.h @@ -44,6 +44,18 @@ class VSplinePath; template class QSharedPointer; +struct VToolCutSplinePathInitData : public VToolSinglePointInitData +{ + VToolCutSplinePathInitData() + : VToolSinglePointInitData(), + formula(), + splinePathId(NULL_ID) + {} + + QString formula; + quint32 splinePathId; +}; + /** * @brief The VToolCutSplinePath class for tool CutSplinePath. This tool find point on splinePath and cut splinePath on * two. @@ -55,10 +67,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolCutSplinePath *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCutSplinePath *Create(const quint32 _id, const QString &pointName, QString &formula, - quint32 splinePathId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolCutSplinePath *Create(VToolCutSplinePathInitData &initData); static const QString ToolType; static const QString AttrSplinePath; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -80,8 +89,7 @@ protected: private: Q_DISABLE_COPY(VToolCutSplinePath) - VToolCutSplinePath(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &formula, - const quint32 &splinePathId, const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolCutSplinePath(const VToolCutSplinePathInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLCUTSPLINEPATH_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp index 8d3e7c03e..ec7c3b953 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp @@ -71,13 +71,12 @@ const QString VToolAlongLine::ToolType = QStringLiteral("alongLine"); * @param typeCreation way we create this tool. * @param parent parent object. */ -VToolAlongLine::VToolAlongLine(VAbstractPattern *doc, VContainer *data, quint32 id, const QString &formula, - const quint32 &firstPointId, const quint32 &secondPointId, - const QString &typeLine, const QString &lineColor, const Source &typeCreation, - QGraphicsItem *parent) - :VToolLinePoint(doc, data, id, typeLine, lineColor, formula, firstPointId, 0, parent), secondPointId(secondPointId) +VToolAlongLine::VToolAlongLine(const VToolAlongLineInitData &initData, QGraphicsItem *parent) + :VToolLinePoint(initData.doc, initData.data, initData.id, initData.typeLine, initData.lineColor, initData.formula, + initData.firstPointId, 0, parent), + secondPointId(initData.secondPointId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -244,14 +243,21 @@ VToolAlongLine* VToolAlongLine::Create(QSharedPointer dialog, VMainG SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - QString formula = dialogTool->GetFormula(); - const quint32 firstPointId = dialogTool->GetFirstPointId(); - const quint32 secondPointId = dialogTool->GetSecondPointId(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - const QString pointName = dialogTool->getPointName(); - VToolAlongLine *point = Create(0, pointName, typeLine, lineColor, formula, firstPointId, secondPointId, - 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); + + VToolAlongLineInitData initData; + initData.formula = dialogTool->GetFormula(); + initData.firstPointId = dialogTool->GetFirstPointId(); + initData.secondPointId = dialogTool->GetSecondPointId(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolAlongLine *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -262,75 +268,55 @@ VToolAlongLine* VToolAlongLine::Create(QSharedPointer dialog, VMainG //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param pointName point name. point name. - * @param typeLine line type. - * @param formula string with length formula. - * @param firstPointId id first point of line. - * @param secondPointId id second point of line. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param showLabel show/hide label. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. */ -VToolAlongLine* VToolAlongLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, QString &formula, const quint32 &firstPointId, - quint32 secondPointId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolAlongLine* VToolAlongLine::Create(VToolAlongLineInitData &initData) { - const QSharedPointer firstPoint = data->GeometricObject(firstPointId); - const QSharedPointer secondPoint = data->GeometricObject(secondPointId); + const QSharedPointer firstPoint = initData.data->GeometricObject(initData.firstPointId); + const QSharedPointer secondPoint = initData.data->GeometricObject(initData.secondPointId); QLineF line = QLineF(static_cast(*firstPoint), static_cast(*secondPoint)); //Declare special variable "CurrentLength" - VLengthLine *length = new VLengthLine(firstPoint.data(), firstPointId, secondPoint.data(), - secondPointId, *data->GetPatternUnit()); + VLengthLine *length = new VLengthLine(firstPoint.data(), initData.firstPointId, secondPoint.data(), + initData.secondPointId, *initData.data->GetPatternUnit()); length->SetName(currentLength); - data->AddVariable(currentLength, length); + initData.data->AddVariable(currentLength, length); - line.setLength(qApp->toPixel(CheckFormula(_id, formula, data))); + line.setLength(qApp->toPixel(CheckFormula(initData.id, initData.formula, initData.data))); - quint32 id = _id; + VPointF *p = new VPointF(line.p2(), initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - VPointF *p = new VPointF(line.p2(), pointName, mx, my); - p->SetShowLabel(showLabel); - - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(firstPointId, id); - data->AddLine(id, secondPointId); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.firstPointId, initData.id); + initData.data->AddLine(initData.id, initData.secondPointId); } else { - data->UpdateGObject(id, p); - data->AddLine(firstPointId, id); - data->AddLine(id, secondPointId); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.firstPointId, initData.id); + initData.data->AddLine(initData.id, initData.secondPointId); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } VToolAlongLine *point = nullptr; - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::AlongLine, doc); - point = new VToolAlongLine(doc, data, id, formula, firstPointId, secondPointId, typeLine, lineColor, - typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(firstPoint->getIdTool()); - doc->IncrementReferens(secondPoint->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::AlongLine, initData.doc); + point = new VToolAlongLine(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(firstPoint->getIdTool()); + initData.doc->IncrementReferens(secondPoint->getIdTool()); } //Very important to delete it. Only this tool need this special variable. - data->RemoveVariable(currentLength); + initData.data->RemoveVariable(currentLength); return point; } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h index 260f99bef..99387deaf 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.h @@ -43,6 +43,20 @@ template class QSharedPointer; +struct VToolAlongLineInitData : public VToolLinePointInitData +{ + VToolAlongLineInitData() + : VToolLinePointInitData(), + formula("100.0"), + firstPointId(NULL_ID), + secondPointId(NULL_ID) + {} + + QString formula; + quint32 firstPointId; + quint32 secondPointId; +}; + /** * @brief The VToolAlongLine class tool for creation point along line. */ @@ -53,12 +67,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolAlongLine* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolAlongLine* Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, QString &formula, const quint32 &firstPointId, - quint32 secondPointId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation); + static VToolAlongLine* Create(VToolAlongLineInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::AlongLine)}; @@ -83,10 +92,7 @@ private: /** @brief secondPointId id second point of line. */ quint32 secondPointId; - VToolAlongLine(VAbstractPattern *doc, VContainer *data, quint32 id, const QString &formula, - const quint32 &firstPointId, - const quint32 &secondPointId, const QString &typeLine, const QString &lineColor, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolAlongLine(const VToolAlongLineInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLALONGLINE_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp index be1c5f055..576805748 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp @@ -59,25 +59,15 @@ const QString VToolBisector::ToolType = QStringLiteral("bisector"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolBisector constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param typeLine line type. - * @param formula string with formula length of bisector. - * @param firstPointId id first point of angle. - * @param secondPointId id second point of angle. - * @param thirdPointId id third point of angle. - * @param typeCreation way we create this tool. - * @param parent parent object. + * @param initData init data. */ -VToolBisector::VToolBisector(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, const QString &formula, const quint32 &firstPointId, - const quint32 &secondPointId, const quint32 &thirdPointId, const Source &typeCreation, - QGraphicsItem *parent) - :VToolLinePoint(doc, data, id, typeLine, lineColor, formula, secondPointId, 0, parent), firstPointId(firstPointId), - thirdPointId(thirdPointId) +VToolBisector::VToolBisector(const VToolBisectorInitData &initData, QGraphicsItem *parent) + :VToolLinePoint(initData.doc, initData.data, initData.id, initData.typeLine, initData.lineColor, initData.formula, + initData.secondPointId, 0, parent), + firstPointId(initData.firstPointId), + thirdPointId(initData.thirdPointId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -148,15 +138,22 @@ VToolBisector* VToolBisector::Create(QSharedPointer dialog, VMainGra SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - QString formula = dialogTool->GetFormula(); - const quint32 firstPointId = dialogTool->GetFirstPointId(); - const quint32 secondPointId = dialogTool->GetSecondPointId(); - const quint32 thirdPointId = dialogTool->GetThirdPointId(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - const QString pointName = dialogTool->getPointName(); - VToolBisector *point = Create(0, formula, firstPointId, secondPointId, thirdPointId, typeLine, lineColor, - pointName, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); + + VToolBisectorInitData initData; + initData.formula = dialogTool->GetFormula(); + initData.firstPointId = dialogTool->GetFirstPointId(); + initData.secondPointId = dialogTool->GetSecondPointId(); + initData.thirdPointId = dialogTool->GetThirdPointId(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolBisector *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -167,67 +164,47 @@ VToolBisector* VToolBisector::Create(QSharedPointer dialog, VMainGra //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param formula string with formula. - * @param firstPointId id first point of angle. - * @param secondPointId id second point of angle. - * @param thirdPointId id third point of angle. - * @param typeLine line type. - * @param pointName point name. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param showLabel show/hide label. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. */ -VToolBisector* VToolBisector::Create(const quint32 _id, QString &formula, quint32 firstPointId, quint32 secondPointId, - quint32 thirdPointId, const QString &typeLine, const QString &lineColor, - const QString &pointName, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolBisector* VToolBisector::Create(VToolBisectorInitData &initData) { - const QSharedPointer firstPoint = data->GeometricObject(firstPointId); - const QSharedPointer secondPoint = data->GeometricObject(secondPointId); - const QSharedPointer thirdPoint = data->GeometricObject(thirdPointId); + const QSharedPointer firstPoint = initData.data->GeometricObject(initData.firstPointId); + const QSharedPointer secondPoint = initData.data->GeometricObject(initData.secondPointId); + const QSharedPointer thirdPoint = initData.data->GeometricObject(initData.thirdPointId); - const qreal result = CheckFormula(_id, formula, data); + const qreal result = CheckFormula(initData.id, initData.formula, initData.data); QPointF fPoint = VToolBisector::FindPoint(static_cast(*firstPoint), static_cast(*secondPoint), static_cast(*thirdPoint), qApp->toPixel(result)); - quint32 id = _id; - VPointF *p = new VPointF(fPoint, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(fPoint, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(secondPointId, id); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.secondPointId, initData.id); } else { - data->UpdateGObject(id, p); - data->AddLine(secondPointId, id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.secondPointId, initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Bisector, doc); - VToolBisector *point = new VToolBisector(doc, data, id, typeLine, lineColor, formula, firstPointId, - secondPointId, thirdPointId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(firstPoint->getIdTool()); - doc->IncrementReferens(secondPoint->getIdTool()); - doc->IncrementReferens(thirdPoint->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::Bisector, initData.doc); + VToolBisector *point = new VToolBisector(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(firstPoint->getIdTool()); + initData.doc->IncrementReferens(secondPoint->getIdTool()); + initData.doc->IncrementReferens(thirdPoint->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h index 05c11acf0..b90e3c0b8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.h @@ -44,6 +44,22 @@ template class QSharedPointer; +struct VToolBisectorInitData : public VToolLinePointInitData +{ + VToolBisectorInitData() + : VToolLinePointInitData(), + formula("100.0"), + firstPointId(NULL_ID), + secondPointId(NULL_ID), + thirdPointId(NULL_ID) + {} + + QString formula; + quint32 firstPointId; + quint32 secondPointId; + quint32 thirdPointId; +}; + /** * @brief The VToolBisector class tool for creation bisector point. */ @@ -57,11 +73,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolBisector* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolBisector* Create(const quint32 _id, QString &formula, quint32 firstPointId, quint32 secondPointId, - quint32 thirdPointId, const QString &typeLine, const QString &lineColor, - const QString &pointName, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolBisector* Create(VToolBisectorInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::Bisector)}; @@ -93,10 +105,7 @@ private: /** @brief thirdPointId id third point of angle. */ quint32 thirdPointId; - VToolBisector(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, - const QString &formula, const quint32 &firstPointId, const quint32 &secondPointId, - const quint32 &thirdPointId, const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolBisector(const VToolBisectorInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLBISECTOR_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp index 8a04dd63d..d9e39596f 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp @@ -70,15 +70,14 @@ template class QSharedPointer; const QString VToolCurveIntersectAxis::ToolType = QStringLiteral("curveIntersectAxis"); //--------------------------------------------------------------------------------------------------------------------- -VToolCurveIntersectAxis::VToolCurveIntersectAxis(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const QString &typeLine, const QString &lineColor, - const QString &formulaAngle, const quint32 &basePointId, - const quint32 &curveId, const Source &typeCreation, +VToolCurveIntersectAxis::VToolCurveIntersectAxis(const VToolCurveIntersectAxisInitData &initData, QGraphicsItem *parent) - :VToolLinePoint(doc, data, id, typeLine, lineColor, QString(), basePointId, 0, parent), formulaAngle(formulaAngle), - curveId(curveId) + :VToolLinePoint(initData.doc, initData.data, initData.id, initData.typeLine, initData.lineColor, QString(), + initData.basePointId, 0, parent), + formulaAngle(initData.formulaAngle), + curveId(initData.curveId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -105,16 +104,21 @@ VToolCurveIntersectAxis *VToolCurveIntersectAxis::Create(QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QString pointName = dialogTool->getPointName(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - QString formulaAngle = dialogTool->GetAngle(); - const quint32 basePointId = dialogTool->GetBasePointId(); - const quint32 curveId = dialogTool->getCurveId(); - VToolCurveIntersectAxis *point = Create(0, pointName, typeLine, lineColor, formulaAngle, basePointId, - curveId, 5, 10, true, scene, doc, data, Document::FullParse, - Source::FromGui); + VToolCurveIntersectAxisInitData initData; + initData.formulaAngle = dialogTool->GetAngle(); + initData.basePointId = dialogTool->GetBasePointId(); + initData.curveId = dialogTool->getCurveId(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolCurveIntersectAxis *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -123,57 +127,49 @@ VToolCurveIntersectAxis *VToolCurveIntersectAxis::Create(QSharedPointer basePoint = data->GeometricObject(basePointId); - const qreal angle = CheckFormula(_id, formulaAngle, data); - const QSharedPointer curve = data->GeometricObject(curveId); + const QSharedPointer basePoint = initData.data->GeometricObject(initData.basePointId); + const qreal angle = CheckFormula(initData.id, initData.formulaAngle, initData.data); + const QSharedPointer curve = initData.data->GeometricObject(initData.curveId); const QPointF fPoint = FindPoint(static_cast(*basePoint), angle, curve); const qreal segLength = curve->GetLengthByPoint(fPoint); - quint32 id = _id; - VPointF *p = new VPointF(fPoint, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(fPoint, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(basePointId, id); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.basePointId, initData.id); VContainer::getNextId(); VContainer::getNextId(); - InitSegments(curve->getType(), segLength, p, curveId, data); + InitSegments(curve->getType(), segLength, p, initData.curveId, initData.data); } else { - data->UpdateGObject(id, p); - data->AddLine(basePointId, id); + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.basePointId, initData.id); - InitSegments(curve->getType(), segLength, p, curveId, data); + InitSegments(curve->getType(), segLength, p, initData.curveId, initData.data); - if (parse != Document::FullParse) + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::CurveIntersectAxis, doc); - VToolCurveIntersectAxis *point = new VToolCurveIntersectAxis(doc, data, id, typeLine, lineColor, formulaAngle, - basePointId, curveId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(basePoint->getIdTool()); - doc->IncrementReferens(curve->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::CurveIntersectAxis, initData.doc); + VToolCurveIntersectAxis *point = new VToolCurveIntersectAxis(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(basePoint->getIdTool()); + initData.doc->IncrementReferens(curve->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h index 2df2fb29e..5dcd41537 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.h @@ -46,6 +46,20 @@ template class QSharedPointer; +struct VToolCurveIntersectAxisInitData : public VToolLinePointInitData +{ + VToolCurveIntersectAxisInitData() + : VToolLinePointInitData(), + formulaAngle("0"), + basePointId(NULL_ID), + curveId(NULL_ID) + {} + + QString formulaAngle; + quint32 basePointId; + quint32 curveId; +}; + class VToolCurveIntersectAxis : public VToolLinePoint { Q_OBJECT @@ -55,11 +69,7 @@ public: static VToolCurveIntersectAxis *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCurveIntersectAxis *Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, QString &formulaAngle, quint32 basePointId, - quint32 curveId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolCurveIntersectAxis *Create(VToolCurveIntersectAxisInitData &initData); static QPointF FindPoint(const QPointF &point, qreal angle, const QSharedPointer &curve); @@ -88,9 +98,7 @@ private: QString formulaAngle; quint32 curveId; - VToolCurveIntersectAxis(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, const QString &formulaAngle, const quint32 &basePointId, - const quint32 &curveId, const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolCurveIntersectAxis(const VToolCurveIntersectAxisInitData &initData, QGraphicsItem *parent = nullptr); template static void InitArc(VContainer *data, qreal segLength, const VPointF *p, quint32 curveId); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp index b896febd8..f3251b67e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp @@ -59,23 +59,15 @@ const QString VToolEndLine::ToolType = QStringLiteral("endLine"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolEndLine constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param typeLine line type. - * @param formulaLength string with formula length of line. - * @param formulaAngle formula angle of line. - * @param basePointId id first point of line. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolEndLine::VToolEndLine(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, const QString &formulaLength, const QString &formulaAngle, - const quint32 &basePointId, const Source &typeCreation, QGraphicsItem *parent) - :VToolLinePoint(doc, data, id, typeLine, lineColor, formulaLength, basePointId, 0, parent), - formulaAngle(formulaAngle) +VToolEndLine::VToolEndLine(const VToolEndLineInitData &initData, QGraphicsItem *parent) + :VToolLinePoint(initData.doc, initData.data, initData.id, initData.typeLine, initData.lineColor, + initData.formulaLength, initData.basePointId, 0, parent), + formulaAngle(initData.formulaAngle) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -112,15 +104,21 @@ VToolEndLine* VToolEndLine::Create(QSharedPointer dialog, VMainGraph SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QString pointName = dialogTool->getPointName(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - QString formulaLength = dialogTool->GetFormula(); - QString formulaAngle = dialogTool->GetAngle(); - const quint32 basePointId = dialogTool->GetBasePointId(); - VToolEndLine *point = Create(0, pointName, typeLine, lineColor, formulaLength, formulaAngle, - basePointId, 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); + VToolEndLineInitData initData; + initData.formulaLength = dialogTool->GetFormula(); + initData.formulaAngle = dialogTool->GetAngle(); + initData.basePointId = dialogTool->GetBasePointId(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolEndLine *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -131,63 +129,42 @@ VToolEndLine* VToolEndLine::Create(QSharedPointer dialog, VMainGraph //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param pointName point name. - * @param typeLine line type. - * @param lineColor line color. - * @param formulaLength string with formula length of line. - * @param formulaAngle formula angle of line. - * @param basePointId id first point of line. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param showLabel show/hide label - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. - * @return the created tool + * @param initData init data. */ -VToolEndLine* VToolEndLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, QString &formulaLength, QString &formulaAngle, - quint32 basePointId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolEndLine* VToolEndLine::Create(VToolEndLineInitData &initData) { - const QSharedPointer basePoint = data->GeometricObject(basePointId); + const QSharedPointer basePoint = initData.data->GeometricObject(initData.basePointId); QLineF line = QLineF(static_cast(*basePoint), QPointF(basePoint->x()+100, basePoint->y())); - line.setAngle(CheckFormula(_id, formulaAngle, data)); //First set angle. - line.setLength(qApp->toPixel(CheckFormula(_id, formulaLength, data))); - quint32 id = _id; + line.setAngle(CheckFormula(initData.id, initData.formulaAngle, initData.data)); //First set angle. + line.setLength(qApp->toPixel(CheckFormula(initData.id, initData.formulaLength, initData.data))); - VPointF *p = new VPointF(line.p2(), pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(line.p2(), initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(basePointId, id); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.basePointId, initData.id); } else { - data->UpdateGObject(id, p); - data->AddLine(basePointId, id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.basePointId, initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::EndLine, doc); - VToolEndLine *point = new VToolEndLine(doc, data, id, typeLine, lineColor, formulaLength, formulaAngle, - basePointId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(basePoint->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::EndLine, initData.doc); + VToolEndLine *point = new VToolEndLine(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(basePoint->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h index c063ab959..3e594ca4b 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.h @@ -44,6 +44,20 @@ template class QSharedPointer; +struct VToolEndLineInitData : public VToolLinePointInitData +{ + VToolEndLineInitData() + : VToolLinePointInitData(), + formulaLength(), + formulaAngle(), + basePointId(NULL_ID) + {} + + QString formulaLength; + QString formulaAngle; + quint32 basePointId; +}; + /** * @brief The VToolEndLine class tool for creation point on the line end. */ @@ -55,12 +69,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolEndLine *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolEndLine *Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, QString &formulaLength, QString &formulaAngle, - quint32 basePointId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation); + static VToolEndLine *Create(VToolEndLineInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::EndLine)}; @@ -80,10 +89,7 @@ private: QString formulaAngle; - VToolEndLine(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, - const QString &formulaLength, const QString &formulaAngle, const quint32 &basePointId, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolEndLine(const VToolEndLineInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLENDLINE_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp index c9a3d541a..3baf4a16b 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp @@ -55,23 +55,16 @@ const QString VToolHeight::ToolType = QStringLiteral("height"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolHeight constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param typeLine line type. - * @param basePointId id base point of projection. - * @param p1LineId id first point of line. - * @param p2LineId id second point of line. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolHeight::VToolHeight(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, const quint32 &basePointId, const quint32 &p1LineId, - const quint32 &p2LineId, const Source &typeCreation, QGraphicsItem * parent) - :VToolLinePoint(doc, data, id, typeLine, lineColor, QString(), basePointId, 0, parent), p1LineId(p1LineId), - p2LineId(p2LineId) +VToolHeight::VToolHeight(const VToolHeightInitData &initData, QGraphicsItem * parent) + :VToolLinePoint(initData.doc, initData.data, initData.id, initData.typeLine, initData.lineColor, QString(), + initData.basePointId, 0, parent), + p1LineId(initData.p1LineId), + p2LineId(initData.p2LineId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -107,15 +100,21 @@ VToolHeight* VToolHeight::Create(QSharedPointer dialog, VMainGraphic SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QString pointName = dialogTool->getPointName(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - const quint32 basePointId = dialogTool->GetBasePointId(); - const quint32 p1LineId = dialogTool->GetP1LineId(); - const quint32 p2LineId = dialogTool->GetP2LineId(); - VToolHeight *point = Create(0, pointName, typeLine, lineColor, basePointId, p1LineId, p2LineId, 5, 10, true, scene, - doc, data, Document::FullParse, Source::FromGui); + VToolHeightInitData initData; + initData.basePointId = dialogTool->GetBasePointId(); + initData.p1LineId = dialogTool->GetP1LineId(); + initData.p2LineId = dialogTool->GetP2LineId(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolHeight *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -126,68 +125,49 @@ VToolHeight* VToolHeight::Create(QSharedPointer dialog, VMainGraphic //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool - * @param _id tool id, 0 if tool doesn't exist yet. - * @param pointName point name. - * @param typeLine line type. - * @param basePointId id base point of projection. - * @param p1LineId id first point of line. - * @param p2LineId id second point of line. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. - * @return the created tool + * @param initData init data. */ -VToolHeight* VToolHeight::Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, quint32 basePointId, quint32 p1LineId, - quint32 p2LineId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolHeight* VToolHeight::Create(VToolHeightInitData initData) { - const QSharedPointer basePoint = data->GeometricObject(basePointId); - const QSharedPointer p1Line = data->GeometricObject(p1LineId); - const QSharedPointer p2Line = data->GeometricObject(p2LineId); + const QSharedPointer basePoint = initData.data->GeometricObject(initData.basePointId); + const QSharedPointer p1Line = initData.data->GeometricObject(initData.p1LineId); + const QSharedPointer p2Line = initData.data->GeometricObject(initData.p2LineId); QPointF pHeight = FindPoint(QLineF(static_cast(*p1Line), static_cast(*p2Line)), static_cast(*basePoint)); - quint32 id = _id; - VPointF *p = new VPointF(pHeight, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(pHeight, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(basePointId, id); - data->AddLine(p1LineId, id); - data->AddLine(p2LineId, id); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.basePointId, initData.id); + initData.data->AddLine(initData.p1LineId, initData.id); + initData.data->AddLine(initData.p2LineId, initData.id); } else { - data->UpdateGObject(id, p); - data->AddLine(basePointId, id); - data->AddLine(p1LineId, id); - data->AddLine(p2LineId, id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.basePointId, initData.id); + initData.data->AddLine(initData.p1LineId, initData.id); + initData.data->AddLine(initData.p2LineId, initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Height, doc); - VToolHeight *point = new VToolHeight(doc, data, id, typeLine, lineColor, basePointId, p1LineId, p2LineId, - typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(basePoint->getIdTool()); - doc->IncrementReferens(p1Line->getIdTool()); - doc->IncrementReferens(p2Line->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::Height, initData.doc); + VToolHeight *point = new VToolHeight(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(basePoint->getIdTool()); + initData.doc->IncrementReferens(p1Line->getIdTool()); + initData.doc->IncrementReferens(p2Line->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h index b66d0682e..e4ca01e92 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.h @@ -45,6 +45,20 @@ template class QSharedPointer; +struct VToolHeightInitData : public VToolLinePointInitData +{ + VToolHeightInitData() + : VToolLinePointInitData(), + basePointId(NULL_ID), + p1LineId(NULL_ID), + p2LineId(NULL_ID) + {} + + quint32 basePointId; + quint32 p1LineId; + quint32 p2LineId; +}; + /** * @brief The VToolHeight class tool for creation point of height. Help find point of projection onto line. */ @@ -55,11 +69,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolHeight *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolHeight *Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, quint32 basePointId, quint32 p1LineId, - quint32 p2LineId, qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolHeight *Create(VToolHeightInitData initData); static QPointF FindPoint(const QLineF &line, const QPointF &point); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -92,10 +102,7 @@ private: /** @brief p2LineId id second point of line. */ quint32 p2LineId; - VToolHeight(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, - const quint32 &basePointId, const quint32 &p1LineId, const quint32 &p2LineId, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolHeight(const VToolHeightInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLHEIGHT_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp index d185c708c..8fcf8eb17 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp @@ -56,15 +56,14 @@ template class QSharedPointer; const QString VToolLineIntersectAxis::ToolType = QStringLiteral("lineIntersectAxis"); //--------------------------------------------------------------------------------------------------------------------- -VToolLineIntersectAxis::VToolLineIntersectAxis(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const QString &typeLine, const QString &lineColor, - const QString &formulaAngle, const quint32 &basePointId, - const quint32 &firstPointId, const quint32 &secondPointId, - const Source &typeCreation, QGraphicsItem *parent) - :VToolLinePoint(doc, data, id, typeLine, lineColor, QString(), basePointId, 0, parent), formulaAngle(formulaAngle), - firstPointId(firstPointId), secondPointId(secondPointId) +VToolLineIntersectAxis::VToolLineIntersectAxis(const VToolLineIntersectAxisInitData &initData, QGraphicsItem *parent) + :VToolLinePoint(initData.doc, initData.data, initData.id, initData.typeLine, initData.lineColor, QString(), + initData.basePointId, 0, parent), + formulaAngle(initData.formulaAngle), + firstPointId(initData.firstPointId), + secondPointId(initData.secondPointId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -91,17 +90,22 @@ VToolLineIntersectAxis *VToolLineIntersectAxis::Create(QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const QString pointName = dialogTool->getPointName(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - QString formulaAngle = dialogTool->GetAngle(); - const quint32 basePointId = dialogTool->GetBasePointId(); - const quint32 firstPointId = dialogTool->GetFirstPointId(); - const quint32 secondPointId = dialogTool->GetSecondPointId(); - VToolLineIntersectAxis *point = Create(0, pointName, typeLine, lineColor, formulaAngle, - basePointId, firstPointId, secondPointId, 5, 10, true, - scene, doc, data, Document::FullParse, Source::FromGui); + VToolLineIntersectAxisInitData initData; + initData.formulaAngle = dialogTool->GetAngle(); + initData.basePointId = dialogTool->GetBasePointId(); + initData.firstPointId = dialogTool->GetFirstPointId(); + initData.secondPointId = dialogTool->GetSecondPointId(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolLineIntersectAxis *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -110,59 +114,50 @@ VToolLineIntersectAxis *VToolLineIntersectAxis::Create(QSharedPointer basePoint = data->GeometricObject(basePointId); + const QSharedPointer basePoint = initData.data->GeometricObject(initData.basePointId); QLineF axis = QLineF(static_cast(*basePoint), QPointF(basePoint->x()+100, basePoint->y())); - axis.setAngle(CheckFormula(_id, formulaAngle, data)); + axis.setAngle(CheckFormula(initData.id, initData.formulaAngle, initData.data)); - const QSharedPointer firstPoint = data->GeometricObject(firstPointId); - const QSharedPointer secondPoint = data->GeometricObject(secondPointId); + const QSharedPointer firstPoint = initData.data->GeometricObject(initData.firstPointId); + const QSharedPointer secondPoint = initData.data->GeometricObject(initData.secondPointId); QLineF line(static_cast(*firstPoint), static_cast(*secondPoint)); QPointF fPoint = FindPoint(axis, line); - quint32 id = _id; - VPointF *p = new VPointF(fPoint, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(fPoint, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(basePointId, id); - data->AddLine(firstPointId, id); - data->AddLine(id, secondPointId); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.basePointId, initData.id); + initData.data->AddLine(initData.firstPointId, initData.id); + initData.data->AddLine(initData.id, initData.secondPointId); } else { - data->UpdateGObject(id, p); - data->AddLine(basePointId, id); - data->AddLine(firstPointId, id); - data->AddLine(id, secondPointId); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.basePointId, initData.id); + initData.data->AddLine(initData.firstPointId, initData.id); + initData.data->AddLine(initData.id, initData.secondPointId); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::LineIntersectAxis, doc); - VToolLineIntersectAxis *point = new VToolLineIntersectAxis(doc, data, id, typeLine, lineColor, formulaAngle, - basePointId, firstPointId, secondPointId, - typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(basePoint->getIdTool()); - doc->IncrementReferens(firstPoint->getIdTool()); - doc->IncrementReferens(secondPoint->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::LineIntersectAxis, initData.doc); + VToolLineIntersectAxis *point = new VToolLineIntersectAxis(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(basePoint->getIdTool()); + initData.doc->IncrementReferens(firstPoint->getIdTool()); + initData.doc->IncrementReferens(secondPoint->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h index 33f06fcb1..1b431a16a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.h @@ -46,6 +46,22 @@ template class QSharedPointer; +struct VToolLineIntersectAxisInitData : public VToolLinePointInitData +{ + VToolLineIntersectAxisInitData() + : VToolLinePointInitData(), + formulaAngle("0"), + basePointId(NULL_ID), + firstPointId(NULL_ID), + secondPointId(NULL_ID) + {} + + QString formulaAngle; + quint32 basePointId; + quint32 firstPointId; + quint32 secondPointId; +}; + class VToolLineIntersectAxis : public VToolLinePoint { Q_OBJECT @@ -55,12 +71,7 @@ public: static VToolLineIntersectAxis *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolLineIntersectAxis *Create(const quint32 _id, const QString &pointName, const QString &typeLine, - const QString &lineColor, QString &formulaAngle, quint32 basePointId, - quint32 firstPointId, quint32 secondPointId, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation); + static VToolLineIntersectAxis *Create(VToolLineIntersectAxisInitData &initData); static QPointF FindPoint(const QLineF &axis, const QLineF &line); @@ -96,10 +107,7 @@ private: quint32 firstPointId; quint32 secondPointId; - VToolLineIntersectAxis(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, const QString &formulaAngle, const quint32 &basePointId, - const quint32 &firstPointId, const quint32 &secondPointId, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolLineIntersectAxis(const VToolLineIntersectAxisInitData &initData, QGraphicsItem * parent = nullptr); }; #endif // VTOOLLINEINTERSECTAXIS_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.h index c81856f30..41e575161 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.h @@ -42,6 +42,18 @@ template class QSharedPointer; +struct VToolLinePointInitData : public VToolSinglePointInitData +{ + VToolLinePointInitData() + : VToolSinglePointInitData(), + typeLine(TypeLineLine), + lineColor(ColorBlack) + {} + + QString typeLine; + QString lineColor; +}; + /** * @brief The VToolLinePoint class parent for all tools what create point with line. */ diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp index c576b04ff..25515df21 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp @@ -59,26 +59,16 @@ const QString VToolNormal::ToolType = QStringLiteral("normal"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolNormal constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param typeLine line type. - * @param formula string with formula normal length. - * @param angle additional angle. - * @param firstPointId id first line point. - * @param secondPointId id second line point. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolNormal::VToolNormal(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, const QString &formula, const qreal &angle, - const quint32 &firstPointId, const quint32 &secondPointId, const Source &typeCreation, - QGraphicsItem *parent) - :VToolLinePoint(doc, data, id, typeLine, lineColor, formula, firstPointId, angle, parent), - secondPointId(secondPointId) +VToolNormal::VToolNormal(const VToolNormalInitData &initData, QGraphicsItem *parent) + :VToolLinePoint(initData.doc, initData.data, initData.id, initData.typeLine, initData.lineColor, initData.formula, + initData.firstPointId, initData.angle, parent), + secondPointId(initData.secondPointId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -113,15 +103,22 @@ VToolNormal* VToolNormal::Create(QSharedPointer dialog, VMainGraphic SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - QString formula = dialogTool->GetFormula(); - const quint32 firstPointId = dialogTool->GetFirstPointId(); - const quint32 secondPointId = dialogTool->GetSecondPointId(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - const QString pointName = dialogTool->getPointName(); - const qreal angle = dialogTool->GetAngle(); - VToolNormal *point = Create(0, formula, firstPointId, secondPointId, typeLine, lineColor, pointName, angle, 5, 10, - true, scene, doc, data, Document::FullParse, Source::FromGui); + + VToolNormalInitData initData; + initData.formula = dialogTool->GetFormula(); + initData.firstPointId = dialogTool->GetFirstPointId(); + initData.secondPointId = dialogTool->GetSecondPointId(); + initData.angle = dialogTool->GetAngle(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolNormal *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -132,65 +129,45 @@ VToolNormal* VToolNormal::Create(QSharedPointer dialog, VMainGraphic //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param formula string with formula normal length. - * @param firstPointId id first line point. - * @param secondPointId id second line point. - * @param typeLine line type. - * @param pointName point name. - * @param angle additional angle. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param showLabel show/hide label. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. */ -VToolNormal* VToolNormal::Create(const quint32 _id, QString &formula, quint32 firstPointId, quint32 secondPointId, - const QString &typeLine, const QString &lineColor, - const QString &pointName, qreal angle, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolNormal* VToolNormal::Create(VToolNormalInitData initData) { - const QSharedPointer firstPoint = data->GeometricObject(firstPointId); - const QSharedPointer secondPoint = data->GeometricObject(secondPointId); + const QSharedPointer firstPoint = initData.data->GeometricObject(initData.firstPointId); + const QSharedPointer secondPoint = initData.data->GeometricObject(initData.secondPointId); - const qreal result = CheckFormula(_id, formula, data); + const qreal result = CheckFormula(initData.id, initData.formula, initData.data); QPointF fPoint = VToolNormal::FindPoint(static_cast(*firstPoint), static_cast(*secondPoint), - qApp->toPixel(result), angle); - quint32 id = _id; + qApp->toPixel(result), initData.angle); - VPointF *p = new VPointF(fPoint, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(fPoint, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(firstPointId, id); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.firstPointId, initData.id); } else { - data->UpdateGObject(id, p); - data->AddLine(firstPointId, id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.firstPointId, initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Normal, doc); - VToolNormal *point = new VToolNormal(doc, data, id, typeLine, lineColor, formula, angle, firstPointId, - secondPointId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(firstPoint->getIdTool()); - doc->IncrementReferens(secondPoint->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::Normal, initData.doc); + VToolNormal *point = new VToolNormal(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(firstPoint->getIdTool()); + initData.doc->IncrementReferens(secondPoint->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h index bbfcd32d2..7e72f93ed 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.h @@ -44,6 +44,22 @@ template class QSharedPointer; +struct VToolNormalInitData : public VToolLinePointInitData +{ + VToolNormalInitData() + : VToolLinePointInitData(), + formula(), + firstPointId(NULL_ID), + secondPointId(NULL_ID), + angle(0) + {} + + QString formula; + quint32 firstPointId; + quint32 secondPointId; + qreal angle; +}; + /** * @brief The VToolNormal class tool for creation point on normal. Normal begin from first point of line. */ @@ -54,11 +70,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolNormal* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolNormal* Create(const quint32 _id, QString &formula, quint32 firstPointId, - quint32 secondPointId, const QString &typeLine, const QString &lineColor, - const QString &pointName, const qreal angle, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolNormal* Create(VToolNormalInitData initData); static QPointF FindPoint(const QPointF &firstPoint, const QPointF &secondPoint, const qreal &length, const qreal &angle = 0); static const QString ToolType; @@ -85,10 +97,7 @@ private: /** @brief secondPointId id second line point. */ quint32 secondPointId; - VToolNormal(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, - const QString &formula, const qreal &angle, const quint32 &firstPointId, const quint32 &secondPointId, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolNormal(const VToolNormalInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLNORMAL_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp index 496f0fc06..f3520996a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp @@ -61,26 +61,16 @@ const QString VToolShoulderPoint::ToolType = QStringLiteral("shoulder"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolShoulderPoint constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param typeLine line type. - * @param formula string with formula length. - * @param p1Line id first line point. - * @param p2Line id second line point. - * @param pShoulder id shoulder point. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolShoulderPoint::VToolShoulderPoint(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const QString &typeLine, - const QString &lineColor, const QString &formula, const quint32 &p1Line, - const quint32 &p2Line, const quint32 &pShoulder, const Source &typeCreation, - QGraphicsItem * parent) - :VToolLinePoint(doc, data, id, typeLine, lineColor, formula, p1Line, 0, parent), p2Line(p2Line), - pShoulder(pShoulder) +VToolShoulderPoint::VToolShoulderPoint(const VToolShoulderPointInitData &initData, QGraphicsItem * parent) + :VToolLinePoint(initData.doc, initData.data, initData.id, initData.typeLine, initData.lineColor, initData.formula, + initData.p1Line, 0, parent), + p2Line(initData.p2Line), + pShoulder(initData.pShoulder) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -162,15 +152,22 @@ VToolShoulderPoint* VToolShoulderPoint::Create(QSharedPointer dialog SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - QString formula = dialogTool->GetFormula(); - const quint32 p1Line = dialogTool->GetP1Line(); - const quint32 p2Line = dialogTool->GetP2Line(); - const quint32 pShoulder = dialogTool->GetP3(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - const QString pointName = dialogTool->getPointName(); - VToolShoulderPoint * point = Create(0, formula, p1Line, p2Line, pShoulder, typeLine, lineColor, pointName, 5, - 10, true, scene, doc, data, Document::FullParse, Source::FromGui); + + VToolShoulderPointInitData initData; + initData.formula = dialogTool->GetFormula(); + initData.p1Line = dialogTool->GetP1Line(); + initData.p2Line = dialogTool->GetP2Line(); + initData.pShoulder = dialogTool->GetP3(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolShoulderPoint * point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -181,72 +178,51 @@ VToolShoulderPoint* VToolShoulderPoint::Create(QSharedPointer dialog //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param formula string with formula length. - * @param p1Line id first line point. - * @param p2Line id second line point. - * @param pShoulder id shoulder point. - * @param typeLine line type. - * @param pointName point name. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param showLabel show/hide label. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. * @return the created tool */ -VToolShoulderPoint* VToolShoulderPoint::Create(const quint32 _id, QString &formula, quint32 p1Line, quint32 p2Line, - quint32 pShoulder, const QString &typeLine, const QString &lineColor, - const QString &pointName, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolShoulderPoint* VToolShoulderPoint::Create(VToolShoulderPointInitData &initData) { - const QSharedPointer firstPoint = data->GeometricObject(p1Line); - const QSharedPointer secondPoint = data->GeometricObject(p2Line); - const QSharedPointer shoulderPoint = data->GeometricObject(pShoulder); + const QSharedPointer firstPoint = initData.data->GeometricObject(initData.p1Line); + const QSharedPointer secondPoint = initData.data->GeometricObject(initData.p2Line); + const QSharedPointer shoulderPoint = initData.data->GeometricObject(initData.pShoulder); - const qreal result = CheckFormula(_id, formula, data); + const qreal result = CheckFormula(initData.id, initData.formula, initData.data); QPointF fPoint = VToolShoulderPoint::FindPoint(static_cast(*firstPoint), static_cast(*secondPoint), static_cast(*shoulderPoint), qApp->toPixel(result)); - quint32 id = _id; - VPointF *p = new VPointF(fPoint, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(fPoint, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(p1Line, id); - data->AddLine(p2Line, id); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.p1Line, initData.id); + initData.data->AddLine(initData.p2Line, initData.id); } else { - data->UpdateGObject(id, p); - data->AddLine(p1Line, id); - data->AddLine(p2Line, id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.p1Line, initData.id); + initData.data->AddLine(initData.p2Line, initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::ShoulderPoint, doc); - VToolShoulderPoint *point = new VToolShoulderPoint(doc, data, id, typeLine, lineColor, formula, - p1Line, p2Line, pShoulder, - typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(firstPoint->getIdTool()); - doc->IncrementReferens(secondPoint->getIdTool()); - doc->IncrementReferens(shoulderPoint->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::ShoulderPoint, initData.doc); + VToolShoulderPoint *point = new VToolShoulderPoint(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(firstPoint->getIdTool()); + initData.doc->IncrementReferens(secondPoint->getIdTool()); + initData.doc->IncrementReferens(shoulderPoint->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h index 23897c804..2f6f8f3d2 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.h @@ -44,6 +44,22 @@ template class QSharedPointer; +struct VToolShoulderPointInitData : public VToolLinePointInitData +{ + VToolShoulderPointInitData() + : VToolLinePointInitData(), + formula(), + p1Line(NULL_ID), + p2Line(NULL_ID), + pShoulder(NULL_ID) + {} + + QString formula; + quint32 p1Line; + quint32 p2Line; + quint32 pShoulder; +}; + /** * @brief The VToolShoulderPoint class tool for creation point on shoulder. This tool for special situation, when you * want find point along line, but have only length from another point (shoulder). @@ -57,12 +73,7 @@ public: const qreal &length); static VToolShoulderPoint* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolShoulderPoint* Create(const quint32 _id, QString &formula, quint32 p1Line, quint32 p2Line, - quint32 pShoulder, const QString &typeLine, const QString &lineColor, - const QString &pointName, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation); + static VToolShoulderPoint* Create(VToolShoulderPointInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::ShoulderPoint) }; @@ -95,9 +106,7 @@ private: /** @brief pShoulder id shoulder line point. */ quint32 pShoulder; - VToolShoulderPoint(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine, - const QString &lineColor, const QString &formula, const quint32 &p1Line, const quint32 &p2Line, - const quint32 &pShoulder, const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolShoulderPoint(const VToolShoulderPointInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLSHOULDERPOINT_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp index bb0792f0c..d23337335 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp @@ -73,21 +73,17 @@ const QString VToolBasePoint::ToolType = QStringLiteral("single"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolBasePoint constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolBasePoint::VToolBasePoint (VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - const QString &namePP, QGraphicsItem * parent ) - :VToolSinglePoint(doc, data, id, parent), namePP(namePP) +VToolBasePoint::VToolBasePoint (const VToolBasePointInitData &initData, QGraphicsItem * parent ) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), namePP(initData.nameActivPP) { m_baseColor = Qt::red; this->setFlag(QGraphicsItem::ItemIsMovable, true); this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); m_namePoint->setBrush(Qt::black); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -104,33 +100,31 @@ void VToolBasePoint::setDialog() } //--------------------------------------------------------------------------------------------------------------------- -VToolBasePoint *VToolBasePoint::Create(quint32 _id, const QString &nameActivPP, VPointF *point, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolBasePoint *VToolBasePoint::Create(VToolBasePointInitData initData) { - SCASSERT(point != nullptr) + VPointF *point = new VPointF(initData.x, initData.y, initData.name, initData.mx, initData.my); + point->SetShowLabel(initData.showLabel); - quint32 id = _id; - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(point); + initData.id = initData.data->AddGObject(point); } else { - data->UpdateGObject(id, point); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, point); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::BasePoint, doc); - VToolBasePoint *spoint = new VToolBasePoint(doc, data, id, typeCreation, nameActivPP); - scene->addItem(spoint); - InitToolConnections(scene, spoint); - VAbstractPattern::AddTool(id, spoint); + VAbstractTool::AddRecord(initData.id, Tool::BasePoint, initData.doc); + VToolBasePoint *spoint = new VToolBasePoint(initData); + initData.scene->addItem(spoint); + InitToolConnections(initData.scene, spoint); + VAbstractPattern::AddTool(initData.id, spoint); return spoint; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h index 893cbfab1..95f4b43b7 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.h @@ -45,6 +45,20 @@ template class QSharedPointer; +struct VToolBasePointInitData : public VToolSinglePointInitData +{ + VToolBasePointInitData() + : VToolSinglePointInitData(), + nameActivPP(), + x(10), + y(10) + {} + + QString nameActivPP; + qreal x; + qreal y; +}; + /** * @brief The VToolBasePoint class tool for creation pattern base point. Only base point can move. All object * pattern peace depend on base point. @@ -55,9 +69,7 @@ class VToolBasePoint : public VToolSinglePoint public: virtual ~VToolBasePoint() =default; virtual void setDialog() Q_DECL_OVERRIDE; - static VToolBasePoint *Create(quint32 _id, const QString &nameActivPP, VPointF *point, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolBasePoint *Create(VToolBasePointInitData initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::BasePoint)}; @@ -94,8 +106,7 @@ private: QString namePP; - VToolBasePoint (VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, - const QString &namePP, QGraphicsItem * parent = nullptr ); + VToolBasePoint (const VToolBasePointInitData &initData, QGraphicsItem * parent = nullptr ); }; #endif // VTOOLBASEPOINT_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp index baa90523c..64978f195 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp @@ -58,24 +58,17 @@ const QString VToolLineIntersect::ToolType = QStringLiteral("lineIntersect"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolLineIntersect constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param p1Line1 id first point first line. - * @param p2Line1 id second point first line. - * @param p1Line2 id first point second line. - * @param p2Line2 id second point second line. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolLineIntersect::VToolLineIntersect(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const quint32 &p1Line1, const quint32 &p2Line1, const quint32 &p1Line2, - const quint32 &p2Line2, const Source &typeCreation, - QGraphicsItem *parent) - :VToolSinglePoint(doc, data, id, parent), p1Line1(p1Line1), p2Line1(p2Line1), p1Line2(p1Line2), - p2Line2(p2Line2) +VToolLineIntersect::VToolLineIntersect(const VToolLineIntersectInitData &initData, QGraphicsItem *parent) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + p1Line1(initData.p1Line1Id), + p2Line1(initData.p2Line1Id), + p1Line2(initData.p1Line2Id), + p2Line2(initData.p2Line2Id) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -86,7 +79,7 @@ void VToolLineIntersect::setDialog() { SCASSERT(not m_dialog.isNull()) QSharedPointer dialogTool = m_dialog.objectCast(); - SCASSERT(not dialogTool.isNull()) + SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(m_id); dialogTool->SetP1Line1(p1Line1); dialogTool->SetP2Line1(p2Line1); @@ -110,13 +103,20 @@ VToolLineIntersect* VToolLineIntersect::Create(QSharedPointer dialog SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 p1Line1Id = dialogTool->GetP1Line1(); - const quint32 p2Line1Id = dialogTool->GetP2Line1(); - const quint32 p1Line2Id = dialogTool->GetP1Line2(); - const quint32 p2Line2Id = dialogTool->GetP2Line2(); - const QString pointName = dialogTool->getPointName(); - VToolLineIntersect* point = Create(0, p1Line1Id, p2Line1Id, p1Line2Id, p2Line2Id, pointName, 5, 10, true, scene, - doc, data, Document::FullParse, Source::FromGui); + + VToolLineIntersectInitData initData; + initData.p1Line1Id = dialogTool->GetP1Line1(); + initData.p2Line1Id = dialogTool->GetP2Line1(); + initData.p1Line2Id = dialogTool->GetP1Line2(); + initData.p2Line2Id = dialogTool->GetP2Line2(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolLineIntersect* point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -127,31 +127,15 @@ VToolLineIntersect* VToolLineIntersect::Create(QSharedPointer dialog //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param p1Line1Id id first point first line. - * @param p2Line1Id id second point first line. - * @param p1Line2Id id first point second line. - * @param p2Line2Id id second point second line. - * @param pointName point name. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. * @return the created tool */ -VToolLineIntersect* VToolLineIntersect::Create(const quint32 _id, quint32 p1Line1Id, quint32 p2Line1Id, - quint32 p1Line2Id, quint32 p2Line2Id, const QString &pointName, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolLineIntersect* VToolLineIntersect::Create(VToolLineIntersectInitData initData) { - const QSharedPointer p1Line1 = data->GeometricObject(p1Line1Id); - const QSharedPointer p2Line1 = data->GeometricObject(p2Line1Id); - const QSharedPointer p1Line2 = data->GeometricObject(p1Line2Id); - const QSharedPointer p2Line2 = data->GeometricObject(p2Line2Id); + const QSharedPointer p1Line1 = initData.data->GeometricObject(initData.p1Line1Id); + const QSharedPointer p2Line1 = initData.data->GeometricObject(initData.p2Line1Id); + const QSharedPointer p1Line2 = initData.data->GeometricObject(initData.p1Line2Id); + const QSharedPointer p2Line2 = initData.data->GeometricObject(initData.p2Line2Id); QLineF line1(static_cast(*p1Line1), static_cast(*p2Line1)); QLineF line2(static_cast(*p1Line2), static_cast(*p2Line2)); @@ -159,44 +143,41 @@ VToolLineIntersect* VToolLineIntersect::Create(const quint32 _id, quint32 p1Line QLineF::IntersectType intersect = line1.intersect(line2, &fPoint); if (intersect == QLineF::UnboundedIntersection || intersect == QLineF::BoundedIntersection) { - quint32 id = _id; + VPointF *p = new VPointF(fPoint, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - VPointF *p = new VPointF(fPoint, pointName, mx, my); - p->SetShowLabel(showLabel); - - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(p1Line1Id, id); - data->AddLine(id, p2Line1Id); - data->AddLine(p1Line2Id, id); - data->AddLine(id, p2Line2Id); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.p1Line1Id, initData.id); + initData.data->AddLine(initData.id, initData.p2Line1Id); + initData.data->AddLine(initData.p1Line2Id, initData.id); + initData.data->AddLine(initData.id, initData.p2Line2Id); } else { - data->UpdateGObject(id, p); - data->AddLine(p1Line1Id, id); - data->AddLine(id, p2Line1Id); - data->AddLine(p1Line2Id, id); - data->AddLine(id, p2Line2Id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.p1Line1Id, initData.id); + initData.data->AddLine(initData.id, initData.p2Line1Id); + initData.data->AddLine(initData.p1Line2Id, initData.id); + initData.data->AddLine(initData.id, initData.p2Line2Id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::LineIntersect, doc); - VToolLineIntersect *point = new VToolLineIntersect(doc, data, id, p1Line1Id, p2Line1Id, p1Line2Id, - p2Line2Id, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(p1Line1->getIdTool()); - doc->IncrementReferens(p2Line1->getIdTool()); - doc->IncrementReferens(p1Line2->getIdTool()); - doc->IncrementReferens(p2Line2->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::LineIntersect, initData.doc); + VToolLineIntersect *point = new VToolLineIntersect(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(p1Line1->getIdTool()); + initData.doc->IncrementReferens(p2Line1->getIdTool()); + initData.doc->IncrementReferens(p1Line2->getIdTool()); + initData.doc->IncrementReferens(p2Line2->getIdTool()); return point; } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h index 5db39bfe8..c7d448a48 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.h @@ -43,6 +43,22 @@ template class QSharedPointer; +struct VToolLineIntersectInitData : public VToolSinglePointInitData +{ + VToolLineIntersectInitData() + : VToolSinglePointInitData(), + p1Line1Id(NULL_ID), + p2Line1Id(NULL_ID), + p1Line2Id(NULL_ID), + p2Line2Id(NULL_ID) + {} + + quint32 p1Line1Id; + quint32 p2Line1Id; + quint32 p1Line2Id; + quint32 p2Line2Id; +}; + /** * @brief The VToolLineIntersect class help find point intersection lines. */ @@ -53,11 +69,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolLineIntersect *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolLineIntersect *Create(const quint32 _id, quint32 p1Line1Id, quint32 p2Line1Id, - quint32 p1Line2Id, quint32 p2Line2Id, const QString &pointName, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation); + static VToolLineIntersect *Create(VToolLineIntersectInitData initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::LineIntersect)}; @@ -104,9 +116,7 @@ private: /** @brief p2Line2 id second point second line.*/ quint32 p2Line2; - VToolLineIntersect(VAbstractPattern *doc, VContainer *data, const quint32 &id, const quint32 &p1Line1, - const quint32 &p2Line1, const quint32 &p1Line2, const quint32 &p2Line2, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolLineIntersect(const VToolLineIntersectInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLLINEINTERSECT_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp index f722b4803..38d2dab79 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp @@ -55,13 +55,14 @@ template class QSharedPointer; const QString VToolPointFromArcAndTangent::ToolType = QStringLiteral("pointFromArcAndTangent"); //--------------------------------------------------------------------------------------------------------------------- -VToolPointFromArcAndTangent::VToolPointFromArcAndTangent(VAbstractPattern *doc, VContainer *data, const quint32 &id, - quint32 arcId, quint32 tangentPointId, - CrossCirclesPoint crossPoint, const Source &typeCreation, +VToolPointFromArcAndTangent::VToolPointFromArcAndTangent(const VToolPointFromArcAndTangentInitData &initData, QGraphicsItem *parent) - :VToolSinglePoint(doc, data, id, parent), arcId(arcId), tangentPointId(tangentPointId), crossPoint(crossPoint) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + arcId(initData.arcId), + tangentPointId(initData.tangentPointId), + crossPoint(initData.crossPoint) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -85,12 +86,19 @@ VToolPointFromArcAndTangent *VToolPointFromArcAndTangent::Create(QSharedPointer< SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 arcId = dialogTool->GetArcId(); - const quint32 tangentPointId = dialogTool->GetTangentPointId(); - const CrossCirclesPoint pType = dialogTool->GetCrossCirclesPoint(); - const QString pointName = dialogTool->getPointName(); - VToolPointFromArcAndTangent *point = Create(0, pointName, arcId, tangentPointId, pType, 5, 10, true, scene, doc, - data, Document::FullParse, Source::FromGui); + + VToolPointFromArcAndTangentInitData initData; + initData.arcId = dialogTool->GetArcId(); + initData.tangentPointId = dialogTool->GetTangentPointId(); + initData.crossPoint = dialogTool->GetCrossCirclesPoint(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolPointFromArcAndTangent *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -99,45 +107,39 @@ VToolPointFromArcAndTangent *VToolPointFromArcAndTangent::Create(QSharedPointer< } //--------------------------------------------------------------------------------------------------------------------- -VToolPointFromArcAndTangent *VToolPointFromArcAndTangent::Create(const quint32 _id, const QString &pointName, - quint32 arcId, quint32 tangentPointId, - CrossCirclesPoint crossPoint, qreal mx, - qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolPointFromArcAndTangent *VToolPointFromArcAndTangent::Create(VToolPointFromArcAndTangentInitData initData) { - const VArc arc = *data->GeometricObject(arcId); - const VPointF tPoint = *data->GeometricObject(tangentPointId); + const VArc arc = *initData.data->GeometricObject(initData.arcId); + const VPointF tPoint = *initData.data->GeometricObject(initData.tangentPointId); - const QPointF point = VToolPointFromArcAndTangent::FindPoint(static_cast(tPoint), &arc, crossPoint); - quint32 id = _id; + const QPointF point = VToolPointFromArcAndTangent::FindPoint(static_cast(tPoint), &arc, + initData.crossPoint); - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); } else { - data->UpdateGObject(id, p); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::PointFromArcAndTangent, doc); - VToolPointFromArcAndTangent *point = new VToolPointFromArcAndTangent(doc, data, id, arcId, tangentPointId, - crossPoint, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(arc.getIdTool()); - doc->IncrementReferens(tPoint.getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::PointFromArcAndTangent, initData.doc); + VToolPointFromArcAndTangent *point = new VToolPointFromArcAndTangent(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(arc.getIdTool()); + initData.doc->IncrementReferens(tPoint.getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h index 0fec16103..b96d9af39 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.h @@ -44,6 +44,20 @@ template class QSharedPointer; +struct VToolPointFromArcAndTangentInitData : public VToolSinglePointInitData +{ + VToolPointFromArcAndTangentInitData() + : VToolSinglePointInitData(), + arcId(NULL_ID), + tangentPointId(NULL_ID), + crossPoint(CrossCirclesPoint::FirstPoint) + {} + + quint32 arcId; + quint32 tangentPointId; + CrossCirclesPoint crossPoint; +}; + class VToolPointFromArcAndTangent : public VToolSinglePoint { Q_OBJECT @@ -51,11 +65,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolPointFromArcAndTangent *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointFromArcAndTangent *Create(const quint32 _id, const QString &pointName, quint32 arcId, - quint32 tangentPointId, CrossCirclesPoint crossPoint, qreal mx, - qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolPointFromArcAndTangent *Create(VToolPointFromArcAndTangentInitData initData); static QPointF FindPoint(const QPointF &p, const VArc *arc, const CrossCirclesPoint pType); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -89,9 +99,7 @@ private: quint32 tangentPointId; CrossCirclesPoint crossPoint; - VToolPointFromArcAndTangent(VAbstractPattern *doc, VContainer *data, const quint32 &id, quint32 arcId, - quint32 tangentPointId, CrossCirclesPoint crossPoint, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolPointFromArcAndTangent(const VToolPointFromArcAndTangentInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLPOINTFROMARCANDTANGENT_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp index e26dc783c..4895e526a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp @@ -56,15 +56,15 @@ template class QSharedPointer; const QString VToolPointFromCircleAndTangent::ToolType = QStringLiteral("pointFromCircleAndTangent"); //--------------------------------------------------------------------------------------------------------------------- -VToolPointFromCircleAndTangent::VToolPointFromCircleAndTangent(VAbstractPattern *doc, VContainer *data, - const quint32 &id, - quint32 circleCenterId, const QString &circleRadius, - quint32 tangentPointId, CrossCirclesPoint crossPoint, - const Source &typeCreation, QGraphicsItem *parent) - :VToolSinglePoint(doc, data, id, parent), circleCenterId(circleCenterId), tangentPointId(tangentPointId), - circleRadius(circleRadius), crossPoint(crossPoint) +VToolPointFromCircleAndTangent::VToolPointFromCircleAndTangent(const VToolPointFromCircleAndTangentInitData &initData, + QGraphicsItem *parent) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + circleCenterId(initData.circleCenterId), + tangentPointId(initData.tangentPointId), + circleRadius(initData.circleRadius), + crossPoint(initData.crossPoint) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -89,13 +89,20 @@ VToolPointFromCircleAndTangent *VToolPointFromCircleAndTangent::Create(QSharedPo SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 circleCenterId = dialogTool->GetCircleCenterId(); - QString circleRadius = dialogTool->GetCircleRadius(); - const quint32 tangentPointId = dialogTool->GetTangentPointId(); - const CrossCirclesPoint pType = dialogTool->GetCrossCirclesPoint(); - const QString pointName = dialogTool->getPointName(); - VToolPointFromCircleAndTangent *point = Create(0, pointName, circleCenterId, circleRadius, tangentPointId, pType, - 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); + + VToolPointFromCircleAndTangentInitData initData; + initData.circleCenterId = dialogTool->GetCircleCenterId(); + initData.circleRadius = dialogTool->GetCircleRadius(); + initData.tangentPointId = dialogTool->GetTangentPointId(); + initData.crossPoint = dialogTool->GetCrossCirclesPoint(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolPointFromCircleAndTangent *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -104,51 +111,41 @@ VToolPointFromCircleAndTangent *VToolPointFromCircleAndTangent::Create(QSharedPo } //--------------------------------------------------------------------------------------------------------------------- -VToolPointFromCircleAndTangent *VToolPointFromCircleAndTangent::Create(const quint32 _id, const QString &pointName, - quint32 circleCenterId, QString &circleRadius, - quint32 tangentPointId, - CrossCirclesPoint crossPoint, qreal mx, - qreal my, bool showLabel, - VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation) +VToolPointFromCircleAndTangent *VToolPointFromCircleAndTangent::Create(VToolPointFromCircleAndTangentInitData &initData) { - const qreal radius = qApp->toPixel(CheckFormula(_id, circleRadius, data)); - const VPointF cPoint = *data->GeometricObject(circleCenterId); - const VPointF tPoint = *data->GeometricObject(tangentPointId); + const qreal radius = qApp->toPixel(CheckFormula(initData.id, initData.circleRadius, initData.data)); + const VPointF cPoint = *initData.data->GeometricObject(initData.circleCenterId); + const VPointF tPoint = *initData.data->GeometricObject(initData.tangentPointId); const QPointF point = VToolPointFromCircleAndTangent::FindPoint(static_cast(tPoint), - static_cast(cPoint), radius, crossPoint); - quint32 id = _id; + static_cast(cPoint), radius, + initData.crossPoint); - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); } else { - data->UpdateGObject(id, p); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::PointFromCircleAndTangent, doc); - VToolPointFromCircleAndTangent *point = new VToolPointFromCircleAndTangent(doc, data, id, circleCenterId, - circleRadius, tangentPointId, - crossPoint, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(cPoint.getIdTool()); - doc->IncrementReferens(tPoint.getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::PointFromCircleAndTangent, initData.doc); + VToolPointFromCircleAndTangent *point = new VToolPointFromCircleAndTangent(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(cPoint.getIdTool()); + initData.doc->IncrementReferens(tPoint.getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h index 769c1b823..bbea0433a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.h @@ -45,6 +45,22 @@ class VFormula; template class QSharedPointer; +struct VToolPointFromCircleAndTangentInitData : public VToolSinglePointInitData +{ + VToolPointFromCircleAndTangentInitData() + : VToolSinglePointInitData(), + circleCenterId(NULL_ID), + circleRadius("0"), + tangentPointId(NULL_ID), + crossPoint(CrossCirclesPoint::FirstPoint) + {} + + quint32 circleCenterId; + QString circleRadius; + quint32 tangentPointId; + CrossCirclesPoint crossPoint; +}; + class VToolPointFromCircleAndTangent : public VToolSinglePoint { Q_OBJECT @@ -52,11 +68,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolPointFromCircleAndTangent *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointFromCircleAndTangent *Create(const quint32 _id, const QString &pointName, - quint32 circleCenterId, QString &circleRadius, quint32 tangentPointId, - CrossCirclesPoint crossPoint, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolPointFromCircleAndTangent *Create(VToolPointFromCircleAndTangentInitData &initData); static QPointF FindPoint(const QPointF &p, const QPointF ¢er, qreal radius, const CrossCirclesPoint crossPoint); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -94,9 +106,8 @@ private: QString circleRadius; CrossCirclesPoint crossPoint; - VToolPointFromCircleAndTangent(VAbstractPattern *doc, VContainer *data, const quint32 &id, quint32 circleCenterId, - const QString &circleRadius, quint32 tangentPointId, CrossCirclesPoint crossPoint, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolPointFromCircleAndTangent(const VToolPointFromCircleAndTangentInitData &initData, + QGraphicsItem *parent = nullptr); }; #endif // VTOOLPOINTFROMCIRCLEANDTANGENT_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp index ef2dec366..3200e5674 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp @@ -63,24 +63,17 @@ const QString VToolPointOfContact::ToolType = QStringLiteral("pointOfContact"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolPointOfContact constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param radius string with formula radius arc. - * @param center id center arc point. - * @param firstPointId id first line point. - * @param secondPointId id second line point. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolPointOfContact::VToolPointOfContact(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const QString &radius, const quint32 ¢er, - const quint32 &firstPointId, const quint32 &secondPointId, - const Source &typeCreation, QGraphicsItem *parent) - : VToolSinglePoint(doc, data, id, parent), arcRadius(radius), center(center), firstPointId(firstPointId), - secondPointId(secondPointId) +VToolPointOfContact::VToolPointOfContact(const VToolPointOfContactInitData &initData, QGraphicsItem *parent) + : VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + arcRadius(initData.radius), + center(initData.center), + firstPointId(initData.firstPointId), + secondPointId(initData.secondPointId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -170,13 +163,20 @@ VToolPointOfContact* VToolPointOfContact::Create(QSharedPointer dial SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - QString radius = dialogTool->getRadius(); - const quint32 center = dialogTool->getCenter(); - const quint32 firstPointId = dialogTool->GetFirstPoint(); - const quint32 secondPointId = dialogTool->GetSecondPoint(); - const QString pointName = dialogTool->getPointName(); - VToolPointOfContact *point = Create(0, radius, center, firstPointId, secondPointId, pointName, 5, 10, true, scene, - doc, data, Document::FullParse, Source::FromGui); + + VToolPointOfContactInitData initData; + initData.radius = dialogTool->getRadius(); + initData.center = dialogTool->getCenter(); + initData.firstPointId = dialogTool->GetFirstPoint(); + initData.secondPointId = dialogTool->GetSecondPoint(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolPointOfContact *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -187,69 +187,51 @@ VToolPointOfContact* VToolPointOfContact::Create(QSharedPointer dial //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param radius string with formula radius arc. - * @param center id center arc point. - * @param firstPointId id first line point. - * @param secondPointId id second line point. - * @param pointName point name. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. */ -VToolPointOfContact* VToolPointOfContact::Create(const quint32 _id, QString &radius, quint32 center, - quint32 firstPointId, quint32 secondPointId, - const QString &pointName, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolPointOfContact* VToolPointOfContact::Create(VToolPointOfContactInitData &initData) { - const QSharedPointer centerP = data->GeometricObject(center); - const QSharedPointer firstP = data->GeometricObject(firstPointId); - const QSharedPointer secondP = data->GeometricObject(secondPointId); + const QSharedPointer centerP = initData.data->GeometricObject(initData.center); + const QSharedPointer firstP = initData.data->GeometricObject(initData.firstPointId); + const QSharedPointer secondP = initData.data->GeometricObject(initData.secondPointId); - const qreal result = CheckFormula(_id, radius, data); + const qreal result = CheckFormula(initData.id, initData.radius, initData.data); QPointF fPoint = VToolPointOfContact::FindPoint(qApp->toPixel(result), static_cast(*centerP), static_cast(*firstP), static_cast(*secondP)); - quint32 id = _id; - VPointF *p = new VPointF(fPoint, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(fPoint, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); - data->AddLine(firstPointId, id); - data->AddLine(secondPointId, id); - data->AddLine(center, id); + initData.id = initData.data->AddGObject(p); + initData.data->AddLine(initData.firstPointId, initData.id); + initData.data->AddLine(initData.secondPointId, initData.id); + initData.data->AddLine(initData.center, initData.id); } else { - data->UpdateGObject(id, p); - data->AddLine(firstPointId, id); - data->AddLine(secondPointId, id); - data->AddLine(center, id); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + initData.data->AddLine(initData.firstPointId, initData.id); + initData.data->AddLine(initData.secondPointId, initData.id); + initData.data->AddLine(initData.center, initData.id); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::PointOfContact, doc); - VToolPointOfContact *point = new VToolPointOfContact(doc, data, id, radius, center, - firstPointId, secondPointId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(centerP->getIdTool()); - doc->IncrementReferens(firstP->getIdTool()); - doc->IncrementReferens(secondP->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::PointOfContact, initData.doc); + VToolPointOfContact *point = new VToolPointOfContact(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(centerP->getIdTool()); + initData.doc->IncrementReferens(firstP->getIdTool()); + initData.doc->IncrementReferens(secondP->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h index 545542090..1e99a46af 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.h @@ -45,6 +45,22 @@ class VFormula; template class QSharedPointer; +struct VToolPointOfContactInitData : public VToolSinglePointInitData +{ + VToolPointOfContactInitData() + : VToolSinglePointInitData(), + radius("0"), + center(NULL_ID), + firstPointId(NULL_ID), + secondPointId(NULL_ID) + {} + + QString radius; + quint32 center; + quint32 firstPointId; + quint32 secondPointId; +}; + /** * @brief The VToolPointOfContact class tool for creation point intersection line and arc. */ @@ -57,12 +73,7 @@ public: const QPointF &secondPoint); static VToolPointOfContact* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointOfContact* Create(const quint32 _id, QString &radius, quint32 center, - quint32 firstPointId, quint32 secondPointId, - const QString &pointName, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation); + static VToolPointOfContact* Create(VToolPointOfContactInitData &initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::PointOfContact) }; @@ -108,9 +119,7 @@ private: /** @brief secondPointId id second line point. */ quint32 secondPointId; - VToolPointOfContact(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &radius, - const quint32 ¢er, const quint32 &firstPointId, const quint32 &secondPointId, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + VToolPointOfContact(const VToolPointOfContactInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLPOINTOFCONTACT_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp index 5e859b528..b28cc52a8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp @@ -56,20 +56,16 @@ const QString VToolPointOfIntersection::ToolType = QStringLiteral("pointOfInters //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolPointOfIntersection constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param firstPointId id first line point. - * @param secondPointId id second line point. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolPointOfIntersection::VToolPointOfIntersection(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const quint32 &firstPointId, const quint32 &secondPointId, - const Source &typeCreation, QGraphicsItem *parent) - :VToolSinglePoint(doc, data, id, parent), firstPointId(firstPointId), secondPointId(secondPointId) +VToolPointOfIntersection::VToolPointOfIntersection(const VToolPointOfIntersectionInitData &initData, + QGraphicsItem *parent) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + firstPointId(initData.firstPointId), + secondPointId(initData.secondPointId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -102,11 +98,18 @@ VToolPointOfIntersection *VToolPointOfIntersection::Create(QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 firstPointId = dialogTool->GetFirstPointId(); - const quint32 secondPointId = dialogTool->GetSecondPointId(); - const QString pointName = dialogTool->getPointName(); - VToolPointOfIntersection *point = Create(0, pointName, firstPointId, secondPointId, 5, 10, true, scene, doc, - data, Document::FullParse, Source::FromGui); + + VToolPointOfIntersectionInitData initData; + initData.firstPointId = dialogTool->GetFirstPointId(); + initData.secondPointId = dialogTool->GetSecondPointId(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolPointOfIntersection *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -117,57 +120,41 @@ VToolPointOfIntersection *VToolPointOfIntersection::Create(QSharedPointer firstPoint = data->GeometricObject(firstPointId); - const QSharedPointer secondPoint = data->GeometricObject(secondPointId); + const QSharedPointer firstPoint = initData.data->GeometricObject(initData.firstPointId); + const QSharedPointer secondPoint = initData.data->GeometricObject(initData.secondPointId); QPointF point(firstPoint->x(), secondPoint->y()); - quint32 id = _id; - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); } else { - data->UpdateGObject(id, p); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::PointOfIntersection, doc); - VToolPointOfIntersection *point = new VToolPointOfIntersection(doc, data, id, firstPointId, - secondPointId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(firstPoint->getIdTool()); - doc->IncrementReferens(secondPoint->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::PointOfIntersection, initData.doc); + VToolPointOfIntersection *point = new VToolPointOfIntersection(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(firstPoint->getIdTool()); + initData.doc->IncrementReferens(secondPoint->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h index 800282974..fafc52a5e 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.h @@ -43,6 +43,18 @@ template class QSharedPointer; +struct VToolPointOfIntersectionInitData : public VToolSinglePointInitData +{ + VToolPointOfIntersectionInitData() + : VToolSinglePointInitData(), + firstPointId(NULL_ID), + secondPointId(NULL_ID) + {} + + quint32 firstPointId; + quint32 secondPointId; +}; + /** * @brief The VToolPointOfIntersection class tool for creation point intersection two lines. */ @@ -53,10 +65,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolPointOfIntersection *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointOfIntersection *Create(const quint32 _id, const QString &pointName, quint32 firstPointId, - quint32 secondPointId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolPointOfIntersection *Create(VToolPointOfIntersectionInitData initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::PointOfIntersection) }; @@ -88,9 +97,7 @@ private: /** @brief secondPointId id second line point. */ quint32 secondPointId; - VToolPointOfIntersection(VAbstractPattern *doc, VContainer *data, const quint32 &id, const quint32 &firstPointId, - const quint32 &secondPointId, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolPointOfIntersection(const VToolPointOfIntersectionInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLPOINTOFINTERSECTION_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp index a0a24032b..b5ccd0270 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp @@ -55,13 +55,14 @@ template class QSharedPointer; const QString VToolPointOfIntersectionArcs::ToolType = QStringLiteral("pointOfIntersectionArcs"); //--------------------------------------------------------------------------------------------------------------------- -VToolPointOfIntersectionArcs::VToolPointOfIntersectionArcs(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const quint32 &firstArcId, const quint32 &secondArcId, - CrossCirclesPoint pType, const Source &typeCreation, +VToolPointOfIntersectionArcs::VToolPointOfIntersectionArcs(const VToolPointOfIntersectionArcsInitData &initData, QGraphicsItem *parent) - :VToolSinglePoint(doc, data, id, parent), firstArcId(firstArcId), secondArcId(secondArcId), crossPoint(pType) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + firstArcId(initData.firstArcId), + secondArcId(initData.secondArcId), + crossPoint(initData.pType) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -85,12 +86,19 @@ VToolPointOfIntersectionArcs *VToolPointOfIntersectionArcs::Create(QSharedPointe SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 firstArcId = dialogTool->GetFirstArcId(); - const quint32 secondArcId = dialogTool->GetSecondArcId(); - const CrossCirclesPoint pType = dialogTool->GetCrossArcPoint(); - const QString pointName = dialogTool->getPointName(); - VToolPointOfIntersectionArcs *point = Create(0, pointName, firstArcId, secondArcId, pType, 5, 10, true, scene, doc, - data, Document::FullParse, Source::FromGui); + + VToolPointOfIntersectionArcsInitData initData; + initData.firstArcId = dialogTool->GetFirstArcId(); + initData.secondArcId = dialogTool->GetSecondArcId(); + initData.pType = dialogTool->GetCrossArcPoint(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolPointOfIntersectionArcs *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -99,45 +107,38 @@ VToolPointOfIntersectionArcs *VToolPointOfIntersectionArcs::Create(QSharedPointe } //--------------------------------------------------------------------------------------------------------------------- -VToolPointOfIntersectionArcs *VToolPointOfIntersectionArcs::Create(const quint32 _id, const QString &pointName, - quint32 firstArcId, quint32 secondArcId, - CrossCirclesPoint pType, qreal mx, qreal my, - bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolPointOfIntersectionArcs *VToolPointOfIntersectionArcs::Create(VToolPointOfIntersectionArcsInitData initData) { - const QSharedPointer firstArc = data->GeometricObject(firstArcId); - const QSharedPointer secondArc = data->GeometricObject(secondArcId); + const QSharedPointer firstArc = initData.data->GeometricObject(initData.firstArcId); + const QSharedPointer secondArc = initData.data->GeometricObject(initData.secondArcId); - const QPointF point = FindPoint(firstArc.data(), secondArc.data(), pType); - quint32 id = _id; + const QPointF point = FindPoint(firstArc.data(), secondArc.data(), initData.pType); - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); } else { - data->UpdateGObject(id, p); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::PointOfIntersectionArcs, doc); - VToolPointOfIntersectionArcs *point = new VToolPointOfIntersectionArcs(doc, data, id, firstArcId, - secondArcId, pType, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(firstArc->getIdTool()); - doc->IncrementReferens(secondArc->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::PointOfIntersectionArcs, initData.doc); + VToolPointOfIntersectionArcs *point = new VToolPointOfIntersectionArcs(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(firstArc->getIdTool()); + initData.doc->IncrementReferens(secondArc->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h index b4cc84af8..42ce8431c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.h @@ -44,6 +44,20 @@ template class QSharedPointer; +struct VToolPointOfIntersectionArcsInitData : public VToolSinglePointInitData +{ + VToolPointOfIntersectionArcsInitData() + : VToolSinglePointInitData(), + firstArcId(NULL_ID), + secondArcId(NULL_ID), + pType(CrossCirclesPoint::FirstPoint) + {} + + quint32 firstArcId; + quint32 secondArcId; + CrossCirclesPoint pType; +}; + class VToolPointOfIntersectionArcs : public VToolSinglePoint { Q_OBJECT @@ -52,11 +66,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolPointOfIntersectionArcs *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointOfIntersectionArcs *Create(const quint32 _id, const QString &pointName, quint32 firstArcId, - quint32 secondArcId, CrossCirclesPoint pType, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolPointOfIntersectionArcs *Create(VToolPointOfIntersectionArcsInitData initData); static QPointF FindPoint(const VArc *arc1, const VArc *arc2, const CrossCirclesPoint pType); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -94,8 +104,7 @@ private: CrossCirclesPoint crossPoint; - VToolPointOfIntersectionArcs(VAbstractPattern *doc, VContainer *data, const quint32 &id, const quint32 &firstArcId, - const quint32 &secondArcId, CrossCirclesPoint pType, const Source &typeCreation, + VToolPointOfIntersectionArcs(const VToolPointOfIntersectionArcsInitData &initData, QGraphicsItem * parent = nullptr); }; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp index 68e7cb236..1920a0f66 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp @@ -56,19 +56,16 @@ template class QSharedPointer; const QString VToolPointOfIntersectionCircles::ToolType = QStringLiteral("pointOfIntersectionCircles"); //--------------------------------------------------------------------------------------------------------------------- -VToolPointOfIntersectionCircles::VToolPointOfIntersectionCircles(VAbstractPattern *doc, VContainer *data, - const quint32 &id, - quint32 firstCircleCenterId, - quint32 secondCircleCenterId, - const QString &firstCircleRadius, - const QString &secondCircleRadius, - CrossCirclesPoint crossPoint, - const Source &typeCreation, QGraphicsItem *parent) - :VToolSinglePoint(doc, data, id, parent), firstCircleCenterId(firstCircleCenterId), - secondCircleCenterId(secondCircleCenterId), firstCircleRadius(firstCircleRadius), - secondCircleRadius(secondCircleRadius), crossPoint(crossPoint) +VToolPointOfIntersectionCircles::VToolPointOfIntersectionCircles( + const VToolPointOfIntersectionCirclesInitData &initData, QGraphicsItem *parent) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + firstCircleCenterId(initData.firstCircleCenterId), + secondCircleCenterId(initData.secondCircleCenterId), + firstCircleRadius(initData.firstCircleRadius), + secondCircleRadius(initData.secondCircleRadius), + crossPoint(initData.crossPoint) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -93,18 +90,23 @@ VToolPointOfIntersectionCircles *VToolPointOfIntersectionCircles::Create(QShared VAbstractPattern *doc, VContainer *data) { SCASSERT(not dialog.isNull()) - QSharedPointer dialogTool = - dialog.objectCast(); + QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 firstCircleCenterId = dialogTool->GetFirstCircleCenterId(); - const quint32 secondCircleCenterId = dialogTool->GetSecondCircleCenterId(); - QString firstCircleRadius = dialogTool->GetFirstCircleRadius(); - QString secondCircleRadius = dialogTool->GetSecondCircleRadius(); - const CrossCirclesPoint pType = dialogTool->GetCrossCirclesPoint(); - const QString pointName = dialogTool->getPointName(); - VToolPointOfIntersectionCircles *point = Create(0, pointName, firstCircleCenterId, secondCircleCenterId, - firstCircleRadius, secondCircleRadius, pType, 5, 10, true, scene, - doc, data, Document::FullParse, Source::FromGui); + + VToolPointOfIntersectionCirclesInitData initData; + initData.firstCircleCenterId = dialogTool->GetFirstCircleCenterId(); + initData.secondCircleCenterId = dialogTool->GetSecondCircleCenterId(); + initData.firstCircleRadius = dialogTool->GetFirstCircleRadius(); + initData.secondCircleRadius = dialogTool->GetSecondCircleRadius(); + initData.crossPoint = dialogTool->GetCrossCirclesPoint(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolPointOfIntersectionCircles *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -113,57 +115,43 @@ VToolPointOfIntersectionCircles *VToolPointOfIntersectionCircles::Create(QShared } //--------------------------------------------------------------------------------------------------------------------- -VToolPointOfIntersectionCircles *VToolPointOfIntersectionCircles::Create(const quint32 _id, const QString &pointName, - quint32 firstCircleCenterId, - quint32 secondCircleCenterId, - QString &firstCircleRadius, - QString &secondCircleRadius, - CrossCirclesPoint crossPoint, qreal mx, - qreal my, bool showLabel, - VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation) +VToolPointOfIntersectionCircles * +VToolPointOfIntersectionCircles::Create(VToolPointOfIntersectionCirclesInitData &initData) { - const qreal calcC1Radius = qApp->toPixel(CheckFormula(_id, firstCircleRadius, data)); - const qreal calcC2Radius = qApp->toPixel(CheckFormula(_id, secondCircleRadius, data)); + const qreal calcC1Radius = qApp->toPixel(CheckFormula(initData.id, initData.firstCircleRadius, initData.data)); + const qreal calcC2Radius = qApp->toPixel(CheckFormula(initData.id, initData.secondCircleRadius, initData.data)); - const VPointF c1Point = *data->GeometricObject(firstCircleCenterId); - const VPointF c2Point = *data->GeometricObject(secondCircleCenterId); + const VPointF c1Point = *initData.data->GeometricObject(initData.firstCircleCenterId); + const VPointF c2Point = *initData.data->GeometricObject(initData.secondCircleCenterId); const QPointF point = FindPoint(static_cast(c1Point), static_cast(c2Point), calcC1Radius, - calcC2Radius, crossPoint); - quint32 id = _id; + calcC2Radius, initData.crossPoint); - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); } else { - data->UpdateGObject(id, p); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::PointOfIntersectionCircles, doc); - VToolPointOfIntersectionCircles *point = new VToolPointOfIntersectionCircles(doc, data, id, firstCircleCenterId, - secondCircleCenterId, - firstCircleRadius, - secondCircleRadius, crossPoint, - typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(c1Point.getIdTool()); - doc->IncrementReferens(c2Point.getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::PointOfIntersectionCircles, initData.doc); + VToolPointOfIntersectionCircles *point = new VToolPointOfIntersectionCircles(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(c1Point.getIdTool()); + initData.doc->IncrementReferens(c2Point.getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h index 75f42229e..80e265fa4 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.h @@ -45,6 +45,24 @@ class VFormula; template class QSharedPointer; +struct VToolPointOfIntersectionCirclesInitData : public VToolSinglePointInitData +{ + VToolPointOfIntersectionCirclesInitData() + : VToolSinglePointInitData(), + firstCircleCenterId(NULL_ID), + secondCircleCenterId(NULL_ID), + firstCircleRadius("0"), + secondCircleRadius("0"), + crossPoint(CrossCirclesPoint::FirstPoint) + {} + + quint32 firstCircleCenterId; + quint32 secondCircleCenterId; + QString firstCircleRadius; + QString secondCircleRadius; + CrossCirclesPoint crossPoint; +}; + class VToolPointOfIntersectionCircles : public VToolSinglePoint { Q_OBJECT @@ -52,13 +70,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolPointOfIntersectionCircles *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointOfIntersectionCircles *Create(const quint32 _id, const QString &pointName, - quint32 firstCircleCenterId, quint32 secondCircleCenterId, - QString &firstCircleRadius, QString &secondCircleRadius, - CrossCirclesPoint crossPoint, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolPointOfIntersectionCircles *Create(VToolPointOfIntersectionCirclesInitData &initData); static QPointF FindPoint(const QPointF &c1Point, const QPointF &c2Point, qreal c1Radius, qreal c2Radius, const CrossCirclesPoint crossPoint); static const QString ToolType; @@ -103,10 +115,7 @@ private: CrossCirclesPoint crossPoint; - VToolPointOfIntersectionCircles(VAbstractPattern *doc, VContainer *data, const quint32 &id, const - quint32 firstCircleCenterId, quint32 secondCircleCenterId, - const QString &firstCircleRadius, const QString &secondCircleRadius, - CrossCirclesPoint crossPoint, const Source &typeCreation, + VToolPointOfIntersectionCircles(const VToolPointOfIntersectionCirclesInitData &initData, QGraphicsItem * parent = nullptr); }; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp index 5e704cb72..18e396e57 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp @@ -55,18 +55,15 @@ template class QSharedPointer; const QString VToolPointOfIntersectionCurves::ToolType = QStringLiteral("pointOfIntersectionCurves"); //--------------------------------------------------------------------------------------------------------------------- -VToolPointOfIntersectionCurves::VToolPointOfIntersectionCurves(VAbstractPattern *doc, VContainer *data, - const quint32 &id, const quint32 firstCurveId, - quint32 secondCurveId, VCrossCurvesPoint vCrossPoint, - HCrossCurvesPoint hCrossPoint, const Source &typeCreation, +VToolPointOfIntersectionCurves::VToolPointOfIntersectionCurves(const VToolPointOfIntersectionCurvesInitData &initData, QGraphicsItem *parent) - :VToolSinglePoint(doc, data, id, parent), - firstCurveId(firstCurveId), - secondCurveId(secondCurveId), - vCrossPoint(vCrossPoint), - hCrossPoint(hCrossPoint) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + firstCurveId(initData.firstCurveId), + secondCurveId(initData.secondCurveId), + vCrossPoint(initData.vCrossPoint), + hCrossPoint(initData.hCrossPoint) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -91,13 +88,20 @@ VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(QSharedPo SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 firstCurveId = dialogTool->GetFirstCurveId(); - const quint32 secondCurveId = dialogTool->GetSecondCurveId(); - const VCrossCurvesPoint vCrossPoint = dialogTool->GetVCrossPoint(); - const HCrossCurvesPoint hCrossPoint = dialogTool->GetHCrossPoint(); - const QString pointName = dialogTool->getPointName(); - VToolPointOfIntersectionCurves *point = Create(0, pointName, firstCurveId, secondCurveId, vCrossPoint, hCrossPoint, - 5, 10, true, scene, doc, data, Document::FullParse, Source::FromGui); + + VToolPointOfIntersectionCurvesInitData initData; + initData.firstCurveId = dialogTool->GetFirstCurveId(); + initData.secondCurveId = dialogTool->GetSecondCurveId(); + initData.vCrossPoint = dialogTool->GetVCrossPoint(); + initData.hCrossPoint = dialogTool->GetHCrossPoint(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolPointOfIntersectionCurves *point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -106,49 +110,39 @@ VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(QSharedPo } //--------------------------------------------------------------------------------------------------------------------- -VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(const quint32 _id, const QString &pointName, - quint32 firstCurveId, quint32 secondCurveId, - VCrossCurvesPoint vCrossPoint, - HCrossCurvesPoint hCrossPoint,qreal mx, - qreal my, bool showLabel, - VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, - const Document &parse, - const Source &typeCreation) +VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(VToolPointOfIntersectionCurvesInitData initData) { - auto curve1 = data->GeometricObject(firstCurveId); - auto curve2 = data->GeometricObject(secondCurveId); + auto curve1 = initData.data->GeometricObject(initData.firstCurveId); + auto curve2 = initData.data->GeometricObject(initData.secondCurveId); const QPointF point = VToolPointOfIntersectionCurves::FindPoint(curve1->GetPoints(), curve2->GetPoints(), - vCrossPoint, hCrossPoint); - quint32 id = _id; + initData.vCrossPoint, initData.hCrossPoint); - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); } else { - data->UpdateGObject(id, p); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::PointOfIntersectionCurves, doc); - auto point = new VToolPointOfIntersectionCurves(doc, data, id, firstCurveId, secondCurveId, vCrossPoint, - hCrossPoint, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(curve1->getIdTool()); - doc->IncrementReferens(curve2->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::PointOfIntersectionCurves, initData.doc); + auto point = new VToolPointOfIntersectionCurves(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(curve1->getIdTool()); + initData.doc->IncrementReferens(curve2->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h index 2db1b7dba..492ff896c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.h @@ -45,6 +45,22 @@ template class QSharedPointer; +struct VToolPointOfIntersectionCurvesInitData : public VToolSinglePointInitData +{ + VToolPointOfIntersectionCurvesInitData() + : VToolSinglePointInitData(), + firstCurveId(NULL_ID), + secondCurveId(NULL_ID), + vCrossPoint(VCrossCurvesPoint::HighestPoint), + hCrossPoint(HCrossCurvesPoint::LeftmostPoint) + {} + + quint32 firstCurveId; + quint32 secondCurveId; + VCrossCurvesPoint vCrossPoint; + HCrossCurvesPoint hCrossPoint; +}; + class VToolPointOfIntersectionCurves : public VToolSinglePoint { Q_OBJECT @@ -52,12 +68,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolPointOfIntersectionCurves *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPointOfIntersectionCurves *Create(const quint32 _id, const QString &pointName, - quint32 firstCurveId, quint32 secondCurveId, - VCrossCurvesPoint vCrossPoint, HCrossCurvesPoint hCrossPoint, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolPointOfIntersectionCurves *Create(VToolPointOfIntersectionCurvesInitData initData); static QPointF FindPoint(const QVector &curve1Points, const QVector &curve2Points, VCrossCurvesPoint vCrossPoint, HCrossCurvesPoint hCrossPoint); static const QString ToolType; @@ -97,10 +108,8 @@ private: VCrossCurvesPoint vCrossPoint; HCrossCurvesPoint hCrossPoint; - explicit VToolPointOfIntersectionCurves(VAbstractPattern *doc, VContainer *data, const quint32 &id, const - quint32 firstCurveId, quint32 secondCurveId, - VCrossCurvesPoint vCrossPoint, HCrossCurvesPoint hCrossPoint, - const Source &typeCreation, QGraphicsItem * parent = nullptr); + explicit VToolPointOfIntersectionCurves(const VToolPointOfIntersectionCurvesInitData &initData, + QGraphicsItem *parent = nullptr); }; #endif // VTOOLPOINTOFINTERSECTIONCURVES_H diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h index cb4479bbb..5d21c18b3 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h @@ -44,6 +44,22 @@ template class QSharedPointer; +struct VToolSinglePointInitData : public VAbstractToolInitData +{ + VToolSinglePointInitData() + : VAbstractToolInitData(), + name(), + mx(5), + my(10), + showLabel(true) + {} + + QString name; + qreal mx; + qreal my; + bool showLabel; +}; + /** * @brief The VToolSinglePoint class parent for all tools what create points. */ diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp index 73a616a60..0b6ed9249 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp @@ -58,23 +58,17 @@ const QString VToolTriangle::ToolType = QStringLiteral("triangle"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolTriangle constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param axisP1Id id first axis point. - * @param axisP2Id id second axis point. - * @param firstPointId id first triangle point, what lies on the hypotenuse. - * @param secondPointId id second triangle point, what lies on the hypotenuse. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolTriangle::VToolTriangle(VAbstractPattern *doc, VContainer *data, const quint32 &id, const quint32 &axisP1Id, - const quint32 &axisP2Id, const quint32 &firstPointId, const quint32 &secondPointId, - const Source &typeCreation, QGraphicsItem *parent) - :VToolSinglePoint(doc, data, id, parent), axisP1Id(axisP1Id), axisP2Id(axisP2Id), firstPointId(firstPointId), - secondPointId(secondPointId) +VToolTriangle::VToolTriangle(const VToolTriangleInitData &initData, QGraphicsItem *parent) + :VToolSinglePoint(initData.doc, initData.data, initData.id, parent), + axisP1Id(initData.axisP1Id), + axisP2Id(initData.axisP2Id), + firstPointId(initData.firstPointId), + secondPointId(initData.secondPointId) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -109,13 +103,20 @@ VToolTriangle* VToolTriangle::Create(QSharedPointer dialog, VMainGra SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 axisP1Id = dialogTool->GetAxisP1Id(); - const quint32 axisP2Id = dialogTool->GetAxisP2Id(); - const quint32 firstPointId = dialogTool->GetFirstPointId(); - const quint32 secondPointId = dialogTool->GetSecondPointId(); - const QString pointName = dialogTool->getPointName(); - VToolTriangle* point = Create(0, pointName, axisP1Id, axisP2Id, firstPointId, secondPointId, 5, 10, true, - scene, doc, data, Document::FullParse, Source::FromGui); + + VToolTriangleInitData initData; + initData.axisP1Id = dialogTool->GetAxisP1Id(); + initData.axisP2Id = dialogTool->GetAxisP2Id(); + initData.firstPointId = dialogTool->GetFirstPointId(); + initData.secondPointId = dialogTool->GetSecondPointId(); + initData.name = dialogTool->getPointName(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolTriangle* point = Create(initData); if (point != nullptr) { point->m_dialog = dialogTool; @@ -126,63 +127,46 @@ VToolTriangle* VToolTriangle::Create(QSharedPointer dialog, VMainGra //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. - * @param pointName point name. - * @param axisP1Id id first axis point. - * @param axisP2Id id second axis point. - * @param firstPointId id first triangle point, what lies on the hypotenuse. - * @param secondPointId id second triangle point, what lies on the hypotenuse. - * @param mx label bias x axis. - * @param my label bias y axis. - * @param scene pointer to scene. - * @param doc dom document container. - * @param data container with variables. - * @param parse parser file mode. - * @param typeCreation way we create this tool. + * @param initData init data. * @return the created tool */ -VToolTriangle* VToolTriangle::Create(const quint32 _id, const QString &pointName, quint32 axisP1Id, quint32 axisP2Id, - quint32 firstPointId, quint32 secondPointId, qreal mx, qreal my, bool showLabel, - VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation) +VToolTriangle* VToolTriangle::Create(VToolTriangleInitData initData) { - const QSharedPointer axisP1 = data->GeometricObject(axisP1Id); - const QSharedPointer axisP2 = data->GeometricObject(axisP2Id); - const QSharedPointer firstPoint = data->GeometricObject(firstPointId); - const QSharedPointer secondPoint = data->GeometricObject(secondPointId); + const QSharedPointer axisP1 = initData.data->GeometricObject(initData.axisP1Id); + const QSharedPointer axisP2 = initData.data->GeometricObject(initData.axisP2Id); + const QSharedPointer firstPoint = initData.data->GeometricObject(initData.firstPointId); + const QSharedPointer secondPoint = initData.data->GeometricObject(initData.secondPointId); QPointF point = FindPoint(static_cast(*axisP1), static_cast(*axisP2), static_cast(*firstPoint), static_cast(*secondPoint)); - quint32 id = _id; - VPointF *p = new VPointF(point, pointName, mx, my); - p->SetShowLabel(showLabel); + VPointF *p = new VPointF(point, initData.name, initData.mx, initData.my); + p->SetShowLabel(initData.showLabel); - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddGObject(p); + initData.id = initData.data->AddGObject(p); } else { - data->UpdateGObject(id, p); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, p); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Triangle, doc); - VToolTriangle *point = new VToolTriangle(doc, data, id, axisP1Id, axisP2Id, firstPointId, - secondPointId, typeCreation); - scene->addItem(point); - InitToolConnections(scene, point); - VAbstractPattern::AddTool(id, point); - doc->IncrementReferens(axisP1->getIdTool()); - doc->IncrementReferens(axisP2->getIdTool()); - doc->IncrementReferens(firstPoint->getIdTool()); - doc->IncrementReferens(secondPoint->getIdTool()); + VAbstractTool::AddRecord(initData.id, Tool::Triangle, initData.doc); + VToolTriangle *point = new VToolTriangle(initData); + initData.scene->addItem(point); + InitToolConnections(initData.scene, point); + VAbstractPattern::AddTool(initData.id, point); + initData.doc->IncrementReferens(axisP1->getIdTool()); + initData.doc->IncrementReferens(axisP2->getIdTool()); + initData.doc->IncrementReferens(firstPoint->getIdTool()); + initData.doc->IncrementReferens(secondPoint->getIdTool()); return point; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h index d0b1d9b86..e601958d9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.h @@ -44,6 +44,22 @@ template class QSharedPointer; +struct VToolTriangleInitData : public VToolSinglePointInitData +{ + VToolTriangleInitData() + : VToolSinglePointInitData(), + axisP1Id(NULL_ID), + axisP2Id(NULL_ID), + firstPointId(NULL_ID), + secondPointId(NULL_ID) + {} + + quint32 axisP1Id; + quint32 axisP2Id; + quint32 firstPointId; + quint32 secondPointId; +}; + /** * @brief The VToolTriangle class for tool that find point intersection two foots right triangle * (triangle with 90 degree). @@ -55,10 +71,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolTriangle *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolTriangle *Create(const quint32 _id, const QString &pointName, quint32 axisP1Id, - quint32 axisP2Id, quint32 firstPointId, quint32 secondPointId, - qreal mx, qreal my, bool showLabel, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation); + static VToolTriangle *Create(VToolTriangleInitData initData); static QPointF FindPoint(const QPointF &axisP1, const QPointF &axisP2, const QPointF &firstPoint, const QPointF &secondPoint); static const QString ToolType; @@ -105,10 +118,7 @@ private: /** @brief secondPointId id second triangle point, what lies on the hypotenuse. */ quint32 secondPointId; - VToolTriangle(VAbstractPattern *doc, VContainer *data, const quint32 &id, const quint32 &axisP1Id, - const quint32 &axisP2Id, - const quint32 &firstPointId, const quint32 &secondPointId, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolTriangle(const VToolTriangleInitData &initData, QGraphicsItem *parent = nullptr); }; #endif // VTOOLTRIANGLE_H diff --git a/src/libs/vtools/tools/drawTools/vtoolline.cpp b/src/libs/vtools/tools/drawTools/vtoolline.cpp index 80314bd5d..a86f4ba20 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.cpp +++ b/src/libs/vtools/tools/drawTools/vtoolline.cpp @@ -57,33 +57,25 @@ template class QSharedPointer; //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolLine constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param firstPoint id first line point. - * @param secondPoint id second line point. - * @param typeLine line type. - * @param typeCreation way we create this tool. + * @param initData init data. * @param parent parent object. */ -VToolLine::VToolLine(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 firstPoint, quint32 secondPoint, - const QString &typeLine, const QString &lineColor, const Source &typeCreation, - QGraphicsItem *parent) - :VDrawTool(doc, data, id), +VToolLine::VToolLine(const VToolLineInitData &initData, QGraphicsItem *parent) + :VDrawTool(initData.doc, initData.data, initData.id), QGraphicsLineItem(parent), - firstPoint(firstPoint), - secondPoint(secondPoint), - lineColor(lineColor), + firstPoint(initData.firstPoint), + secondPoint(initData.secondPoint), + lineColor(initData.lineColor), m_isHovered(false) { - this->m_lineType = typeLine; + this->m_lineType = initData.typeLine; //Line RefreshGeometry(); this->setFlag(QGraphicsItem::ItemStacksBehindParent, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus this->setAcceptHoverEvents(true); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -115,13 +107,19 @@ VToolLine *VToolLine::Create(QSharedPointer dialog, VMainGraphicsSce SCASSERT(not dialog.isNull()) QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 firstPoint = dialogTool->GetFirstPoint(); - const quint32 secondPoint = dialogTool->GetSecondPoint(); - const QString typeLine = dialogTool->GetTypeLine(); - const QString lineColor = dialogTool->GetLineColor(); - VToolLine *line = Create(0, firstPoint, secondPoint, typeLine, lineColor, scene, doc, data, Document::FullParse, - Source::FromGui); + VToolLineInitData initData; + initData.firstPoint = dialogTool->GetFirstPoint(); + initData.secondPoint = dialogTool->GetSecondPoint(); + initData.typeLine = dialogTool->GetTypeLine(); + initData.lineColor = dialogTool->GetLineColor(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + VToolLine *line = Create(initData); if (line != nullptr) { line->m_dialog = dialogTool; @@ -142,45 +140,41 @@ VToolLine *VToolLine::Create(QSharedPointer dialog, VMainGraphicsSce * @param parse parser file mode. * @param typeCreation way we create this tool. */ -VToolLine * VToolLine::Create(const quint32 &_id, const quint32 &firstPoint, const quint32 &secondPoint, - const QString &typeLine, const QString &lineColor, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolLine * VToolLine::Create(VToolLineInitData initData) { - SCASSERT(scene != nullptr) - SCASSERT(doc != nullptr) - SCASSERT(data != nullptr) - quint32 id = _id; - if (typeCreation == Source::FromGui) + SCASSERT(initData.scene != nullptr) + SCASSERT(initData.doc != nullptr) + SCASSERT(initData.data != nullptr) + if (initData.typeCreation == Source::FromGui) { - id = VContainer::getNextId(); - data->AddLine(firstPoint, secondPoint); + initData.id = VContainer::getNextId(); + initData.data->AddLine(initData.firstPoint, initData.secondPoint); } else { - VContainer::UpdateId(id); - data->AddLine(firstPoint, secondPoint); - if (parse != Document::FullParse) + VContainer::UpdateId(initData.id); + initData.data->AddLine(initData.firstPoint, initData.secondPoint); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Line, doc); - VToolLine *line = new VToolLine(doc, data, id, firstPoint, secondPoint, typeLine, lineColor, typeCreation); - scene->addItem(line); - InitDrawToolConnections(scene, line); - connect(scene, &VMainGraphicsScene::EnableLineItemSelection, line, &VToolLine::AllowSelecting); - connect(scene, &VMainGraphicsScene::EnableLineItemHover, line, &VToolLine::AllowHover); - VAbstractPattern::AddTool(id, line); + VAbstractTool::AddRecord(initData.id, Tool::Line, initData.doc); + VToolLine *line = new VToolLine(initData); + initData.scene->addItem(line); + InitDrawToolConnections(initData.scene, line); + connect(initData.scene, &VMainGraphicsScene::EnableLineItemSelection, line, &VToolLine::AllowSelecting); + connect(initData.scene, &VMainGraphicsScene::EnableLineItemHover, line, &VToolLine::AllowHover); + VAbstractPattern::AddTool(initData.id, line); - const QSharedPointer first = data->GeometricObject(firstPoint); - const QSharedPointer second = data->GeometricObject(secondPoint); + const QSharedPointer first = initData.data->GeometricObject(initData.firstPoint); + const QSharedPointer second = initData.data->GeometricObject(initData.secondPoint); - doc->IncrementReferens(first->getIdTool()); - doc->IncrementReferens(second->getIdTool()); + initData.doc->IncrementReferens(first->getIdTool()); + initData.doc->IncrementReferens(second->getIdTool()); return line; } return nullptr; diff --git a/src/libs/vtools/tools/drawTools/vtoolline.h b/src/libs/vtools/tools/drawTools/vtoolline.h index 9bca1b25a..b05718adb 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.h +++ b/src/libs/vtools/tools/drawTools/vtoolline.h @@ -45,6 +45,22 @@ template class QSharedPointer; +struct VToolLineInitData : public VAbstractToolInitData +{ + VToolLineInitData() + : VAbstractToolInitData(), + firstPoint(NULL_ID), + secondPoint(NULL_ID), + typeLine(TypeLineLine), + lineColor(ColorBlack) + {} + + quint32 firstPoint; + quint32 secondPoint; + QString typeLine; + QString lineColor; +}; + /** * @brief The VToolLine class tool for creation line. */ @@ -55,10 +71,7 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolLine *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolLine *Create(const quint32 &_id, const quint32 &firstPoint, const quint32 &secondPoint, - const QString &typeLine, const QString &lineColor, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolLine *Create(VToolLineInitData initData); virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::Line)}; @@ -118,9 +131,7 @@ private: bool m_isHovered; - VToolLine(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 firstPoint, quint32 secondPoint, - const QString &typeLine, const QString &lineColor, const Source &typeCreation, - QGraphicsItem * parent = nullptr); + VToolLine(const VToolLineInitData &initData, QGraphicsItem *parent = nullptr); void RefreshGeometry(); }; diff --git a/src/libs/vtools/tools/nodeDetails/vabstractnode.h b/src/libs/vtools/tools/nodeDetails/vabstractnode.h index 42fe59a36..d833e946e 100644 --- a/src/libs/vtools/tools/nodeDetails/vabstractnode.h +++ b/src/libs/vtools/tools/nodeDetails/vabstractnode.h @@ -41,6 +41,20 @@ enum class ParentType : bool {Scene, Item}; +struct VAbstractNodeInitData : public VAbstractToolInitData +{ + VAbstractNodeInitData() + : VAbstractToolInitData(), + idObject(NULL_ID), + drawName(), + idTool(NULL_ID) + {} + + quint32 idObject; + QString drawName; + quint32 idTool; +}; + /** * @brief The VAbstractNode class parent class for all detail node. */ diff --git a/src/libs/vtools/tools/nodeDetails/vnodearc.cpp b/src/libs/vtools/tools/nodeDetails/vnodearc.cpp index 49d79847a..dd804f721 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodearc.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodearc.cpp @@ -44,57 +44,45 @@ const QString VNodeArc::ToolType = QStringLiteral("modeling"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VNodeArc constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param idArc object id in containerArc. - * @param typeCreation way we create this tool. - * @param idTool tool id. + * @param initData init data. * @param qoParent QObject parent */ -VNodeArc::VNodeArc(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idArc, const Source &typeCreation, - const QString &drawName, const quint32 &idTool, QObject *qoParent) - :VAbstractNode(doc, data, id, idArc, drawName, idTool, qoParent) +VNodeArc::VNodeArc(const VAbstractNodeInitData &initData, QObject *qoParent) + :VAbstractNode(initData.doc, initData.data, initData.id, initData.idObject, initData.drawName, initData.idTool, + qoParent) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param idArc object id in containerArc. - * @param parse parser file mode. - * @param typeCreation way we create this tool. - * @param idTool tool id. + * @param initData init data. */ -void VNodeArc::Create(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idArc, - const Document &parse, const Source &typeCreation, const QString &drawName, const quint32 &idTool) +void VNodeArc::Create(VAbstractNodeInitData initData) { - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::NodeArc, doc); - VNodeArc *arc = new VNodeArc(doc, data, id, idArc, typeCreation, drawName, idTool, doc); + VAbstractTool::AddRecord(initData.id, Tool::NodeArc, initData.doc); + VNodeArc *arc = new VNodeArc(initData); - VAbstractPattern::AddTool(id, arc); - if (idTool != NULL_ID) + VAbstractPattern::AddTool(initData.id, arc); + if (initData.idTool != NULL_ID) { //Some nodes we don't show on scene. Tool that create this nodes must free memory. - VDataTool *tool = VAbstractPattern::getTool(idTool); + VDataTool *tool = VAbstractPattern::getTool(initData.idTool); SCASSERT(tool != nullptr) arc->setParent(tool);// Adopted by a tool } else { // Help to delete the node before each FullParse - doc->AddToolOnRemove(arc); + initData.doc->AddToolOnRemove(arc); } } else { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } diff --git a/src/libs/vtools/tools/nodeDetails/vnodearc.h b/src/libs/vtools/tools/nodeDetails/vnodearc.h index 151f224f8..62556d28d 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodearc.h +++ b/src/libs/vtools/tools/nodeDetails/vnodearc.h @@ -47,8 +47,7 @@ class VNodeArc :public VAbstractNode { Q_OBJECT public: - static void Create(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idArc, const Document &parse, - const Source &typeCreation, const QString &drawName = QString(), const quint32 &idTool = 0); + static void Create(VAbstractNodeInitData initData); static const QString ToolType; virtual QString getTagName() const Q_DECL_OVERRIDE; @@ -63,8 +62,7 @@ protected: private: Q_DISABLE_COPY(VNodeArc) - VNodeArc(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idArc, const Source &typeCreation, - const QString &drawName = QString(), const quint32 &idTool = 0, QObject *qoParent = nullptr); + VNodeArc(const VAbstractNodeInitData &initData, QObject *qoParent = nullptr); }; #endif // VNODEARC_H4 diff --git a/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp b/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp index cb66e0ba1..78934e027 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp @@ -42,32 +42,30 @@ const QString VNodeEllipticalArc::ToolType = QStringLiteral("modeling"); //--------------------------------------------------------------------------------------------------------------------- -void VNodeEllipticalArc::Create(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idArc, - const Document &parse, const Source &typeCreation, const QString &drawName, - const quint32 &idTool) +void VNodeEllipticalArc::Create(VAbstractNodeInitData initData) { - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::NodeElArc, doc); - VNodeEllipticalArc *arc = new VNodeEllipticalArc(doc, data, id, idArc, typeCreation, drawName, idTool, doc); + VAbstractTool::AddRecord(initData.id, Tool::NodeElArc, initData.doc); + VNodeEllipticalArc *arc = new VNodeEllipticalArc(initData); - VAbstractPattern::AddTool(id, arc); - if (idTool != NULL_ID) + VAbstractPattern::AddTool(initData.id, arc); + if (initData.idTool != NULL_ID) { //Some nodes we don't show on scene. Tool that create this nodes must free memory. - VDataTool *tool = VAbstractPattern::getTool(idTool); + VDataTool *tool = VAbstractPattern::getTool(initData.idTool); SCASSERT(tool != nullptr) arc->setParent(tool);// Adopted by a tool } else { // Help to delete the node before each FullParse - doc->AddToolOnRemove(arc); + initData.doc->AddToolOnRemove(arc); } } else { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } @@ -108,10 +106,9 @@ void VNodeEllipticalArc::AddToFile() } //--------------------------------------------------------------------------------------------------------------------- -VNodeEllipticalArc::VNodeEllipticalArc(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idArc, - const Source &typeCreation, const QString &drawName, const quint32 &idTool, - QObject *qoParent) - :VAbstractNode(doc, data, id, idArc, drawName, idTool, qoParent) +VNodeEllipticalArc::VNodeEllipticalArc(const VAbstractNodeInitData &initData, QObject *qoParent) + :VAbstractNode(initData.doc, initData.data, initData.id, initData.idObject, initData.drawName, initData.idTool, + qoParent) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } diff --git a/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.h b/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.h index f7933e922..6c84d07cc 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.h +++ b/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.h @@ -44,9 +44,7 @@ class VNodeEllipticalArc :public VAbstractNode { Q_OBJECT public: - static void Create(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idArc, const Document &parse, - const Source &typeCreation, const QString &drawName = QString(), - const quint32 &idTool = NULL_ID); + static void Create(VAbstractNodeInitData initData); static const QString ToolType; virtual QString getTagName() const Q_DECL_OVERRIDE; @@ -61,8 +59,7 @@ protected: private: Q_DISABLE_COPY(VNodeEllipticalArc) - VNodeEllipticalArc(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idArc, const Source &typeCreation, - const QString &drawName = QString(), const quint32 &idTool = 0, QObject *qoParent = nullptr); + VNodeEllipticalArc(const VAbstractNodeInitData &initData, QObject *qoParent = nullptr); }; #endif // VNODEELLIPTICALARC_H diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp index fe61d8783..7aaafb66a 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp @@ -60,18 +60,12 @@ const QString VNodePoint::ToolType = QStringLiteral("modeling"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VNodePoint constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param idPoint object id in containerPoint. - * @param typeCreation way we create this tool. - * @param idTool tool id. - * @param qoParent QObject parent + * @param initData init data. * @param parent parent object. */ -VNodePoint::VNodePoint(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idPoint, const Source &typeCreation, - const QString &drawName, const quint32 &idTool, QObject *qoParent, QGraphicsItem *parent) - : VAbstractNode(doc, data, id, idPoint, drawName, idTool, qoParent), +VNodePoint::VNodePoint(const VAbstractNodeInitData &initData, QObject *qoParent, QGraphicsItem *parent) + : VAbstractNode(initData.doc, initData.data, initData.id, initData.idObject, initData.drawName, initData.idTool, + qoParent), VScenePoint(parent) { connect(m_namePoint, &VGraphicsSimpleTextItem::PointChoosed, this, &VNodePoint::PointChoosed); @@ -81,56 +75,48 @@ VNodePoint::VNodePoint(VAbstractPattern *doc, VContainer *data, quint32 id, quin { emit ShowContextMenu(event); }); - RefreshPointGeometry(*VAbstractTool::data.GeometricObject(id)); - ToolCreation(typeCreation); + RefreshPointGeometry(*VAbstractTool::data.GeometricObject(initData.id)); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param idPoint object id in containerPoint. - * @param parse parser file mode. - * @param typeCreation way we create this tool. - * @param idTool tool id. + * @param initData init data. */ -void VNodePoint::Create(VAbstractPattern *doc, VContainer *data, VMainGraphicsScene *scene, - quint32 id, quint32 idPoint, const Document &parse, - const Source &typeCreation, const QString &drawName, const quint32 &idTool) +void VNodePoint::Create(VAbstractNodeInitData initData) { - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::NodePoint, doc); + VAbstractTool::AddRecord(initData.id, Tool::NodePoint, initData.doc); //TODO Need create garbage collector and remove all nodes, what we don't use. //Better check garbage before each saving file. Check only modeling tags. - VNodePoint *point = new VNodePoint(doc, data, id, idPoint, typeCreation, drawName, idTool, doc); + VNodePoint *point = new VNodePoint(initData); - connect(scene, &VMainGraphicsScene::EnableToolMove, point, &VNodePoint::EnableToolMove); - connect(scene, &VMainGraphicsScene::EnablePointItemHover, point, &VNodePoint::AllowHover); - connect(scene, &VMainGraphicsScene::EnablePointItemSelection, point, &VNodePoint::AllowSelecting); - connect(scene, &VMainGraphicsScene::EnableLabelItemHover, point, &VNodePoint::AllowLabelHover); - connect(scene, &VMainGraphicsScene::EnableLabelItemSelection, point, &VNodePoint::AllowLabelSelecting); - VAbstractPattern::AddTool(id, point); - if (idTool != NULL_ID) + connect(initData.scene, &VMainGraphicsScene::EnableToolMove, point, &VNodePoint::EnableToolMove); + connect(initData.scene, &VMainGraphicsScene::EnablePointItemHover, point, &VNodePoint::AllowHover); + connect(initData.scene, &VMainGraphicsScene::EnablePointItemSelection, point, &VNodePoint::AllowSelecting); + connect(initData.scene, &VMainGraphicsScene::EnableLabelItemHover, point, &VNodePoint::AllowLabelHover); + connect(initData.scene, &VMainGraphicsScene::EnableLabelItemSelection, point, &VNodePoint::AllowLabelSelecting); + VAbstractPattern::AddTool(initData.id, point); + if (initData.idTool != NULL_ID) { //Some nodes we don't show on scene. Tool that create this nodes must free memory. - VDataTool *tool = VAbstractPattern::getTool(idTool); + VDataTool *tool = VAbstractPattern::getTool(initData.idTool); SCASSERT(tool != nullptr) point->setParent(tool);// Adopted by a tool } else { // Try to prevent memory leak - scene->addItem(point);// First adopted by scene + initData.scene->addItem(point);// First adopted by scene point->hide();// If no one will use node, it will stay hidden point->SetParentType(ParentType::Scene); } } else { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.h b/src/libs/vtools/tools/nodeDetails/vnodepoint.h index 4921a8083..203e01437 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.h +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.h @@ -50,9 +50,7 @@ class VNodePoint: public VAbstractNode, public VScenePoint { Q_OBJECT public: - static void Create(VAbstractPattern *doc, VContainer *data, VMainGraphicsScene *scene, - quint32 id, quint32 idPoint, const Document &parse, - const Source &typeCreation, const QString &drawName = QString(), const quint32 &idTool = 0); + static void Create(VAbstractNodeInitData initData); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -86,9 +84,7 @@ protected: private: Q_DISABLE_COPY(VNodePoint) - VNodePoint(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idPoint, const Source &typeCreation, - const QString &drawName = QString(), const quint32 &idTool = 0, QObject *qoParent = nullptr, - QGraphicsItem * parent = nullptr ); + VNodePoint(const VAbstractNodeInitData &initData, QObject *qoParent = nullptr, QGraphicsItem *parent = nullptr); }; #endif // VNODEPOINT_H diff --git a/src/libs/vtools/tools/nodeDetails/vnodespline.cpp b/src/libs/vtools/tools/nodeDetails/vnodespline.cpp index 6d45d4868..0759b551f 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodespline.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodespline.cpp @@ -44,60 +44,47 @@ const QString VNodeSpline::ToolType = QStringLiteral("modelingSpline"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VNodeSpline constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param idSpline object id in containerSpline. - * @param typeCreation way we create this tool. - * @param idTool id node. + * @param initData init data. * @param qoParent QObject parent. */ -VNodeSpline::VNodeSpline(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idSpline, - const Source &typeCreation, const QString &drawName, const quint32 &idTool, QObject *qoParent) - :VAbstractNode(doc, data, id, idSpline, drawName, idTool, qoParent) +VNodeSpline::VNodeSpline(const VAbstractNodeInitData &initData, QObject *qoParent) + :VAbstractNode(initData.doc, initData.data, initData.id, initData.idObject, initData.drawName, initData.idTool, + qoParent) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param idSpline object id in containerSpline. - * @param parse parser file mode. - * @param typeCreation way we create this tool. - * @param idTool id node. + * @param initData init data. * @return pointer to node. */ -VNodeSpline *VNodeSpline::Create(VAbstractPattern *doc, VContainer *data, quint32 id, - quint32 idSpline, const Document &parse, - const Source &typeCreation, const QString &drawName, const quint32 &idTool) +VNodeSpline *VNodeSpline::Create(VAbstractNodeInitData initData) { VNodeSpline *spl = nullptr; - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::NodeSpline, doc); - spl = new VNodeSpline(doc, data, id, idSpline, typeCreation, drawName, idTool, doc); + VAbstractTool::AddRecord(initData.id, Tool::NodeSpline, initData.doc); + spl = new VNodeSpline(initData); - VAbstractPattern::AddTool(id, spl); - if (idTool != NULL_ID) + VAbstractPattern::AddTool(initData.id, spl); + if (initData.idTool != NULL_ID) { //Some nodes we don't show on scene. Tool that create this nodes must free memory. - VDataTool *tool = VAbstractPattern::getTool(idTool); + VDataTool *tool = VAbstractPattern::getTool(initData.idTool); SCASSERT(tool != nullptr) spl->setParent(tool);// Adopted by a tool } else { // Help to delete the node before each FullParse - doc->AddToolOnRemove(spl); + initData.doc->AddToolOnRemove(spl); } } else { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } return spl; } diff --git a/src/libs/vtools/tools/nodeDetails/vnodespline.h b/src/libs/vtools/tools/nodeDetails/vnodespline.h index 51b11ec5f..56e26c4b1 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodespline.h +++ b/src/libs/vtools/tools/nodeDetails/vnodespline.h @@ -47,10 +47,7 @@ class VNodeSpline:public VAbstractNode { Q_OBJECT public: - static VNodeSpline *Create(VAbstractPattern *doc, VContainer *data, quint32 id, - quint32 idSpline, const Document &parse, - const Source &typeCreation, const QString &drawName = QString(), - const quint32 &idTool = 0); + static VNodeSpline *Create(VAbstractNodeInitData initData); static const QString ToolType; virtual QString getTagName() const Q_DECL_OVERRIDE; @@ -65,8 +62,7 @@ protected: private: Q_DISABLE_COPY(VNodeSpline) - VNodeSpline(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idSpline, const Source &typeCreation, - const QString &drawName = QString(), const quint32 &idTool = 0, QObject *qoParent = nullptr); + VNodeSpline(const VAbstractNodeInitData &initData, QObject *qoParent = nullptr); }; #endif // VNODESPLINE_H diff --git a/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp b/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp index 90477d5a9..2832d8acc 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp @@ -44,59 +44,45 @@ const QString VNodeSplinePath::ToolType = QStringLiteral("modelingPath"); //--------------------------------------------------------------------------------------------------------------------- /** * @brief VNodeSplinePath constructor. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param idSpline object id in containerSpline. - * @param typeCreation way we create this tool. - * @param idTool tool id. + * @param initData init data. * @param qoParent QObject parent. */ -VNodeSplinePath::VNodeSplinePath(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idSpline, - const Source &typeCreation, const QString &drawName, const quint32 &idTool, - QObject *qoParent) - :VAbstractNode(doc, data, id, idSpline, drawName, idTool, qoParent) +VNodeSplinePath::VNodeSplinePath(const VAbstractNodeInitData &initData, QObject *qoParent) + :VAbstractNode(initData.doc, initData.data, initData.id, initData.idObject, initData.drawName, initData.idTool, + qoParent) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param doc dom document container. - * @param data container with variables. - * @param id object id in container. - * @param idSpline object id in containerSpline. - * @param parse parser file mode. - * @param typeCreation way we create this tool. - * @param idTool tool id. + * @param initData init data. */ -void VNodeSplinePath::Create(VAbstractPattern *doc, VContainer *data, quint32 id, - quint32 idSpline, const Document &parse, const Source &typeCreation, - const QString &drawName, const quint32 &idTool) +void VNodeSplinePath::Create(VAbstractNodeInitData initData) { - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::NodeSplinePath, doc); - VNodeSplinePath *splPath = new VNodeSplinePath(doc, data, id, idSpline, typeCreation, drawName, idTool, doc); + VAbstractTool::AddRecord(initData.id, Tool::NodeSplinePath, initData.doc); + VNodeSplinePath *splPath = new VNodeSplinePath(initData); - VAbstractPattern::AddTool(id, splPath); - if (idTool != NULL_ID) + VAbstractPattern::AddTool(initData.id, splPath); + if (initData.idTool != NULL_ID) { //Some nodes we don't show on scene. Tool that create this nodes must free memory. - VDataTool *tool = VAbstractPattern::getTool(idTool); + VDataTool *tool = VAbstractPattern::getTool(initData.idTool); SCASSERT(tool != nullptr) splPath->setParent(tool);// Adopted by a tool } else { // Help to delete the node before each FullParse - doc->AddToolOnRemove(splPath); + initData.doc->AddToolOnRemove(splPath); } } else { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } diff --git a/src/libs/vtools/tools/nodeDetails/vnodesplinepath.h b/src/libs/vtools/tools/nodeDetails/vnodesplinepath.h index 50b69f81a..ce0e02be8 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodesplinepath.h +++ b/src/libs/vtools/tools/nodeDetails/vnodesplinepath.h @@ -47,9 +47,7 @@ class VNodeSplinePath : public VAbstractNode { Q_OBJECT public: - static void Create(VAbstractPattern *doc, VContainer *data, quint32 id, - quint32 idSpline, const Document &parse, - const Source &typeCreation, const QString &drawName = QString(), const quint32 &idTool = 0); + static void Create(VAbstractNodeInitData initData); static const QString ToolType; virtual QString getTagName() const Q_DECL_OVERRIDE; @@ -64,8 +62,7 @@ protected: private: Q_DISABLE_COPY(VNodeSplinePath) - VNodeSplinePath(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 idSpline, const Source &typeCreation, - const QString &drawName = QString(), const quint32 &idTool = 0, QObject *qoParent = nullptr); + VNodeSplinePath(const VAbstractNodeInitData &initData, QObject *qoParent = nullptr); }; #endif // VNODESPLINEPATH_H diff --git a/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp b/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp index 7efd911b7..8fe01e516 100644 --- a/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp +++ b/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp @@ -40,55 +40,61 @@ VToolPiecePath *VToolPiecePath::Create(QSharedPointer dialog, VMainG SCASSERT(not dialog.isNull()); QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - VPiecePath path = dialogTool->GetPiecePath(); - const quint32 pieceId = dialogTool->GetPieceId(); - qApp->getUndoStack()->beginMacro("add path"); - path.SetNodes(PrepareNodes(path, scene, doc, data)); - VToolPiecePath *pathTool = Create(0, path, pieceId, scene, doc, data, Document::FullParse, Source::FromGui); + VToolPiecePathInitData initData; + initData.path = dialogTool->GetPiecePath(); + initData.idObject = dialogTool->GetPieceId(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + qApp->getUndoStack()->beginMacro("add path"); + initData.path.SetNodes(PrepareNodes(initData.path, scene, doc, data)); + + VToolPiecePath *pathTool = Create(initData); return pathTool; } //--------------------------------------------------------------------------------------------------------------------- -VToolPiecePath *VToolPiecePath::Create(quint32 _id, const VPiecePath &path, quint32 pieceId, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation, const QString &drawName, const quint32 &idTool) +VToolPiecePath *VToolPiecePath::Create(VToolPiecePathInitData initData) { - quint32 id = _id; - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = data->AddPiecePath(path); + initData.id = initData.data->AddPiecePath(initData.path); } else { - data->UpdatePiecePath(id, path); - if (parse != Document::FullParse) + initData.data->UpdatePiecePath(initData.id, initData.path); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::PiecePath, doc); + VAbstractTool::AddRecord(initData.id, Tool::PiecePath, initData.doc); //TODO Need create garbage collector and remove all nodes, that we don't use. //Better check garbage before each saving file. Check only modeling tags. - VToolPiecePath *pathTool = new VToolPiecePath(doc, data, id, pieceId, typeCreation, drawName, idTool, doc); + VToolPiecePath *pathTool = new VToolPiecePath(initData); - VAbstractPattern::AddTool(id, pathTool); - if (idTool != NULL_ID) + VAbstractPattern::AddTool(initData.id, pathTool); + if (initData.idTool != NULL_ID) { //Some nodes we don't show on scene. Tool that create this nodes must free memory. - VDataTool *tool = VAbstractPattern::getTool(idTool); + VDataTool *tool = VAbstractPattern::getTool(initData.idTool); SCASSERT(tool != nullptr); pathTool->setParent(tool);// Adopted by a tool } else { - if (typeCreation == Source::FromGui && path.GetType() == PiecePathType::InternalPath) + if (initData.typeCreation == Source::FromGui && initData.path.GetType() == PiecePathType::InternalPath) { // Seam allowance tool already initializated and can't init the path - SCASSERT(pieceId > NULL_ID); - VToolSeamAllowance *saTool = qobject_cast(VAbstractPattern::getTool(pieceId)); + SCASSERT(initData.idObject > NULL_ID); + VToolSeamAllowance *saTool = + qobject_cast(VAbstractPattern::getTool(initData.idObject)); SCASSERT(saTool != nullptr); pathTool->setParentItem(saTool); pathTool->SetParentType(ParentType::Item); @@ -96,7 +102,7 @@ VToolPiecePath *VToolPiecePath::Create(quint32 _id, const VPiecePath &path, quin else { // Try to prevent memory leak - scene->addItem(pathTool);// First adopted by scene + initData.scene->addItem(pathTool);// First adopted by scene pathTool->hide();// If no one will use node, it will stay hidden pathTool->SetParentType(ParentType::Scene); } @@ -285,16 +291,14 @@ void VToolPiecePath::ToolCreation(const Source &typeCreation) } //--------------------------------------------------------------------------------------------------------------------- -VToolPiecePath::VToolPiecePath(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 pieceId, - const Source &typeCreation, const QString &drawName, const quint32 &idTool, - QObject *qoParent, QGraphicsItem *parent) - :VAbstractNode(doc, data, id, 0, drawName, idTool, qoParent), +VToolPiecePath::VToolPiecePath(const VToolPiecePathInitData &initData, QObject *qoParent, QGraphicsItem *parent) + :VAbstractNode(initData.doc, initData.data, initData.id, NULL_ID, initData.drawName, initData.idTool, qoParent), QGraphicsPathItem(parent), - m_pieceId(pieceId) + m_pieceId(initData.idObject) { - IncrementNodes(VAbstractTool::data.GetPiecePath(id)); + IncrementNodes(VAbstractTool::data.GetPiecePath(initData.id)); RefreshGeometry(); - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.h b/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.h index 4aa231702..ae6bd0607 100644 --- a/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.h +++ b/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.h @@ -35,16 +35,23 @@ class DialogTool; +struct VToolPiecePathInitData : public VAbstractNodeInitData +{ + VToolPiecePathInitData() + : VAbstractNodeInitData(), + path() + {} + + VPiecePath path; +}; + class VToolPiecePath : public VAbstractNode, public QGraphicsPathItem { Q_OBJECT public: static VToolPiecePath* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolPiecePath *Create(quint32 _id, const VPiecePath &path, quint32 pieceId, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation, const QString &drawName = QString(), - const quint32 &idTool = 0); + static VToolPiecePath *Create(VToolPiecePathInitData initData); virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::PiecePath)}; @@ -71,9 +78,8 @@ private: quint32 m_pieceId; - VToolPiecePath(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 pieceId, const Source &typeCreation, - const QString &drawName = QString(), const quint32 &idTool = 0, QObject *qoParent = nullptr, - QGraphicsItem * parent = nullptr ); + VToolPiecePath(const VToolPiecePathInitData &initData, QObject *qoParent = nullptr, + QGraphicsItem *parent = nullptr); void RefreshGeometry(); diff --git a/src/libs/vtools/tools/nodeDetails/vtoolpin.cpp b/src/libs/vtools/tools/nodeDetails/vtoolpin.cpp index 320fda85e..c21e3f6a8 100644 --- a/src/libs/vtools/tools/nodeDetails/vtoolpin.cpp +++ b/src/libs/vtools/tools/nodeDetails/vtoolpin.cpp @@ -40,28 +40,31 @@ VToolPin *VToolPin::Create(QSharedPointer dialog, VAbstractPattern * SCASSERT(not dialog.isNull()); QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - const quint32 pointId = dialogTool->GetPointId(); - const quint32 pieceId = dialogTool->GetPieceId(); - return Create(0, pointId, pieceId, doc, data, Document::FullParse, Source::FromGui); + VToolPinInitData initData; + initData.pointId = dialogTool->GetPointId(); + initData.idObject = dialogTool->GetPieceId(); + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + return Create(initData); } //--------------------------------------------------------------------------------------------------------------------- -VToolPin *VToolPin::Create(quint32 _id, quint32 pointId, quint32 pieceId, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation, const QString &drawName, - const quint32 &idTool) +VToolPin *VToolPin::Create(VToolPinInitData initData) { - quint32 id = _id; - if (typeCreation == Source::FromGui) + if (initData.typeCreation == Source::FromGui) { - id = CreateNode(data, pointId); + initData.id = CreateNode(initData.data, initData.pointId); } else { QSharedPointer point; try { - point = data->GeometricObject(pointId); + point = initData.data->GeometricObject(initData.pointId); } catch (const VExceptionBadId &e) { // Possible case. Parent was deleted, but the node object is still here. @@ -70,35 +73,35 @@ VToolPin *VToolPin::Create(quint32 _id, quint32 pointId, quint32 pieceId, VAbstr } VPointF *pinPoint = new VPointF(*point); pinPoint->setMode(Draw::Modeling); - data->UpdateGObject(id, pinPoint); - if (parse != Document::FullParse) + initData.data->UpdateGObject(initData.id, pinPoint); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } - VAbstractTool::AddRecord(id, Tool::Pin, doc); + VAbstractTool::AddRecord(initData.id, Tool::Pin, initData.doc); VToolPin *point = nullptr; - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - point = new VToolPin(doc, data, id, pointId, pieceId, typeCreation, drawName, idTool, doc); + point = new VToolPin(initData); - VAbstractPattern::AddTool(id, point); - if (idTool != NULL_ID) + VAbstractPattern::AddTool(initData.id, point); + if (initData.idTool != NULL_ID) { //Some nodes we don't show on scene. Tool that create this nodes must free memory. - VDataTool *tool = VAbstractPattern::getTool(idTool); + VDataTool *tool = VAbstractPattern::getTool(initData.idTool); SCASSERT(tool != nullptr) point->setParent(tool);// Adopted by a tool } else { // Help to delete the node before each FullParse - doc->AddToolOnRemove(point); + initData.doc->AddToolOnRemove(point); } } else { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } return point; } @@ -153,10 +156,10 @@ void VToolPin::AddToFile() } //--------------------------------------------------------------------------------------------------------------------- -VToolPin::VToolPin(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 pointId, quint32 pieceId, - const Source &typeCreation, const QString &drawName, const quint32 &idTool, QObject *qoParent) - : VAbstractNode(doc, data, id, pointId, drawName, idTool, qoParent), - m_pieceId(pieceId) +VToolPin::VToolPin(const VToolPinInitData &initData, QObject *qoParent) + : VAbstractNode(initData.doc, initData.data, initData.id, initData.pointId, initData.drawName, initData.idTool, + qoParent), + m_pieceId(initData.idObject) { - ToolCreation(typeCreation); + ToolCreation(initData.typeCreation); } diff --git a/src/libs/vtools/tools/nodeDetails/vtoolpin.h b/src/libs/vtools/tools/nodeDetails/vtoolpin.h index 801f5e9a3..4d6c615cc 100644 --- a/src/libs/vtools/tools/nodeDetails/vtoolpin.h +++ b/src/libs/vtools/tools/nodeDetails/vtoolpin.h @@ -35,14 +35,22 @@ class DialogTool; +struct VToolPinInitData : public VAbstractNodeInitData +{ + VToolPinInitData() + : VAbstractNodeInitData(), + pointId(NULL_ID) + {} + + quint32 pointId; +}; + class VToolPin : public VAbstractNode { Q_OBJECT public: static VToolPin* Create(QSharedPointer dialog, VAbstractPattern *doc, VContainer *data); - static VToolPin *Create(quint32 _id, quint32 pointId, quint32 pieceId, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation, const QString &drawName = QString(), - const quint32 &idTool = 0); + static VToolPin *Create(VToolPinInitData initData); static const QString ToolType; virtual QString getTagName() const Q_DECL_OVERRIDE; @@ -59,9 +67,7 @@ private: quint32 m_pieceId; - VToolPin(VAbstractPattern *doc, VContainer *data, quint32 id, quint32 pointId, quint32 pieceId, - const Source &typeCreation, const QString &drawName = QString(), const quint32 &idTool = 0, - QObject *qoParent = nullptr); + VToolPin(const VToolPinInitData &initData, QObject *qoParent = nullptr); }; #endif // VTOOLPIN_H diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index 7cd8ef53f..1d972fbba 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -618,32 +618,38 @@ quint32 VAbstractTool::PrepareNode(const VPieceNode &node, VMainGraphicsScene *s SCASSERT(doc != nullptr) SCASSERT(data != nullptr) - quint32 id = NULL_ID; + VAbstractNodeInitData initData; + initData.idObject = node.GetId(); + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + switch (node.GetTypeTool()) { case (Tool::NodePoint): - id = CreateNode(data, node.GetId()); - VNodePoint::Create(doc, data, scene, id, node.GetId(), Document::FullParse, Source::FromGui); + initData.id = CreateNode(data, node.GetId()); + VNodePoint::Create(initData); break; case (Tool::NodeArc): - id = CreateNode(data, node.GetId()); - VNodeArc::Create(doc, data, id, node.GetId(), Document::FullParse, Source::FromGui); + initData.id = CreateNode(data, node.GetId()); + VNodeArc::Create(initData); break; case (Tool::NodeElArc): - id = CreateNode(data, node.GetId()); - VNodeEllipticalArc::Create(doc, data, id, node.GetId(), Document::FullParse, Source::FromGui); + initData.id = CreateNode(data, node.GetId()); + VNodeEllipticalArc::Create(initData); break; case (Tool::NodeSpline): - id = CreateNodeSpline(data, node.GetId()); - VNodeSpline::Create(doc, data, id, node.GetId(), Document::FullParse, Source::FromGui); + initData.id = CreateNodeSpline(data, node.GetId()); + VNodeSpline::Create(initData); break; case (Tool::NodeSplinePath): - id = CreateNodeSplinePath(data, node.GetId()); - VNodeSplinePath::Create(doc, data, id, node.GetId(), Document::FullParse, Source::FromGui); + initData.id = CreateNodeSplinePath(data, node.GetId()); + VNodeSplinePath::Create(initData); break; default: qDebug()<<"May be wrong tool type!!! Ignoring."< dialog SCASSERT(not dialog.isNull()); QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - VPiece detail = dialogTool->GetPiece(); - QString width = detail.GetFormulaSAWidth(); - qApp->getUndoStack()->beginMacro("add detail"); - detail.GetPath().SetNodes(PrepareNodes(detail.GetPath(), scene, doc, data)); - VToolSeamAllowance *piece = Create(0, detail, width, scene, doc, data, Document::FullParse, Source::FromGui); + VToolSeamAllowanceInitData initData; + initData.detail = dialogTool->GetPiece(); + initData.width = initData.detail.GetFormulaSAWidth(); + initData.scene = scene; + initData.doc = doc; + initData.data = data; + initData.parse = Document::FullParse; + initData.typeCreation = Source::FromGui; + + qApp->getUndoStack()->beginMacro("add detail"); + initData.detail.GetPath().SetNodes(PrepareNodes(initData.detail.GetPath(), scene, doc, data)); + + VToolSeamAllowance *piece = Create(initData); if (piece != nullptr) { @@ -106,45 +114,47 @@ VToolSeamAllowance *VToolSeamAllowance::Create(QSharedPointer dialog } //--------------------------------------------------------------------------------------------------------------------- -VToolSeamAllowance *VToolSeamAllowance::Create(quint32 id, VPiece newPiece, QString &width, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation, const QString &drawName) +VToolSeamAllowance *VToolSeamAllowance::Create(VToolSeamAllowanceInitData &initData) { - if (typeCreation == Source::FromGui || typeCreation == Source::FromTool) + if (initData.typeCreation == Source::FromGui || initData.typeCreation == Source::FromTool) { - data->AddVariable(currentSeamAllowance, new VIncrement(data, currentSeamAllowance, 0, newPiece.GetSAWidth(), - width, true, tr("Current seam allowance"))); - id = data->AddPiece(newPiece); + initData.data->AddVariable(currentSeamAllowance, new VIncrement(initData.data, currentSeamAllowance, 0, + initData.detail.GetSAWidth(), + initData.width, true, + tr("Current seam allowance"))); + initData.id = initData.data->AddPiece(initData.detail); } else { - const qreal calcWidth = CheckFormula(id, width, data); - newPiece.SetFormulaSAWidth(width, calcWidth); + const qreal calcWidth = CheckFormula(initData.id, initData.width, initData.data); + initData.detail.SetFormulaSAWidth(initData.width, calcWidth); - data->AddVariable(currentSeamAllowance, new VIncrement(data, currentSeamAllowance, 0, calcWidth, - width, true, tr("Current seam allowance"))); + initData.data->AddVariable(currentSeamAllowance, new VIncrement(initData.data, currentSeamAllowance, 0, + calcWidth, initData.width, true, + tr("Current seam allowance"))); - data->UpdatePiece(id, newPiece); - if (parse != Document::FullParse) + initData.data->UpdatePiece(initData.id, initData.detail); + if (initData.parse != Document::FullParse) { - doc->UpdateToolData(id, data); + initData.doc->UpdateToolData(initData.id, initData.data); } } VToolSeamAllowance *piece = nullptr; - if (parse == Document::FullParse) + if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::Piece, doc); - piece = new VToolSeamAllowance(doc, data, id, typeCreation, scene, drawName); - scene->addItem(piece); - connect(piece, &VToolSeamAllowance::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(scene, &VMainGraphicsScene::EnableDetailItemHover, piece, &VToolSeamAllowance::AllowHover); - connect(scene, &VMainGraphicsScene::EnableDetailItemSelection, piece, &VToolSeamAllowance::AllowSelecting); - connect(scene, &VMainGraphicsScene::HighlightDetail, piece, &VToolSeamAllowance::Highlight); - VAbstractPattern::AddTool(id, piece); + VAbstractTool::AddRecord(initData.id, Tool::Piece, initData.doc); + piece = new VToolSeamAllowance(initData); + initData.scene->addItem(piece); + connect(piece, &VToolSeamAllowance::ChoosedTool, initData.scene, &VMainGraphicsScene::ChoosedItem); + connect(initData.scene, &VMainGraphicsScene::EnableDetailItemHover, piece, &VToolSeamAllowance::AllowHover); + connect(initData.scene, &VMainGraphicsScene::EnableDetailItemSelection, piece, + &VToolSeamAllowance::AllowSelecting); + connect(initData.scene, &VMainGraphicsScene::HighlightDetail, piece, &VToolSeamAllowance::Highlight); + VAbstractPattern::AddTool(initData.id, piece); } //Very important to delete it. Only this tool need this special variable. - data->RemoveVariable(currentSeamAllowance); + initData.data->RemoveVariable(currentSeamAllowance); return piece; } @@ -1103,23 +1113,21 @@ void VToolSeamAllowance::SetDialog() } //--------------------------------------------------------------------------------------------------------------------- -VToolSeamAllowance::VToolSeamAllowance(VAbstractPattern *doc, VContainer *data, const quint32 &id, - const Source &typeCreation, VMainGraphicsScene *scene, - const QString &drawName, QGraphicsItem *parent) - : VInteractiveTool(doc, data, id), +VToolSeamAllowance::VToolSeamAllowance(const VToolSeamAllowanceInitData &initData, QGraphicsItem *parent) + : VInteractiveTool(initData.doc, initData.data, initData.id), QGraphicsPathItem(parent), m_mainPath(), m_mainPathRect(), - m_sceneDetails(scene), - m_drawName(drawName), + m_sceneDetails(initData.scene), + m_drawName(initData.drawName), m_seamAllowance(new VNoBrushScalePathItem(this)), m_dataLabel(new VTextGraphicsItem(this)), m_patternInfo(new VTextGraphicsItem(this)), m_grainLine(new VGrainlineItem(this)), m_passmarks(new QGraphicsPathItem(this)) { - VPiece detail = data->GetPiece(id); - InitNodes(detail, scene); + VPiece detail = initData.data->GetPiece(initData.id); + InitNodes(detail, initData.scene); InitCSAPaths(detail); InitInternalPaths(detail); InitPins(detail); @@ -1130,9 +1138,9 @@ VToolSeamAllowance::VToolSeamAllowance(VAbstractPattern *doc, VContainer *data, this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - connect(scene, &VMainGraphicsScene::EnableToolMove, this, &VToolSeamAllowance::EnableToolMove); - connect(scene, &VMainGraphicsScene::ItemClicked, this, &VToolSeamAllowance::ResetChildren); - ToolCreation(typeCreation); + connect(initData.scene, &VMainGraphicsScene::EnableToolMove, this, &VToolSeamAllowance::EnableToolMove); + connect(initData.scene, &VMainGraphicsScene::ItemClicked, this, &VToolSeamAllowance::ResetChildren); + ToolCreation(initData.typeCreation); setAcceptHoverEvents(true); connect(m_dataLabel, &VTextGraphicsItem::SignalMoved, this, &VToolSeamAllowance::SaveMoveDetail); diff --git a/src/libs/vtools/tools/vtoolseamallowance.h b/src/libs/vtools/tools/vtoolseamallowance.h index 502286a95..d71834f44 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.h +++ b/src/libs/vtools/tools/vtoolseamallowance.h @@ -41,6 +41,20 @@ class DialogTool; class VNoBrushScalePathItem; +struct VToolSeamAllowanceInitData : public VAbstractToolInitData +{ + VToolSeamAllowanceInitData() + : VAbstractToolInitData(), + detail(), + width("0"), + drawName() + {} + + VPiece detail; + QString width; + QString drawName; +}; + class VToolSeamAllowance : public VInteractiveTool, public QGraphicsPathItem { Q_OBJECT @@ -49,9 +63,7 @@ public: static VToolSeamAllowance* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolSeamAllowance* Create(quint32 id, VPiece newPiece, QString &width, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation, const QString &drawName = QString()); + static VToolSeamAllowance* Create(VToolSeamAllowanceInitData &initData); static const quint8 pieceVersion; @@ -152,8 +164,7 @@ private: VGrainlineItem *m_grainLine; QGraphicsPathItem *m_passmarks; - VToolSeamAllowance(VAbstractPattern *doc, VContainer *data, const quint32 &id, const Source &typeCreation, - VMainGraphicsScene *scene, const QString &drawName, QGraphicsItem * parent = nullptr); + VToolSeamAllowance(const VToolSeamAllowanceInitData &initData, QGraphicsItem * parent = nullptr); void UpdateExcludeState(); void RefreshGeometry(); diff --git a/src/libs/vtools/tools/vtooluniondetails.cpp b/src/libs/vtools/tools/vtooluniondetails.cpp index e19d876fd..6027f0a0a 100644 --- a/src/libs/vtools/tools/vtooluniondetails.cpp +++ b/src/libs/vtools/tools/vtooluniondetails.cpp @@ -359,7 +359,7 @@ void UnionInitParameters(const VToolUnionDetailsInitData &initData, const VPiece } //--------------------------------------------------------------------------------------------------------------------- -quint32 AddNodePoint(const VPieceNode &node, const VToolUnionDetailsInitData &initData, quint32 idTool, +quint32 AddNodePoint(const VPieceNode &node, const VToolUnionDetailsInitData &initData, QVector &children, const QString &drawName, qreal dx, qreal dy, quint32 pRotate, qreal angle) { @@ -378,13 +378,23 @@ quint32 AddNodePoint(const VPieceNode &node, const VToolUnionDetailsInitData &in children.append(idObject); point1->setMode(Draw::Modeling); const quint32 id = initData.data->AddGObject(point1.take()); - VNodePoint::Create(initData.doc, initData.data, initData.scene, id, idObject, Document::FullParse, Source::FromTool, - drawName, idTool); + + VAbstractNodeInitData initNodeData; + initNodeData.id = id; + initNodeData.idObject = idObject; + initNodeData.doc = initData.doc; + initNodeData.data = initData.data; + initNodeData.parse = Document::FullParse; + initNodeData.typeCreation = Source::FromTool; + initNodeData.idTool = initData.id; + initNodeData.drawName = drawName; + + VNodePoint::Create(initNodeData); return id; } //--------------------------------------------------------------------------------------------------------------------- -quint32 AddPin(quint32 id, const VToolUnionDetailsInitData &initData, quint32 idTool, QVector &children, +quint32 AddPin(quint32 id, const VToolUnionDetailsInitData &initData, QVector &children, const QString &drawName, qreal dx, qreal dy, quint32 pRotate, qreal angle) { QScopedPointer point(new VPointF(*initData.data->GeometricObject(id))); @@ -402,13 +412,24 @@ quint32 AddPin(quint32 id, const VToolUnionDetailsInitData &initData, quint32 id children.append(idObject); point1->setMode(Draw::Modeling); const quint32 idPin = initData.data->AddGObject(point1.take()); - VToolPin::Create(idPin, idObject, 0, initData.doc, initData.data, Document::FullParse, Source::FromTool, drawName, - idTool); + + VToolPinInitData initNodeData; + initNodeData.id = idPin; + initNodeData.pointId = idObject; + initNodeData.idObject = NULL_ID; + initNodeData.doc = initData.doc; + initNodeData.data = initData.data; + initNodeData.parse = Document::FullParse; + initNodeData.typeCreation = Source::FromTool; + initNodeData.idTool = initData.id; + initNodeData.drawName = drawName; + + VToolPin::Create(initNodeData); return idPin; } //--------------------------------------------------------------------------------------------------------------------- -quint32 AddNodeArc(const VPieceNode &node, const VToolUnionDetailsInitData &initData, quint32 idTool, +quint32 AddNodeArc(const VPieceNode &node, const VToolUnionDetailsInitData &initData, QVector &children, const QString &drawName, qreal dx, qreal dy, quint32 pRotate, qreal angle) { @@ -444,13 +465,22 @@ quint32 AddNodeArc(const VPieceNode &node, const VToolUnionDetailsInitData &init arc2->setMode(Draw::Modeling); const quint32 id = initData.data->AddGObject(arc2.take()); - VNodeArc::Create(initData.doc, initData.data, id, idObject, Document::FullParse, Source::FromTool, drawName, - idTool); + VAbstractNodeInitData initNodeData; + initNodeData.id = id; + initNodeData.idObject = idObject; + initNodeData.doc = initData.doc; + initNodeData.data = initData.data; + initNodeData.parse = Document::FullParse; + initNodeData.typeCreation = Source::FromTool; + initNodeData.idTool = initData.id; + initNodeData.drawName = drawName; + + VNodeArc::Create(initNodeData); return id; } //--------------------------------------------------------------------------------------------------------------------- -quint32 AddNodeElArc(const VPieceNode &node, const VToolUnionDetailsInitData &initData, quint32 idTool, +quint32 AddNodeElArc(const VPieceNode &node, const VToolUnionDetailsInitData &initData, QVector &children, const QString &drawName, qreal dx, qreal dy, quint32 pRotate, qreal angle) { @@ -488,13 +518,22 @@ quint32 AddNodeElArc(const VPieceNode &node, const VToolUnionDetailsInitData &in arc2->setMode(Draw::Modeling); const quint32 id = initData.data->AddGObject(arc2.take()); - VNodeEllipticalArc::Create(initData.doc, initData.data, id, idObject, Document::FullParse, Source::FromTool, - drawName, idTool); + VAbstractNodeInitData initNodeData; + initNodeData.id = id; + initNodeData.idObject = idObject; + initNodeData.doc = initData.doc; + initNodeData.data = initData.data; + initNodeData.parse = Document::FullParse; + initNodeData.typeCreation = Source::FromTool; + initNodeData.idTool = initData.id; + initNodeData.drawName = drawName; + + VNodeEllipticalArc::Create(initNodeData); return id; } //--------------------------------------------------------------------------------------------------------------------- -quint32 AddNodeSpline(const VPieceNode &node, const VToolUnionDetailsInitData &initData, quint32 idTool, +quint32 AddNodeSpline(const VPieceNode &node, const VToolUnionDetailsInitData &initData, QVector &children, const QString &drawName, qreal dx, qreal dy, quint32 pRotate, qreal angle) { @@ -523,13 +562,23 @@ quint32 AddNodeSpline(const VPieceNode &node, const VToolUnionDetailsInitData &i VSpline *spl1 = new VSpline(*spl); spl1->setMode(Draw::Modeling); const quint32 id = initData.data->AddGObject(spl1); - VNodeSpline::Create(initData.doc, initData.data, id, idObject, Document::FullParse, Source::FromTool, drawName, - idTool); + + VAbstractNodeInitData initNodeData; + initNodeData.id = id; + initNodeData.idObject = idObject; + initNodeData.doc = initData.doc; + initNodeData.data = initData.data; + initNodeData.parse = Document::FullParse; + initNodeData.typeCreation = Source::FromTool; + initNodeData.idTool = initData.id; + initNodeData.drawName = drawName; + + VNodeSpline::Create(initNodeData); return id; } //--------------------------------------------------------------------------------------------------------------------- -quint32 AddNodeSplinePath(const VPieceNode &node, const VToolUnionDetailsInitData &initData, quint32 idTool, +quint32 AddNodeSplinePath(const VPieceNode &node, const VToolUnionDetailsInitData &initData, QVector &children, const QString &drawName, qreal dx, qreal dy, quint32 pRotate, qreal angle) { @@ -587,8 +636,17 @@ quint32 AddNodeSplinePath(const VPieceNode &node, const VToolUnionDetailsInitDat path1->setMode(Draw::Modeling); const quint32 id = initData.data->AddGObject(path1.take()); - VNodeSplinePath::Create(initData.doc, initData.data, id, idObject, Document::FullParse, Source::FromTool, drawName, - idTool); + VAbstractNodeInitData initNodeData; + initNodeData.id = id; + initNodeData.idObject = idObject; + initNodeData.doc = initData.doc; + initNodeData.data = initData.data; + initNodeData.parse = Document::FullParse; + initNodeData.typeCreation = Source::FromTool; + initNodeData.idTool = initData.id; + initNodeData.drawName = drawName; + + VNodeSplinePath::Create(initNodeData); return id; } @@ -597,30 +655,30 @@ quint32 AddNodeSplinePath(const VPieceNode &node, const VToolUnionDetailsInitDat * @brief AddToNewDetail create united detail adding one node per time. */ void AddNodeToNewPath(const VToolUnionDetailsInitData &initData, VPiecePath &newPath, VPieceNode node, - quint32 idTool, QVector &children, const QString &drawName, qreal dx = 0, qreal dy = 0, + QVector &children, const QString &drawName, qreal dx = 0, qreal dy = 0, quint32 pRotate = NULL_ID, qreal angle = 0); void AddNodeToNewPath(const VToolUnionDetailsInitData &initData, VPiecePath &newPath, VPieceNode node, - quint32 idTool, QVector &children, const QString &drawName, qreal dx, qreal dy, - quint32 pRotate, qreal angle) + QVector &children, const QString &drawName, qreal dx, qreal dy, quint32 pRotate, + qreal angle) { quint32 id = 0; switch (node.GetTypeTool()) { case (Tool::NodePoint): - id = AddNodePoint(node, initData, idTool, children, drawName, dx, dy, pRotate, angle); + id = AddNodePoint(node, initData, children, drawName, dx, dy, pRotate, angle); break; case (Tool::NodeArc): - id = AddNodeArc(node, initData, idTool, children, drawName, dx, dy, pRotate, angle); + id = AddNodeArc(node, initData, children, drawName, dx, dy, pRotate, angle); break; case (Tool::NodeElArc): - id = AddNodeElArc(node, initData, idTool, children, drawName, dx, dy, pRotate, angle); + id = AddNodeElArc(node, initData, children, drawName, dx, dy, pRotate, angle); break; case (Tool::NodeSpline): - id = AddNodeSpline(node, initData, idTool, children, drawName, dx, dy, pRotate, angle); + id = AddNodeSpline(node, initData, children, drawName, dx, dy, pRotate, angle); break; case (Tool::NodeSplinePath): - id = AddNodeSplinePath(node, initData, idTool, children, drawName, dx, dy, pRotate, angle); + id = AddNodeSplinePath(node, initData, children, drawName, dx, dy, pRotate, angle); break; default: qDebug()<<"May be wrong tool type!!! Ignoring."< & } //--------------------------------------------------------------------------------------------------------------------- -void CreateUnitedNodes(VPiece &newDetail, const VPiece &d1, const VPiece &d2, quint32 id, const QString &drawName, +void CreateUnitedNodes(VPiece &newDetail, const VPiece &d1, const VPiece &d2, const QString &drawName, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { const VPiecePath d1Path = d1.GetPath().RemoveEdge(initData.indexD1); @@ -995,23 +1053,22 @@ void CreateUnitedNodes(VPiece &newDetail, const VPiece &d1, const VPiece &d2, qu { if (unitedPath.at(i).first) {// first piece - AddNodeToNewPath(initData, newPath, unitedPath.at(i).second, id, children, drawName); + AddNodeToNewPath(initData, newPath, unitedPath.at(i).second, children, drawName); } else {// second piece - AddNodeToNewPath(initData, newPath, unitedPath.at(i).second, id, children, drawName, dx, dy, pRotate, - angle); + AddNodeToNewPath(initData, newPath, unitedPath.at(i).second, children, drawName, dx, dy, pRotate, angle); } } newDetail.SetPath(newPath); SCASSERT(not children.isEmpty()) - SaveNodesChildren(initData.doc, id, children); + SaveNodesChildren(initData.doc, initData.id, children); } //--------------------------------------------------------------------------------------------------------------------- -void CreateUnitedDetailCSA(VPiece &newDetail, const VPiece &d, QVector &children, quint32 id, +void CreateUnitedDetailCSA(VPiece &newDetail, const VPiece &d, QVector &children, const QString &drawName, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { @@ -1024,11 +1081,23 @@ void CreateUnitedDetailCSA(VPiece &newDetail, const VPiece &d, QVector newPath.Clear();//Clear nodes for (int i=0; i < path.CountNodes(); ++i) { - AddNodeToNewPath(initData, newPath, path.at(i), id, nodeChildren, drawName, dx, dy, pRotate, angle); + AddNodeToNewPath(initData, newPath, path.at(i), nodeChildren, drawName, dx, dy, pRotate, angle); } const quint32 idPath = initData.data->AddPiecePath(newPath); - VToolPiecePath::Create(idPath, newPath, NULL_ID, initData.scene, initData.doc, initData.data, initData.parse, - Source::FromTool, drawName, id); + + VToolPiecePathInitData initNodeData; + initNodeData.id = idPath; + initNodeData.idObject = NULL_ID; + initNodeData.scene = initData.scene; + initNodeData.doc = initData.doc; + initNodeData.data = initData.data; + initNodeData.parse = Document::FullParse; + initNodeData.typeCreation = Source::FromTool; + initNodeData.idTool = initData.id; + initNodeData.drawName = drawName; + initNodeData.path = newPath; + + VToolPiecePath::Create(initNodeData); record.path = idPath; newDetail.GetCustomSARecords().append(record); nodeChildren.prepend(idPath); @@ -1037,7 +1106,7 @@ void CreateUnitedDetailCSA(VPiece &newDetail, const VPiece &d, QVector } //--------------------------------------------------------------------------------------------------------------------- -void CreateUnitedCSA(VPiece &newDetail, const VPiece &d1, const VPiece &d2, quint32 id, const QString &drawName, +void CreateUnitedCSA(VPiece &newDetail, const VPiece &d1, const VPiece &d2, const QString &drawName, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { for (int i = 0; i < d1.GetCustomSARecords().size(); ++i) @@ -1046,12 +1115,12 @@ void CreateUnitedCSA(VPiece &newDetail, const VPiece &d1, const VPiece &d2, quin } QVector children; - CreateUnitedDetailCSA(newDetail, d2, children, id, drawName, initData, dx, dy, pRotate, angle); - SaveCSAChildren(initData.doc, id, children); + CreateUnitedDetailCSA(newDetail, d2, children, drawName, initData, dx, dy, pRotate, angle); + SaveCSAChildren(initData.doc, initData.id, children); } //--------------------------------------------------------------------------------------------------------------------- -void CreateUnitedDetailInternalPaths(VPiece &newDetail, const VPiece &d, QVector &children, quint32 id, +void CreateUnitedDetailInternalPaths(VPiece &newDetail, const VPiece &d, QVector &children, const QString &drawName, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { @@ -1064,11 +1133,23 @@ void CreateUnitedDetailInternalPaths(VPiece &newDetail, const VPiece &d, QVector for (int i=0; i < path.CountNodes(); ++i) { - AddNodeToNewPath(initData, newPath, path.at(i), id, nodeChildren, drawName, dx, dy, pRotate, angle); + AddNodeToNewPath(initData, newPath, path.at(i), nodeChildren, drawName, dx, dy, pRotate, angle); } const quint32 idPath = initData.data->AddPiecePath(newPath); - VToolPiecePath::Create(idPath, newPath, NULL_ID, initData.scene, initData.doc, initData.data, initData.parse, - Source::FromTool, drawName, id); + + VToolPiecePathInitData initNodeData; + initNodeData.id = idPath; + initNodeData.idObject = NULL_ID; + initNodeData.scene = initData.scene; + initNodeData.doc = initData.doc; + initNodeData.data = initData.data; + initNodeData.parse = Document::FullParse; + initNodeData.typeCreation = Source::FromTool; + initNodeData.idTool = initData.id; + initNodeData.drawName = drawName; + initNodeData.path = newPath; + + VToolPiecePath::Create(initNodeData); newDetail.GetInternalPaths().append(idPath); nodeChildren.prepend(idPath); } @@ -1076,9 +1157,9 @@ void CreateUnitedDetailInternalPaths(VPiece &newDetail, const VPiece &d, QVector } //--------------------------------------------------------------------------------------------------------------------- -void CreateUnitedInternalPaths(VPiece &newDetail, const VPiece &d1, const VPiece &d2, quint32 id, - const QString &drawName, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, - quint32 pRotate, qreal angle) +void CreateUnitedInternalPaths(VPiece &newDetail, const VPiece &d1, const VPiece &d2, const QString &drawName, + const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, + qreal angle) { for (int i = 0; i < d1.GetInternalPaths().size(); ++i) { @@ -1086,20 +1167,20 @@ void CreateUnitedInternalPaths(VPiece &newDetail, const VPiece &d1, const VPiece } QVector children; - CreateUnitedDetailInternalPaths(newDetail, d2, children, id, drawName, initData, dx, dy, pRotate, angle); + CreateUnitedDetailInternalPaths(newDetail, d2, children, drawName, initData, dx, dy, pRotate, angle); - SaveInternalPathsChildren(initData.doc, id, children); + SaveInternalPathsChildren(initData.doc, initData.id, children); } //--------------------------------------------------------------------------------------------------------------------- -void CreateUnitedDetailPins(VPiece &newDetail, const VPiece &d, QVector &children, quint32 idTool, +void CreateUnitedDetailPins(VPiece &newDetail, const VPiece &d, QVector &children, const QString &drawName, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { QVector nodeChildren; for(int i=0; i < d.GetPins().size(); ++i) { - const quint32 id = AddPin(d.GetPins().at(i), initData, idTool, children, drawName, dx, dy, pRotate, angle); + const quint32 id = AddPin(d.GetPins().at(i), initData, children, drawName, dx, dy, pRotate, angle); newDetail.GetPins().append(id); nodeChildren.prepend(id); } @@ -1107,7 +1188,7 @@ void CreateUnitedDetailPins(VPiece &newDetail, const VPiece &d, QVector } //--------------------------------------------------------------------------------------------------------------------- -void CreateUnitedPins(VPiece &newDetail, const VPiece &d1, const VPiece &d2, quint32 id, const QString &drawName, +void CreateUnitedPins(VPiece &newDetail, const VPiece &d1, const VPiece &d2, const QString &drawName, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { for (int i = 0; i < d1.GetPins().size(); ++i) @@ -1116,21 +1197,20 @@ void CreateUnitedPins(VPiece &newDetail, const VPiece &d1, const VPiece &d2, qui } QVector children; - CreateUnitedDetailPins(newDetail, d2, children, id, drawName, initData, dx, dy, pRotate, angle); - SavePinsChildren(initData.doc, id, children); + CreateUnitedDetailPins(newDetail, d2, children, drawName, initData, dx, dy, pRotate, angle); + SavePinsChildren(initData.doc, initData.id, children); } //--------------------------------------------------------------------------------------------------------------------- -void UpdateUnitedNodes(quint32 id, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, - qreal angle) +void UpdateUnitedNodes(const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { - const VPiecePath d1REPath = GetPiece1MainPath(initData.doc, id).RemoveEdge(initData.indexD1); - const VPiecePath d2REPath = GetPiece2MainPath(initData.doc, id).RemoveEdge(initData.indexD2); + const VPiecePath d1REPath = GetPiece1MainPath(initData.doc, initData.id).RemoveEdge(initData.indexD1); + const VPiecePath d2REPath = GetPiece2MainPath(initData.doc, initData.id).RemoveEdge(initData.indexD2); const qint32 countNodeD1 = d1REPath.CountNodes(); const qint32 countNodeD2 = d2REPath.CountNodes(); - QVector children = GetNodesChildren(initData.doc, id); + QVector children = GetNodesChildren(initData.doc, initData.id); if (not children.isEmpty()) { // This check need for backward compatibility @@ -1210,7 +1290,7 @@ void UpdateUnitedDetailPaths(const VToolUnionDetailsInitData &initData, qreal dx } //--------------------------------------------------------------------------------------------------------------------- -void UpdateUnitedDetailCSA(quint32 id, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, +void UpdateUnitedDetailCSA(const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle, const QVector &records) { QVector idRecords; @@ -1218,21 +1298,22 @@ void UpdateUnitedDetailCSA(quint32 id, const VToolUnionDetailsInitData &initData { idRecords.append(records.at(i).path); } - UpdateUnitedDetailPaths(initData, dx, dy, pRotate, angle, idRecords, GetCSAChildren(initData.doc, id)); + UpdateUnitedDetailPaths(initData, dx, dy, pRotate, angle, idRecords, GetCSAChildren(initData.doc, initData.id)); } //--------------------------------------------------------------------------------------------------------------------- -void UpdateUnitedDetailInternalPaths(quint32 id, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, +void UpdateUnitedDetailInternalPaths(const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle, const QVector &records) { - UpdateUnitedDetailPaths(initData, dx, dy, pRotate, angle, records, GetInternalPathsChildren(initData.doc, id)); + UpdateUnitedDetailPaths(initData, dx, dy, pRotate, angle, records, + GetInternalPathsChildren(initData.doc, initData.id)); } //--------------------------------------------------------------------------------------------------------------------- -void UpdateUnitedDetailPins(quint32 id, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, - quint32 pRotate, qreal angle, const QVector &records) +void UpdateUnitedDetailPins(const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle, + const QVector &records) { - QVector children = GetPinChildren(initData.doc, id); + QVector children = GetPinChildren(initData.doc, initData.id); for (int i = 0; i < records.size(); ++i) { @@ -1248,8 +1329,7 @@ void UpdateUnitedDetailPins(quint32 id, const VToolUnionDetailsInitData &initDat } //--------------------------------------------------------------------------------------------------------------------- -void CreateUnitedDetail(quint32 id, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, - qreal angle) +void CreateUnitedDetail(const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { const QString drawName = DrawName(initData.doc, initData.d1id, initData.d2id); SCASSERT(not drawName.isEmpty()) @@ -1259,10 +1339,10 @@ void CreateUnitedDetail(quint32 id, const VToolUnionDetailsInitData &initData, q VPiece newDetail; - CreateUnitedNodes(newDetail, d1, d2, id, drawName, initData, dx, dy, pRotate, angle); - CreateUnitedCSA(newDetail, d1, d2, id, drawName, initData, dx, dy, pRotate, angle); - CreateUnitedInternalPaths(newDetail, d1, d2, id, drawName, initData, dx, dy, pRotate, angle); - CreateUnitedPins(newDetail, d1, d2, id, drawName, initData, dx, dy, pRotate, angle); + CreateUnitedNodes(newDetail, d1, d2, drawName, initData, dx, dy, pRotate, angle); + CreateUnitedCSA(newDetail, d1, d2, drawName, initData, dx, dy, pRotate, angle); + CreateUnitedInternalPaths(newDetail, d1, d2, drawName, initData, dx, dy, pRotate, angle); + CreateUnitedPins(newDetail, d1, d2, drawName, initData, dx, dy, pRotate, angle); newDetail.SetName(QObject::tr("United detail")); QString formulaSAWidth = d1.GetFormulaSAWidth(); @@ -1270,8 +1350,18 @@ void CreateUnitedDetail(quint32 id, const VToolUnionDetailsInitData &initData, q newDetail.SetMx(d1.GetMx()); newDetail.SetMy(d1.GetMy()); newDetail.SetUnited(true); - VToolSeamAllowance::Create(0, newDetail, formulaSAWidth, initData.scene, initData.doc, initData.data, - initData.parse, Source::FromTool, drawName); + + VToolSeamAllowanceInitData pieceInitData; + pieceInitData.detail = newDetail; + pieceInitData.width = formulaSAWidth; + pieceInitData.scene = initData.scene; + pieceInitData.doc = initData.doc; + pieceInitData.data = initData.data; + pieceInitData.parse = initData.parse; + pieceInitData.typeCreation = Source::FromTool; + pieceInitData.drawName = drawName; + + VToolSeamAllowance::Create(pieceInitData); auto RemoveDetail = [initData](quint32 id) { @@ -1292,17 +1382,17 @@ void CreateUnitedDetail(quint32 id, const VToolUnionDetailsInitData &initData, q } //--------------------------------------------------------------------------------------------------------------------- -void UpdateUnitedDetail(quint32 id, const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, - qreal angle) +void UpdateUnitedDetail(const VToolUnionDetailsInitData &initData, qreal dx, qreal dy, quint32 pRotate, qreal angle) { - UpdateUnitedNodes(id, initData, dx, dy, pRotate, angle); - UpdateUnitedDetailCSA(id, initData, dx, dy, pRotate, angle, GetPiece2CSAPaths(initData.doc, id)); - UpdateUnitedDetailInternalPaths(id, initData, dx, dy, pRotate, angle, GetPiece2InternalPaths(initData.doc, id)); - UpdateUnitedDetailPins(id, initData, dx, dy, pRotate, angle, GetPiece2Pins(initData.doc, id)); + UpdateUnitedNodes(initData, dx, dy, pRotate, angle); + UpdateUnitedDetailCSA(initData, dx, dy, pRotate, angle, GetPiece2CSAPaths(initData.doc, initData.id)); + UpdateUnitedDetailInternalPaths(initData, dx, dy, pRotate, angle, + GetPiece2InternalPaths(initData.doc, initData.id)); + UpdateUnitedDetailPins(initData, dx, dy, pRotate, angle, GetPiece2Pins(initData.doc, initData.id)); } //--------------------------------------------------------------------------------------------------------------------- -void UniteDetails(quint32 id, const VToolUnionDetailsInitData &initData) +void UniteDetails(const VToolUnionDetailsInitData &initData) { VPieceNode det1p1; qreal dx = 0; @@ -1314,14 +1404,14 @@ void UniteDetails(quint32 id, const VToolUnionDetailsInitData &initData) const VPiece d1 = initData.data->GetPiece(initData.d1id); const VPiece d2 = initData.data->GetPiece(initData.d2id); UnionInitParameters(initData, d1.GetPath(), d2.GetPath(), det1p1, dx, dy, angle); - CreateUnitedDetail(id, initData, dx, dy, det1p1.GetId(), angle); + CreateUnitedDetail(initData, dx, dy, det1p1.GetId(), angle); } else { - const VPiecePath d1Path = GetPiece1MainPath(initData.doc, id); - const VPiecePath d2Path = GetPiece2MainPath(initData.doc, id); + const VPiecePath d1Path = GetPiece1MainPath(initData.doc, initData.id); + const VPiecePath d2Path = GetPiece2MainPath(initData.doc, initData.id); UnionInitParameters(initData, d1Path, d2Path, det1p1, dx, dy, angle); - UpdateUnitedDetail(id, initData, dx, dy, det1p1.GetId(), angle); + UpdateUnitedDetail(initData, dx, dy, det1p1.GetId(), angle); } } } // static functions @@ -1329,13 +1419,11 @@ void UniteDetails(quint32 id, const VToolUnionDetailsInitData &initData) //--------------------------------------------------------------------------------------------------------------------- /** * @brief VToolUnionDetails costructor. - * @param id object id in container. * @param initData global init data. * @param parent parent object. */ -VToolUnionDetails::VToolUnionDetails(quint32 id, const VToolUnionDetailsInitData &initData, - QObject *parent) - : VAbstractTool(initData.doc, initData.data, id, parent), +VToolUnionDetails::VToolUnionDetails(const VToolUnionDetailsInitData &initData, QObject *parent) + : VAbstractTool(initData.doc, initData.data, initData.id, parent), d1id(initData.d1id), d2id(initData.d2id), indexD1(initData.indexD1), @@ -1431,7 +1519,7 @@ VToolUnionDetails* VToolUnionDetails::Create(QSharedPointer dialog, initData.retainPieces = dialogTool->RetainPieces(); qApp->getUndoStack()->beginMacro(tr("union details")); - VToolUnionDetails* tool = Create(0, initData); + VToolUnionDetails* tool = Create(initData); qApp->getUndoStack()->endMacro(); return tool; } @@ -1439,36 +1527,34 @@ VToolUnionDetails* VToolUnionDetails::Create(QSharedPointer dialog, //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool. - * @param _id tool id, 0 if tool doesn't exist yet. * @param initData contains all init data. */ -VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VToolUnionDetailsInitData &initData) +VToolUnionDetails* VToolUnionDetails::Create(VToolUnionDetailsInitData initData) { VToolUnionDetails *unionDetails = nullptr; - quint32 id = _id; if (initData.typeCreation == Source::FromGui) { - id = VContainer::getNextId(); + initData.id = VContainer::getNextId(); } else { if (initData.parse != Document::FullParse) { - initData.doc->UpdateToolData(id, initData.data); + initData.doc->UpdateToolData(initData.id, initData.data); } } //First add tool to file if (initData.parse == Document::FullParse) { - VAbstractTool::AddRecord(id, Tool::UnionDetails, initData.doc); + VAbstractTool::AddRecord(initData.id, Tool::UnionDetails, initData.doc); //Scene doesn't show this tool, so doc will destroy this object. - unionDetails = new VToolUnionDetails(id, initData); - VAbstractPattern::AddTool(id, unionDetails); + unionDetails = new VToolUnionDetails(initData); + VAbstractPattern::AddTool(initData.id, unionDetails); // Unfortunatelly doc will destroy all objects only in the end, but we should delete them before each FullParse initData.doc->AddToolOnRemove(unionDetails); } - UniteDetails(id, initData); + UniteDetails(initData); return unionDetails; } diff --git a/src/libs/vtools/tools/vtooluniondetails.h b/src/libs/vtools/tools/vtooluniondetails.h index 33729c1db..a135dd8e6 100644 --- a/src/libs/vtools/tools/vtooluniondetails.h +++ b/src/libs/vtools/tools/vtooluniondetails.h @@ -47,18 +47,14 @@ class DialogTool; -struct VToolUnionDetailsInitData +struct VToolUnionDetailsInitData : public VAbstractToolInitData { VToolUnionDetailsInitData() - : d1id(NULL_ID), + : VAbstractToolInitData(), + d1id(NULL_ID), d2id(NULL_ID), indexD1(NULL_ID), indexD2(NULL_ID), - scene(nullptr), - doc(nullptr), - data(nullptr), - parse(Document::FullParse), - typeCreation(Source::FromFile), retainPieces(false) {} @@ -66,11 +62,6 @@ struct VToolUnionDetailsInitData quint32 d2id; quint32 indexD1; quint32 indexD2; - VMainGraphicsScene *scene; - VAbstractPattern *doc; - VContainer *data; - Document parse; - Source typeCreation; bool retainPieces; }; @@ -83,7 +74,7 @@ class VToolUnionDetails : public VAbstractTool public: static VToolUnionDetails *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolUnionDetails *Create(const quint32 _id, const VToolUnionDetailsInitData &initData); + static VToolUnionDetails *Create(VToolUnionDetailsInitData initData); static const QString ToolType; static const QString TagDetail; @@ -129,7 +120,7 @@ private: /** @brief indexD2 index edge in second detail. */ quint32 indexD2; - VToolUnionDetails(quint32 id, const VToolUnionDetailsInitData &initData, QObject *parent = nullptr); + VToolUnionDetails(const VToolUnionDetailsInitData &initData, QObject *parent = nullptr); void AddDetail(QDomElement &domElement, const VPiece &d) const; void AddToModeling(const QDomElement &domElement); From 7864ae9572a69354b839150d9dbeab73a5b6fe0e Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Sep 2017 10:19:02 +0300 Subject: [PATCH 10/12] Added support for tool True Darts. --HG-- branch : feature --- src/app/valentina/xml/vpattern.cpp | 2 + src/libs/ifc/ifcdef.cpp | 2 + src/libs/ifc/ifcdef.h | 2 + src/libs/ifc/schema/pattern/v0.6.3.xsd | 2 + .../tooldoublepoint/vtooldoublepoint.cpp | 87 ++++++++++--- .../tooldoublepoint/vtooldoublepoint.h | 4 + .../tooldoublepoint/vtooltruedarts.cpp | 18 +-- .../tooldoublepoint/vtooltruedarts.h | 14 +- .../toolsinglepoint/vtoolsinglepoint.cpp | 2 +- .../toolsinglepoint/vtoolsinglepoint.h | 2 +- .../undocommands/label/movedoublelabel.cpp | 12 +- .../undocommands/label/movedoublelabel.h | 10 +- .../undocommands/label/showdoublelabel.cpp | 121 ++++++++++++++++++ .../undocommands/label/showdoublelabel.h | 59 +++++++++ .../vtools/undocommands/label/showlabel.cpp | 4 +- .../vtools/undocommands/label/showlabel.h | 3 +- src/libs/vtools/undocommands/undocommands.pri | 6 +- 17 files changed, 301 insertions(+), 49 deletions(-) create mode 100644 src/libs/vtools/undocommands/label/showdoublelabel.cpp create mode 100644 src/libs/vtools/undocommands/label/showdoublelabel.h diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index de6777e33..360ef865f 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -2186,10 +2186,12 @@ void VPattern::ParseToolTrueDarts(VMainGraphicsScene *scene, const QDomElement & initData.name1 = GetParametrString(domElement, AttrName1, "A"); initData.mx1 = qApp->toPixel(GetParametrDouble(domElement, AttrMx1, "10.0")); initData.my1 = qApp->toPixel(GetParametrDouble(domElement, AttrMy1, "15.0")); + initData.showLabel1 = GetParametrBool(domElement, AttrShowLabel1, trueStr); initData.name2 = GetParametrString(domElement, AttrName2, "A"); initData.mx2 = qApp->toPixel(GetParametrDouble(domElement, AttrMx2, "10.0")); initData.my2 = qApp->toPixel(GetParametrDouble(domElement, AttrMy2, "15.0")); + initData.showLabel2 = GetParametrBool(domElement, AttrShowLabel2, trueStr); VToolTrueDarts::Create(initData); } diff --git a/src/libs/ifc/ifcdef.cpp b/src/libs/ifc/ifcdef.cpp index 33e62e8f0..744338e00 100644 --- a/src/libs/ifc/ifcdef.cpp +++ b/src/libs/ifc/ifcdef.cpp @@ -123,6 +123,8 @@ const QString AttrInLayout = QStringLiteral("inLayout"); const QString AttrRotationAngle = QStringLiteral("rotationAngle"); const QString AttrClosed = QStringLiteral("closed"); const QString AttrShowLabel = QStringLiteral("showLabel"); +const QString AttrShowLabel1 = QStringLiteral("showLabel1"); +const QString AttrShowLabel2 = QStringLiteral("showLabel2"); const QString TypeLineNone = QStringLiteral("none"); const QString TypeLineLine = QStringLiteral("hair"); diff --git a/src/libs/ifc/ifcdef.h b/src/libs/ifc/ifcdef.h index 86cdbb41c..fe3d6ea84 100644 --- a/src/libs/ifc/ifcdef.h +++ b/src/libs/ifc/ifcdef.h @@ -142,6 +142,8 @@ extern const QString AttrIdObject; extern const QString AttrInLayout; extern const QString AttrClosed; extern const QString AttrShowLabel; +extern const QString AttrShowLabel1; +extern const QString AttrShowLabel2; extern const QString TypeLineNone; extern const QString TypeLineLine; diff --git a/src/libs/ifc/schema/pattern/v0.6.3.xsd b/src/libs/ifc/schema/pattern/v0.6.3.xsd index 3a990fe84..ff5e59890 100644 --- a/src/libs/ifc/schema/pattern/v0.6.3.xsd +++ b/src/libs/ifc/schema/pattern/v0.6.3.xsd @@ -217,6 +217,8 @@ + + diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp index a8ff6331c..230ae02f4 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp @@ -38,6 +38,7 @@ #include #include "../../../../undocommands/label/movedoublelabel.h" +#include "../../../../undocommands/label/showdoublelabel.h" #include "../ifc/exception/vexception.h" #include "../ifc/exception/vexceptionbadid.h" #include "../ifc/xml/vabstractpattern.h" @@ -121,6 +122,40 @@ void VToolDoublePoint::GroupVisibility(quint32 object, bool visible) } } +//--------------------------------------------------------------------------------------------------------------------- +bool VToolDoublePoint::IsLabelVisible(quint32 id) const +{ + if (p1id == id) + { + return VAbstractTool::data.GeometricObject(p1id)->IsShowLabel(); + } + else if (p2id == id) + { + return VAbstractTool::data.GeometricObject(p2id)->IsShowLabel(); + } + else + { + return false; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void VToolDoublePoint::SetLabelVisible(quint32 id, bool visible) +{ + if (p1id == id) + { + const QSharedPointer point = VAbstractTool::data.GeometricObject(p1id); + point->SetShowLabel(visible); + firstPoint->RefreshPointGeometry(*point); + } + else if (p2id == id) + { + const QSharedPointer point = VAbstractTool::data.GeometricObject(p2id); + point->SetShowLabel(visible); + secondPoint->RefreshPointGeometry(*point); + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolDoublePoint::Label1ChangePosition(const QPointF &pos) { @@ -248,7 +283,7 @@ void VToolDoublePoint::UpdateNamePosition(quint32 id) { const VPointF *p1 = VAbstractTool::data.GeometricObject(p1id).data(); - auto moveLabel = new MoveDoubleLabel(doc, p1->mx(), p1->my(), DoublePoint::FirstPoint, m_id, p1id); + auto moveLabel = new MoveDoubleLabel(doc, p1->mx(), p1->my(), MoveDoublePoint::FirstPoint, m_id, p1id); connect(moveLabel, &MoveDoubleLabel::ChangePosition, this, &VToolDoublePoint::DoChangePosition); qApp->getUndoStack()->push(moveLabel); } @@ -256,7 +291,7 @@ void VToolDoublePoint::UpdateNamePosition(quint32 id) { const VPointF *p2 = VAbstractTool::data.GeometricObject(p2id).data(); - auto moveLabel = new MoveDoubleLabel(doc, p2->mx(), p2->my(), DoublePoint::SecondPoint, m_id, p2id); + auto moveLabel = new MoveDoubleLabel(doc, p2->mx(), p2->my(), MoveDoublePoint::SecondPoint, m_id, p2id); connect(moveLabel, &MoveDoubleLabel::ChangePosition, this, &VToolDoublePoint::DoChangePosition); qApp->getUndoStack()->push(moveLabel); } @@ -324,38 +359,43 @@ void VToolDoublePoint::SaveOptions(QDomElement &tag, QSharedPointer &o { VDrawTool::SaveOptions(tag, obj); + auto SavePoint1 = [this](QDomElement &tag, const QSharedPointer &point) + { + doc->SetAttribute(tag, AttrName1, point->name()); + doc->SetAttribute(tag, AttrMx1, qApp->fromPixel(point->mx())); + doc->SetAttribute(tag, AttrMy1, qApp->fromPixel(point->my())); + doc->SetAttribute(tag, AttrShowLabel1, point->IsShowLabel()); + }; + + auto SavePoint2 = [this](QDomElement &tag, const QSharedPointer &point) + { + doc->SetAttribute(tag, AttrName2, point->name()); + doc->SetAttribute(tag, AttrMx2, qApp->fromPixel(point->mx())); + doc->SetAttribute(tag, AttrMy2, qApp->fromPixel(point->my())); + doc->SetAttribute(tag, AttrShowLabel2, point->IsShowLabel()); + }; + if (obj->id() == p1id) { QSharedPointer point = qSharedPointerDynamicCast(obj); SCASSERT(point.isNull() == false) - doc->SetAttribute(tag, AttrName1, point->name()); - doc->SetAttribute(tag, AttrMx1, qApp->fromPixel(point->mx())); - doc->SetAttribute(tag, AttrMy1, qApp->fromPixel(point->my())); + SavePoint1(tag, point); } else if (obj->id() == p2id) { QSharedPointer point = qSharedPointerDynamicCast(obj); SCASSERT(point.isNull() == false) - doc->SetAttribute(tag, AttrName2, point->name()); - doc->SetAttribute(tag, AttrMx2, qApp->fromPixel(point->mx())); - doc->SetAttribute(tag, AttrMy2, qApp->fromPixel(point->my())); + SavePoint2(tag, point); } else { - VPointF *p1 = VAbstractTool::data.GeometricObject(p1id).data(); - VPointF *p2 = VAbstractTool::data.GeometricObject(p2id).data(); - doc->SetAttribute(tag, AttrPoint1, p1id); - doc->SetAttribute(tag, AttrName1, p1->name()); - doc->SetAttribute(tag, AttrMx1, qApp->fromPixel(p1->mx())); - doc->SetAttribute(tag, AttrMy1, qApp->fromPixel(p1->my())); + SavePoint1(tag, VAbstractTool::data.GeometricObject(p1id)); doc->SetAttribute(tag, AttrPoint2, p2id); - doc->SetAttribute(tag, AttrName2, p2->name()); - doc->SetAttribute(tag, AttrMx2, qApp->fromPixel(p2->mx())); - doc->SetAttribute(tag, AttrMy2, qApp->fromPixel(p2->my())); + SavePoint2(tag, VAbstractTool::data.GeometricObject(p2id)); } } @@ -368,6 +408,19 @@ void VToolDoublePoint::AddToFile() AddToCalculation(domElement); } +//--------------------------------------------------------------------------------------------------------------------- +void VToolDoublePoint::ChangeLabelVisibility(quint32 id, bool visible) +{ + if (id == p1id) + { + qApp->getUndoStack()->push(new ShowDoubleLabel(doc, m_id, p1id, visible, ShowDoublePoint::FirstPoint)); + } + else if (id == p2id) + { + qApp->getUndoStack()->push(new ShowDoubleLabel(doc, m_id, p2id, visible, ShowDoublePoint::SecondPoint)); + } +} + //--------------------------------------------------------------------------------------------------------------------- QString VToolDoublePoint::ComplexToolTip(quint32 itemId) const { diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.h index c4e2453d0..e66baa9eb 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.h @@ -63,6 +63,9 @@ public: void setNameP2(const QString &name); virtual void GroupVisibility(quint32 object, bool visible) Q_DECL_OVERRIDE; + + virtual bool IsLabelVisible(quint32 id) const Q_DECL_OVERRIDE; + virtual void SetLabelVisible(quint32 id, bool visible) Q_DECL_OVERRIDE; public slots: void Label1ChangePosition(const QPointF &pos); void Label2ChangePosition(const QPointF &pos); @@ -93,6 +96,7 @@ protected: virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void AddToFile() Q_DECL_OVERRIDE; + virtual void ChangeLabelVisibility(quint32 id, bool visible) Q_DECL_OVERRIDE; QString ComplexToolTip(quint32 itemId) const; diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp index 38fa56219..e712164e3 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp @@ -154,20 +154,22 @@ VToolTrueDarts *VToolTrueDarts::Create(VToolTrueDartsInitData initData) static_cast(*dartP1), static_cast(*dartP2), static_cast(*dartP3), fPoint1, fPoint2); + VPointF *p1 = new VPointF(fPoint1, initData.name1, initData.mx1, initData.my1, initData.id); + p1->SetShowLabel(initData.showLabel1); + + VPointF *p2 = new VPointF(fPoint2, initData.name2, initData.mx2, initData.my2, initData.id); + p2->SetShowLabel(initData.showLabel2); + if (initData.typeCreation == Source::FromGui) { initData.id = VContainer::getNextId();//Just reserve id for tool - initData.p1id = initData.data->AddGObject(new VPointF(fPoint1, initData.name1, initData.mx1, initData.my1, - initData.id)); - initData.p2id = initData.data->AddGObject(new VPointF(fPoint2, initData.name2, initData.mx2, initData.my2, - initData.id)); + initData.p1id = initData.data->AddGObject(p1); + initData.p2id = initData.data->AddGObject(p2); } else { - initData.data->UpdateGObject(initData.p1id, new VPointF(fPoint1, initData.name1, initData.mx1, initData.my1, - initData.id)); - initData.data->UpdateGObject(initData.p2id, new VPointF(fPoint2, initData.name2, initData.mx2, initData.my2, - initData.id)); + initData.data->UpdateGObject(initData.p1id, p1); + initData.data->UpdateGObject(initData.p2id, p2); if (initData.parse != Document::FullParse) { initData.doc->UpdateToolData(initData.id, initData.data); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h index 348a4341e..2729f5be9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.h @@ -58,9 +58,11 @@ struct VToolTrueDartsInitData : public VAbstractToolInitData name1(), mx1(10), my1(15), + showLabel1(true), name2(), mx2(10), - my2(15) + my2(15), + showLabel2(true) {} quint32 p1id; @@ -71,11 +73,13 @@ struct VToolTrueDartsInitData : public VAbstractToolInitData quint32 dartP2Id; quint32 dartP3Id; QString name1; - qreal mx1; - qreal my1; + qreal mx1; + qreal my1; + bool showLabel1; QString name2; - qreal mx2; - qreal my2; + qreal mx2; + qreal my2; + bool showLabel2; }; class VToolTrueDarts : public VToolDoublePoint diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index 8fe6d6ddc..ee4425a77 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -311,7 +311,7 @@ void VToolSinglePoint::SaveOptions(QDomElement &tag, QSharedPointer &o doc->SetAttribute(tag, AttrName, point->name()); doc->SetAttribute(tag, AttrMx, qApp->fromPixel(point->mx())); doc->SetAttribute(tag, AttrMy, qApp->fromPixel(point->my())); - doc->SetAttribute(tag, AttrShowLabel, point->IsShowLabel()); + doc->SetAttribute(tag, AttrShowLabel, point->IsShowLabel()); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h index 5d21c18b3..4167323a9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.h @@ -104,7 +104,7 @@ protected: virtual void keyReleaseEvent(QKeyEvent * event) Q_DECL_OVERRIDE; virtual void contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; - virtual void ChangeLabelVisibility(quint32 id, bool visible); + virtual void ChangeLabelVisibility(quint32 id, bool visible) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolSinglePoint) }; diff --git a/src/libs/vtools/undocommands/label/movedoublelabel.cpp b/src/libs/vtools/undocommands/label/movedoublelabel.cpp index 8a3a4d505..b4970eb54 100644 --- a/src/libs/vtools/undocommands/label/movedoublelabel.cpp +++ b/src/libs/vtools/undocommands/label/movedoublelabel.cpp @@ -39,13 +39,13 @@ #include "moveabstractlabel.h" //--------------------------------------------------------------------------------------------------------------------- -MoveDoubleLabel::MoveDoubleLabel(VAbstractPattern *doc, const double &x, const double &y, DoublePoint type, +MoveDoubleLabel::MoveDoubleLabel(VAbstractPattern *doc, const double &x, const double &y, MoveDoublePoint type, quint32 toolId, quint32 pointId, QUndoCommand *parent) : MoveAbstractLabel(doc, pointId, x, y, parent), m_type(type), m_idTool(toolId) { - if (type == DoublePoint::FirstPoint) + if (type == MoveDoublePoint::FirstPoint) { setText(tr("move the first dart label")); } @@ -57,7 +57,7 @@ MoveDoubleLabel::MoveDoubleLabel(VAbstractPattern *doc, const double &x, const d const QDomElement domElement = doc->elementById(m_idTool, VAbstractPattern::TagPoint); if (domElement.isElement()) { - if (type == DoublePoint::FirstPoint) + if (type == MoveDoublePoint::FirstPoint) { m_oldMx = qApp->toPixel(doc->GetParametrDouble(domElement, AttrMx1, "0.0")); m_oldMy = qApp->toPixel(doc->GetParametrDouble(domElement, AttrMy1, "0.0")); @@ -100,7 +100,7 @@ bool MoveDoubleLabel::mergeWith(const QUndoCommand *command) m_newMx = moveCommand->GetNewMx(); m_newMy = moveCommand->GetNewMy(); - if (m_type == DoublePoint::FirstPoint) + if (m_type == MoveDoublePoint::FirstPoint) { qCDebug(vUndo, "Label new Mx1 %f", m_newMx); qCDebug(vUndo, "Label new My1 %f", m_newMy); @@ -122,7 +122,7 @@ int MoveDoubleLabel::id() const //--------------------------------------------------------------------------------------------------------------------- void MoveDoubleLabel::Do(double mx, double my) { - if (m_type == DoublePoint::FirstPoint) + if (m_type == MoveDoublePoint::FirstPoint) { qCDebug(vUndo, "New mx1 %f", mx); qCDebug(vUndo, "New my1 %f", my); @@ -136,7 +136,7 @@ void MoveDoubleLabel::Do(double mx, double my) QDomElement domElement = doc->elementById(m_idTool, VAbstractPattern::TagPoint); if (domElement.isElement()) { - if (m_type == DoublePoint::FirstPoint) + if (m_type == MoveDoublePoint::FirstPoint) { doc->SetAttribute(domElement, AttrMx1, QString().setNum(qApp->fromPixel(mx))); doc->SetAttribute(domElement, AttrMy1, QString().setNum(qApp->fromPixel(my))); diff --git a/src/libs/vtools/undocommands/label/movedoublelabel.h b/src/libs/vtools/undocommands/label/movedoublelabel.h index 4864c1d2f..201256943 100644 --- a/src/libs/vtools/undocommands/label/movedoublelabel.h +++ b/src/libs/vtools/undocommands/label/movedoublelabel.h @@ -37,13 +37,13 @@ #include "moveabstractlabel.h" -enum class DoublePoint: char { FirstPoint, SecondPoint }; +enum class MoveDoublePoint: char { FirstPoint, SecondPoint }; class MoveDoubleLabel : public MoveAbstractLabel { Q_OBJECT public: - MoveDoubleLabel(VAbstractPattern *doc, const double &x, const double &y, DoublePoint type, + MoveDoubleLabel(VAbstractPattern *doc, const double &x, const double &y, MoveDoublePoint type, quint32 toolId, quint32 pointId, QUndoCommand *parent = nullptr); virtual ~MoveDoubleLabel() Q_DECL_OVERRIDE; @@ -51,17 +51,17 @@ public: virtual int id() const Q_DECL_OVERRIDE; quint32 GetToolId() const; - DoublePoint GetPointType() const; + MoveDoublePoint GetPointType() const; protected: virtual void Do(double mx, double my) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(MoveDoubleLabel) - DoublePoint m_type; + MoveDoublePoint m_type; quint32 m_idTool; }; //--------------------------------------------------------------------------------------------------------------------- -inline DoublePoint MoveDoubleLabel::GetPointType() const +inline MoveDoublePoint MoveDoubleLabel::GetPointType() const { return m_type; } diff --git a/src/libs/vtools/undocommands/label/showdoublelabel.cpp b/src/libs/vtools/undocommands/label/showdoublelabel.cpp new file mode 100644 index 000000000..710a9e130 --- /dev/null +++ b/src/libs/vtools/undocommands/label/showdoublelabel.cpp @@ -0,0 +1,121 @@ +/************************************************************************ + ** + ** @file + ** @author Roman Telezhynskyi + ** @date 20 9, 2017 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2017 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include "showdoublelabel.h" + +#include + +#include "../ifc/xml/vabstractpattern.h" +#include "../vmisc/logging.h" +#include "../vwidgets/vmaingraphicsview.h" +#include "../vmisc/vabstractapplication.h" +#include "../vtools/tools/drawTools/vdrawtool.h" + +//--------------------------------------------------------------------------------------------------------------------- +ShowDoubleLabel::ShowDoubleLabel(VAbstractPattern *doc, quint32 toolId, quint32 pointId, bool visible, + ShowDoublePoint type, QUndoCommand *parent) + : VUndoCommand(QDomElement(), doc, parent), + m_visible(visible), + m_oldVisible(not visible), + m_scene(qApp->getCurrentScene()), + m_type(type), + m_idTool(toolId) +{ + nodeId = pointId; + qCDebug(vUndo, "Point id %u", nodeId); + + if (type == ShowDoublePoint::FirstPoint) + { + setText(tr("show the first dart label")); + } + else + { + setText(tr("show the second dart label")); + } + + const QDomElement domElement = doc->elementById(m_idTool, VAbstractPattern::TagPoint); + if (domElement.isElement()) + { + if (type == ShowDoublePoint::FirstPoint) + { + m_oldVisible = doc->GetParametrBool(domElement, AttrShowLabel1, trueStr); + } + else + { + m_oldVisible = doc->GetParametrBool(domElement, AttrShowLabel2, trueStr); + } + } + else + { + qCDebug(vUndo, "Can't find point with id = %u.", m_idTool); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void ShowDoubleLabel::undo() +{ + qCDebug(vUndo, "Undo."); + + Do(m_oldVisible); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ShowDoubleLabel::redo() +{ + qCDebug(vUndo, "Redo."); + + Do(m_visible); +} + +//--------------------------------------------------------------------------------------------------------------------- +void ShowDoubleLabel::Do(bool visible) +{ + QDomElement domElement = doc->elementById(m_idTool, VAbstractPattern::TagPoint); + if (domElement.isElement()) + { + if (m_type == ShowDoublePoint::FirstPoint) + { + doc->SetAttribute(domElement, AttrShowLabel1, visible); + } + else + { + doc->SetAttribute(domElement, AttrShowLabel2, visible); + } + + if (VDrawTool *tool = qobject_cast(VAbstractPattern::getTool(m_idTool))) + { + tool->SetLabelVisible(nodeId, visible); + } + VMainGraphicsView::NewSceneRect(m_scene, qApp->getSceneView()); + } + else + { + qCDebug(vUndo, "Can't find point with id = %u.", m_idTool); + } +} + diff --git a/src/libs/vtools/undocommands/label/showdoublelabel.h b/src/libs/vtools/undocommands/label/showdoublelabel.h new file mode 100644 index 000000000..0d2309e78 --- /dev/null +++ b/src/libs/vtools/undocommands/label/showdoublelabel.h @@ -0,0 +1,59 @@ +/************************************************************************ + ** + ** @file + ** @author Roman Telezhynskyi + ** @date 20 9, 2017 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2017 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#ifndef SHOWDOUBLELABEL_H +#define SHOWDOUBLELABEL_H + +#include "../vundocommand.h" + +class QGraphicsScene; + +enum class ShowDoublePoint: char { FirstPoint, SecondPoint }; + +class ShowDoubleLabel : public VUndoCommand +{ +public: + ShowDoubleLabel(VAbstractPattern *doc, quint32 toolId, quint32 pointId, bool visible, ShowDoublePoint type, + QUndoCommand *parent = nullptr); + virtual ~ShowDoubleLabel()=default; + + virtual void undo() Q_DECL_OVERRIDE; + virtual void redo() Q_DECL_OVERRIDE; +private: + Q_DISABLE_COPY(ShowDoubleLabel) + bool m_visible; + bool m_oldVisible; + //Need for resizing scene rect + QGraphicsScene *m_scene; + ShowDoublePoint m_type; + quint32 m_idTool; + + void Do(bool visible); +}; + +#endif // SHOWDOUBLELABEL_H diff --git a/src/libs/vtools/undocommands/label/showlabel.cpp b/src/libs/vtools/undocommands/label/showlabel.cpp index 485099147..179681e61 100644 --- a/src/libs/vtools/undocommands/label/showlabel.cpp +++ b/src/libs/vtools/undocommands/label/showlabel.cpp @@ -80,13 +80,13 @@ void ShowLabel::Do(bool visible) QDomElement domElement = doc->elementById(nodeId, VAbstractPattern::TagPoint); if (domElement.isElement()) { - doc->SetAttribute(domElement, AttrShowLabel, QString().setNum(visible)); + doc->SetAttribute(domElement, AttrShowLabel, visible); - VMainGraphicsView::NewSceneRect(m_scene, qApp->getSceneView()); if (VDrawTool *tool = qobject_cast(VAbstractPattern::getTool(nodeId))) { tool->SetLabelVisible(nodeId, visible); } + VMainGraphicsView::NewSceneRect(m_scene, qApp->getSceneView()); } else { diff --git a/src/libs/vtools/undocommands/label/showlabel.h b/src/libs/vtools/undocommands/label/showlabel.h index 540b43c0a..f9562b0ad 100644 --- a/src/libs/vtools/undocommands/label/showlabel.h +++ b/src/libs/vtools/undocommands/label/showlabel.h @@ -36,8 +36,7 @@ class QGraphicsScene; class ShowLabel : public VUndoCommand { public: - ShowLabel(VAbstractPattern *doc, quint32 id, bool visible, - QUndoCommand *parent = nullptr); + ShowLabel(VAbstractPattern *doc, quint32 id, bool visible, QUndoCommand *parent = nullptr); virtual ~ShowLabel()=default; virtual void undo() Q_DECL_OVERRIDE; diff --git a/src/libs/vtools/undocommands/undocommands.pri b/src/libs/vtools/undocommands/undocommands.pri index 731009a06..d689b7c92 100644 --- a/src/libs/vtools/undocommands/undocommands.pri +++ b/src/libs/vtools/undocommands/undocommands.pri @@ -25,7 +25,8 @@ HEADERS += \ $$PWD/savepieceoptions.h \ $$PWD/togglepieceinlayout.h \ $$PWD/savepiecepathoptions.h \ - $$PWD/label/showlabel.h + $$PWD/label/showlabel.h \ + $$PWD/label/showdoublelabel.h SOURCES += \ $$PWD/addtocalc.cpp \ @@ -51,4 +52,5 @@ SOURCES += \ $$PWD/savepieceoptions.cpp \ $$PWD/togglepieceinlayout.cpp \ $$PWD/savepiecepathoptions.cpp \ - $$PWD/label/showlabel.cpp + $$PWD/label/showlabel.cpp \ + $$PWD/label/showdoublelabel.cpp From af1e01c243d2cd3016f740d12c0740dba5e0fb8b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Sep 2017 10:28:49 +0300 Subject: [PATCH 11/12] Hide Show label option for not point objects. --HG-- branch : feature --- .../vtools/tools/drawTools/toolcurve/vtoolarc.cpp | 3 ++- .../tools/drawTools/toolcurve/vtoolarcwithlength.cpp | 3 ++- .../tools/drawTools/toolcurve/vtoolcubicbezier.cpp | 3 ++- .../drawTools/toolcurve/vtoolcubicbezierpath.cpp | 3 ++- .../tools/drawTools/toolcurve/vtoolellipticalarc.cpp | 3 ++- .../vtools/tools/drawTools/toolcurve/vtoolspline.cpp | 3 ++- .../tools/drawTools/toolcurve/vtoolsplinepath.cpp | 3 ++- src/libs/vtools/tools/drawTools/vdrawtool.h | 11 +++++++++-- src/libs/vtools/tools/drawTools/vtoolline.cpp | 3 ++- 9 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp index 190a40d3c..659f4ec96 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp @@ -303,9 +303,10 @@ void VToolArc::ShowVisualization(bool show) //--------------------------------------------------------------------------------------------------------------------- void VToolArc::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { + Q_UNUSED(id) try { - ContextMenu(event, id); + ContextMenu(event); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp index fd513ae21..241f9b79c 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp @@ -281,9 +281,10 @@ void VToolArcWithLength::ShowVisualization(bool show) //--------------------------------------------------------------------------------------------------------------------- void VToolArcWithLength::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { + Q_UNUSED(id) try { - ContextMenu(event, id); + ContextMenu(event); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp index 71cd2547c..94a68fafb 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp @@ -193,9 +193,10 @@ void VToolCubicBezier::ShowVisualization(bool show) //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezier::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { + Q_UNUSED(id) try { - ContextMenu(event, id); + ContextMenu(event); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp index a8b0a6601..306aa1321 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp @@ -181,9 +181,10 @@ void VToolCubicBezierPath::ShowVisualization(bool show) //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezierPath::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { + Q_UNUSED(id) try { - ContextMenu(event, id); + ContextMenu(event); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp index 29ae8a164..5aebc6070 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp @@ -366,9 +366,10 @@ void VToolEllipticalArc::ShowVisualization(bool show) //--------------------------------------------------------------------------------------------------------------------- void VToolEllipticalArc::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { + Q_UNUSED(id) try { - ContextMenu(event, id); + ContextMenu(event); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp index b195cd143..a9cebcb89 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp @@ -545,9 +545,10 @@ void VToolSpline::RefreshCtrlPoints() //--------------------------------------------------------------------------------------------------------------------- void VToolSpline::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { + Q_UNUSED(id) try { - ContextMenu(event, id); + ContextMenu(event); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp index 025481e46..8cede3b33 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp @@ -278,9 +278,10 @@ void VToolSplinePath::EnableToolMove(bool move) //--------------------------------------------------------------------------------------------------------------------- void VToolSplinePath::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { + Q_UNUSED(id) try { - ContextMenu(event, id); + ContextMenu(event); } catch(const VExceptionToolWasDeleted &e) { diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.h b/src/libs/vtools/tools/drawTools/vdrawtool.h index c2169c25c..548c6de59 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.h +++ b/src/libs/vtools/tools/drawTools/vdrawtool.h @@ -110,7 +110,7 @@ protected: virtual void ChangeLabelVisibility(quint32 id, bool visible); template - void ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemId, + void ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemId = NULL_ID, const RemoveOption &showRemove = RemoveOption::Enable, const Referens &ref = Referens::Follow); @@ -151,7 +151,14 @@ void VDrawTool::ContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 itemI QAction *actionShowLabel = menu.addAction(tr("Show label")); actionShowLabel->setCheckable(true); - actionShowLabel->setChecked(IsLabelVisible(itemId)); + if (itemId != NULL_ID) + { + actionShowLabel->setChecked(IsLabelVisible(itemId)); + } + else + { + actionShowLabel->setVisible(false); + } QAction *actionRemove = menu.addAction(QIcon::fromTheme("edit-delete"), tr("Delete")); if (showRemove == RemoveOption::Enable) diff --git a/src/libs/vtools/tools/drawTools/vtoolline.cpp b/src/libs/vtools/tools/drawTools/vtoolline.cpp index a86f4ba20..a2bc22acb 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.cpp +++ b/src/libs/vtools/tools/drawTools/vtoolline.cpp @@ -252,9 +252,10 @@ void VToolLine::AllowSelecting(bool enabled) //--------------------------------------------------------------------------------------------------------------------- void VToolLine::ShowContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id) { + Q_UNUSED(id) try { - ContextMenu(event, id); + ContextMenu(event); } catch(const VExceptionToolWasDeleted &e) { From f7c75111cea31bd5417df991b7aa93f9ebc8f92f Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Sep 2017 12:10:57 +0300 Subject: [PATCH 12/12] Added support for operation tools. --HG-- branch : feature --- src/libs/ifc/schema/pattern/v0.6.3.xsd | 1 + src/libs/vgeometry/vpointf.cpp | 12 ++- .../operation/flipping/vabstractflipping.cpp | 15 +-- .../operation/flipping/vabstractflipping.h | 2 +- .../operation/vabstractoperation.cpp | 48 +++++++++ .../drawTools/operation/vabstractoperation.h | 5 + .../tools/drawTools/operation/vtoolmove.cpp | 17 ++- .../tools/drawTools/operation/vtoolmove.h | 2 +- .../drawTools/operation/vtoolrotation.cpp | 13 +-- .../tools/drawTools/operation/vtoolrotation.h | 2 +- .../undocommands/label/operationmovelabel.cpp | 40 ------- .../undocommands/label/operationmovelabel.h | 2 - .../undocommands/label/operationshowlabel.cpp | 101 ++++++++++++++++++ .../undocommands/label/operationshowlabel.h | 57 ++++++++++ .../undocommands/label/showdoublelabel.cpp | 4 +- src/libs/vtools/undocommands/undocommands.pri | 6 +- src/libs/vtools/undocommands/vundocommand.cpp | 40 +++++++ src/libs/vtools/undocommands/vundocommand.h | 2 + 18 files changed, 295 insertions(+), 74 deletions(-) create mode 100644 src/libs/vtools/undocommands/label/operationshowlabel.cpp create mode 100644 src/libs/vtools/undocommands/label/operationshowlabel.h diff --git a/src/libs/ifc/schema/pattern/v0.6.3.xsd b/src/libs/ifc/schema/pattern/v0.6.3.xsd index ff5e59890..96f6f07fe 100644 --- a/src/libs/ifc/schema/pattern/v0.6.3.xsd +++ b/src/libs/ifc/schema/pattern/v0.6.3.xsd @@ -252,6 +252,7 @@ + diff --git a/src/libs/vgeometry/vpointf.cpp b/src/libs/vgeometry/vpointf.cpp index 369d2cb12..df1316064 100644 --- a/src/libs/vgeometry/vpointf.cpp +++ b/src/libs/vgeometry/vpointf.cpp @@ -111,21 +111,27 @@ VPointF::operator QPointF() const VPointF VPointF::Rotate(const QPointF &originPoint, qreal degrees, const QString &prefix) const { const QPointF p = RotatePF(originPoint, toQPointF(), degrees); - return VPointF(p, name() + prefix, mx(), my()); + VPointF rotated(p, name() + prefix, mx(), my()); + rotated.SetShowLabel(IsShowLabel()); + return rotated; } //--------------------------------------------------------------------------------------------------------------------- VPointF VPointF::Flip(const QLineF &axis, const QString &prefix) const { const QPointF p = FlipPF(axis, toQPointF()); - return VPointF(p, name() + prefix, mx(), my()); + VPointF flipped(p, name() + prefix, mx(), my()); + flipped.SetShowLabel(IsShowLabel()); + return flipped; } //--------------------------------------------------------------------------------------------------------------------- VPointF VPointF::Move(qreal length, qreal angle, const QString &prefix) const { const QPointF p = MovePF(toQPointF(), length, angle); - return VPointF(p, name() + prefix, mx(), my()); + VPointF moved(p, name() + prefix, mx(), my()); + moved.SetShowLabel(IsShowLabel()); + return moved; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.cpp index 1e1f37e2a..db3342521 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.cpp @@ -120,8 +120,7 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") case GOType::Point: { const DestinationItem &item = initData.destination.at(i); - UpdatePoint(initData.id, idObject, fPoint, sPoint, initData.suffix, initData.data, item.id, item.mx, - item.my); + UpdatePoint(initData.id, idObject, fPoint, sPoint, initData.suffix, initData.data, item); break; } case GOType::Arc: @@ -171,6 +170,7 @@ DestinationItem VAbstractFlipping::CreatePoint(quint32 idTool, quint32 idItem, c DestinationItem item; item.mx = rotated.mx(); item.my = rotated.my(); + item.showLabel = rotated.IsShowLabel(); item.id = data->AddGObject(new VPointF(rotated)); return item; } @@ -187,15 +187,16 @@ DestinationItem VAbstractFlipping::CreateArc(quint32 idTool, quint32 idItem, con //--------------------------------------------------------------------------------------------------------------------- void VAbstractFlipping::UpdatePoint(quint32 idTool, quint32 idItem, const QPointF &firstPoint, - const QPointF &secondPoint, const QString &suffix, VContainer *data, quint32 id, - qreal mx, qreal my) + const QPointF &secondPoint, const QString &suffix, VContainer *data, + const DestinationItem &item) { const QSharedPointer point = data->GeometricObject(idItem); VPointF rotated = point->Flip(QLineF(firstPoint, secondPoint), suffix); rotated.setIdObject(idTool); - rotated.setMx(mx); - rotated.setMy(my); - data->UpdateGObject(id, new VPointF(rotated)); + rotated.setMx(item.mx); + rotated.setMy(item.my); + rotated.SetShowLabel(item.showLabel); + data->UpdateGObject(item.id, new VPointF(rotated)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.h b/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.h index f678ba646..fe112f06d 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.h +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vabstractflipping.h @@ -62,7 +62,7 @@ protected: const QPointF &secondPoint, const QString &suffix, VContainer *data); static void UpdatePoint(quint32 idTool, quint32 idItem, const QPointF &firstPoint, const QPointF &secondPoint, - const QString &suffix, VContainer *data, quint32 id, qreal mx, qreal my); + const QString &suffix, VContainer *data, const DestinationItem &item); template static void UpdateItem(quint32 idTool, quint32 idItem, const QPointF &firstPoint, const QPointF &secondPoint, const QString &suffix, VContainer *data, quint32 id); diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp index 52b2fa0d3..8f64535c4 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp @@ -28,6 +28,7 @@ #include "vabstractoperation.h" #include "../../../undocommands/label/operationmovelabel.h" +#include "../../../undocommands/label/operationshowlabel.h" #include "../vgeometry/vpointf.h" const QString VAbstractOperation::TagItem = QStringLiteral("item"); @@ -84,6 +85,38 @@ void VAbstractOperation::paint(QPainter *painter, const QStyleOptionGraphicsItem Q_UNUSED(widget) } +//--------------------------------------------------------------------------------------------------------------------- +bool VAbstractOperation::IsLabelVisible(quint32 id) const +{ + if (operatedObjects.contains(id)) + { + VAbstractSimple *obj = operatedObjects.value(id); + if (obj && obj->GetType() == GOType::Point) + { + return VAbstractTool::data.GeometricObject(id)->IsShowLabel(); + } + } + + return false; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractOperation::SetLabelVisible(quint32 id, bool visible) +{ + if (operatedObjects.contains(id)) + { + VAbstractSimple *obj = operatedObjects.value(id); + if (obj && obj->GetType() == GOType::Point) + { + VSimplePoint *item = qobject_cast(obj); + SCASSERT(item != nullptr) + const QSharedPointer point = VAbstractTool::data.GeometricObject(id); + point->SetShowLabel(visible); + item->RefreshPointGeometry(*point); + } + } +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractOperation::ExtractData(const QDomElement &domElement, VAbstractOperationInitData &initData) { @@ -118,6 +151,7 @@ void VAbstractOperation::ExtractData(const QDomElement &domElement, VAbstractOpe d.id = VDomDocument::GetParametrUInt(element, AttrIdObject, NULL_ID_STR); d.mx = qApp->toPixel(VDomDocument::GetParametrDouble(element, AttrMx, QString::number(INT_MAX))); d.my = qApp->toPixel(VDomDocument::GetParametrDouble(element, AttrMy, QString::number(INT_MAX))); + d.showLabel = VDomDocument::GetParametrBool(element, AttrShowLabel, trueStr); initData.destination.append(d); } } @@ -426,6 +460,19 @@ void VAbstractOperation::AddToFile() AddToCalculation(domElement); } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractOperation::ChangeLabelVisibility(quint32 id, bool visible) +{ + if (operatedObjects.contains(id)) + { + VAbstractSimple *obj = operatedObjects.value(id); + if (obj && obj->GetType() == GOType::Point) + { + qApp->getUndoStack()->push(new OperationShowLabel(doc, m_id, id, visible)); + } + } +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractOperation::UpdateNamePosition(quint32 id) { @@ -460,6 +507,7 @@ void VAbstractOperation::SaveSourceDestination(QDomElement &tag) { doc->SetAttribute(item, AttrMx, qApp->fromPixel(destination.at(i).mx)); doc->SetAttribute(item, AttrMy, qApp->fromPixel(destination.at(i).my)); + doc->SetAttribute(item, AttrShowLabel, destination.at(i).showLabel); } tagObjects.appendChild(item); diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h index 195c6819b..4e82a5aac 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.h @@ -47,6 +47,7 @@ struct DestinationItem quint32 id; qreal mx; qreal my; + bool showLabel; }; struct VAbstractOperationInitData : public VAbstractToolInitData @@ -87,6 +88,9 @@ public: virtual void GroupVisibility(quint32 object, bool visible) Q_DECL_OVERRIDE; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE; + virtual bool IsLabelVisible(quint32 id) const Q_DECL_OVERRIDE; + virtual void SetLabelVisible(quint32 id, bool visible) Q_DECL_OVERRIDE; + static void ExtractData(const QDomElement &domElement, VAbstractOperationInitData &initData); public slots: virtual void FullUpdateFromFile() Q_DECL_OVERRIDE; @@ -131,6 +135,7 @@ protected: QGraphicsItem *parent = nullptr); virtual void AddToFile() Q_DECL_OVERRIDE; + virtual void ChangeLabelVisibility(quint32 id, bool visible) Q_DECL_OVERRIDE; void UpdateNamePosition(quint32 id); void SaveSourceDestination(QDomElement &tag); diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp index 6b9bad08c..b2c73d7ea 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp @@ -191,12 +191,9 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") switch(static_cast(obj->getType())) { case GOType::Point: - { - const DestinationItem &item = initData.destination.at(i); - UpdatePoint(initData.id, idObject, calcAngle, calcLength, initData.suffix, initData.data, item.id, - item.mx, item.my); + UpdatePoint(initData.id, idObject, calcAngle, calcLength, initData.suffix, initData.data, + initData.destination.at(i)); break; - } case GOType::Arc: UpdateArc(initData.id, idObject, calcAngle, calcLength, initData.suffix, initData.data, initData.destination.at(i).id); @@ -397,6 +394,7 @@ DestinationItem VToolMove::CreatePoint(quint32 idTool, quint32 idItem, qreal ang DestinationItem item; item.mx = moved.mx(); item.my = moved.my(); + item.showLabel = moved.IsShowLabel(); item.id = data->AddGObject(new VPointF(moved)); return item; } @@ -413,14 +411,15 @@ DestinationItem VToolMove::CreateArc(quint32 idTool, quint32 idItem, qreal angle //--------------------------------------------------------------------------------------------------------------------- void VToolMove::UpdatePoint(quint32 idTool, quint32 idItem, qreal angle, qreal length, const QString &suffix, - VContainer *data, quint32 id, qreal mx, qreal my) + VContainer *data, const DestinationItem &item) { const QSharedPointer point = data->GeometricObject(idItem); VPointF moved = point->Move(length, angle, suffix); moved.setIdObject(idTool); - moved.setMx(mx); - moved.setMy(my); - data->UpdateGObject(id, new VPointF(moved)); + moved.setMx(item.mx); + moved.setMy(item.my); + moved.SetShowLabel(item.showLabel); + data->UpdateGObject(item.id, new VPointF(moved)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.h b/src/libs/vtools/tools/drawTools/operation/vtoolmove.h index b054f54e9..6043ddd6c 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.h +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.h @@ -111,7 +111,7 @@ private: const QString &suffix, VContainer *data); static void UpdatePoint(quint32 idTool, quint32 idItem, qreal angle, qreal length, const QString &suffix, - VContainer *data, quint32 id, qreal mx, qreal my); + VContainer *data, const DestinationItem &item); template static void UpdateItem(quint32 idTool, quint32 idItem, qreal angle, qreal length, const QString &suffix, VContainer *data, quint32 id); diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp index ae8779bfd..715c6d2b9 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp @@ -208,9 +208,8 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") { case GOType::Point: { - const DestinationItem &item = initData.destination.at(i); UpdatePoint(initData.id, idObject, oPoint, calcAngle, initData.suffix, initData.data, - item.id, item.mx, item.my); + initData.destination.at(i)); break; } case GOType::Arc: @@ -384,6 +383,7 @@ DestinationItem VToolRotation::CreatePoint(quint32 idTool, quint32 idItem, const DestinationItem item; item.mx = rotated.mx(); item.my = rotated.my(); + item.showLabel = rotated.IsShowLabel(); item.id = data->AddGObject(new VPointF(rotated)); return item; } @@ -436,14 +436,15 @@ DestinationItem VToolRotation::CreateCurveWithSegments(quint32 idTool, quint32 i //--------------------------------------------------------------------------------------------------------------------- void VToolRotation::UpdatePoint(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle, - const QString &suffix, VContainer *data, quint32 id, qreal mx, qreal my) + const QString &suffix, VContainer *data, const DestinationItem &item) { const QSharedPointer point = data->GeometricObject(idItem); VPointF rotated = point->Rotate(origin, angle, suffix); rotated.setIdObject(idTool); - rotated.setMx(mx); - rotated.setMy(my); - data->UpdateGObject(id, new VPointF(rotated)); + rotated.setMx(item.mx); + rotated.setMy(item.my); + rotated.SetShowLabel(item.showLabel); + data->UpdateGObject(item.id, new VPointF(rotated)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h index a660aae95..7d8729d77 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.h @@ -111,7 +111,7 @@ private: qreal angle, const QString &suffix, VContainer *data); static void UpdatePoint(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle, - const QString &suffix, VContainer *data, quint32 id, qreal mx, qreal my); + const QString &suffix, VContainer *data, const DestinationItem &item); template static void UpdateItem(quint32 idTool, quint32 idItem, const QPointF &origin, qreal angle, const QString &suffix, VContainer *data, quint32 id); diff --git a/src/libs/vtools/undocommands/label/operationmovelabel.cpp b/src/libs/vtools/undocommands/label/operationmovelabel.cpp index 8bdd50f27..5f675054f 100644 --- a/src/libs/vtools/undocommands/label/operationmovelabel.cpp +++ b/src/libs/vtools/undocommands/label/operationmovelabel.cpp @@ -31,7 +31,6 @@ #include #include -#include "../../tools/drawTools/operation/vtoolrotation.h" #include "../ifc/xml/vabstractpattern.h" #include "../ifc/ifcdef.h" #include "../vmisc/logging.h" @@ -112,42 +111,3 @@ void OperationMoveLabel::Do(double mx, double my) qCDebug(vUndo, "Can't find point with id = %u.", nodeId); } } - -//--------------------------------------------------------------------------------------------------------------------- -QDomElement OperationMoveLabel::GetDestinationObject(quint32 idTool, quint32 idPoint) const -{ - const QDomElement tool = doc->elementById(idTool, VAbstractPattern::TagOperation); - if (tool.isElement()) - { - QDomElement correctDest; - const QDomNodeList nodeList = tool.childNodes(); - for (qint32 i = 0; i < nodeList.size(); ++i) - { - const QDomElement dest = nodeList.at(i).toElement(); - if (not dest.isNull() && dest.isElement() && dest.tagName() == VAbstractOperation::TagDestination) - { - correctDest = dest; - break; - } - } - - if (not correctDest.isNull()) - { - const QDomNodeList destObjects = correctDest.childNodes(); - for (qint32 i = 0; i < destObjects.size(); ++i) - { - const QDomElement obj = destObjects.at(i).toElement(); - if (not obj.isNull() && obj.isElement()) - { - const quint32 id = doc->GetParametrUInt(obj, AttrIdObject, NULL_ID_STR); - if (idPoint == id) - { - return obj; - } - } - } - } - } - - return QDomElement(); -} diff --git a/src/libs/vtools/undocommands/label/operationmovelabel.h b/src/libs/vtools/undocommands/label/operationmovelabel.h index cc516025a..c0918c88d 100644 --- a/src/libs/vtools/undocommands/label/operationmovelabel.h +++ b/src/libs/vtools/undocommands/label/operationmovelabel.h @@ -55,8 +55,6 @@ protected: private: Q_DISABLE_COPY(OperationMoveLabel) quint32 m_idTool; - - QDomElement GetDestinationObject(quint32 idTool, quint32 idPoint) const; }; //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/undocommands/label/operationshowlabel.cpp b/src/libs/vtools/undocommands/label/operationshowlabel.cpp new file mode 100644 index 000000000..12bb6e0b6 --- /dev/null +++ b/src/libs/vtools/undocommands/label/operationshowlabel.cpp @@ -0,0 +1,101 @@ +/************************************************************************ + ** + ** @file + ** @author Roman Telezhynskyi + ** @date 20 9, 2017 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2017 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include "operationshowlabel.h" + +#include + +#include "../ifc/xml/vabstractpattern.h" +#include "../vmisc/logging.h" +#include "../vwidgets/vmaingraphicsview.h" +#include "../vmisc/vabstractapplication.h" +#include "../vtools/tools/drawTools/vdrawtool.h" + +//--------------------------------------------------------------------------------------------------------------------- +OperationShowLabel::OperationShowLabel(VAbstractPattern *doc, quint32 idTool, quint32 idPoint, bool visible, + QUndoCommand *parent) + : VUndoCommand(QDomElement(), doc, parent), + m_visible(visible), + m_oldVisible(not visible), + m_scene(qApp->getCurrentScene()), + m_idTool(idTool) +{ + nodeId = idPoint; + qCDebug(vUndo, "Point id %u", nodeId); + + setText(tr("toggle label")); + + qCDebug(vUndo, "Tool id %u", m_idTool); + + const QDomElement element = GetDestinationObject(m_idTool, nodeId); + if (element.isElement()) + { + m_oldVisible = doc->GetParametrBool(element, AttrShowLabel, trueStr); + } + else + { + qCDebug(vUndo, "Can't find point with id = %u.", nodeId); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void OperationShowLabel::undo() +{ + qCDebug(vUndo, "Undo."); + + Do(m_oldVisible); +} + +//--------------------------------------------------------------------------------------------------------------------- +void OperationShowLabel::redo() +{ + qCDebug(vUndo, "Redo."); + + Do(m_visible); +} + +//--------------------------------------------------------------------------------------------------------------------- +void OperationShowLabel::Do(bool visible) +{ + QDomElement domElement = GetDestinationObject(m_idTool, nodeId); + if (not domElement.isNull() && domElement.isElement()) + { + doc->SetAttribute(domElement, AttrShowLabel, visible); + + if (VDrawTool *tool = qobject_cast(VAbstractPattern::getTool(m_idTool))) + { + tool->SetLabelVisible(nodeId, visible); + } + VMainGraphicsView::NewSceneRect(m_scene, qApp->getSceneView()); + } + else + { + qCDebug(vUndo, "Can't find point with id = %u.", nodeId); + } +} + diff --git a/src/libs/vtools/undocommands/label/operationshowlabel.h b/src/libs/vtools/undocommands/label/operationshowlabel.h new file mode 100644 index 000000000..a7ae07e69 --- /dev/null +++ b/src/libs/vtools/undocommands/label/operationshowlabel.h @@ -0,0 +1,57 @@ +/************************************************************************ + ** + ** @file + ** @author Roman Telezhynskyi + ** @date 20 9, 2017 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2017 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#ifndef OPERATIONSHOWLABEL_H +#define OPERATIONSHOWLABEL_H + +#include "../vundocommand.h" + +class QGraphicsScene; + +class OperationShowLabel : public VUndoCommand +{ +public: + OperationShowLabel(VAbstractPattern *doc, quint32 idTool, quint32 idPoint, bool visible, + QUndoCommand *parent = nullptr); + virtual ~OperationShowLabel()=default; + + virtual void undo() Q_DECL_OVERRIDE; + virtual void redo() Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(OperationShowLabel) + bool m_visible; + bool m_oldVisible; + //Need for resizing scene rect + QGraphicsScene *m_scene; + quint32 m_idTool; + + void Do(bool visible); +}; + +#endif // OPERATIONSHOWLABEL_H diff --git a/src/libs/vtools/undocommands/label/showdoublelabel.cpp b/src/libs/vtools/undocommands/label/showdoublelabel.cpp index 710a9e130..356c33a89 100644 --- a/src/libs/vtools/undocommands/label/showdoublelabel.cpp +++ b/src/libs/vtools/undocommands/label/showdoublelabel.cpp @@ -51,11 +51,11 @@ ShowDoubleLabel::ShowDoubleLabel(VAbstractPattern *doc, quint32 toolId, quint32 if (type == ShowDoublePoint::FirstPoint) { - setText(tr("show the first dart label")); + setText(tr("toggle the first dart label")); } else { - setText(tr("show the second dart label")); + setText(tr("togggle the second dart label")); } const QDomElement domElement = doc->elementById(m_idTool, VAbstractPattern::TagPoint); diff --git a/src/libs/vtools/undocommands/undocommands.pri b/src/libs/vtools/undocommands/undocommands.pri index d689b7c92..42252b14d 100644 --- a/src/libs/vtools/undocommands/undocommands.pri +++ b/src/libs/vtools/undocommands/undocommands.pri @@ -26,7 +26,8 @@ HEADERS += \ $$PWD/togglepieceinlayout.h \ $$PWD/savepiecepathoptions.h \ $$PWD/label/showlabel.h \ - $$PWD/label/showdoublelabel.h + $$PWD/label/showdoublelabel.h \ + $$PWD/label/operationshowlabel.h SOURCES += \ $$PWD/addtocalc.cpp \ @@ -53,4 +54,5 @@ SOURCES += \ $$PWD/togglepieceinlayout.cpp \ $$PWD/savepiecepathoptions.cpp \ $$PWD/label/showlabel.cpp \ - $$PWD/label/showdoublelabel.cpp + $$PWD/label/showdoublelabel.cpp \ + $$PWD/label/operationshowlabel.cpp diff --git a/src/libs/vtools/undocommands/vundocommand.cpp b/src/libs/vtools/undocommands/vundocommand.cpp index a1858d3be..c5b4101dd 100644 --- a/src/libs/vtools/undocommands/vundocommand.cpp +++ b/src/libs/vtools/undocommands/vundocommand.cpp @@ -36,6 +36,7 @@ #include "../vmisc/customevents.h" #include "../vpatterndb/vnodedetail.h" #include "../vpatterndb/vpiecenode.h" +#include "../tools/drawTools/operation/vabstractoperation.h" Q_LOGGING_CATEGORY(vUndo, "v.undo") @@ -143,3 +144,42 @@ void VUndoCommand::DecrementReferences(const QVector &nodes) const DecrementReferences(n); } + +//--------------------------------------------------------------------------------------------------------------------- +QDomElement VUndoCommand::GetDestinationObject(quint32 idTool, quint32 idPoint) const +{ + const QDomElement tool = doc->elementById(idTool, VAbstractPattern::TagOperation); + if (tool.isElement()) + { + QDomElement correctDest; + const QDomNodeList nodeList = tool.childNodes(); + for (qint32 i = 0; i < nodeList.size(); ++i) + { + const QDomElement dest = nodeList.at(i).toElement(); + if (not dest.isNull() && dest.isElement() && dest.tagName() == VAbstractOperation::TagDestination) + { + correctDest = dest; + break; + } + } + + if (not correctDest.isNull()) + { + const QDomNodeList destObjects = correctDest.childNodes(); + for (qint32 i = 0; i < destObjects.size(); ++i) + { + const QDomElement obj = destObjects.at(i).toElement(); + if (not obj.isNull() && obj.isElement()) + { + const quint32 id = doc->GetParametrUInt(obj, AttrIdObject, NULL_ID_STR); + if (idPoint == id) + { + return obj; + } + } + } + } + } + + return QDomElement(); +} diff --git a/src/libs/vtools/undocommands/vundocommand.h b/src/libs/vtools/undocommands/vundocommand.h index 1a5d055be..0749c6828 100644 --- a/src/libs/vtools/undocommands/vundocommand.h +++ b/src/libs/vtools/undocommands/vundocommand.h @@ -90,6 +90,8 @@ protected: void IncrementReferences(const QVector &nodes) const; void DecrementReferences(const QVector &nodes) const; + + QDomElement GetDestinationObject(quint32 idTool, quint32 idPoint) const; private: Q_DISABLE_COPY(VUndoCommand) };