From ff667c8602831dfa4d9b3d5615f85083d4451367 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 22 Mar 2016 17:33:05 +0200 Subject: [PATCH] The tool Detail now supports Cubic Bezier Path curve. --HG-- branch : develop --- src/app/valentina/xml/vpattern.cpp | 19 +++++++++++++++---- src/libs/vtools/tools/vtooldetail.cpp | 11 ++++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index e7d0bd65e..47d0c0130 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -2232,10 +2232,21 @@ void VPattern::ParseNodeSplinePath(const QDomElement &domElement, const Document quint32 idTool = 0; SplinesCommonAttributes(domElement, id, idObject, idTool); - VSplinePath *path = new VSplinePath(*data->GeometricObject(idObject)); - path->setIdObject(idObject); - path->setMode(Draw::Modeling); - data->UpdateGObject(id, path); + const auto obj = data->GetGObject(idObject); + if (obj->getType() == GOType::SplinePath) + { + VSplinePath *path = new VSplinePath(*data->GeometricObject(idObject)); + path->setIdObject(idObject); + path->setMode(Draw::Modeling); + data->UpdateGObject(id, path); + } + else + { + VCubicBezierPath *spl = new VCubicBezierPath(*data->GeometricObject(idObject)); + spl->setIdObject(idObject); + spl->setMode(Draw::Modeling); + data->UpdateGObject(id, spl); + } VNodeSplinePath::Create(this, data, id, idObject, parse, Source::FromFile, idTool); } catch (const VExceptionBadId &e) diff --git a/src/libs/vtools/tools/vtooldetail.cpp b/src/libs/vtools/tools/vtooldetail.cpp index 525dc0176..366999acd 100644 --- a/src/libs/vtools/tools/vtooldetail.cpp +++ b/src/libs/vtools/tools/vtooldetail.cpp @@ -31,6 +31,7 @@ #include "../vgeometry/varc.h" #include "../vgeometry/vcubicbezier.h" #include "../vgeometry/vsplinepath.h" +#include "../vgeometry/vcubicbezierpath.h" #include "../vwidgets/vmaingraphicsscene.h" #include "../vwidgets/vmaingraphicsview.h" #include "../dialogs/tools/dialogtool.h" @@ -193,7 +194,15 @@ void VToolDetail::Create(DialogTool *dialog, VMainGraphicsScene *scene, VAbstrac break; case (Tool::NodeSplinePath): { - id = CreateNode(data, nodeD.getId()); + const auto obj = data->GetGObject(nodeD.getId()); + if (obj->getType() == GOType::SplinePath) + { + id = CreateNode(data, nodeD.getId()); + } + else + { + id = CreateNode(data, nodeD.getId()); + } VNodeSplinePath::Create(doc, data, id, nodeD.getId(), Document::FullParse, Source::FromGui); } break;