Alias field for tool Spline.

This commit is contained in:
Roman Telezhynskyi 2020-11-04 15:25:23 +02:00
parent 7fe316c876
commit 648d1f1897
6 changed files with 53 additions and 2 deletions

View file

@ -2012,6 +2012,9 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSpline(VPE::VProperty *property)
case 61: // AttrNotes case 61: // AttrNotes
SetNotes<VToolSpline>(property); SetNotes<VToolSpline>(property);
break; break;
case 62: // AttrAlias
SetAlias<VToolSpline>(property);
break;
default: default:
qWarning()<<"Unknown property type. id = "<<id; qWarning()<<"Unknown property type. id = "<<id;
break; break;
@ -2812,6 +2815,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolSpline(QGraphicsItem *item)
length2.Eval(); length2.Eval();
AddPropertyFormula(tr("C2: length:"), length2, AttrLength2); AddPropertyFormula(tr("C2: length:"), length2, AttrLength2);
AddPropertyAlias(i, tr("Alias:"));
AddPropertyCurvePenStyle(i, tr("Pen style:"), CurvePenStylesPics()); AddPropertyCurvePenStyle(i, tr("Pen style:"), CurvePenStylesPics());
AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor); AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor);
AddPropertyApproximationScale(tr("Approximation scale:"), spl.GetApproximationScale()); AddPropertyApproximationScale(tr("Approximation scale:"), spl.GetApproximationScale());
@ -3625,6 +3629,8 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolSpline()
idToProperty[AttrAScale]->setValue(valueApproximationScale); idToProperty[AttrAScale]->setValue(valueApproximationScale);
idToProperty[AttrNotes]->setValue(i->GetNotes()); idToProperty[AttrNotes]->setValue(i->GetNotes());
idToProperty[AttrAlias]->setValue(i->GetAliasSuffix());
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -2557,6 +2557,7 @@ void VPattern::ParseToolSpline(VMainGraphicsScene *scene, QDomElement &domElemen
initData.penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); initData.penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine);
initData.duplicate = GetParametrUInt(domElement, AttrDuplicate, QChar('0')); initData.duplicate = GetParametrUInt(domElement, AttrDuplicate, QChar('0'));
initData.approximationScale = GetParametrDouble(domElement, AttrAScale, QChar('0')); initData.approximationScale = GetParametrDouble(domElement, AttrAScale, QChar('0'));
initData.aliasSuffix = GetParametrEmptyString(domElement, AttrAlias);
VToolSpline *spl = VToolSpline::Create(initData); VToolSpline *spl = VToolSpline::Create(initData);

View file

@ -148,6 +148,8 @@ DialogSpline::DialogSpline(const VContainer *data, quint32 toolId, QWidget *pare
connect(ui->pushButtonGrowLength1, &QPushButton::clicked, this, &DialogSpline::DeployLength1TextEdit); connect(ui->pushButtonGrowLength1, &QPushButton::clicked, this, &DialogSpline::DeployLength1TextEdit);
connect(ui->pushButtonGrowLength2, &QPushButton::clicked, this, &DialogSpline::DeployLength2TextEdit); connect(ui->pushButtonGrowLength2, &QPushButton::clicked, this, &DialogSpline::DeployLength2TextEdit);
connect(ui->lineEditAlias, &QLineEdit::textEdited, this, &DialogSpline::ValidateAlias);
vis = new VisToolSpline(data); vis = new VisToolSpline(data);
auto path = qobject_cast<VisToolSpline *>(vis); auto path = qobject_cast<VisToolSpline *>(vis);
SCASSERT(path != nullptr) SCASSERT(path != nullptr)
@ -432,6 +434,25 @@ void DialogSpline::EvalLength2()
Eval(formulaData, flagLength2); Eval(formulaData, flagLength2);
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogSpline::ValidateAlias()
{
VSpline spline = spl;
spline.SetAliasSuffix(ui->lineEditAlias->text());
if (not ui->lineEditAlias->text().isEmpty() && not data->IsUnique(spline.GetAlias()))
{
flagAlias = false;
ChangeColor(ui->labelAlias, errorColor);
}
else
{
flagAlias = true;
ChangeColor(ui->labelAlias, OkColor(this));
}
CheckState();
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VSpline DialogSpline::CurrentSpline() const VSpline DialogSpline::CurrentSpline() const
{ {
@ -458,6 +479,7 @@ VSpline DialogSpline::CurrentSpline() const
spline.SetApproximationScale(ui->doubleSpinBoxApproximationScale->value()); spline.SetApproximationScale(ui->doubleSpinBoxApproximationScale->value());
spline.SetPenStyle(GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine)); spline.SetPenStyle(GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine));
spline.SetColor(GetComboBoxCurrentData(ui->comboBoxColor, ColorBlack)); spline.SetColor(GetComboBoxCurrentData(ui->comboBoxColor, ColorBlack));
spline.SetAliasSuffix(ui->lineEditAlias->text());
return spline; return spline;
} }
@ -588,6 +610,9 @@ void DialogSpline::SetSpline(const VSpline &spline)
ui->plainTextEditLength2F->setPlainText(length2F); ui->plainTextEditLength2F->setPlainText(length2F);
ui->lineEditSplineName->setText(qApp->TrVars()->VarToUser(spl.name())); ui->lineEditSplineName->setText(qApp->TrVars()->VarToUser(spl.name()));
ui->lineEditAlias->setText(spl.GetAliasSuffix());
ValidateAlias();
auto path = qobject_cast<VisToolSpline *>(vis); auto path = qobject_cast<VisToolSpline *>(vis);
SCASSERT(path != nullptr) SCASSERT(path != nullptr)

