diff --git a/src/app/tools/vabstracttool.cpp b/src/app/tools/vabstracttool.cpp index a757a3d5e..5e3f1a96e 100644 --- a/src/app/tools/vabstracttool.cpp +++ b/src/app/tools/vabstracttool.cpp @@ -340,11 +340,17 @@ const QStringList VAbstractTool::Styles() */ void VAbstractTool::AddRecord(const quint32 id, const Tool &toolType, VPattern *doc) { - quint32 cursor = doc->getCursor(); QVector *history = doc->getHistory(); + VToolRecord record = VToolRecord(id, toolType, doc->GetNameActivPP()); + if (history->contains(record)) + { + return; + } + + quint32 cursor = doc->getCursor(); if (cursor <= 0) { - history->append(VToolRecord(id, toolType, doc->GetNameActivPP())); + history->append(record); } else { @@ -358,6 +364,6 @@ void VAbstractTool::AddRecord(const quint32 id, const Tool &toolType, VPattern * break; } } - history->insert(index+1, VToolRecord(id, toolType, doc->GetNameActivPP())); + history->insert(index+1, record); } } diff --git a/src/app/xml/vpattern.cpp b/src/app/xml/vpattern.cpp index 41483660c..76e3bde72 100644 --- a/src/app/xml/vpattern.cpp +++ b/src/app/xml/vpattern.cpp @@ -675,7 +675,8 @@ void VPattern::LiteParseTree() try { emit SetEnabledGUI(true); - Parse(Document::LiteParse); + ParceCurrentPP(); + //Parse(Document::LiteParse); } catch (const VExceptionUndo &e) { @@ -1475,6 +1476,17 @@ void VPattern::SplinesCommonAttributes(const QDomElement &domElement, quint32 &i idTool = GetParametrUInt(domElement, VAbstractNode::AttrIdTool, "0"); } +//--------------------------------------------------------------------------------------------------------------------- +void VPattern::ParceCurrentPP() +{ + QDomElement domElement; + if (GetActivDrawElement(domElement)) + { + ParseDrawElement(domElement, Document::LiteParse); + } + emit CheckLayout(); +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief ParseSplineElement parse spline tag. @@ -2015,6 +2027,7 @@ QRectF VPattern::ActiveDrawBoundingRect() const return rec; } +//--------------------------------------------------------------------------------------------------------------------- template QRectF VPattern::ToolBoundingRect(const QRectF &rec, const quint32 &id) const { diff --git a/src/app/xml/vpattern.h b/src/app/xml/vpattern.h index 4ca4eac61..5d3348c06 100644 --- a/src/app/xml/vpattern.h +++ b/src/app/xml/vpattern.h @@ -214,6 +214,7 @@ private: quint32 &idTool); template QRectF ToolBoundingRect(const QRectF &rec, const quint32 &id) const; + void ParceCurrentPP(); }; //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/xml/vtoolrecord.cpp b/src/app/xml/vtoolrecord.cpp index c9d4e1887..030d33588 100644 --- a/src/app/xml/vtoolrecord.cpp +++ b/src/app/xml/vtoolrecord.cpp @@ -46,3 +46,28 @@ VToolRecord::VToolRecord() VToolRecord::VToolRecord(const quint32 &id, const Tool &typeTool, const QString &nameDraw) :id(id), typeTool(typeTool), nameDraw(nameDraw) {} + +//--------------------------------------------------------------------------------------------------------------------- +bool VToolRecord::VToolRecord::operator==(const VToolRecord &record) const +{ + bool isEqual = false; + if (id == record.getId() && typeTool == record.getTypeTool() && nameDraw == record.getNameDraw()) + { + isEqual = true; + } + return isEqual; +} + +//--------------------------------------------------------------------------------------------------------------------- +VToolRecord &VToolRecord::operator=(const VToolRecord &record) +{ + this->id = record.getId(); + this->typeTool = record.getTypeTool(); + this->nameDraw = record.getNameDraw(); + return *this; +} + +//--------------------------------------------------------------------------------------------------------------------- +VToolRecord::VToolRecord(const VToolRecord &record) + :id(record.getId()), typeTool(record.getTypeTool()), nameDraw(record.getNameDraw()) +{} diff --git a/src/app/xml/vtoolrecord.h b/src/app/xml/vtoolrecord.h index 302a5575c..f21276a0c 100644 --- a/src/app/xml/vtoolrecord.h +++ b/src/app/xml/vtoolrecord.h @@ -41,6 +41,9 @@ class VToolRecord public: VToolRecord(); VToolRecord(const quint32 &id, const Tool &typeTool, const QString &nameDraw); + bool operator==(const VToolRecord &record) const; + VToolRecord &operator=(const VToolRecord &record); + VToolRecord(const VToolRecord &record); quint32 getId() const; void setId(const quint32 &value); Tool getTypeTool() const;