From 24140d6e3d945de3bd658cda3572198be23f4475 Mon Sep 17 00:00:00 2001 From: dismine Date: Sun, 5 Jan 2014 17:04:10 +0200 Subject: [PATCH] Fixed bug in DeleteTool method. --HG-- branch : develop --- src/tools/drawTools/vtoolalongline.cpp | 1 - src/tools/drawTools/vtoolarc.cpp | 1 - src/tools/drawTools/vtoolbisector.cpp | 1 - src/tools/drawTools/vtoolcutspline.cpp | 1 - src/tools/drawTools/vtoolcutsplinepath.cpp | 1 - src/tools/drawTools/vtoolendline.cpp | 1 - src/tools/drawTools/vtoolheight.cpp | 1 - src/tools/drawTools/vtoolline.cpp | 1 - src/tools/drawTools/vtoollineintersect.cpp | 1 - src/tools/drawTools/vtoolnormal.cpp | 1 - src/tools/drawTools/vtoolpointofcontact.cpp | 1 - .../drawTools/vtoolpointofintersection.cpp | 1 - src/tools/drawTools/vtoolshoulderpoint.cpp | 1 - src/tools/drawTools/vtoolspline.cpp | 1 - src/tools/drawTools/vtoolsplinepath.cpp | 1 - src/tools/drawTools/vtooltriangle.cpp | 1 - src/tools/vabstracttool.cpp | 18 +++++++++++++++--- src/tools/vabstracttool.h | 5 ----- src/tools/vtooldetail.cpp | 4 +--- src/tools/vtooldetail.h | 6 ------ src/widgets/vmaingraphicsscene.h | 5 ----- src/xml/vdomdocument.cpp | 2 +- 22 files changed, 17 insertions(+), 39 deletions(-) diff --git a/src/tools/drawTools/vtoolalongline.cpp b/src/tools/drawTools/vtoolalongline.cpp index 2d5498f1e..eaa07dd9f 100644 --- a/src/tools/drawTools/vtoolalongline.cpp +++ b/src/tools/drawTools/vtoolalongline.cpp @@ -193,7 +193,6 @@ void VToolAlongLine::Create(const qint64 _id, const QString &pointName, const QS secondPointId, typeLine, typeCreation); scene->addItem(point); connect(point, &VToolAlongLine::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolAlongLine::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolAlongLine::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(firstPointId); diff --git a/src/tools/drawTools/vtoolarc.cpp b/src/tools/drawTools/vtoolarc.cpp index 597dbb1b1..33dc27096 100644 --- a/src/tools/drawTools/vtoolarc.cpp +++ b/src/tools/drawTools/vtoolarc.cpp @@ -128,7 +128,6 @@ void VToolArc::Create(const qint64 _id, const qint64 ¢er, const QString &rad VToolArc *toolArc = new VToolArc(doc, data, id, typeCreation); scene->addItem(toolArc); connect(toolArc, &VToolArc::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(toolArc, &VToolArc::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); doc->AddTool(id, toolArc); doc->IncrementReferens(center); } diff --git a/src/tools/drawTools/vtoolbisector.cpp b/src/tools/drawTools/vtoolbisector.cpp index 435ad73ef..01eb4fd30 100644 --- a/src/tools/drawTools/vtoolbisector.cpp +++ b/src/tools/drawTools/vtoolbisector.cpp @@ -134,7 +134,6 @@ void VToolBisector::Create(const qint64 _id, const QString &formula, const qint6 thirdPointId, typeCreation); scene->addItem(point); connect(point, &VToolBisector::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolBisector::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolBisector::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(firstPointId); diff --git a/src/tools/drawTools/vtoolcutspline.cpp b/src/tools/drawTools/vtoolcutspline.cpp index d2345a5b2..d8ce3741d 100644 --- a/src/tools/drawTools/vtoolcutspline.cpp +++ b/src/tools/drawTools/vtoolcutspline.cpp @@ -145,7 +145,6 @@ void VToolCutSpline::Create(const qint64 _id, const QString &pointName, VToolCutSpline *point = new VToolCutSpline(doc, data, id, formula, splineId, spl1id, spl2id, typeCreation); scene->addItem(point); connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolPoint::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPoint::SetFactor); doc->AddTool(id, point); doc->AddTool(spl1id, point); diff --git a/src/tools/drawTools/vtoolcutsplinepath.cpp b/src/tools/drawTools/vtoolcutsplinepath.cpp index 676096d5a..cfec53809 100644 --- a/src/tools/drawTools/vtoolcutsplinepath.cpp +++ b/src/tools/drawTools/vtoolcutsplinepath.cpp @@ -216,7 +216,6 @@ void VToolCutSplinePath::Create(const qint64 _id, const QString &pointName, cons splPath2id, typeCreation); scene->addItem(point); connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolPoint::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPoint::SetFactor); doc->AddTool(id, point); doc->AddTool(splPath1id, point); diff --git a/src/tools/drawTools/vtoolendline.cpp b/src/tools/drawTools/vtoolendline.cpp index d553fae36..d5bd9b0ab 100644 --- a/src/tools/drawTools/vtoolendline.cpp +++ b/src/tools/drawTools/vtoolendline.cpp @@ -108,7 +108,6 @@ void VToolEndLine::Create(const qint64 _id, const QString &pointName, const QStr basePointId, typeCreation); scene->addItem(point); connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolPoint::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPoint::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(basePointId); diff --git a/src/tools/drawTools/vtoolheight.cpp b/src/tools/drawTools/vtoolheight.cpp index c3aa91b3d..96300b696 100644 --- a/src/tools/drawTools/vtoolheight.cpp +++ b/src/tools/drawTools/vtoolheight.cpp @@ -107,7 +107,6 @@ void VToolHeight::Create(const qint64 _id, const QString &pointName, const QStri typeCreation); scene->addItem(point); connect(point, &VToolPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolPoint::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPoint::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(basePointId); diff --git a/src/tools/drawTools/vtoolline.cpp b/src/tools/drawTools/vtoolline.cpp index 964d6b136..e55890a26 100644 --- a/src/tools/drawTools/vtoolline.cpp +++ b/src/tools/drawTools/vtoolline.cpp @@ -99,7 +99,6 @@ void VToolLine::Create(const qint64 &_id, const qint64 &firstPoint, const qint64 Q_ASSERT(line != 0); scene->addItem(line); connect(line, &VToolLine::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(line, &VToolLine::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, line, &VToolLine::SetFactor); doc->AddTool(id, line); doc->IncrementReferens(firstPoint); diff --git a/src/tools/drawTools/vtoollineintersect.cpp b/src/tools/drawTools/vtoollineintersect.cpp index 251c244bd..3f2cd45a5 100644 --- a/src/tools/drawTools/vtoollineintersect.cpp +++ b/src/tools/drawTools/vtoollineintersect.cpp @@ -116,7 +116,6 @@ void VToolLineIntersect::Create(const qint64 _id, const qint64 &p1Line1Id, const p2Line2Id, typeCreation); scene->addItem(point); connect(point, &VToolLineIntersect::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolLineIntersect::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolLineIntersect::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(p1Line1Id); diff --git a/src/tools/drawTools/vtoolnormal.cpp b/src/tools/drawTools/vtoolnormal.cpp index a33ed61b0..1c3cb0134 100644 --- a/src/tools/drawTools/vtoolnormal.cpp +++ b/src/tools/drawTools/vtoolnormal.cpp @@ -110,7 +110,6 @@ void VToolNormal::Create(const qint64 _id, const QString &formula, const qint64 firstPointId, secondPointId, typeCreation); scene->addItem(point); connect(point, &VToolNormal::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolNormal::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolNormal::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(firstPointId); diff --git a/src/tools/drawTools/vtoolpointofcontact.cpp b/src/tools/drawTools/vtoolpointofcontact.cpp index a1ac628c3..0abf7981e 100644 --- a/src/tools/drawTools/vtoolpointofcontact.cpp +++ b/src/tools/drawTools/vtoolpointofcontact.cpp @@ -140,7 +140,6 @@ void VToolPointOfContact::Create(const qint64 _id, const QString &radius, const firstPointId, secondPointId, typeCreation); scene->addItem(point); connect(point, &VToolPointOfContact::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolPointOfContact::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPointOfContact::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(center); diff --git a/src/tools/drawTools/vtoolpointofintersection.cpp b/src/tools/drawTools/vtoolpointofintersection.cpp index cf5202ca2..1c2d67e25 100644 --- a/src/tools/drawTools/vtoolpointofintersection.cpp +++ b/src/tools/drawTools/vtoolpointofintersection.cpp @@ -94,7 +94,6 @@ void VToolPointOfIntersection::Create(const qint64 _id, const QString &pointName secondPointId, typeCreation); scene->addItem(point); connect(point, &VToolPointOfIntersection::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolPointOfIntersection::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPointOfIntersection::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(firstPointId); diff --git a/src/tools/drawTools/vtoolshoulderpoint.cpp b/src/tools/drawTools/vtoolshoulderpoint.cpp index 5d6ae4f8d..0e34bc11f 100644 --- a/src/tools/drawTools/vtoolshoulderpoint.cpp +++ b/src/tools/drawTools/vtoolshoulderpoint.cpp @@ -142,7 +142,6 @@ void VToolShoulderPoint::Create(const qint64 _id, const QString &formula, const typeCreation); scene->addItem(point); connect(point, &VToolShoulderPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolShoulderPoint::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolShoulderPoint::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(p1Line); diff --git a/src/tools/drawTools/vtoolspline.cpp b/src/tools/drawTools/vtoolspline.cpp index 465323980..2f30be4fc 100644 --- a/src/tools/drawTools/vtoolspline.cpp +++ b/src/tools/drawTools/vtoolspline.cpp @@ -132,7 +132,6 @@ void VToolSpline::Create(const qint64 _id, const qint64 &p1, const qint64 &p4, c VToolSpline *spl = new VToolSpline(doc, data, id, typeCreation); scene->addItem(spl); connect(spl, &VToolSpline::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(spl, &VToolSpline::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, spl, &VToolSpline::SetFactor); doc->AddTool(id, spl); doc->IncrementReferens(p1); diff --git a/src/tools/drawTools/vtoolsplinepath.cpp b/src/tools/drawTools/vtoolsplinepath.cpp index 7beea2025..905a7d1c6 100644 --- a/src/tools/drawTools/vtoolsplinepath.cpp +++ b/src/tools/drawTools/vtoolsplinepath.cpp @@ -119,7 +119,6 @@ void VToolSplinePath::Create(const qint64 _id, VSplinePath *path, VMainGraphicsS VToolSplinePath *spl = new VToolSplinePath(doc, data, id, typeCreation); scene->addItem(spl); connect(spl, &VToolSplinePath::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(spl, &VToolSplinePath::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, spl, &VToolSplinePath::SetFactor); doc->AddTool(id, spl); } diff --git a/src/tools/drawTools/vtooltriangle.cpp b/src/tools/drawTools/vtooltriangle.cpp index d9b0ba0d0..c4f9435d3 100644 --- a/src/tools/drawTools/vtooltriangle.cpp +++ b/src/tools/drawTools/vtooltriangle.cpp @@ -102,7 +102,6 @@ void VToolTriangle::Create(const qint64 _id, const QString &pointName, const qin secondPointId, typeCreation); scene->addItem(point); connect(point, &VToolTriangle::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(point, &VToolTriangle::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolTriangle::SetFactor); doc->AddTool(id, point); doc->IncrementReferens(axisP1Id); diff --git a/src/tools/vabstracttool.cpp b/src/tools/vabstracttool.cpp index 77e93d649..e1699d6a3 100644 --- a/src/tools/vabstracttool.cpp +++ b/src/tools/vabstracttool.cpp @@ -189,9 +189,21 @@ void VAbstractTool::DeleteTool(QGraphicsItem *tool) QDomNode element = domElement.parentNode(); if (element.isNull() == false) { - RemoveReferens();//deincrement referens - element.removeChild(domElement);//remove form file - emit SceneRemoveTool(tool);//remove form scene + if (element.isElement()) + { + RemoveReferens();//deincrement referens + element.removeChild(domElement);//remove form file + QGraphicsScene *scene = tool->scene(); + if(scene != 0)//some tools haven't scene + { + scene->removeItem(tool);//remove form scene + } + emit toolhaveChange();//set enabled save button + } + else + { + qWarning()<<"parent isn't element"<addItem(detail); connect(detail, &VToolDetail::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(detail, &VToolDetail::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); QHash* tools = doc->getTools(); tools->insert(id, detail); } @@ -161,7 +160,7 @@ void VToolDetail::Create(const qint64 &_id, const VDetail &newDetail, VMainGraph void VToolDetail::Remove() { - + DeleteTool(this); } void VToolDetail::FullUpdateFromFile() @@ -379,6 +378,5 @@ void VToolDetail::InitTool(VMainGraphicsScene *scene, const VNodeDetail &node) Tool *tool = qobject_cast(tools->value(node.getId())); Q_ASSERT(tool != 0); connect(tool, &Tool::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem); - connect(tool, &Tool::SceneRemoveTool, scene, &VMainGraphicsScene::RemoveTool); tool->setParentItem(this); } diff --git a/src/tools/vtooldetail.h b/src/tools/vtooldetail.h index 974621b0f..927b80c7d 100644 --- a/src/tools/vtooldetail.h +++ b/src/tools/vtooldetail.h @@ -155,12 +155,6 @@ public slots: * @param result */ virtual void FullUpdateFromGui(int result); -signals: - /** - * @brief RemoveTool - * @param tool - */ - void SceneRemoveTool(QGraphicsItem *tool); protected: /** * @brief AddToFile diff --git a/src/widgets/vmaingraphicsscene.h b/src/widgets/vmaingraphicsscene.h index fccc36ead..cee01c006 100644 --- a/src/widgets/vmaingraphicsscene.h +++ b/src/widgets/vmaingraphicsscene.h @@ -76,11 +76,6 @@ public slots: * @param type */ void ChoosedItem(qint64 id, const Scene::Scenes &type); - /** - * @brief RemoveTool - * @param tool - */ - inline void RemoveTool(QGraphicsItem *tool) {this->removeItem(tool);} /** * @brief SetFactor * @param factor diff --git a/src/xml/vdomdocument.cpp b/src/xml/vdomdocument.cpp index 237a68df7..1ad23dd13 100644 --- a/src/xml/vdomdocument.cpp +++ b/src/xml/vdomdocument.cpp @@ -726,7 +726,7 @@ void VDomDocument::ParsePointElement(VMainGraphicsScene *scene, const QDomElemen { VExceptionObjectError excep(tr("Error creating or updating single point"), domElement); excep.AddMoreInformation(e.ErrorMessage()); - scene->RemoveTool(spoint); + scene->removeItem(spoint); delete spoint; throw excep; }