diff --git a/geometry/vspline.cpp b/geometry/vspline.cpp index 137a47483..1273a7f30 100644 --- a/geometry/vspline.cpp +++ b/geometry/vspline.cpp @@ -586,44 +586,44 @@ QPainterPath VSpline::GetPath() const{ 2 - 1 real root + complex roots imaginary part is zero (i.e. 2 real roots). */ -qint32 VSpline::Cubic(qreal *x, qreal a, qreal b, qreal c){ - qreal q,r,r2,q3; +//qint32 VSpline::Cubic(qreal *x, qreal a, qreal b, qreal c){ +// qreal q,r,r2,q3; - q = (a*a - 3.*b)/9.; - r = (a*(2.*a*a - 9.*b) + 27.*c)/54.; - r2 = r*r; - q3 = pow(q,3); - if(r2GetNameActivDraw(); QInputDialog *dlg = new QInputDialog(this); @@ -206,9 +206,8 @@ void MainWindow::OptionDraw(){ } template -void MainWindow::SetToolButton(bool checked, Tool::Tools t, const QString &cursor, - const QString &toolTip, QSharedPointer &dialog, - Func closeDialogSlot){ +void MainWindow::SetToolButton(bool checked, Tool::Tools t, const QString &cursor, const QString &toolTip, + QSharedPointer &dialog, Func closeDialogSlot){ if(checked){ CanselTool(); tool = t; @@ -223,14 +222,14 @@ void MainWindow::SetToolButton(bool checked, Tool::Tools t, const QString &curso connect(doc, &VDomDocument::FullUpdateFromFile, dialog.data(), &Dialog::UpdateList); } else { if(QToolButton *tButton = qobject_cast< QToolButton * >(this->sender())){ + Q_ASSERT(tButton != 0); tButton->setChecked(true); } } } template -void MainWindow::AddToolToDetail(T *tool, const qint64 &id, Tool::Tools typeTool, - const qint64 &idDetail){ +void MainWindow::AddToolToDetail(T *tool, const qint64 &id, Tool::Tools typeTool, const qint64 &idDetail){ QHash* tools = doc->getTools(); VToolDetail *det = qobject_cast(tools->value(idDetail)); Q_ASSERT(det != 0); diff --git a/tools/drawTools/vdrawtool.h b/tools/drawTools/vdrawtool.h index c9a05e2f6..da654fb42 100644 --- a/tools/drawTools/vdrawtool.h +++ b/tools/drawTools/vdrawtool.h @@ -99,6 +99,18 @@ protected: } } } + template + void ShowItem(Item *item, qint64 id, Qt::GlobalColor color, bool enable){ + Q_ASSERT(item != 0); + if(id == item->id){ + if(enable == false){ + currentColor = baseColor; + } else { + currentColor = color; + } + item->setPen(QPen(currentColor, widthHairLine/factor)); + } + } }; #endif // VDRAWTOOL_H diff --git a/tools/drawTools/vtoolalongline.cpp b/tools/drawTools/vtoolalongline.cpp index f4fe35812..8bfebd8a3 100644 --- a/tools/drawTools/vtoolalongline.cpp +++ b/tools/drawTools/vtoolalongline.cpp @@ -56,7 +56,6 @@ void VToolAlongLine::FullUpdateFromGui(int result){ domElement.setAttribute("secondPoint", QString().setNum(dialogAlongLine->getSecondPointId())); emit FullUpdateTree(); } - } dialogAlongLine.clear(); } diff --git a/tools/drawTools/vtoolarc.cpp b/tools/drawTools/vtoolarc.cpp index 863289812..f73d8f4bc 100644 --- a/tools/drawTools/vtoolarc.cpp +++ b/tools/drawTools/vtoolarc.cpp @@ -125,31 +125,22 @@ void VToolArc::FullUpdateFromGui(int result){ } void VToolArc::ChangedActivDraw(const QString newName){ + bool selectable = false; if(nameActivDraw == newName){ - this->setPen(QPen(Qt::black, widthHairLine/factor)); - this->setFlag(QGraphicsItem::ItemIsSelectable, true); - this->setAcceptHoverEvents(true); + selectable = true; currentColor = Qt::black; - VDrawTool::ChangedActivDraw(newName); } else { - this->setPen(QPen(Qt::gray, widthHairLine/factor)); - this->setFlag(QGraphicsItem::ItemIsSelectable, false); - this->setAcceptHoverEvents (false); + selectable = false; currentColor = Qt::gray; - VDrawTool::ChangedActivDraw(newName); } + this->setPen(QPen(currentColor, widthHairLine/factor)); + this->setFlag(QGraphicsItem::ItemIsSelectable, selectable); + this->setAcceptHoverEvents (selectable); + VDrawTool::ChangedActivDraw(newName); } void VToolArc::ShowTool(qint64 id, Qt::GlobalColor color, bool enable){ - if(id == this->id){ - if(enable == false){ - this->setPen(QPen(baseColor, widthHairLine/factor)); - currentColor = baseColor; - } else { - this->setPen(QPen(color, widthHairLine/factor)); - currentColor = color; - } - } + ShowItem(this, id, color, enable); } void VToolArc::SetFactor(qreal factor){ diff --git a/tools/drawTools/vtoolline.cpp b/tools/drawTools/vtoolline.cpp index 207ff1e81..62236ecca 100644 --- a/tools/drawTools/vtoolline.cpp +++ b/tools/drawTools/vtoolline.cpp @@ -100,15 +100,7 @@ void VToolLine::FullUpdateFromGui(int result){ } void VToolLine::ShowTool(qint64 id, Qt::GlobalColor color, bool enable){ - if(id == this->id){ - if(enable == false){ - this->setPen(QPen(baseColor, widthHairLine/factor)); - currentColor = baseColor; - } else { - this->setPen(QPen(color, widthHairLine/factor)); - currentColor = color; - } - } + ShowItem(this, id, color, enable); } void VToolLine::SetFactor(qreal factor){ @@ -117,24 +109,23 @@ void VToolLine::SetFactor(qreal factor){ } void VToolLine::ChangedActivDraw(const QString newName){ + bool selectable = false; if(nameActivDraw == newName){ - this->setPen(QPen(Qt::black, widthHairLine/factor)); - this->setAcceptHoverEvents (true); + selectable = true; currentColor = Qt::black; - VDrawTool::ChangedActivDraw(newName); } else { - this->setPen(QPen(Qt::gray, widthHairLine/factor)); - this->setAcceptHoverEvents (false); + selectable = false; currentColor = Qt::gray; - VDrawTool::ChangedActivDraw(newName); } + this->setPen(QPen(currentColor, widthHairLine/factor)); + this->setAcceptHoverEvents (selectable); + VDrawTool::ChangedActivDraw(newName); } void VToolLine::contextMenuEvent(QGraphicsSceneContextMenuEvent *event){ ContextMenu(dialogLine, this, event); } - void VToolLine::AddToFile(){ QDomElement domElement = doc->createElement("line"); AddAttribute(domElement, "id", id); diff --git a/tools/drawTools/vtoollinepoint.cpp b/tools/drawTools/vtoollinepoint.cpp index cb30cd388..e7742599e 100644 --- a/tools/drawTools/vtoollinepoint.cpp +++ b/tools/drawTools/vtoollinepoint.cpp @@ -41,14 +41,12 @@ VToolLinePoint::VToolLinePoint(VDomDocument *doc, VContainer *data, const qint64 void VToolLinePoint::ChangedActivDraw(const QString newName){ if(nameActivDraw == newName){ - mainLine->setPen(QPen(Qt::black, widthHairLine/factor)); currentColor = Qt::black; - VToolPoint::ChangedActivDraw(newName); } else { - mainLine->setPen(QPen(Qt::gray, widthHairLine/factor)); currentColor = Qt::gray; - VToolPoint::ChangedActivDraw(newName); } + mainLine->setPen(QPen(currentColor, widthHairLine/factor)); + VToolPoint::ChangedActivDraw(newName); } void VToolLinePoint::RefreshGeometry(){ diff --git a/tools/drawTools/vtoolpoint.cpp b/tools/drawTools/vtoolpoint.cpp index 17bf97489..eb53afb10 100644 --- a/tools/drawTools/vtoolpoint.cpp +++ b/tools/drawTools/vtoolpoint.cpp @@ -54,43 +54,28 @@ void VToolPoint::UpdateNamePosition(qreal mx, qreal my){ } void VToolPoint::ChangedActivDraw(const QString newName){ + bool selectable = false; if(nameActivDraw == newName){ - this->setPen(QPen(Qt::black, widthHairLine/factor)); - this->setFlag(QGraphicsItem::ItemIsSelectable, true); - this->setAcceptHoverEvents(true); - namePoint->setFlag(QGraphicsItem::ItemIsMovable, true); - namePoint->setFlag(QGraphicsItem::ItemIsSelectable, true); - namePoint->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); - namePoint->setBrush(QBrush(Qt::black)); - namePoint->setAcceptHoverEvents(true); - lineName->setPen(QPen(Qt::black, widthHairLine/factor)); + selectable = true; currentColor = Qt::black; - VDrawTool::ChangedActivDraw(newName); } else { - this->setPen(QPen(Qt::gray, widthHairLine/factor)); - this->setFlag(QGraphicsItem::ItemIsSelectable, false); - this->setAcceptHoverEvents (false); - namePoint->setFlag(QGraphicsItem::ItemIsMovable, false); - namePoint->setFlag(QGraphicsItem::ItemIsSelectable, false); - namePoint->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false); - namePoint->setBrush(QBrush(Qt::gray)); - namePoint->setAcceptHoverEvents(false); - lineName->setPen(QPen(Qt::gray, widthHairLine/factor)); + selectable = false; currentColor = Qt::gray; - VDrawTool::ChangedActivDraw(newName); } + this->setPen(QPen(currentColor, widthHairLine/factor)); + this->setFlag(QGraphicsItem::ItemIsSelectable, selectable); + this->setAcceptHoverEvents (selectable); + namePoint->setFlag(QGraphicsItem::ItemIsMovable, selectable); + namePoint->setFlag(QGraphicsItem::ItemIsSelectable, selectable); + namePoint->setFlag(QGraphicsItem::ItemSendsGeometryChanges, selectable); + namePoint->setBrush(QBrush(currentColor)); + namePoint->setAcceptHoverEvents(selectable); + lineName->setPen(QPen(currentColor, widthHairLine/factor)); + VDrawTool::ChangedActivDraw(newName); } void VToolPoint::ShowTool(qint64 id, Qt::GlobalColor color, bool enable){ - if(id == this->id){ - if(enable == false){ - this->setPen(QPen(baseColor, widthHairLine/factor)); - currentColor = baseColor; - } else { - this->setPen(QPen(color, widthHairLine/factor)); - currentColor = color; - } - } + ShowItem(this, id, color, enable); } void VToolPoint::SetFactor(qreal factor){ diff --git a/tools/drawTools/vtoolspline.cpp b/tools/drawTools/vtoolspline.cpp index 699c8143b..a38b40740 100644 --- a/tools/drawTools/vtoolspline.cpp +++ b/tools/drawTools/vtoolspline.cpp @@ -246,33 +246,23 @@ void VToolSpline::RefreshGeometry(){ void VToolSpline::ChangedActivDraw(const QString newName){ + bool selectable = false; if(nameActivDraw == newName){ - this->setPen(QPen(Qt::black, widthHairLine/factor)); - this->setFlag(QGraphicsItem::ItemIsSelectable, true); - this->setAcceptHoverEvents(true); + selectable = true; currentColor = Qt::black; - emit setEnabledPoint(true); - VDrawTool::ChangedActivDraw(newName); } else { - this->setPen(QPen(Qt::gray, widthHairLine/factor)); - this->setFlag(QGraphicsItem::ItemIsSelectable, false); - this->setAcceptHoverEvents (false); + selectable = false; currentColor = Qt::gray; - emit setEnabledPoint(false); - VDrawTool::ChangedActivDraw(newName); } + this->setPen(QPen(currentColor, widthHairLine/factor)); + this->setFlag(QGraphicsItem::ItemIsSelectable, selectable); + this->setAcceptHoverEvents (selectable); + emit setEnabledPoint(selectable); + VDrawTool::ChangedActivDraw(newName); } void VToolSpline::ShowTool(qint64 id, Qt::GlobalColor color, bool enable){ - if(id == this->id){ - if(enable == false){ - this->setPen(QPen(baseColor, widthHairLine/factor)); - currentColor = baseColor; - } else { - this->setPen(QPen(color, widthHairLine/factor)); - currentColor = color; - } - } + ShowItem(this, id, color, enable); } void VToolSpline::SetFactor(qreal factor){ diff --git a/tools/drawTools/vtoolsplinepath.cpp b/tools/drawTools/vtoolsplinepath.cpp index 6eda29244..301dc0520 100644 --- a/tools/drawTools/vtoolsplinepath.cpp +++ b/tools/drawTools/vtoolsplinepath.cpp @@ -187,33 +187,23 @@ void VToolSplinePath::UpdatePathPoint(QDomNode& node, VSplinePath &path){ } void VToolSplinePath::ChangedActivDraw(const QString newName){ + bool selectable = false; if(nameActivDraw == newName){ - this->setPen(QPen(Qt::black, widthHairLine/factor)); - this->setFlag(QGraphicsItem::ItemIsSelectable, true); - this->setAcceptHoverEvents(true); + selectable = true; currentColor = Qt::black; - emit setEnabledPoint(true); - VDrawTool::ChangedActivDraw(newName); } else { - this->setPen(QPen(Qt::gray, widthHairLine/factor)); - this->setFlag(QGraphicsItem::ItemIsSelectable, false); - this->setAcceptHoverEvents (false); + selectable = false; currentColor = Qt::gray; - emit setEnabledPoint(false); - VDrawTool::ChangedActivDraw(newName); } + this->setPen(QPen(currentColor, widthHairLine/factor)); + this->setFlag(QGraphicsItem::ItemIsSelectable, selectable); + this->setAcceptHoverEvents (selectable); + emit setEnabledPoint(selectable); + VDrawTool::ChangedActivDraw(newName); } void VToolSplinePath::ShowTool(qint64 id, Qt::GlobalColor color, bool enable){ - if(id == this->id){ - if(enable == false){ - this->setPen(QPen(baseColor, widthHairLine/factor)); - currentColor = baseColor; - } else { - this->setPen(QPen(color, widthHairLine/factor)); - currentColor = color; - } - } + ShowItem(this, id, color, enable); } void VToolSplinePath::SetFactor(qreal factor){ diff --git a/tools/drawTools/vtooltriangle.cpp b/tools/drawTools/vtooltriangle.cpp index 79fd2c3d2..260961412 100644 --- a/tools/drawTools/vtooltriangle.cpp +++ b/tools/drawTools/vtooltriangle.cpp @@ -95,8 +95,8 @@ QPointF VToolTriangle::FindPoint(const QPointF axisP1, const QPointF axisP2, con } } if(c*c < a*a + b*b){ - return line.p2(); qWarning()<()), - sceneDetails(scene){ + VMainGraphicsScene *scene, QGraphicsItem *parent) :VAbstractTool(doc, data, id), + QGraphicsPathItem(parent), dialogDetail(QSharedPointer()), sceneDetails(scene){ VDetail detail = data->GetDetail(id); QHash* tools = doc->getTools(); Q_ASSERT(tools != 0);