Tried fix some memory leaks.
--HG-- branch : feature
This commit is contained in:
parent
7cf058bf70
commit
75b125194b
|
@ -160,7 +160,7 @@ public:
|
||||||
* @param name name of row of standart table
|
* @param name name of row of standart table
|
||||||
* @param cell row of standart table
|
* @param cell row of standart table
|
||||||
*/
|
*/
|
||||||
inline void AddStandartTableCell(const QString& name, VStandartTableRow cell)
|
inline void AddStandartTableCell(const QString& name, const VStandartTableRow &cell)
|
||||||
{standartTable[name] = cell;}
|
{standartTable[name] = cell;}
|
||||||
/**
|
/**
|
||||||
* @brief AddIncrementTableRow add new row of increment table
|
* @brief AddIncrementTableRow add new row of increment table
|
||||||
|
|
|
@ -33,8 +33,8 @@ const QString VAbstractNode::AttrIdObject = QStringLiteral("idObject");
|
||||||
const QString VAbstractNode::AttrIdTool = QStringLiteral("idTool");
|
const QString VAbstractNode::AttrIdTool = QStringLiteral("idTool");
|
||||||
|
|
||||||
VAbstractNode::VAbstractNode(VDomDocument *doc, VContainer *data, const qint64 &id, const qint64 &idNode,
|
VAbstractNode::VAbstractNode(VDomDocument *doc, VContainer *data, const qint64 &id, const qint64 &idNode,
|
||||||
const qint64 &idTool)
|
const qint64 &idTool, QObject *parent)
|
||||||
: VAbstractTool(doc, data, id), idNode(idNode), idTool(idTool)
|
: VAbstractTool(doc, data, id, parent), idNode(idNode), idTool(idTool)
|
||||||
{
|
{
|
||||||
_referens = 0;
|
_referens = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ public:
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
VAbstractNode(VDomDocument *doc, VContainer *data, const qint64 &id, const qint64 &idNode,
|
VAbstractNode(VDomDocument *doc, VContainer *data, const qint64 &id, const qint64 &idNode,
|
||||||
const qint64 &idTool);
|
const qint64 &idTool, QObject *parent = 0);
|
||||||
virtual ~VAbstractNode() {}
|
virtual ~VAbstractNode() {}
|
||||||
/**
|
/**
|
||||||
* @brief AttrIdObject
|
* @brief AttrIdObject
|
||||||
|
|
|
@ -34,8 +34,8 @@ const QString VNodeArc::TagName = QStringLiteral("arc");
|
||||||
const QString VNodeArc::ToolType = QStringLiteral("modeling");
|
const QString VNodeArc::ToolType = QStringLiteral("modeling");
|
||||||
|
|
||||||
VNodeArc::VNodeArc(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc, const Tool::Sources &typeCreation,
|
VNodeArc::VNodeArc(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc, const Tool::Sources &typeCreation,
|
||||||
const qint64 &idTool, QGraphicsItem * parent)
|
const qint64 &idTool, QObject *qoParent, QGraphicsItem *parent)
|
||||||
:VAbstractNode(doc, data, id, idArc, idTool), QGraphicsPathItem(parent)
|
:VAbstractNode(doc, data, id, idArc, idTool, qoParent), QGraphicsPathItem(parent)
|
||||||
{
|
{
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
this->setPen(QPen(baseColor, widthHairLine));
|
this->setPen(QPen(baseColor, widthHairLine));
|
||||||
|
@ -51,17 +51,21 @@ VNodeArc::VNodeArc(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc,
|
||||||
}
|
}
|
||||||
|
|
||||||
void VNodeArc::Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc, const Document::Documents &parse,
|
void VNodeArc::Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc, const Document::Documents &parse,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool)
|
const Tool::Sources &typeCreation, const qint64 &idTool, QObject *parent)
|
||||||
{
|
{
|
||||||
VAbstractTool::AddRecord(id, Tool::NodeArc, doc);
|
VAbstractTool::AddRecord(id, Tool::NodeArc, doc);
|
||||||
if (parse == Document::FullParse)
|
if (parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
VNodeArc *arc = new VNodeArc(doc, data, id, idArc, typeCreation, idTool);
|
VNodeArc *arc = new VNodeArc(doc, data, id, idArc, typeCreation, idTool, parent);
|
||||||
Q_ASSERT(arc != 0);
|
Q_ASSERT(arc != 0);
|
||||||
doc->AddTool(id, arc);
|
doc->AddTool(id, arc);
|
||||||
if(idTool != 0)
|
if(idTool != 0)
|
||||||
{
|
{
|
||||||
doc->IncrementReferens(idTool);
|
doc->IncrementReferens(idTool);
|
||||||
|
//Some nodes we don't show on scene. Tool that create this nodes must free memory.
|
||||||
|
VDataTool *tool = doc->getTool(idTool);
|
||||||
|
Q_ASSERT(tool != 0);
|
||||||
|
arc->setParent(tool);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,7 +49,8 @@ public:
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
VNodeArc(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc,
|
VNodeArc(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool = 0, QGraphicsItem * parent = 0);
|
const Tool::Sources &typeCreation, const qint64 &idTool = 0, QObject *qoParent = 0,
|
||||||
|
QGraphicsItem * parent = 0);
|
||||||
/**
|
/**
|
||||||
* @brief Create
|
* @brief Create
|
||||||
* @param doc dom document container
|
* @param doc dom document container
|
||||||
|
@ -60,7 +61,7 @@ public:
|
||||||
* @param typeCreation
|
* @param typeCreation
|
||||||
*/
|
*/
|
||||||
static void Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc, const Document::Documents &parse,
|
static void Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idArc, const Document::Documents &parse,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool = 0);
|
const Tool::Sources &typeCreation, const qint64 &idTool = 0, QObject *parent = 0);
|
||||||
/**
|
/**
|
||||||
* @brief TagName
|
* @brief TagName
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,9 +34,10 @@ const QString VNodePoint::TagName = QStringLiteral("point");
|
||||||
const QString VNodePoint::ToolType = QStringLiteral("modeling");
|
const QString VNodePoint::ToolType = QStringLiteral("modeling");
|
||||||
|
|
||||||
VNodePoint::VNodePoint(VDomDocument *doc, VContainer *data, qint64 id, qint64 idPoint,
|
VNodePoint::VNodePoint(VDomDocument *doc, VContainer *data, qint64 id, qint64 idPoint,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool, QGraphicsItem *parent)
|
const Tool::Sources &typeCreation, const qint64 &idTool, QObject *qoParent,
|
||||||
:VAbstractNode(doc, data, id, idPoint, idTool), QGraphicsEllipseItem(parent), radius(toPixel(1.5)), namePoint(0),
|
QGraphicsItem *parent)
|
||||||
lineName(0)
|
:VAbstractNode(doc, data, id, idPoint, idTool, qoParent), QGraphicsEllipseItem(parent), radius(toPixel(1.5)),
|
||||||
|
namePoint(0), lineName(0)
|
||||||
{
|
{
|
||||||
namePoint = new VGraphicsSimpleTextItem(this);
|
namePoint = new VGraphicsSimpleTextItem(this);
|
||||||
lineName = new QGraphicsLineItem(this);
|
lineName = new QGraphicsLineItem(this);
|
||||||
|
@ -58,17 +59,24 @@ VNodePoint::VNodePoint(VDomDocument *doc, VContainer *data, qint64 id, qint64 id
|
||||||
}
|
}
|
||||||
|
|
||||||
void VNodePoint::Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idPoint,
|
void VNodePoint::Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idPoint,
|
||||||
const Document::Documents &parse, const Tool::Sources &typeCreation, const qint64 &idTool)
|
const Document::Documents &parse, const Tool::Sources &typeCreation, const qint64 &idTool,
|
||||||
|
QObject *parent)
|
||||||
{
|
{
|
||||||
VAbstractTool::AddRecord(id, Tool::NodePoint, doc);
|
VAbstractTool::AddRecord(id, Tool::NodePoint, doc);
|
||||||
if (parse == Document::FullParse)
|
if (parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
VNodePoint *point = new VNodePoint(doc, data, id, idPoint, typeCreation, idTool);
|
//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.
|
||||||
|
VNodePoint *point = new VNodePoint(doc, data, id, idPoint, typeCreation, idTool, parent);
|
||||||
Q_ASSERT(point != 0);
|
Q_ASSERT(point != 0);
|
||||||
doc->AddTool(id, point);
|
doc->AddTool(id, point);
|
||||||
if(idTool != 0)
|
if(idTool != 0)
|
||||||
{
|
{
|
||||||
doc->IncrementReferens(idTool);
|
doc->IncrementReferens(idTool);
|
||||||
|
//Some nodes we don't show on scene. Tool that create this nodes must free memory.
|
||||||
|
VDataTool *tool = doc->getTool(idTool);
|
||||||
|
Q_ASSERT(tool != 0);
|
||||||
|
point->setParent(tool);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,7 +49,8 @@ public:
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
VNodePoint(VDomDocument *doc, VContainer *data, qint64 id, qint64 idPoint,
|
VNodePoint(VDomDocument *doc, VContainer *data, qint64 id, qint64 idPoint,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool = 0, QGraphicsItem * parent = 0 );
|
const Tool::Sources &typeCreation, const qint64 &idTool = 0, QObject *qoParent = 0,
|
||||||
|
QGraphicsItem * parent = 0 );
|
||||||
/**
|
/**
|
||||||
* @brief Create
|
* @brief Create
|
||||||
* @param doc dom document container
|
* @param doc dom document container
|
||||||
|
@ -60,7 +61,8 @@ public:
|
||||||
* @param typeCreation
|
* @param typeCreation
|
||||||
*/
|
*/
|
||||||
static void Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idPoint,
|
static void Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idPoint,
|
||||||
const Document::Documents &parse, const Tool::Sources &typeCreation, const qint64 &idTool = 0);
|
const Document::Documents &parse, const Tool::Sources &typeCreation, const qint64 &idTool = 0,
|
||||||
|
QObject *parent = 0);
|
||||||
/**
|
/**
|
||||||
* @brief TagName
|
* @brief TagName
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,8 +34,9 @@ const QString VNodeSpline::TagName = QStringLiteral("spline");
|
||||||
const QString VNodeSpline::ToolType = QStringLiteral("modelingSpline");
|
const QString VNodeSpline::ToolType = QStringLiteral("modelingSpline");
|
||||||
|
|
||||||
VNodeSpline::VNodeSpline(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
VNodeSpline::VNodeSpline(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool, QGraphicsItem * parent)
|
const Tool::Sources &typeCreation, const qint64 &idTool, QObject *qoParent,
|
||||||
:VAbstractNode(doc, data, id, idSpline, idTool), QGraphicsPathItem(parent)
|
QGraphicsItem * parent)
|
||||||
|
:VAbstractNode(doc, data, id, idSpline, idTool, qoParent), QGraphicsPathItem(parent)
|
||||||
{
|
{
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
this->setPen(QPen(baseColor, widthHairLine));
|
this->setPen(QPen(baseColor, widthHairLine));
|
||||||
|
@ -52,17 +53,21 @@ VNodeSpline::VNodeSpline(VDomDocument *doc, VContainer *data, qint64 id, qint64
|
||||||
|
|
||||||
VNodeSpline *VNodeSpline::Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
VNodeSpline *VNodeSpline::Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
||||||
const Document::Documents &parse, const Tool::Sources &typeCreation,
|
const Document::Documents &parse, const Tool::Sources &typeCreation,
|
||||||
const qint64 &idTool)
|
const qint64 &idTool, QObject *parent)
|
||||||
{
|
{
|
||||||
VAbstractTool::AddRecord(id, Tool::NodeSpline, doc);
|
VAbstractTool::AddRecord(id, Tool::NodeSpline, doc);
|
||||||
VNodeSpline *spl = 0;
|
VNodeSpline *spl = 0;
|
||||||
if (parse == Document::FullParse)
|
if (parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
spl = new VNodeSpline(doc, data, id, idSpline, typeCreation, idTool);
|
spl = new VNodeSpline(doc, data, id, idSpline, typeCreation, idTool, parent);
|
||||||
doc->AddTool(id, spl);
|
doc->AddTool(id, spl);
|
||||||
if(idTool != 0)
|
if(idTool != 0)
|
||||||
{
|
{
|
||||||
doc->IncrementReferens(idTool);
|
doc->IncrementReferens(idTool);
|
||||||
|
//Some nodes we don't show on scene. Tool that create this nodes must free memory.
|
||||||
|
VDataTool *tool = doc->getTool(idTool);
|
||||||
|
Q_ASSERT(tool != 0);
|
||||||
|
spl->setParent(tool);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,7 +49,8 @@ public:
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
VNodeSpline(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
VNodeSpline(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool = 0, QGraphicsItem * parent = 0);
|
const Tool::Sources &typeCreation, const qint64 &idTool = 0, QObject *qoParent = 0,
|
||||||
|
QGraphicsItem * parent = 0);
|
||||||
/**
|
/**
|
||||||
* @brief Create
|
* @brief Create
|
||||||
* @param doc dom document container
|
* @param doc dom document container
|
||||||
|
@ -62,7 +63,7 @@ public:
|
||||||
*/
|
*/
|
||||||
static VNodeSpline *Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
static VNodeSpline *Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
||||||
const Document::Documents &parse, const Tool::Sources &typeCreation,
|
const Document::Documents &parse, const Tool::Sources &typeCreation,
|
||||||
const qint64 &idTool = 0);
|
const qint64 &idTool = 0, QObject *parent = 0);
|
||||||
/**
|
/**
|
||||||
* @brief TagName
|
* @brief TagName
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,8 +34,9 @@ const QString VNodeSplinePath::TagName = QStringLiteral("spline");
|
||||||
const QString VNodeSplinePath::ToolType = QStringLiteral("modelingPath");
|
const QString VNodeSplinePath::ToolType = QStringLiteral("modelingPath");
|
||||||
|
|
||||||
VNodeSplinePath::VNodeSplinePath(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
VNodeSplinePath::VNodeSplinePath(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool, QGraphicsItem * parent)
|
const Tool::Sources &typeCreation, const qint64 &idTool, QObject *qoParent,
|
||||||
:VAbstractNode(doc, data, id, idSpline, idTool), QGraphicsPathItem(parent)
|
QGraphicsItem * parent)
|
||||||
|
:VAbstractNode(doc, data, id, idSpline, idTool, qoParent), QGraphicsPathItem(parent)
|
||||||
{
|
{
|
||||||
RefreshGeometry();
|
RefreshGeometry();
|
||||||
this->setPen(QPen(baseColor, widthHairLine));
|
this->setPen(QPen(baseColor, widthHairLine));
|
||||||
|
@ -51,12 +52,13 @@ VNodeSplinePath::VNodeSplinePath(VDomDocument *doc, VContainer *data, qint64 id,
|
||||||
}
|
}
|
||||||
|
|
||||||
void VNodeSplinePath::Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
void VNodeSplinePath::Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
||||||
const Document::Documents &parse, const Tool::Sources &typeCreation, const qint64 &idTool)
|
const Document::Documents &parse, const Tool::Sources &typeCreation, const qint64 &idTool,
|
||||||
|
QObject *parent)
|
||||||
{
|
{
|
||||||
VAbstractTool::AddRecord(id, Tool::NodeSplinePath, doc);
|
VAbstractTool::AddRecord(id, Tool::NodeSplinePath, doc);
|
||||||
if (parse == Document::FullParse)
|
if (parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
VNodeSplinePath *splPath = new VNodeSplinePath(doc, data, id, idSpline, typeCreation, idTool);
|
VNodeSplinePath *splPath = new VNodeSplinePath(doc, data, id, idSpline, typeCreation, idTool, parent);
|
||||||
Q_ASSERT(splPath != 0);
|
Q_ASSERT(splPath != 0);
|
||||||
doc->AddTool(id, splPath);
|
doc->AddTool(id, splPath);
|
||||||
const VSplinePath *path = data->GeometricObject<const VSplinePath *>(id);
|
const VSplinePath *path = data->GeometricObject<const VSplinePath *>(id);
|
||||||
|
@ -66,6 +68,10 @@ void VNodeSplinePath::Create(VDomDocument *doc, VContainer *data, qint64 id, qin
|
||||||
if(idTool != 0)
|
if(idTool != 0)
|
||||||
{
|
{
|
||||||
doc->IncrementReferens(idTool);
|
doc->IncrementReferens(idTool);
|
||||||
|
//Some nodes we don't show on scene. Tool that create this nodes must free memory.
|
||||||
|
VDataTool *tool = doc->getTool(idTool);
|
||||||
|
Q_ASSERT(tool != 0);
|
||||||
|
splPath->setParent(tool);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,7 +49,7 @@ public:
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
VNodeSplinePath(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
VNodeSplinePath(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
||||||
const Tool::Sources &typeCreation, const qint64 &idTool = 0,
|
const Tool::Sources &typeCreation, const qint64 &idTool = 0, QObject *qoParent = 0,
|
||||||
QGraphicsItem * parent = 0);
|
QGraphicsItem * parent = 0);
|
||||||
/**
|
/**
|
||||||
* @brief Create
|
* @brief Create
|
||||||
|
@ -61,7 +61,8 @@ public:
|
||||||
* @param typeCreation
|
* @param typeCreation
|
||||||
*/
|
*/
|
||||||
static void Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
static void Create(VDomDocument *doc, VContainer *data, qint64 id, qint64 idSpline,
|
||||||
const Document::Documents &parse, const Tool::Sources &typeCreation, const qint64 &idTool = 0);
|
const Document::Documents &parse, const Tool::Sources &typeCreation, const qint64 &idTool = 0,
|
||||||
|
QObject *parent = 0);
|
||||||
/**
|
/**
|
||||||
* @brief TagName
|
* @brief TagName
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -65,8 +65,8 @@ const QString VAbstractTool::AttrAxisP2 = QStringLiteral("axisP2");
|
||||||
const QString VAbstractTool::TypeLineNone = QStringLiteral("none");
|
const QString VAbstractTool::TypeLineNone = QStringLiteral("none");
|
||||||
const QString VAbstractTool::TypeLineLine = QStringLiteral("hair");
|
const QString VAbstractTool::TypeLineLine = QStringLiteral("hair");
|
||||||
|
|
||||||
VAbstractTool::VAbstractTool(VDomDocument *doc, VContainer *data, qint64 id)
|
VAbstractTool::VAbstractTool(VDomDocument *doc, VContainer *data, qint64 id, QObject *parent)
|
||||||
:VDataTool(data), doc(doc), id(id), baseColor(Qt::black), currentColor(Qt::black)
|
:VDataTool(data, parent), doc(doc), id(id), baseColor(Qt::black), currentColor(Qt::black)
|
||||||
{
|
{
|
||||||
Q_ASSERT(doc != 0);
|
Q_ASSERT(doc != 0);
|
||||||
connect(this, &VAbstractTool::toolhaveChange, this->doc, &VDomDocument::haveLiteChange);
|
connect(this, &VAbstractTool::toolhaveChange, this->doc, &VDomDocument::haveLiteChange);
|
||||||
|
|
|
@ -46,7 +46,7 @@ public:
|
||||||
* @param id
|
* @param id
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
VAbstractTool(VDomDocument *doc, VContainer *data, qint64 id);
|
VAbstractTool(VDomDocument *doc, VContainer *data, qint64 id, QObject *parent = 0);
|
||||||
virtual ~VAbstractTool() {}
|
virtual ~VAbstractTool() {}
|
||||||
/**
|
/**
|
||||||
* @brief LineIntersectRect
|
* @brief LineIntersectRect
|
||||||
|
|
|
@ -130,7 +130,7 @@ void VToolDetail::Create(QSharedPointer<DialogDetail> &dialog, VMainGraphicsScen
|
||||||
Create(0, det, scene, doc, data, Document::FullParse, Tool::FromGui);
|
Create(0, det, scene, doc, data, Document::FullParse, Tool::FromGui);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VToolDetail::Create(const qint64 _id, VDetail newDetail, VMainGraphicsScene *scene, VDomDocument *doc,
|
void VToolDetail::Create(const qint64 &_id, const VDetail &newDetail, VMainGraphicsScene *scene, VDomDocument *doc,
|
||||||
VContainer *data, const Document::Documents &parse, const Tool::Sources &typeCreation)
|
VContainer *data, const Document::Documents &parse, const Tool::Sources &typeCreation)
|
||||||
{
|
{
|
||||||
qint64 id = _id;
|
qint64 id = _id;
|
||||||
|
|
|
@ -84,7 +84,7 @@ public:
|
||||||
* @param parse
|
* @param parse
|
||||||
* @param typeCreation
|
* @param typeCreation
|
||||||
*/
|
*/
|
||||||
static void Create(const qint64 _id, VDetail newDetail, VMainGraphicsScene *scene,
|
static void Create(const qint64 &_id, const VDetail &newDetail, VMainGraphicsScene *scene,
|
||||||
VDomDocument *doc, VContainer *data, const Document::Documents &parse,
|
VDomDocument *doc, VContainer *data, const Document::Documents &parse,
|
||||||
const Tool::Sources &typeCreation);
|
const Tool::Sources &typeCreation);
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
|
@ -43,8 +43,8 @@ const QString VToolUnionDetails::NodeTypeModeling = QStringLiteral("Modeling");
|
||||||
|
|
||||||
VToolUnionDetails::VToolUnionDetails(VDomDocument *doc, VContainer *data, const qint64 &id, const VDetail &d1,
|
VToolUnionDetails::VToolUnionDetails(VDomDocument *doc, VContainer *data, const qint64 &id, const VDetail &d1,
|
||||||
const VDetail &d2, const ptrdiff_t &indexD1, const ptrdiff_t &indexD2,
|
const VDetail &d2, const ptrdiff_t &indexD1, const ptrdiff_t &indexD2,
|
||||||
const Tool::Sources &typeCreation)
|
const Tool::Sources &typeCreation, QObject *parent)
|
||||||
:VAbstractTool(doc, data, id), d1(d1), d2(d2), indexD1(indexD1), indexD2(indexD2)
|
:VAbstractTool(doc, data, id, parent), d1(d1), d2(d2), indexD1(indexD1), indexD2(indexD2)
|
||||||
{
|
{
|
||||||
if (typeCreation == Tool::FromGui)
|
if (typeCreation == Tool::FromGui)
|
||||||
{
|
{
|
||||||
|
@ -56,9 +56,9 @@ VToolUnionDetails::VToolUnionDetails(VDomDocument *doc, VContainer *data, const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VToolUnionDetails::AddToNewDetail(VDomDocument *doc, VContainer *data, VDetail &newDetail, const VDetail &det,
|
void VToolUnionDetails::AddToNewDetail(QObject *tool, VDomDocument *doc, VContainer *data, VDetail &newDetail,
|
||||||
const ptrdiff_t &i, const qint64 &idTool, const qreal &dx, const qreal &dy,
|
const VDetail &det, const ptrdiff_t &i, const qint64 &idTool, const qreal &dx,
|
||||||
const qint64 &pRotate, const qreal &angle)
|
const qreal &dy, const qint64 &pRotate, const qreal &angle)
|
||||||
{
|
{
|
||||||
qint64 id = 0, idObject = 0;
|
qint64 id = 0, idObject = 0;
|
||||||
switch (det.at(i).getTypeTool())
|
switch (det.at(i).getTypeTool())
|
||||||
|
@ -81,7 +81,7 @@ void VToolUnionDetails::AddToNewDetail(VDomDocument *doc, VContainer *data, VDet
|
||||||
Q_ASSERT(point1 != 0);
|
Q_ASSERT(point1 != 0);
|
||||||
point1->setMode(Draw::Modeling);
|
point1->setMode(Draw::Modeling);
|
||||||
id = data->AddGObject(point1);
|
id = data->AddGObject(point1);
|
||||||
VNodePoint::Create(doc, data, id, idObject, Document::FullParse, Tool::FromGui, idTool);
|
VNodePoint::Create(doc, data, id, idObject, Document::FullParse, Tool::FromGui, idTool, tool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -119,7 +119,7 @@ void VToolUnionDetails::AddToNewDetail(VDomDocument *doc, VContainer *data, VDet
|
||||||
arc2->setMode(Draw::Modeling);
|
arc2->setMode(Draw::Modeling);
|
||||||
id = data->AddGObject(arc2);
|
id = data->AddGObject(arc2);
|
||||||
|
|
||||||
VNodeArc::Create(doc, data, id, idObject, Document::FullParse, Tool::FromGui, idTool);
|
VNodeArc::Create(doc, data, id, idObject, Document::FullParse, Tool::FromGui, idTool, tool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -158,7 +158,7 @@ void VToolUnionDetails::AddToNewDetail(VDomDocument *doc, VContainer *data, VDet
|
||||||
Q_ASSERT(spl1 != 0);
|
Q_ASSERT(spl1 != 0);
|
||||||
spl1->setMode(Draw::Modeling);
|
spl1->setMode(Draw::Modeling);
|
||||||
idObject = data->AddGObject(spl1);
|
idObject = data->AddGObject(spl1);
|
||||||
VNodeSpline::Create(doc, data, id, idObject, Document::FullParse, Tool::FromGui, idTool);
|
VNodeSpline::Create(doc, data, id, idObject, Document::FullParse, Tool::FromGui, idTool, tool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -215,7 +215,7 @@ void VToolUnionDetails::AddToNewDetail(VDomDocument *doc, VContainer *data, VDet
|
||||||
Q_ASSERT(path1 != 0);
|
Q_ASSERT(path1 != 0);
|
||||||
path1->setMode(Draw::Modeling);
|
path1->setMode(Draw::Modeling);
|
||||||
id = data->AddGObject(path1);
|
id = data->AddGObject(path1);
|
||||||
VNodeSplinePath::Create(doc, data, id, idObject, Document::FullParse, Tool::FromGui, idTool);
|
VNodeSplinePath::Create(doc, data, id, idObject, Document::FullParse, Tool::FromGui, idTool, tool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -390,6 +390,7 @@ void VToolUnionDetails::Create(const qint64 _id, const VDetail &d1, const VDetai
|
||||||
VMainGraphicsScene *scene, VDomDocument *doc, VContainer *data,
|
VMainGraphicsScene *scene, VDomDocument *doc, VContainer *data,
|
||||||
const Document::Documents &parse, const Tool::Sources &typeCreation)
|
const Document::Documents &parse, const Tool::Sources &typeCreation)
|
||||||
{
|
{
|
||||||
|
VToolUnionDetails *unionDetails = 0;
|
||||||
qint64 id = _id;
|
qint64 id = _id;
|
||||||
if (typeCreation == Tool::FromGui)
|
if (typeCreation == Tool::FromGui)
|
||||||
{
|
{
|
||||||
|
@ -405,7 +406,8 @@ void VToolUnionDetails::Create(const qint64 _id, const VDetail &d1, const VDetai
|
||||||
VAbstractTool::AddRecord(id, Tool::UnionDetails, doc);
|
VAbstractTool::AddRecord(id, Tool::UnionDetails, doc);
|
||||||
if (parse == Document::FullParse)
|
if (parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
VToolUnionDetails *unionDetails = new VToolUnionDetails(doc, data, id, d1, d2, indexD1, indexD2, typeCreation);
|
//Scene doesn't show this tool, so doc will destroy this object.
|
||||||
|
unionDetails = new VToolUnionDetails(doc, data, id, d1, d2, indexD1, indexD2, typeCreation, doc);
|
||||||
QHash<qint64, VDataTool*>* tools = doc->getTools();
|
QHash<qint64, VDataTool*>* tools = doc->getTools();
|
||||||
tools->insert(id, unionDetails);
|
tools->insert(id, unionDetails);
|
||||||
for (ptrdiff_t i = 0; i < d1.CountNode(); ++i)
|
for (ptrdiff_t i = 0; i < d1.CountNode(); ++i)
|
||||||
|
@ -429,7 +431,7 @@ void VToolUnionDetails::Create(const qint64 _id, const VDetail &d1, const VDetai
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
AddToNewDetail(doc, data, newDetail, d1, i, id);
|
AddToNewDetail(unionDetails, doc, data, newDetail, d1, i, id);
|
||||||
++i;
|
++i;
|
||||||
if (i > indexD1 && pointsD2 < nD2-2)
|
if (i > indexD1 && pointsD2 < nD2-2)
|
||||||
{
|
{
|
||||||
|
@ -483,7 +485,7 @@ void VToolUnionDetails::Create(const qint64 _id, const VDetail &d1, const VDetai
|
||||||
{
|
{
|
||||||
j=0;
|
j=0;
|
||||||
}
|
}
|
||||||
AddToNewDetail(doc, data, newDetail, d2, j, id, dx, dy, det1p1.getId(), angle);
|
AddToNewDetail(unionDetails, doc, data, newDetail, d2, j, id, dx, dy, det1p1.getId(), angle);
|
||||||
++pointsD2;
|
++pointsD2;
|
||||||
++j;
|
++j;
|
||||||
} while (pointsD2 < nD2);
|
} while (pointsD2 < nD2);
|
||||||
|
|
|
@ -38,7 +38,7 @@ class VToolUnionDetails : public VAbstractTool
|
||||||
public:
|
public:
|
||||||
VToolUnionDetails(VDomDocument *doc, VContainer *data, const qint64 &id, const VDetail &d1, const VDetail &d2,
|
VToolUnionDetails(VDomDocument *doc, VContainer *data, const qint64 &id, const VDetail &d1, const VDetail &d2,
|
||||||
const ptrdiff_t &indexD1, const ptrdiff_t &indexD2,
|
const ptrdiff_t &indexD1, const ptrdiff_t &indexD2,
|
||||||
const Tool::Sources &typeCreation);
|
const Tool::Sources &typeCreation, QObject *parent = 0);
|
||||||
virtual void setDialog() {}
|
virtual void setDialog() {}
|
||||||
/**
|
/**
|
||||||
* @brief Create
|
* @brief Create
|
||||||
|
@ -77,9 +77,9 @@ public:
|
||||||
static const QString NodeTypeContour;
|
static const QString NodeTypeContour;
|
||||||
static const QString NodeTypeModeling;
|
static const QString NodeTypeModeling;
|
||||||
|
|
||||||
static void AddToNewDetail(VDomDocument *doc, VContainer *data, VDetail &newDetail, const VDetail &det,
|
static void AddToNewDetail(QObject *tool, VDomDocument *doc, VContainer *data, VDetail &newDetail,
|
||||||
const ptrdiff_t &i, const qint64 &idTool, const qreal &dx = 0, const qreal &dy = 0,
|
const VDetail &det, const ptrdiff_t &i, const qint64 &idTool, const qreal &dx = 0,
|
||||||
const qint64 &pRotate = 0, const qreal &angle = 0);
|
const qreal &dy = 0, const qint64 &pRotate = 0, const qreal &angle = 0);
|
||||||
static void UpdatePoints(const qint64 &idDetail, VContainer *data, const VDetail &det, const ptrdiff_t &i,
|
static void UpdatePoints(const qint64 &idDetail, VContainer *data, const VDetail &det, const ptrdiff_t &i,
|
||||||
qint64 &idCount, const qreal &dx = 0, const qreal &dy = 0, const qint64 &pRotate = 0,
|
qint64 &idCount, const qreal &dx = 0, const qreal &dy = 0, const qint64 &pRotate = 0,
|
||||||
const qreal &angle = 0);
|
const qreal &angle = 0);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user