New template InitTool.
--HG-- branch : develop
This commit is contained in:
parent
2d12b35e78
commit
04140824cd
|
@ -38,8 +38,6 @@ public slots:
|
|||
void ChangedNameDraw(const QString oldName, const QString newName);
|
||||
virtual void FullUpdateFromGui(int result)=0;
|
||||
virtual void SetFactor(qreal factor);
|
||||
signals:
|
||||
void RemoveTool(QGraphicsItem *tool);
|
||||
protected:
|
||||
bool ignoreContextMenuEvent;
|
||||
bool ignoreFullUpdate;
|
||||
|
|
|
@ -34,8 +34,6 @@ public:
|
|||
inline void ignoreContextMenu(bool enable) {ignoreContextMenuEvent = enable;}
|
||||
public slots:
|
||||
virtual void FullUpdateFromGui(int result)=0;
|
||||
signals:
|
||||
void RemoveTool(QGraphicsItem *tool);
|
||||
protected:
|
||||
bool ignoreContextMenuEvent;
|
||||
bool ignoreFullUpdate;
|
||||
|
|
|
@ -78,6 +78,7 @@ signals:
|
|||
void toolhaveChange();
|
||||
void ChoosedTool(qint64 id, Scene::Scenes type);
|
||||
void FullUpdateTree();
|
||||
void RemoveTool(QGraphicsItem *tool);
|
||||
protected:
|
||||
VDomDocument *doc;
|
||||
const qint64 id;
|
||||
|
|
|
@ -38,150 +38,73 @@ VToolDetail::VToolDetail(VDomDocument *doc, VContainer *data, const qint64 &id,
|
|||
VMainGraphicsScene *scene, QGraphicsItem *parent) :VAbstractTool(doc, data, id),
|
||||
QGraphicsPathItem(parent), dialogDetail(QSharedPointer<DialogDetail>()), sceneDetails(scene){
|
||||
VDetail detail = data->GetDetail(id);
|
||||
QHash<qint64, VDataTool*>* tools = doc->getTools();
|
||||
Q_ASSERT(tools != 0);
|
||||
for(qint32 i = 0; i< detail.CountNode(); ++i){
|
||||
switch(detail[i].getTypeTool()){
|
||||
case(Tool::NodePoint):{
|
||||
VNodePoint *point = qobject_cast<VNodePoint*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(point != 0);
|
||||
connect(point, &VNodePoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
point->setParentItem(this);
|
||||
InitTool<VNodePoint>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::NodeArc):{
|
||||
VNodeArc *arc = qobject_cast<VNodeArc*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(arc != 0);
|
||||
connect(arc, &VNodeArc::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
arc->setParentItem(this);
|
||||
InitTool<VNodeArc>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::NodeSpline):{
|
||||
VNodeSpline *spl = qobject_cast<VNodeSpline*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(spl != 0);
|
||||
connect(spl, &VNodeSpline::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
spl->setParentItem(this);
|
||||
InitTool<VNodeSpline>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::NodeSplinePath):{
|
||||
VNodeSplinePath *splPath = qobject_cast<VNodeSplinePath*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(splPath != 0);
|
||||
connect(splPath, &VNodeSplinePath::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
splPath->setParentItem(this);
|
||||
InitTool<VNodeSplinePath>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::AlongLineTool):{
|
||||
VModelingAlongLine *tool = qobject_cast<VModelingAlongLine*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingAlongLine::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingAlongLine::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
InitTool<VModelingAlongLine>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::ArcTool):{
|
||||
VModelingArc *tool = qobject_cast<VModelingArc*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingArc::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingArc::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
InitTool<VModelingArc>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::BisectorTool):{
|
||||
VModelingBisector *tool = qobject_cast<VModelingBisector*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingBisector::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingBisector::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
InitTool<VModelingBisector>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::EndLineTool):{
|
||||
VModelingEndLine *tool = qobject_cast<VModelingEndLine*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingEndLine::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingEndLine::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
InitTool<VModelingEndLine>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::LineIntersectTool):{
|
||||
VModelingLineIntersect *tool = qobject_cast<VModelingLineIntersect*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingLineIntersect::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingLineIntersect::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
InitTool<VModelingLineIntersect>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::LineTool):{
|
||||
VModelingLine *tool = qobject_cast<VModelingLine*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingLine::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingLine::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
InitTool<VModelingLine>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::NormalTool):{
|
||||
VModelingNormal *tool = qobject_cast<VModelingNormal*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingNormal::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingNormal::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
InitTool<VModelingNormal>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::PointOfContact):{
|
||||
VModelingPointOfContact *tool = qobject_cast<VModelingPointOfContact*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingPointOfContact::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingPointOfContact::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
case(Tool::PointOfContact):
|
||||
InitTool<VModelingPointOfContact>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::ShoulderPointTool):{
|
||||
VModelingShoulderPoint *tool = qobject_cast<VModelingShoulderPoint*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingShoulderPoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingShoulderPoint::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
case(Tool::ShoulderPointTool):
|
||||
InitTool<VModelingShoulderPoint>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::SplinePathTool):{
|
||||
VModelingSplinePath *tool = qobject_cast<VModelingSplinePath*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingSplinePath::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingSplinePath::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
case(Tool::SplinePathTool):
|
||||
InitTool<VModelingSplinePath>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::SplineTool):{
|
||||
VModelingSpline *tool = qobject_cast<VModelingSpline*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingSpline::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingSpline::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
case(Tool::SplineTool):
|
||||
InitTool<VModelingSpline>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::Height):{
|
||||
VModelingHeight *tool = qobject_cast<VModelingHeight*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingHeight::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingHeight::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
case(Tool::Height):
|
||||
InitTool<VModelingHeight>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::Triangle):{
|
||||
VModelingTriangle *tool = qobject_cast<VModelingTriangle*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingTriangle::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingTriangle::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
case(Tool::Triangle):
|
||||
InitTool<VModelingTriangle>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
case(Tool::PointOfIntersection):{
|
||||
VModelingPointOfIntersection *tool = qobject_cast<VModelingPointOfIntersection*>(tools->value(detail[i].getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &VModelingPointOfIntersection::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &VModelingPointOfIntersection::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
case(Tool::PointOfIntersection):
|
||||
InitTool<VModelingPointOfIntersection>(scene, detail[i]);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
qWarning()<<"Get wrong tool type. Ignore.";
|
||||
break;
|
||||
|
@ -484,3 +407,14 @@ void VToolDetail::RefreshGeometry(){
|
|||
QPainterPath path = VAbstractTool::data.ContourPath(id);
|
||||
this->setPath(path);
|
||||
}
|
||||
|
||||
template <typename Tool>
|
||||
void VToolDetail::InitTool(VMainGraphicsScene *scene, const VNodeDetail &node){
|
||||
QHash<qint64, VDataTool*>* tools = doc->getTools();
|
||||
Q_ASSERT(tools != 0);
|
||||
Tool *tool = qobject_cast<Tool*>(tools->value(node.getId()));
|
||||
Q_ASSERT(tool != 0);
|
||||
connect(tool, &Tool::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||
connect(tool, &Tool::RemoveTool, scene, &VMainGraphicsScene::RemoveTool);
|
||||
tool->setParentItem(this);
|
||||
}
|
||||
|
|
|
@ -77,6 +77,8 @@ private:
|
|||
VMainGraphicsScene *sceneDetails;
|
||||
void RefreshGeometry ();
|
||||
void AddNode(QDomElement &domElement, VNodeDetail &node);
|
||||
template <typename Tool>
|
||||
void InitTool(VMainGraphicsScene *scene, const VNodeDetail &node);
|
||||
};
|
||||
|
||||
#endif // VTOOLDETAIL_H
|
||||
|
|
Loading…
Reference in New Issue
Block a user