View file

@ -88,6 +88,8 @@ private slots:
void EvalAngle2(); void EvalAngle2();
void EvalLength1(); void EvalLength1();
void EvalLength2(); void EvalLength2();
void ValidateAlias();
private: private:
Q_DISABLE_COPY(DialogSpline) Q_DISABLE_COPY(DialogSpline)
@ -117,6 +119,7 @@ private:
bool flagLength1; bool flagLength1;
bool flagLength2; bool flagLength2;
bool flagError; bool flagError;
bool flagAlias{true};
const QSharedPointer<VPointF> GetP1() const; const QSharedPointer<VPointF> GetP1() const;
const QSharedPointer<VPointF> GetP4() const; const QSharedPointer<VPointF> GetP4() const;
@ -127,7 +130,7 @@ private:
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
inline bool DialogSpline::IsValid() const inline bool DialogSpline::IsValid() const
{ {
return flagAngle1 && flagAngle2 && flagLength1 && flagLength2 && flagError; return flagAngle1 && flagAngle2 && flagLength1 && flagLength2 && flagError && flagAlias;
} }
#endif // DIALOGSPLINE_H #endif // DIALOGSPLINE_H

View file

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>532</width> <width>532</width>
<height>452</height> <height>482</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -925,6 +925,20 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0">
<widget class="QLabel" name="labelAlias">
<property name="text">
<string>Alias:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEditAlias">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>

View file

@ -227,6 +227,7 @@ VToolSpline *VToolSpline::Create(VToolSplineInitData &initData)
spline->SetColor(initData.color); spline->SetColor(initData.color);
spline->SetPenStyle(initData.penStyle); spline->SetPenStyle(initData.penStyle);
spline->SetApproximationScale(initData.approximationScale); spline->SetApproximationScale(initData.approximationScale);
spline->SetAliasSuffix(initData.aliasSuffix);
return VToolSpline::Create(initData, spline); return VToolSpline::Create(initData, spline);
} }
@ -651,6 +652,7 @@ void VToolSpline::SetSplineAttributes(QDomElement &domElement, const VSpline &sp
doc->SetAttribute(domElement, AttrPenStyle, spl.GetPenStyle()); doc->SetAttribute(domElement, AttrPenStyle, spl.GetPenStyle());
doc->SetAttribute(domElement, AttrAScale, spl.GetApproximationScale()); doc->SetAttribute(domElement, AttrAScale, spl.GetApproximationScale());
doc->SetAttributeOrRemoveIf(domElement, AttrDuplicate, spl.GetDuplicate(), spl.GetDuplicate() <= 0); doc->SetAttributeOrRemoveIf(domElement, AttrDuplicate, spl.GetDuplicate(), spl.GetDuplicate() <= 0);
doc->SetAttributeOrRemoveIf(domElement, AttrAlias, spl.GetAliasSuffix(), spl.GetAliasSuffix().isEmpty());
if (domElement.hasAttribute(AttrKCurve)) if (domElement.hasAttribute(AttrKCurve))
{ {