Updated property dialog for tool Spline.
--HG-- branch : feature
This commit is contained in:
parent
53cb607f34
commit
a2561bc7da
|
@ -1298,20 +1298,52 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSpline(VProperty *property)
|
|||
QVariant value = property->data(VProperty::DPC_Data, Qt::DisplayRole);
|
||||
const QString id = propertyToId[property];
|
||||
|
||||
VToolSpline *i = qgraphicsitem_cast<VToolSpline *>(currentItem);
|
||||
auto i = qgraphicsitem_cast<VToolSpline *>(currentItem);
|
||||
SCASSERT(i != nullptr);
|
||||
|
||||
VSpline spl = i->getSpline();
|
||||
const VFormula f = value.value<VFormula>();
|
||||
|
||||
switch (PropertiesList().indexOf(id))
|
||||
{
|
||||
case 0: // AttrName
|
||||
Q_UNREACHABLE();//The attribute is read only
|
||||
break;
|
||||
case 25: // AttrKCurve
|
||||
case 9: // AttrAngle1
|
||||
if (not f.error())
|
||||
{
|
||||
spl.SetStartAngle(f.getDoubleValue(), f.GetFormula(FormulaType::FromUser));
|
||||
i->setSpline(spl);
|
||||
}
|
||||
break;
|
||||
case 10: // AttrAngle2
|
||||
if (not f.error())
|
||||
{
|
||||
spl.SetEndAngle(f.getDoubleValue(), f.GetFormula(FormulaType::FromUser));
|
||||
i->setSpline(spl);
|
||||
}
|
||||
break;
|
||||
case 36: // AttrLength1
|
||||
if (not f.error() && f.getDoubleValue() >= 0)
|
||||
{
|
||||
spl.SetC1Length(qApp->toPixel(f.getDoubleValue()), f.GetFormula(FormulaType::FromUser));
|
||||
i->setSpline(spl);
|
||||
}
|
||||
break;
|
||||
case 37: // AttrLength2
|
||||
if (not f.error() && f.getDoubleValue() >= 0)
|
||||
{
|
||||
spl.SetC2Length(qApp->toPixel(f.getDoubleValue()), f.GetFormula(FormulaType::FromUser));
|
||||
i->setSpline(spl);
|
||||
}
|
||||
break;
|
||||
case 25: // AttrKCurve
|
||||
if (value.toDouble() > 0)
|
||||
{
|
||||
VSpline spl = i->getSpline();
|
||||
spl.SetKcurve(value.toDouble());
|
||||
i->setSpline(spl);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 27: // AttrTypeColor
|
||||
i->SetLineColor(value.toString());
|
||||
break;
|
||||
|
@ -1709,14 +1741,39 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolShoulderPoint(QGraphicsItem *it
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolOptionsPropertyBrowser::ShowOptionsToolSpline(QGraphicsItem *item)
|
||||
{
|
||||
VToolSpline *i = qgraphicsitem_cast<VToolSpline *>(item);
|
||||
auto i = qgraphicsitem_cast<VToolSpline *>(item);
|
||||
i->ShowVisualization(true);
|
||||
formView->setTitle(tr("Curve tool"));
|
||||
|
||||
const auto spl = i->getSpline();
|
||||
|
||||
AddPropertyObjectName(i, tr("Name"), true);
|
||||
|
||||
VDoubleProperty* itemFactor = new VDoubleProperty(tr("Curve factor"));
|
||||
VSpline spl = i->getSpline();
|
||||
VFormula angle1(spl.GetStartAngleFormula(), i->getData());
|
||||
angle1.setCheckZero(false);
|
||||
angle1.setToolId(i->getId());
|
||||
angle1.setPostfix(degreeSymbol);
|
||||
AddPropertyFormula(tr("C1: angle"), angle1, AttrAngle1);
|
||||
|
||||
VFormula length1(spl.GetC1LengthFormula(), i->getData());
|
||||
length1.setCheckZero(false);
|
||||
length1.setToolId(i->getId());
|
||||
length1.setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit()));
|
||||
AddPropertyFormula(tr("C1: length"), length1, AttrLength1);
|
||||
|
||||
VFormula angle2(spl.GetEndAngleFormula(), i->getData());
|
||||
angle2.setCheckZero(false);
|
||||
angle2.setToolId(i->getId());
|
||||
angle2.setPostfix(degreeSymbol);
|
||||
AddPropertyFormula(tr("C2: angle"), angle2, AttrAngle2);
|
||||
|
||||
VFormula length2(spl.GetC2LengthFormula(), i->getData());
|
||||
length2.setCheckZero(false);
|
||||
length2.setToolId(i->getId());
|
||||
length2.setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit()));
|
||||
AddPropertyFormula(tr("C2: length"), length2, AttrLength2);
|
||||
|
||||
auto itemFactor = new VDoubleProperty(tr("Curve factor"));
|
||||
itemFactor->setSetting("Min", 0.1);
|
||||
itemFactor->setSetting("Max", 1000);
|
||||
itemFactor->setSetting("Step", 0.01);
|
||||
|
@ -2124,9 +2181,43 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolShoulderPoint()
|
|||
void VToolOptionsPropertyBrowser::UpdateOptionsToolSpline()
|
||||
{
|
||||
auto i = qgraphicsitem_cast<VToolSpline *>(currentItem);
|
||||
const VSpline spl = i->getSpline();
|
||||
|
||||
idToProperty[AttrName]->setValue(i->name());
|
||||
idToProperty[AttrKCurve]->setValue(i->getSpline().GetKcurve());
|
||||
|
||||
VFormula angle1F(spl.GetStartAngleFormula(), i->getData());
|
||||
angle1F.setCheckZero(false);
|
||||
angle1F.setToolId(i->getId());
|
||||
angle1F.setPostfix(degreeSymbol);
|
||||
QVariant angle1;
|
||||
angle1.setValue(angle1F);
|
||||
idToProperty[AttrAngle1]->setValue(angle1);
|
||||
|
||||
VFormula length1F(spl.GetC1LengthFormula(), i->getData());
|
||||
length1F.setCheckZero(false);
|
||||
length1F.setToolId(i->getId());
|
||||
length1F.setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit()));
|
||||
QVariant length1;
|
||||
length1.setValue(length1F);
|
||||
idToProperty[AttrLength1]->setValue(length1);
|
||||
|
||||
VFormula angle2F(spl.GetEndAngleFormula(), i->getData());
|
||||
angle2F.setCheckZero(false);
|
||||
angle2F.setToolId(i->getId());
|
||||
angle2F.setPostfix(degreeSymbol);
|
||||
QVariant angle2;
|
||||
angle2.setValue(angle2F);
|
||||
idToProperty[AttrAngle2]->setValue(angle2);
|
||||
|
||||
VFormula length2F(spl.GetC2LengthFormula(), i->getData());
|
||||
length2F.setCheckZero(false);
|
||||
length2F.setToolId(i->getId());
|
||||
length2F.setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit()));
|
||||
QVariant length2;
|
||||
length2.setValue(length2F);
|
||||
idToProperty[AttrLength2]->setValue(length2);
|
||||
|
||||
idToProperty[AttrKCurve]->setValue(spl.GetKcurve());
|
||||
idToProperty[AttrColor]->setValue(VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()));
|
||||
}
|
||||
|
||||
|
@ -2228,6 +2319,8 @@ QStringList VToolOptionsPropertyBrowser::PropertiesList() const
|
|||
<< AttrName1 /* 32 */
|
||||
<< AttrName2 /* 33 */
|
||||
<< AttrVCrossPoint /* 34 */
|
||||
<< AttrHCrossPoint; /* 35 */
|
||||
<< AttrHCrossPoint /* 35 */
|
||||
<< AttrLength1 /* 36 */
|
||||
<< AttrLength2; /* 37 */
|
||||
return attr;
|
||||
}
|
||||
|
|
|
@ -689,6 +689,12 @@ VPointF VSpline::GetP1() const
|
|||
return d->p1;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSpline::SetP1(const VPointF &p)
|
||||
{
|
||||
d->p1 = p;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief GetP2 return first control point.
|
||||
|
@ -723,6 +729,12 @@ VPointF VSpline::GetP4() const
|
|||
return d->p4;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSpline::SetP4(const VPointF &p)
|
||||
{
|
||||
d->p4 = p;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief GetAngle1 return first angle control line.
|
||||
|
@ -755,6 +767,20 @@ QString VSpline::GetEndAngleFormula() const
|
|||
return d->angle2F;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSpline::SetStartAngle(qreal angle, const QString &formula)
|
||||
{
|
||||
d->angle1 = angle;
|
||||
d->angle1F = formula;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSpline::SetEndAngle(qreal angle, const QString &formula)
|
||||
{
|
||||
d->angle2 = angle;
|
||||
d->angle2F = formula;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VSpline::GetC1Length() const
|
||||
{
|
||||
|
@ -779,6 +805,20 @@ QString VSpline::GetC2LengthFormula() const
|
|||
return d->c2LengthF;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSpline::SetC1Length(qreal length, const QString &formula)
|
||||
{
|
||||
d->c1Length = length;
|
||||
d->c1LengthF = formula;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSpline::SetC2Length(qreal length, const QString &formula)
|
||||
{
|
||||
d->c2Length = length;
|
||||
d->c2LengthF = formula;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief GetKasm1 return coefficient of length first control line.
|
||||
|
|
|
@ -56,10 +56,15 @@ public:
|
|||
const QString &c2LengthFormula, qreal kCurve, quint32 idObject = 0, Draw mode = Draw::Calculation);
|
||||
virtual ~VSpline() Q_DECL_OVERRIDE;
|
||||
VSpline &operator=(const VSpline &spl);
|
||||
|
||||
VPointF GetP1 () const;
|
||||
void SetP1 (const VPointF &p);
|
||||
|
||||
QPointF GetP2 () const;
|
||||
QPointF GetP3 () const;
|
||||
|
||||
VPointF GetP4 () const;
|
||||
void SetP4 (const VPointF &p);
|
||||
|
||||
virtual qreal GetStartAngle () const Q_DECL_OVERRIDE;
|
||||
virtual qreal GetEndAngle() const Q_DECL_OVERRIDE;
|
||||
|
@ -67,12 +72,18 @@ public:
|
|||
QString GetStartAngleFormula () const;
|
||||
QString GetEndAngleFormula() const;
|
||||
|
||||
void SetStartAngle(qreal angle, const QString &formula);
|
||||
void SetEndAngle(qreal angle, const QString &formula);
|
||||
|
||||
qreal GetC1Length() const;
|
||||
qreal GetC2Length() const;
|
||||
|
||||
QString GetC1LengthFormula() const;
|
||||
QString GetC2LengthFormula() const;
|
||||
|
||||
void SetC1Length(qreal length, const QString &formula);
|
||||
void SetC2Length(qreal length, const QString &formula);
|
||||
|
||||
qreal GetLength () const;
|
||||
qreal GetKasm1() const;
|
||||
qreal GetKasm2() const;
|
||||
|
|
|
@ -221,7 +221,7 @@ VToolSpline *VToolSpline::Create(const quint32 _id, quint32 point1, quint32 poin
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VSpline VToolSpline::getSpline() const
|
||||
{
|
||||
QSharedPointer<VSpline> spline = VAbstractTool::data.GeometricObject<VSpline>(id);
|
||||
auto spline = VAbstractTool::data.GeometricObject<VSpline>(id);
|
||||
return *spline.data();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user