Alias field for tool Cut Spline Path.

This commit is contained in:
Roman Telezhynskyi 2020-11-04 17:58:06 +02:00
parent abff41813a
commit 3e682b180c
9 changed files with 161 additions and 5 deletions

View File

@ -1576,6 +1576,12 @@ void VToolOptionsPropertyBrowser::ChangeDataToolCutSplinePath(VPE::VProperty *pr
case 61: // AttrNotes case 61: // AttrNotes
SetNotes<VToolCutSplinePath>(property); SetNotes<VToolCutSplinePath>(property);
break; break;
case 63: // AttrAlias1
SetAlias1<VToolCutSplinePath>(property);
break;
case 64: // AttrAlias2
SetAlias2<VToolCutSplinePath>(property);
break;
default: default:
qWarning()<<"Unknown property type. id = "<<id; qWarning()<<"Unknown property type. id = "<<id;
break; break;
@ -2661,6 +2667,8 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolCutSplinePath(QGraphicsItem *it
AddPropertyObjectName(i, tr("Point label:")); AddPropertyObjectName(i, tr("Point label:"));
AddPropertyParentPointName(i->CurveName(), tr("Curve:"), AttrCurve); AddPropertyParentPointName(i->CurveName(), tr("Curve:"), AttrCurve);
AddPropertyAlias1(i, tr("Alias1:"));
AddPropertyAlias2(i, tr("Alias2:"));
AddPropertyFormula(tr("Length:"), i->GetFormulaLength(), AttrLength); AddPropertyFormula(tr("Length:"), i->GetFormulaLength(), AttrLength);
AddPropertyText(tr("Notes:"), i->GetNotes(), AttrNotes); AddPropertyText(tr("Notes:"), i->GetNotes(), AttrNotes);
} }
@ -3350,6 +3358,9 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolCutSplinePath()
idToProperty[AttrCurve]->setValue(valueCurve); idToProperty[AttrCurve]->setValue(valueCurve);
idToProperty[AttrNotes]->setValue(i->GetNotes()); idToProperty[AttrNotes]->setValue(i->GetNotes());
idToProperty[AttrAlias1]->setValue(i->GetAliasSuffix1());
idToProperty[AttrAlias2]->setValue(i->GetAliasSuffix2());
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View File

@ -2086,6 +2086,8 @@ void VPattern::ParseToolCutSplinePath(VMainGraphicsScene *scene, QDomElement &do
initData.formula = GetParametrString(domElement, AttrLength, QChar('0')); initData.formula = GetParametrString(domElement, AttrLength, QChar('0'));
const QString f = initData.formula;//need for saving fixed formula; const QString f = initData.formula;//need for saving fixed formula;
initData.baseCurveId = GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, NULL_ID_STR); initData.baseCurveId = GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, NULL_ID_STR);
initData.aliasSuffix1 = GetParametrEmptyString(domElement, AttrAlias1);
initData.aliasSuffix2 = GetParametrEmptyString(domElement, AttrAlias2);
VToolCutSplinePath::Create(initData); VToolCutSplinePath::Create(initData);
//Rewrite attribute formula. Need for situation when we have wrong formula. //Rewrite attribute formula. Need for situation when we have wrong formula.

View File

@ -160,6 +160,8 @@
<xs:attribute name="showLabel1" type="xs:boolean"/> <xs:attribute name="showLabel1" type="xs:boolean"/>
<xs:attribute name="showLabel2" type="xs:boolean"/> <xs:attribute name="showLabel2" type="xs:boolean"/>
<xs:attribute name="notes" type="xs:string"/> <xs:attribute name="notes" type="xs:string"/>
<xs:attribute name="alias1" type="xs:string"/>
<xs:attribute name="alias2" type="xs:string"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="line" minOccurs="0" maxOccurs="unbounded"> <xs:element name="line" minOccurs="0" maxOccurs="unbounded">

View File

