Fix alias validation bug.
This commit is contained in:
parent
061c9b502a
commit
3feddb9ce9
|
@ -244,7 +244,8 @@ QString DialogArc::GetNotes() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogArc::SetAliasSuffix(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias->setText(alias);
|
||||
originAliasSuffix = alias;
|
||||
ui->lineEditAlias->setText(originAliasSuffix);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
@ -361,7 +362,8 @@ void DialogArc::ValidateAlias()
|
|||
VArc arc;
|
||||
arc.SetAliasSuffix(GetAliasSuffix());
|
||||
if (not GetAliasSuffix().isEmpty() &&
|
||||
(not rx.match(arc.GetAlias()).hasMatch() || not data->IsUnique(arc.GetAlias())))
|
||||
(not rx.match(arc.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix != GetAliasSuffix() && not data->IsUnique(arc.GetAlias()))))
|
||||
{
|
||||
flagAlias = false;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
|
|
|
@ -146,6 +146,8 @@ private:
|
|||
qreal angleF1;
|
||||
qreal angleF2;
|
||||
|
||||
QString originAliasSuffix{};
|
||||
|
||||
void EvalRadius();
|
||||
void EvalF();
|
||||
};
|
||||
|
|
|
@ -270,7 +270,8 @@ QString DialogArcWithLength::GetNotes() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogArcWithLength::SetAliasSuffix(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias->setText(alias);
|
||||
originAliasSuffix = alias;
|
||||
ui->lineEditAlias->setText(originAliasSuffix);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
@ -398,7 +399,8 @@ void DialogArcWithLength::ValidateAlias()
|
|||
VArc arc;
|
||||
arc.SetAliasSuffix(GetAliasSuffix());
|
||||
if (not GetAliasSuffix().isEmpty() &&
|
||||
(not rx.match(arc.GetAlias()).hasMatch() || not data->IsUnique(arc.GetAlias())))
|
||||
(not rx.match(arc.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix != GetAliasSuffix() && not data->IsUnique(arc.GetAlias()))))
|
||||
{
|
||||
flagAlias = false;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
|
|
|
@ -137,6 +137,8 @@ private:
|
|||
int formulaBaseHeightF1;
|
||||
int formulaBaseHeightLength;
|
||||
|
||||
QString originAliasSuffix{};
|
||||
|
||||
void Radius();
|
||||
void Length();
|
||||
void EvalF();
|
||||
|
|
|
@ -109,7 +109,8 @@ void DialogCubicBezier::SetSpline(const VCubicBezier &spline)
|
|||
ui->lineEditSplineName->setText(qApp->TrVars()->VarToUser(spl.name()));
|
||||
ui->doubleSpinBoxApproximationScale->setValue(spl.GetApproximationScale());
|
||||
|
||||
ui->lineEditAlias->setText(spl.GetAliasSuffix());
|
||||
originAliasSuffix = spl.GetAliasSuffix();
|
||||
ui->lineEditAlias->setText(originAliasSuffix);
|
||||
ValidateAlias();
|
||||
|
||||
auto path = qobject_cast<VisToolCubicBezier *>(vis);
|
||||
|
@ -270,7 +271,8 @@ void DialogCubicBezier::ValidateAlias()
|
|||
VCubicBezier spline = spl;
|
||||
spline.SetAliasSuffix(ui->lineEditAlias->text());
|
||||
if (not ui->lineEditAlias->text().isEmpty() &&
|
||||
(not rx.match(spline.GetAlias()).hasMatch() || not data->IsUnique(spline.GetAlias())))
|
||||
(not rx.match(spline.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix != ui->lineEditAlias->text() && not data->IsUnique(spline.GetAlias()))))
|
||||
{
|
||||
flagAlias = false;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
|
|
|
@ -83,6 +83,8 @@ private:
|
|||
bool flagError;
|
||||
bool flagAlias{true};
|
||||
|
||||
QString originAliasSuffix{};
|
||||
|
||||
const QSharedPointer<VPointF> GetP1() const;
|
||||
const QSharedPointer<VPointF> GetP2() const;
|
||||
const QSharedPointer<VPointF> GetP3() const;
|
||||
|
|
|
@ -115,7 +115,8 @@ void DialogCubicBezierPath::SetPath(const VCubicBezierPath &value)
|
|||
ui->lineEditSplPathName->setText(qApp->TrVars()->VarToUser(path.name()));
|
||||
ui->doubleSpinBoxApproximationScale->setValue(path.GetApproximationScale());
|
||||
|
||||
ui->lineEditAlias->setText(path.GetAliasSuffix());
|
||||
originAliasSuffix = path.GetAliasSuffix();
|
||||
ui->lineEditAlias->setText(originAliasSuffix);
|
||||
ValidateAlias();
|
||||
|
||||
ChangeCurrentData(ui->comboBoxPenStyle, path.GetPenStyle());
|
||||
|
@ -259,7 +260,8 @@ void DialogCubicBezierPath::ValidateAlias()
|
|||
VCubicBezierPath tempPath = path;
|
||||
tempPath.SetAliasSuffix(ui->lineEditAlias->text());
|
||||
if (not ui->lineEditAlias->text().isEmpty() &&
|
||||
(not rx.match(tempPath.GetAlias()).hasMatch() || not data->IsUnique(tempPath.GetAlias())))
|
||||
(not rx.match(tempPath.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix != ui->lineEditAlias->text() && not data->IsUnique(tempPath.GetAlias()))))
|
||||
{
|
||||
flagAlias = false;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
|
|
|
@ -83,6 +83,8 @@ private:
|
|||
bool flagError;
|
||||
bool flagAlias{true};
|
||||
|
||||
QString originAliasSuffix{};
|
||||
|
||||
void NewItem(const VPointF &point);
|
||||
void DataPoint(const VPointF &p);
|
||||
void SavePath();
|
||||
|
|
|
@ -209,46 +209,37 @@ void DialogCutArc::ArcChanged()
|
|||
void DialogCutArc::ValidateAlias()
|
||||
{
|
||||
QRegularExpression rx(NameRegExp());
|
||||
|
||||
VArc arc1;
|
||||
arc1.SetAliasSuffix(GetAliasSuffix1());
|
||||
if (not GetAliasSuffix1().isEmpty() &&
|
||||
(not rx.match(arc1.GetAlias()).hasMatch() || not data->IsUnique(arc1.GetAlias())))
|
||||
{
|
||||
flagAlias1 = false;
|
||||
ChangeColor(ui->labelAlias1, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias1 = true;
|
||||
ChangeColor(ui->labelAlias1, OkColor(this));
|
||||
}
|
||||
|
||||
VArc arc2;
|
||||
arc2.SetAliasSuffix(GetAliasSuffix2());
|
||||
if (not GetAliasSuffix2().isEmpty() && not data->IsUnique(arc2.GetAlias()))
|
||||
{
|
||||
flagAlias2 = false;
|
||||
ChangeColor(ui->labelAlias2, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias2 = true;
|
||||
ChangeColor(ui->labelAlias2, OkColor(this));
|
||||
}
|
||||
|
||||
if (arc1.GetAlias() == arc2.GetAlias())
|
||||
if (not GetAliasSuffix1().isEmpty() &&
|
||||
(not rx.match(arc1.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix2 != GetAliasSuffix1() && not data->IsUnique(arc1.GetAlias())) ||
|
||||
arc1.GetAlias() == arc2.GetAlias()))
|
||||
{
|
||||
flagAlias1 = false;
|
||||
ChangeColor(ui->labelAlias1, errorColor);
|
||||
|
||||
flagAlias2 = false;
|
||||
ChangeColor(ui->labelAlias2, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias1 = true;
|
||||
ChangeColor(ui->labelAlias1, OkColor(this));
|
||||
}
|
||||
|
||||
if (not GetAliasSuffix2().isEmpty() &&
|
||||
(not rx.match(arc2.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix2 != GetAliasSuffix2() && not data->IsUnique(arc2.GetAlias())) ||
|
||||
arc1.GetAlias() == arc2.GetAlias()))
|
||||
{
|
||||
flagAlias2 = false;
|
||||
ChangeColor(ui->labelAlias2, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias2 = true;
|
||||
ChangeColor(ui->labelAlias2, OkColor(this));
|
||||
}
|
||||
|
@ -338,7 +329,8 @@ QString DialogCutArc::GetNotes() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogCutArc::SetAliasSuffix1(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias1->setText(alias);
|
||||
originAliasSuffix1 = alias;
|
||||
ui->lineEditAlias1->setText(originAliasSuffix1);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
@ -351,7 +343,8 @@ QString DialogCutArc::GetAliasSuffix1() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogCutArc::SetAliasSuffix2(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias2->setText(alias);
|
||||
originAliasSuffix2 = alias;
|
||||
ui->lineEditAlias2->setText(originAliasSuffix2);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
|
|
@ -110,6 +110,9 @@ private:
|
|||
bool flagName;
|
||||
bool flagAlias1{true};
|
||||
bool flagAlias2{true};
|
||||
|
||||
QString originAliasSuffix1{};
|
||||
QString originAliasSuffix2{};
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -216,46 +216,37 @@ void DialogCutSpline::SplineChanged()
|
|||
void DialogCutSpline::ValidateAlias()
|
||||
{
|
||||
QRegularExpression rx(NameRegExp());
|
||||
|
||||
VSpline spl1;
|
||||
spl1.SetAliasSuffix(GetAliasSuffix1());
|
||||
if (not GetAliasSuffix1().isEmpty() &&
|
||||
(not rx.match(spl1.GetAlias()).hasMatch() || not data->IsUnique(spl1.GetAlias())))
|
||||
{
|
||||
flagAlias1 = false;
|
||||
ChangeColor(ui->labelAlias1, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias1 = true;
|
||||
ChangeColor(ui->labelAlias1, OkColor(this));
|
||||
}
|
||||
|
||||
VSpline spl2;
|
||||
spl2.SetAliasSuffix(GetAliasSuffix2());
|
||||
if (not GetAliasSuffix2().isEmpty() && not data->IsUnique(spl2.GetAlias()))
|
||||
{
|
||||
flagAlias2 = false;
|
||||
ChangeColor(ui->labelAlias2, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias2 = true;
|
||||
ChangeColor(ui->labelAlias2, OkColor(this));
|
||||
}
|
||||
|
||||
if (spl1.GetAlias() == spl2.GetAlias())
|
||||
if (not GetAliasSuffix1().isEmpty() &&
|
||||
(not rx.match(spl1.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix2 != GetAliasSuffix1() && not data->IsUnique(spl1.GetAlias())) ||
|
||||
spl1.GetAlias() == spl2.GetAlias()))
|
||||
{
|
||||
flagAlias1 = false;
|
||||
ChangeColor(ui->labelAlias1, errorColor);
|
||||
|
||||
flagAlias2 = false;
|
||||
ChangeColor(ui->labelAlias2, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias1 = true;
|
||||
ChangeColor(ui->labelAlias1, OkColor(this));
|
||||
}
|
||||
|
||||
if (not GetAliasSuffix2().isEmpty() &&
|
||||
(not rx.match(spl2.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix2 != GetAliasSuffix2() && not data->IsUnique(spl2.GetAlias())) ||
|
||||
spl1.GetAlias() == spl2.GetAlias()))
|
||||
{
|
||||
flagAlias2 = false;
|
||||
ChangeColor(ui->labelAlias2, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias2 = true;
|
||||
ChangeColor(ui->labelAlias2, OkColor(this));
|
||||
}
|
||||
|
@ -338,7 +329,8 @@ QString DialogCutSpline::GetNotes() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogCutSpline::SetAliasSuffix1(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias1->setText(alias);
|
||||
originAliasSuffix1 = alias;
|
||||
ui->lineEditAlias1->setText(originAliasSuffix1);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
@ -351,7 +343,8 @@ QString DialogCutSpline::GetAliasSuffix1() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogCutSpline::SetAliasSuffix2(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias2->setText(alias);
|
||||
originAliasSuffix2 = alias;
|
||||
ui->lineEditAlias2->setText(originAliasSuffix2);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
|
|
@ -109,6 +109,9 @@ private:
|
|||
bool flagName;
|
||||
bool flagAlias1{true};
|
||||
bool flagAlias2{true};
|
||||
|
||||
QString originAliasSuffix1{};
|
||||
QString originAliasSuffix2{};
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -216,46 +216,37 @@ void DialogCutSplinePath::SplinePathChanged()
|
|||
void DialogCutSplinePath::ValidateAlias()
|
||||
{
|
||||
QRegularExpression rx(NameRegExp());
|
||||
|
||||
VSplinePath path1;
|
||||
path1.SetAliasSuffix(GetAliasSuffix1());
|
||||
if (not GetAliasSuffix1().isEmpty() &&
|
||||
(not rx.match(path1.GetAlias()).hasMatch() || 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())
|
||||
if (not GetAliasSuffix1().isEmpty() &&
|
||||
(not rx.match(path1.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix2 != GetAliasSuffix1() && not data->IsUnique(path1.GetAlias())) ||
|
||||
path1.GetAlias() == path2.GetAlias()))
|
||||
{
|
||||
flagAlias1 = false;
|
||||
ChangeColor(ui->labelAlias1, errorColor);
|
||||
|
||||
flagAlias2 = false;
|
||||
ChangeColor(ui->labelAlias2, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias1 = true;
|
||||
ChangeColor(ui->labelAlias1, OkColor(this));
|
||||
}
|
||||
|
||||
if (not GetAliasSuffix2().isEmpty() &&
|
||||
(not rx.match(path2.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix2 != GetAliasSuffix2() && not data->IsUnique(path2.GetAlias())) ||
|
||||
path1.GetAlias() == path2.GetAlias()))
|
||||
{
|
||||
flagAlias2 = false;
|
||||
ChangeColor(ui->labelAlias2, errorColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias2 = true;
|
||||
ChangeColor(ui->labelAlias2, OkColor(this));
|
||||
}
|
||||
|
@ -338,7 +329,8 @@ QString DialogCutSplinePath::GetNotes() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogCutSplinePath::SetAliasSuffix1(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias1->setText(alias);
|
||||
originAliasSuffix1 = alias;
|
||||
ui->lineEditAlias1->setText(originAliasSuffix1);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
@ -351,7 +343,8 @@ QString DialogCutSplinePath::GetAliasSuffix1() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogCutSplinePath::SetAliasSuffix2(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias2->setText(alias);
|
||||
originAliasSuffix2 = alias;
|
||||
ui->lineEditAlias2->setText(originAliasSuffix2);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
|
|
@ -108,6 +108,9 @@ private:
|
|||
bool flagName;
|
||||
bool flagAlias1{true};
|
||||
bool flagAlias2{true};
|
||||
|
||||
QString originAliasSuffix1{};
|
||||
QString originAliasSuffix2{};
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -603,7 +603,8 @@ void DialogEllipticalArc::ValidateAlias()
|
|||
VEllipticalArc arc;
|
||||
arc.SetAliasSuffix(GetAliasSuffix());
|
||||
if (not GetAliasSuffix().isEmpty() &&
|
||||
(not rx.match(arc.GetAlias()).hasMatch() || not data->IsUnique(arc.GetAlias())))
|
||||
(not rx.match(arc.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix != GetAliasSuffix() && not data->IsUnique(arc.GetAlias()))))
|
||||
{
|
||||
flagAlias = false;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
|
@ -632,7 +633,8 @@ QString DialogEllipticalArc::GetNotes() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogEllipticalArc::SetAliasSuffix(const QString &alias)
|
||||
{
|
||||
ui->lineEditAlias->setText(alias);
|
||||
originAliasSuffix = alias;
|
||||
ui->lineEditAlias->setText(originAliasSuffix);
|
||||
ValidateAlias();
|
||||
}
|
||||
|
||||
|
|
|
@ -173,6 +173,8 @@ private:
|
|||
qreal angleF2;
|
||||
qreal angleRotation;
|
||||
|
||||
QString originAliasSuffix{};
|
||||
|
||||
void EvalRadiuses();
|
||||
void EvalAngles();
|
||||
};
|
||||
|
|
|
@ -64,7 +64,6 @@
|
|||
DialogFlippingByAxis::DialogFlippingByAxis(const VContainer *data, quint32 toolId, QWidget *parent)
|
||||
: DialogTool(data, toolId, parent),
|
||||
ui(new Ui::DialogFlippingByAxis),
|
||||
objects(),
|
||||
stage1(true),
|
||||
m_suffix(),
|
||||
flagName(true),
|
||||
|
@ -87,6 +86,9 @@ DialogFlippingByAxis::DialogFlippingByAxis(const VContainer *data, quint32 toolI
|
|||
connect(ui->comboBoxOriginPoint, &QComboBox::currentTextChanged,
|
||||
this, &DialogFlippingByAxis::PointChanged);
|
||||
|
||||
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogFlippingByAxis::ShowSourceDetails);
|
||||
connect(ui->lineEditAlias, &QLineEdit::textEdited, this, &DialogFlippingByAxis::AliasChanged);
|
||||
|
||||
vis = new VisToolFlippingByAxis(data);
|
||||
|
||||
ui->tabWidget->setCurrentIndex(0);
|
||||
|
@ -147,12 +149,6 @@ void DialogFlippingByAxis::SetSuffix(const QString &value)
|
|||
ui->lineEditSuffix->setText(value);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QVector<quint32> DialogFlippingByAxis::GetObjects() const
|
||||
{
|
||||
return ConvertToVector(objects);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QString DialogFlippingByAxis::GetVisibilityGroupName() const
|
||||
{
|
||||
|
@ -201,7 +197,7 @@ void DialogFlippingByAxis::ShowDialog(bool click)
|
|||
{
|
||||
if (stage1 && not click)
|
||||
{
|
||||
if (objects.isEmpty())
|
||||
if (sourceObjects.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -214,7 +210,7 @@ void DialogFlippingByAxis::ShowDialog(bool click)
|
|||
|
||||
VisToolFlippingByAxis *operation = qobject_cast<VisToolFlippingByAxis *>(vis);
|
||||
SCASSERT(operation != nullptr)
|
||||
operation->SetObjects(ConvertToVector(objects));
|
||||
operation->SetObjects(SourceToObjects(sourceObjects));
|
||||
operation->VisualMode();
|
||||
|
||||
scene->ToggleArcSelection(false);
|
||||
|
@ -229,6 +225,8 @@ void DialogFlippingByAxis::ShowDialog(bool click)
|
|||
|
||||
qApp->getSceneView()->AllowRubberBand(false);
|
||||
|
||||
FillSourceList();
|
||||
|
||||
emit ToolTip(tr("Select origin point"));
|
||||
}
|
||||
else if (not stage1 && prepare && click)
|
||||
|
@ -240,6 +238,19 @@ void DialogFlippingByAxis::ShowDialog(bool click)
|
|||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QVector<SourceItem> DialogFlippingByAxis::GetSourceObjects() const
|
||||
{
|
||||
return sourceObjects;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogFlippingByAxis::SetSourceObjects(const QVector<SourceItem> &value)
|
||||
{
|
||||
sourceObjects = value;
|
||||
FillSourceList();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogFlippingByAxis::ChosenObject(quint32 id, const SceneObject &type)
|
||||
{
|
||||
|
@ -247,7 +258,10 @@ void DialogFlippingByAxis::ChosenObject(quint32 id, const SceneObject &type)
|
|||
{
|
||||
if (type == SceneObject::Point)
|
||||
{
|
||||
if (objects.contains(id))
|
||||
auto obj = std::find_if(sourceObjects.begin(), sourceObjects.end(),
|
||||
[id](const SourceItem &sItem) { return sItem.id == id; });
|
||||
|
||||
if (obj != sourceObjects.end())
|
||||
{
|
||||
emit ToolTip(tr("Select origin point that is not part of the list of objects"));
|
||||
return;
|
||||
|
@ -272,16 +286,23 @@ void DialogFlippingByAxis::SelectedObject(bool selected, quint32 object, quint32
|
|||
Q_UNUSED(tool)
|
||||
if (stage1)
|
||||
{
|
||||
auto obj = std::find_if(sourceObjects.begin(), sourceObjects.end(),
|
||||
[object](const SourceItem &sItem) { return sItem.id == object; });
|
||||
if (selected)
|
||||
{
|
||||
if (not objects.contains(object))
|
||||
if (obj == sourceObjects.cend())
|
||||
{
|
||||
objects.append(object);
|
||||
SourceItem item;
|
||||
item.id = object;
|
||||
sourceObjects.append(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
objects.removeOne(object);
|
||||
if (obj != sourceObjects.end())
|
||||
{
|
||||
sourceObjects.erase(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -297,6 +318,7 @@ void DialogFlippingByAxis::SuffixChanged()
|
|||
{
|
||||
flagName = false;
|
||||
ChangeColor(ui->labelSuffix, errorColor);
|
||||
ui->labelStatus->setText(tr("Invalid suffix"));
|
||||
CheckState();
|
||||
return;
|
||||
}
|
||||
|
@ -313,6 +335,7 @@ void DialogFlippingByAxis::SuffixChanged()
|
|||
{
|
||||
flagName = false;
|
||||
ChangeColor(ui->labelSuffix, errorColor);
|
||||
ui->labelStatus->setText(tr("Invalid suffix"));
|
||||
CheckState();
|
||||
return;
|
||||
}
|
||||
|
@ -337,6 +360,7 @@ void DialogFlippingByAxis::GroupNameChanged()
|
|||
{
|
||||
flagGroupName = false;
|
||||
ChangeColor(ui->labelGroupName, errorColor);
|
||||
ui->labelStatus->setText(tr("Invalid group name"));
|
||||
CheckState();
|
||||
return;
|
||||
}
|
||||
|
@ -347,6 +371,63 @@ void DialogFlippingByAxis::GroupNameChanged()
|
|||
CheckState();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogFlippingByAxis::ShowSourceDetails(int row)
|
||||
{
|
||||
ui->lineEditAlias->setDisabled(true);
|
||||
|
||||
if (ui->listWidget->count() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const auto sourceItem = qvariant_cast<SourceItem>(ui->listWidget->item(row)->data(Qt::UserRole));
|
||||
|
||||
const QSharedPointer<VGObject> obj = data->GetGObject(sourceItem.id);
|
||||
|
||||
ui->labelAlias->setText(obj->getType() == GOType::Point ? tr("Label:") : tr("Alias:"));
|
||||
|
||||
ui->lineEditAlias->blockSignals(true);
|
||||
ui->lineEditAlias->setText(sourceItem.alias);
|
||||
ui->lineEditAlias->setEnabled(true);
|
||||
ui->lineEditAlias->blockSignals(false);
|
||||
|
||||
QRegularExpression rx(NameRegExp());
|
||||
if (not rx.match(sourceItem.alias).hasMatch() || not data->IsUnique(sourceItem.alias))
|
||||
{
|
||||
flagAlias = false;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
ui->labelStatus->setText(obj->getType() == GOType::Point ? tr("Invalid label") : tr("Invalid alias"));
|
||||
CheckState();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
flagAlias = true;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
CheckState();
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogFlippingByAxis::AliasChanged(const QString &text)
|
||||
{
|
||||
if (ui->listWidget->count() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (auto *item = ui->listWidget->currentItem())
|
||||
{
|
||||
auto sourceItem = qvariant_cast<SourceItem>(item->data(Qt::UserRole));
|
||||
sourceItem.alias = text;
|
||||
|
||||
item->setData(Qt::UserRole, QVariant::fromValue(sourceItem));
|
||||
|
||||
ValidateSourceAliases();
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogFlippingByAxis::ShowVisualization()
|
||||
{
|
||||
|
@ -358,10 +439,22 @@ void DialogFlippingByAxis::SaveData()
|
|||
{
|
||||
m_suffix = ui->lineEditSuffix->text();
|
||||
|
||||
sourceObjects.clear();
|
||||
sourceObjects.reserve(ui->listWidget->count());
|
||||
|
||||
for (int i=0; i<ui->listWidget->count(); ++i)
|
||||
{
|
||||
if (const QListWidgetItem *item = ui->listWidget->item(i))
|
||||
{
|
||||
auto sourceItem = qvariant_cast<SourceItem>(item->data(Qt::UserRole));
|
||||
sourceObjects.append(sourceItem);
|
||||
}
|
||||
}
|
||||
|
||||
VisToolFlippingByAxis *operation = qobject_cast<VisToolFlippingByAxis *>(vis);
|
||||
SCASSERT(operation != nullptr)
|
||||
|
||||
operation->SetObjects(ConvertToVector(objects));
|
||||
operation->SetObjects(SourceToObjects(sourceObjects));
|
||||
operation->SetOriginPointId(GetOriginPointId());
|
||||
operation->SetAxisType(GetAxisType());
|
||||
operation->RefreshGeometry();
|
||||
|
@ -383,9 +476,13 @@ void DialogFlippingByAxis::SaveData()
|
|||
void DialogFlippingByAxis::PointChanged()
|
||||
{
|
||||
QColor color;
|
||||
if (objects.contains(getCurrentObjectId(ui->comboBoxOriginPoint)))
|
||||
quint32 id = getCurrentObjectId(ui->comboBoxOriginPoint);
|
||||
auto obj = std::find_if(sourceObjects.begin(), sourceObjects.end(),
|
||||
[id](const SourceItem &sItem) { return sItem.id == id; });
|
||||
if (obj != sourceObjects.end())
|
||||
{
|
||||
flagError = false;
|
||||
ui->labelStatus->setText(tr("Invalid point"));
|
||||
color = errorColor;
|
||||
}
|
||||
else
|
||||
|
@ -406,6 +503,73 @@ void DialogFlippingByAxis::FillComboBoxAxisType(QComboBox *box)
|
|||
box->addItem(tr("Horizontal axis"), QVariant(static_cast<int>(AxisType::HorizontalAxis)));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogFlippingByAxis::FillSourceList()
|
||||
{
|
||||
ui->listWidget->blockSignals(true);
|
||||
|
||||
ui->listWidget->clear();
|
||||
|
||||
int row = -1;
|
||||
|
||||
for (auto &sourceItem : sourceObjects)
|
||||
{
|
||||
const QSharedPointer<VGObject> obj = data->GetGObject(sourceItem.id);
|
||||
|
||||
auto *item = new QListWidgetItem(obj->ObjectName());
|
||||
item->setToolTip(obj->ObjectName());
|
||||
item->setData(Qt::UserRole, QVariant::fromValue(sourceItem));
|
||||
ui->listWidget->insertItem(++row, item);
|
||||
}
|
||||
|
||||
ui->listWidget->blockSignals(false);
|
||||
|
||||
if (ui->listWidget->count() > 0)
|
||||
{
|
||||
ui->listWidget->setCurrentRow(0);
|
||||
}
|
||||
|
||||
ValidateSourceAliases();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogFlippingByAxis::ValidateSourceAliases()
|
||||
{
|
||||
QRegularExpression rx(NameRegExp());
|
||||
|
||||
for (int i=0; i<ui->listWidget->count(); ++i)
|
||||
{
|
||||
if (const QListWidgetItem *item = ui->listWidget->item(i))
|
||||
{
|
||||
auto sourceItem = qvariant_cast<SourceItem>(item->data(Qt::UserRole));
|
||||
|
||||
const QSharedPointer<VGObject> obj = data->GetGObject(sourceItem.id);
|
||||
|
||||
QString name;
|
||||
|
||||
if (obj->getType() == GOType::Point)
|
||||
{
|
||||
name = sourceItem.alias;
|
||||
}
|
||||
else
|
||||
{
|
||||
const QString oldAlias = obj->GetAliasSuffix();
|
||||
obj->SetAliasSuffix(sourceItem.alias);
|
||||
name = obj->GetAlias();
|
||||
obj->SetAliasSuffix(oldAlias);
|
||||
}
|
||||
|
||||
if (not rx.match(name).hasMatch() || not data->IsUnique(name))
|
||||
{
|
||||
flagAlias = false;
|
||||
ui->labelStatus->setText(obj->getType() == GOType::Point ? tr("Invalid label") : tr("Invalid alias"));
|
||||
CheckState();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void DialogFlippingByAxis::SetNotes(const QString ¬es)
|
||||
{
|
||||
|
@ -417,3 +581,16 @@ QString DialogFlippingByAxis::GetNotes() const
|
|||
{
|
||||
return ui->plainTextEditToolNotes->toPlainText();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
bool DialogFlippingByAxis::IsValid() const
|
||||
{
|
||||
bool ready = flagError && flagName && flagGroupName && flagAlias;
|
||||
|
||||
if (ready)
|
||||
{
|
||||
ui->labelStatus->setText(tr("Ready"));
|
||||
}
|
||||
|
||||
return ready;
|
||||
}
|
||||
|
|
|
@ -439,10 +439,13 @@ void DialogSpline::EvalLength2()
|
|||
void DialogSpline::ValidateAlias()
|
||||
{
|
||||
QRegularExpression rx(NameRegExp());
|
||||
|
||||
VSpline spline = spl;
|
||||
spline.SetAliasSuffix(ui->lineEditAlias->text());
|
||||
|
||||
if (not ui->lineEditAlias->text().isEmpty() &&
|
||||
(not rx.match(spline.GetAlias()).hasMatch() || not data->IsUnique(spline.GetAlias())))
|
||||
(not rx.match(spline.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix != ui->lineEditAlias->text() && not data->IsUnique(spline.GetAlias()))))
|
||||
{
|
||||
flagAlias = false;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
|
@ -613,7 +616,8 @@ void DialogSpline::SetSpline(const VSpline &spline)
|
|||
ui->plainTextEditLength2F->setPlainText(length2F);
|
||||
ui->lineEditSplineName->setText(qApp->TrVars()->VarToUser(spl.name()));
|
||||
|
||||
ui->lineEditAlias->setText(spl.GetAliasSuffix());
|
||||
originAliasSuffix = spl.GetAliasSuffix();
|
||||
ui->lineEditAlias->setText(originAliasSuffix);
|
||||
ValidateAlias();
|
||||
|
||||
auto path = qobject_cast<VisToolSpline *>(vis);
|
||||
|
|
|
@ -121,6 +121,8 @@ private:
|
|||
bool flagError;
|
||||
bool flagAlias{true};
|
||||
|
||||
QString originAliasSuffix{};
|
||||
|
||||
const QSharedPointer<VPointF> GetP1() const;
|
||||
const QSharedPointer<VPointF> GetP4() const;
|
||||
|
||||
|
|
|
@ -170,7 +170,8 @@ void DialogSplinePath::SetPath(const VSplinePath &value)
|
|||
ui->lineEditSplPathName->setText(qApp->TrVars()->VarToUser(path.name()));
|
||||
ui->doubleSpinBoxApproximationScale->setValue(path.GetApproximationScale());
|
||||
|
||||
ui->lineEditAlias->setText(path.GetAliasSuffix());
|
||||
originAliasSuffix = path.GetAliasSuffix();
|
||||
ui->lineEditAlias->setText(originAliasSuffix);
|
||||
ValidateAlias();
|
||||
|
||||
ChangeCurrentData(ui->comboBoxPenStyle, path.GetPenStyle());
|
||||
|
@ -500,10 +501,13 @@ void DialogSplinePath::FXLength2()
|
|||
void DialogSplinePath::ValidateAlias()
|
||||
{
|
||||
QRegularExpression rx(NameRegExp());
|
||||
|
||||
VSplinePath tempPath = path;
|
||||
tempPath.SetAliasSuffix(ui->lineEditAlias->text());
|
||||
|
||||
if (not ui->lineEditAlias->text().isEmpty() &&
|
||||
(not rx.match(tempPath.GetAlias()).hasMatch() || not data->IsUnique(tempPath.GetAlias())))
|
||||
(not rx.match(tempPath.GetAlias()).hasMatch() ||
|
||||
(originAliasSuffix != ui->lineEditAlias->text() && not data->IsUnique(tempPath.GetAlias()))))
|
||||
{
|
||||
flagAlias = false;
|
||||
ChangeColor(ui->labelAlias, errorColor);
|
||||
|
|
|
@ -115,6 +115,8 @@ private:
|
|||
bool flagError;
|
||||
bool flagAlias{true};
|
||||
|
||||
QString originAliasSuffix{};
|
||||
|
||||
void EvalAngle1();
|
||||
void EvalAngle2();
|
||||
void EvalLength1();
|
||||
|
|
Loading…
Reference in New Issue
Block a user