From 8e82a80463c8b17f5e3010f1ec630205220ca7eb Mon Sep 17 00:00:00 2001 From: dismine Date: Tue, 31 Dec 2013 10:28:53 +0200 Subject: [PATCH] Template CreateNode. --HG-- branch : feature --- src/tools/vtooldetail.cpp | 20 ++++---------------- src/tools/vtooldetail.h | 9 +++++++++ src/xml/vdomdocument.h | 2 +- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/tools/vtooldetail.cpp b/src/tools/vtooldetail.cpp index 1a03395ad..0703cff28 100644 --- a/src/tools/vtooldetail.cpp +++ b/src/tools/vtooldetail.cpp @@ -97,37 +97,25 @@ void VToolDetail::Create(QSharedPointer &dialog, VMainGraphicsScen { case (Tool::NodePoint): { - VPointF *point = new VPointF(*data->GeometricObject(detail[i].getId())); - Q_ASSERT(point != 0); - point->setMode(Draw::Modeling); - id = data->AddGObject(point); + id = CreateNode(data, detail[i].getId()); VNodePoint::Create(doc, data, id, detail[i].getId(), Document::FullParse, Tool::FromGui); } break; case (Tool::NodeArc): { - VArc *arc = new VArc(*data->GeometricObject(detail[i].getId())); - Q_ASSERT(arc != 0); - arc->setMode(Draw::Modeling); - id = data->AddGObject(arc); + id = CreateNode(data, detail[i].getId()); VNodeArc::Create(doc, data, id, detail[i].getId(), Document::FullParse, Tool::FromGui); } break; case (Tool::NodeSpline): { - VSpline *spline = new VSpline(*data->GeometricObject(detail[i].getId())); - Q_ASSERT(spline != 0); - spline->setMode(Draw::Modeling); - id = data->AddGObject(spline); + id = CreateNode(data, detail[i].getId()); VNodeSpline::Create(doc, data, id, detail[i].getId(), Document::FullParse, Tool::FromGui); } break; case (Tool::NodeSplinePath): { - VSplinePath *splinePath = new VSplinePath(*data->GeometricObject(detail[i].getId())); - Q_ASSERT(splinePath != 0); - splinePath->setMode(Draw::Modeling); - id = data->AddGObject(splinePath); + id = CreateNode(data, detail[i].getId()); VNodeSplinePath::Create(doc, data, id, detail[i].getId(), Document::FullParse, Tool::FromGui); } break; diff --git a/src/tools/vtooldetail.h b/src/tools/vtooldetail.h index 34291b0a7..5b9891af1 100644 --- a/src/tools/vtooldetail.h +++ b/src/tools/vtooldetail.h @@ -56,6 +56,15 @@ public: * @brief setDialog */ virtual void setDialog(); + template + static qint64 CreateNode(VContainer *data, const qint64 &id) + { + T *node = new T(*data->GeometricObject(id)); + Q_ASSERT(node != 0); + node->setMode(Draw::Modeling); + return data->AddGObject(node); + } + /** * @brief Create * @param dialog diff --git a/src/xml/vdomdocument.h b/src/xml/vdomdocument.h index 33c6179fe..8b69b8ad3 100644 --- a/src/xml/vdomdocument.h +++ b/src/xml/vdomdocument.h @@ -234,7 +234,7 @@ signals: * @param oldName * @param newName */ - void ChangedNameDraw(const QString oldName, const QString newName); + void ChangedNameDraw(const QString &oldName, const QString &newName); /** * @brief FullUpdateFromFile */