@ -241,6 +241,14 @@ quint32 VContainer::GetPieceForPiecePath(quint32 id) const
return NULL_ID; return NULL_ID;
} }
//---------------------------------------------------------------------------------------------------------------------
void VContainer::RegisterUniqueName(VGObject *obj)
{
SCASSERT(obj != nullptr)
QSharedPointer<VGObject> pointer(obj);
RegisterUniqueName(pointer);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VContainer::RegisterUniqueName(const QSharedPointer<VGObject> &obj) void VContainer::RegisterUniqueName(const QSharedPointer<VGObject> &obj)
{ {

View File

@ -151,6 +151,7 @@ public:
void UpdateId(quint32 newId) const; void UpdateId(quint32 newId) const;
static void UpdateId(quint32 newId, const QString &nspace); static void UpdateId(quint32 newId, const QString &nspace);
void RegisterUniqueName(VGObject *obj);
void RegisterUniqueName(const QSharedPointer<VGObject> &obj); void RegisterUniqueName(const QSharedPointer<VGObject> &obj);
quint32 AddGObject(VGObject *obj); quint32 AddGObject(VGObject *obj);

View File

@ -92,6 +92,9 @@ DialogCutSplinePath::DialogCutSplinePath(const VContainer *data, quint32 toolId,
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogCutSplinePath::DeployFormulaTextEdit); connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogCutSplinePath::DeployFormulaTextEdit);
connect(ui->comboBoxSplinePath, &QComboBox::currentTextChanged, this, &DialogCutSplinePath::SplinePathChanged); connect(ui->comboBoxSplinePath, &QComboBox::currentTextChanged, this, &DialogCutSplinePath::SplinePathChanged);
connect(ui->lineEditAlias1, &QLineEdit::textEdited, this, &DialogCutSplinePath::ValidateAlias);
connect(ui->lineEditAlias2, &QLineEdit::textEdited, this, &DialogCutSplinePath::ValidateAlias);
vis = new VisToolCutSplinePath(data); vis = new VisToolCutSplinePath(data);
ui->tabWidget->setCurrentIndex(0); ui->tabWidget->setCurrentIndex(0);
@ -208,6 +211,55 @@ void DialogCutSplinePath::SplinePathChanged()
CurrentCurveLength(getSplinePathId(), const_cast<VContainer *> (data)); CurrentCurveLength(getSplinePathId(), const_cast<VContainer *> (data));
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogCutSplinePath::ValidateAlias()
{
VSplinePath path1;
path1.SetAliasSuffix(GetAliasSuffix1());
if (not GetAliasSuffix1().isEmpty() && not data->IsUnique(path1.GetAlias()))
{
flagAlias1 = false;
ChangeColor(ui->labelAlias1, errorColor);
}
else
{
flagAlias1 = true;
ChangeColor(ui->labelAlias1, OkColor(this));
}
VSplinePath path2;
path2.SetAliasSuffix(GetAliasSuffix2());
if (not GetAliasSuffix2().isEmpty() && not data->IsUnique(path2.GetAlias()))
{
flagAlias2 = false;
ChangeColor(ui->labelAlias2, errorColor);
}
else
{
flagAlias2 = true;
ChangeColor(ui->labelAlias2, OkColor(this));
}
if (path1.GetAlias() == path2.GetAlias())
{
flagAlias1 = false;
ChangeColor(ui->labelAlias1, errorColor);
flagAlias2 = false;
ChangeColor(ui->labelAlias2, errorColor);
}
else
{
flagAlias1 = true;
ChangeColor(ui->labelAlias1, OkColor(this));
flagAlias2 = true;
ChangeColor(ui->labelAlias2, OkColor(this));
}
CheckState();
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogCutSplinePath::DeployFormulaTextEdit() void DialogCutSplinePath::DeployFormulaTextEdit()
{ {
@ -279,3 +331,29 @@ QString DialogCutSplinePath::GetNotes() const
{ {
return ui->plainTextEditToolNotes->toPlainText(); return ui->plainTextEditToolNotes->toPlainText();
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogCutSplinePath::SetAliasSuffix1(const QString &alias)
{
ui->lineEditAlias1->setText(alias);
ValidateAlias();
}
//---------------------------------------------------------------------------------------------------------------------
QString DialogCutSplinePath::GetAliasSuffix1() const
{
return ui->lineEditAlias1->text();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogCutSplinePath::SetAliasSuffix2(const QString &alias)
{
ui->lineEditAlias2->setText(alias);
ValidateAlias();
}
//---------------------------------------------------------------------------------------------------------------------
QString DialogCutSplinePath::GetAliasSuffix2() const
{
return ui->lineEditAlias2->text();
}

View File

@ -64,6 +64,12 @@ public:
void SetNotes(const QString &notes); void SetNotes(const QString &notes);
QString GetNotes() const; QString GetNotes() const;
void SetAliasSuffix1(const QString &alias);
QString GetAliasSuffix1() const;
void SetAliasSuffix2(const QString &alias);
QString GetAliasSuffix2() const;
public slots: public slots:
virtual void ChosenObject(quint32 id, const SceneObject &type) override; virtual void ChosenObject(quint32 id, const SceneObject &type) override;
/** /**
@ -82,6 +88,7 @@ protected:
virtual bool IsValid() const final; virtual bool IsValid() const final;
private slots: private slots:
void SplinePathChanged(); void SplinePathChanged();
void ValidateAlias();
private: private:
Q_DISABLE_COPY(DialogCutSplinePath) Q_DISABLE_COPY(DialogCutSplinePath)
@ -99,12 +106,14 @@ private:
bool flagFormula; bool flagFormula;
bool flagName; bool flagName;
bool flagAlias1{true};
bool flagAlias2{true};
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
inline bool DialogCutSplinePath::IsValid() const inline bool DialogCutSplinePath::IsValid() const
{ {
return flagFormula; return flagFormula && flagAlias1 && flagAlias2;
} }
#endif // DIALOGCUTSPLINEPATH_H #endif // DIALOGCUTSPLINEPATH_H

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>326</width> <width>483</width>
<height>245</height> <height>373</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -255,6 +255,34 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0">
<widget class="QLabel" name="labelAlias1">
<property name="text">
<string>Alias1:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelAlias2">
<property name="text">
<string>Alias2:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEditAlias1">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEditAlias2">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>

View File

@ -88,6 +88,8 @@ void VToolCutSplinePath::setDialog()
dialogTool->setSplinePathId(baseCurveId); dialogTool->setSplinePathId(baseCurveId);
dialogTool->SetPointName(point->name()); dialogTool->SetPointName(point->name());
dialogTool->SetNotes(m_notes); dialogTool->SetNotes(m_notes);
dialogTool->SetAliasSuffix1(m_aliasSuffix1);
dialogTool->SetAliasSuffix2(m_aliasSuffix2);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -115,6 +117,8 @@ VToolCutSplinePath* VToolCutSplinePath::Create(const QPointer<DialogTool> &dialo
initData.parse = Document::FullParse; initData.parse = Document::FullParse;
initData.typeCreation = Source::FromGui; initData.typeCreation = Source::FromGui;
initData.notes = dialogTool->GetNotes(); initData.notes = dialogTool->GetNotes();
initData.aliasSuffix1 = dialogTool->GetAliasSuffix1();
initData.aliasSuffix2 = dialogTool->GetAliasSuffix2();
VToolCutSplinePath* point = Create(initData); VToolCutSplinePath* point = Create(initData);
if (point != nullptr) if (point != nullptr)
@ -154,12 +158,18 @@ VToolCutSplinePath* VToolCutSplinePath::Create(VToolCutInitData &initData)
p->setMy(initData.my); p->setMy(initData.my);
p->SetShowLabel(initData.showLabel); p->SetShowLabel(initData.showLabel);
splPath1->SetAliasSuffix(initData.aliasSuffix1);
splPath2->SetAliasSuffix(initData.aliasSuffix2);
if (initData.typeCreation == Source::FromGui) if (initData.typeCreation == Source::FromGui)
{ {
initData.id = initData.data->AddGObject(p); initData.id = initData.data->AddGObject(p);
initData.data->AddSpline(QSharedPointer<VAbstractBezier>(splPath1), NULL_ID, initData.id); initData.data->AddSpline(QSharedPointer<VAbstractBezier>(splPath1), NULL_ID, initData.id);
initData.data->AddSpline(QSharedPointer<VAbstractBezier>(splPath2), NULL_ID, initData.id); initData.data->AddSpline(QSharedPointer<VAbstractBezier>(splPath2), NULL_ID, initData.id);
initData.data->RegisterUniqueName(splPath1);
initData.data->RegisterUniqueName(splPath2);
} }
else else
{ {
@ -168,6 +178,9 @@ VToolCutSplinePath* VToolCutSplinePath::Create(VToolCutInitData &initData)
initData.data->AddSpline(QSharedPointer<VAbstractBezier>(splPath1), NULL_ID, initData.id); initData.data->AddSpline(QSharedPointer<VAbstractBezier>(splPath1), NULL_ID, initData.id);
initData.data->AddSpline(QSharedPointer<VAbstractBezier>(splPath2), NULL_ID, initData.id); initData.data->AddSpline(QSharedPointer<VAbstractBezier>(splPath2), NULL_ID, initData.id);
initData.data->RegisterUniqueName(splPath1);
initData.data->RegisterUniqueName(splPath2);
if (initData.parse != Document::FullParse) if (initData.parse != Document::FullParse)
{ {
initData.doc->UpdateToolData(initData.id, initData.data); initData.doc->UpdateToolData(initData.id, initData.data);
@ -308,6 +321,10 @@ void VToolCutSplinePath::SaveDialog(QDomElement &domElement, QList<quint32> &old
doc->SetAttribute(domElement, AttrName, dialogTool->GetPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->GetPointName());
doc->SetAttribute(domElement, AttrLength, dialogTool->GetFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->GetFormula());
doc->SetAttribute(domElement, AttrSplinePath, QString().setNum(dialogTool->getSplinePathId())); doc->SetAttribute(domElement, AttrSplinePath, QString().setNum(dialogTool->getSplinePathId()));
doc->SetAttributeOrRemoveIf(domElement, AttrAlias1, dialogTool->GetAliasSuffix1(),
dialogTool->GetAliasSuffix1().isEmpty());
doc->SetAttributeOrRemoveIf(domElement, AttrAlias2, dialogTool->GetAliasSuffix2(),
dialogTool->GetAliasSuffix2().isEmpty());
const QString notes = dialogTool->GetNotes(); const QString notes = dialogTool->GetNotes();
doc->SetAttributeOrRemoveIf(domElement, AttrNotes, notes, notes.isEmpty()); doc->SetAttributeOrRemoveIf(domElement, AttrNotes, notes, notes.isEmpty());
@ -376,8 +393,8 @@ QString VToolCutSplinePath::MakeToolTip() const
.arg(qApp->fromPixel(splPath1->GetLength())) .arg(qApp->fromPixel(splPath1->GetLength()))
.arg(UnitsToStr(qApp->patternUnits(), true), curveStr + QLatin1String("2 ") + lengthStr) .arg(UnitsToStr(qApp->patternUnits(), true), curveStr + QLatin1String("2 ") + lengthStr)
.arg(qApp->fromPixel(splPath2->GetLength())) .arg(qApp->fromPixel(splPath2->GetLength()))
.arg(curveStr + QLatin1String(" 1") + tr("label"), splPath1->name(), .arg(curveStr + QLatin1String(" 1") + tr("label"), splPath1->ObjectName(),
curveStr + QLatin1String(" 2") + tr("label"), splPath2->name()); curveStr + QLatin1String(" 2") + tr("label"), splPath2->ObjectName());
delete splPath1; delete splPath1;
delete splPath2; delete splPath2;