diff --git a/ChangeLog.txt b/ChangeLog.txt
index 87e885430..459b1cd7f 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -2,6 +2,7 @@
- Fix Tape crash on Mac OS X.
- Fix issue in VAbstractCurve::CurveIntersectAxis.
- Improve editing a spline path through control points for locked angles.
+- [smart-pattern/valentina#73] Notes for tools.
# Version 0.7.36 October 24, 2020
- [#892] Show tooltip for piece node point.
diff --git a/src/app/tape/dialogs/dialogdimensionlabels.ui b/src/app/tape/dialogs/dialogdimensionlabels.ui
index 4dbf89a00..7a457da32 100644
--- a/src/app/tape/dialogs/dialogdimensionlabels.ui
+++ b/src/app/tape/dialogs/dialogdimensionlabels.ui
@@ -14,7 +14,7 @@
Dimension labels
-
+
:/tapeicon/64x64/logo.png:/tapeicon/64x64/logo.png
@@ -36,7 +36,7 @@
-
- Dimension:
+ Dimension:
@@ -96,9 +96,7 @@
-
-
-
+
buttonBox
diff --git a/src/app/valentina/core/vtooloptionspropertybrowser.cpp b/src/app/valentina/core/vtooloptionspropertybrowser.cpp
index 874c154cc..75d933532 100644
--- a/src/app/valentina/core/vtooloptionspropertybrowser.cpp
+++ b/src/app/valentina/core/vtooloptionspropertybrowser.cpp
@@ -508,7 +508,7 @@ void VToolOptionsPropertyBrowser::itemClicked(QGraphicsItem *item)
void VToolOptionsPropertyBrowser::AddPropertyFormula(const QString &propertyName, const VFormula &formula,
const QString &attrName)
{
- VFormulaProperty* itemLength = new VFormulaProperty(propertyName);
+ auto *itemLength = new VFormulaProperty(propertyName);
itemLength->SetFormula(formula);
AddProperty(itemLength, attrName);
}
@@ -517,7 +517,7 @@ void VToolOptionsPropertyBrowser::AddPropertyFormula(const QString &propertyName
template
void VToolOptionsPropertyBrowser::AddPropertyObjectName(Tool *i, const QString &propertyName, bool readOnly)
{
- auto itemName = new VPE::VStringProperty(propertyName);
+ auto *itemName = new VPE::VStringProperty(propertyName);
itemName->setClearButtonEnable(true);
itemName->setValue(qApp->TrVars()->VarToUser(i->name()));
itemName->setReadOnly(readOnly);
@@ -528,7 +528,7 @@ void VToolOptionsPropertyBrowser::AddPropertyObjectName(Tool *i, const QString &
template
void VToolOptionsPropertyBrowser::AddPropertyPointName1(Tool *i, const QString &propertyName)
{
- VPE::VStringProperty *itemName = new VPE::VStringProperty(propertyName);
+ auto *itemName = new VPE::VStringProperty(propertyName);
itemName->setClearButtonEnable(true);
itemName->setValue(i->nameP1());
AddProperty(itemName, AttrName1);
@@ -538,7 +538,7 @@ void VToolOptionsPropertyBrowser::AddPropertyPointName1(Tool *i, const QString &
template
void VToolOptionsPropertyBrowser::AddPropertyPointName2(Tool *i, const QString &propertyName)
{
- VPE::VStringProperty *itemName = new VPE::VStringProperty(propertyName);
+ auto *itemName = new VPE::VStringProperty(propertyName);
itemName->setClearButtonEnable(true);
itemName->setValue(i->nameP2());
AddProperty(itemName, AttrName2);
@@ -548,7 +548,7 @@ void VToolOptionsPropertyBrowser::AddPropertyPointName2(Tool *i, const QString &
template
void VToolOptionsPropertyBrowser::AddPropertyOperationSuffix(Tool *i, const QString &propertyName, bool readOnly)
{
- auto itemSuffix = new VPE::VStringProperty(propertyName);
+ auto *itemSuffix = new VPE::VStringProperty(propertyName);
itemSuffix->setClearButtonEnable(true);
itemSuffix->setValue(i->Suffix());
itemSuffix->setReadOnly(readOnly);
@@ -559,16 +559,25 @@ void VToolOptionsPropertyBrowser::AddPropertyOperationSuffix(Tool *i, const QStr
void VToolOptionsPropertyBrowser::AddPropertyParentPointName(const QString &pointName, const QString &propertyName,
const QString &propertyAttribure)
{
- auto itemParentPoint = new VPE::VLabelProperty(propertyName);
+ auto *itemParentPoint = new VPE::VLabelProperty(propertyName);
itemParentPoint->setValue(pointName);
AddProperty(itemParentPoint, propertyAttribure);
}
+//---------------------------------------------------------------------------------------------------------------------
+void VToolOptionsPropertyBrowser::AddPropertyText(const QString &propertyName, const QString &text,
+ const QString &attrName)
+{
+ auto *itemText = new VPE::VTextProperty(propertyName);
+ itemText->setValue(text);
+ AddProperty(itemText, attrName);
+}
+
//---------------------------------------------------------------------------------------------------------------------
template
void VToolOptionsPropertyBrowser::AddPropertyCrossPoint(Tool *i, const QString &propertyName)
{
- VPE::VEnumProperty* itemProperty = new VPE::VEnumProperty(propertyName);
+ auto *itemProperty = new VPE::VEnumProperty(propertyName);
itemProperty->setLiterals(QStringList({VToolOptionsPropertyBrowser::tr("First point"),
VToolOptionsPropertyBrowser::tr("Second point")}));
itemProperty->setValue(static_cast(i->GetCrossCirclesPoint())-1);
@@ -579,7 +588,7 @@ void VToolOptionsPropertyBrowser::AddPropertyCrossPoint(Tool *i, const QString &
template
void VToolOptionsPropertyBrowser::AddPropertyVCrossPoint(Tool *i, const QString &propertyName)
{
- auto itemProperty = new VPE::VEnumProperty(propertyName);
+ auto *itemProperty = new VPE::VEnumProperty(propertyName);
itemProperty->setLiterals(QStringList({VToolOptionsPropertyBrowser::tr("Highest point"),
VToolOptionsPropertyBrowser::tr("Lowest point")}));
itemProperty->setValue(static_cast(i->GetVCrossPoint())-1);
@@ -590,7 +599,7 @@ void VToolOptionsPropertyBrowser::AddPropertyVCrossPoint(Tool *i, const QString
template
void VToolOptionsPropertyBrowser::AddPropertyHCrossPoint(Tool *i, const QString &propertyName)
{
- auto itemProperty = new VPE::VEnumProperty(propertyName);
+ auto *itemProperty = new VPE::VEnumProperty(propertyName);
itemProperty->setLiterals(QStringList({VToolOptionsPropertyBrowser::tr("Leftmost point"),
VToolOptionsPropertyBrowser::tr("Rightmost point")}));
itemProperty->setValue(static_cast(i->GetHCrossPoint())-1);
@@ -601,7 +610,7 @@ void VToolOptionsPropertyBrowser::AddPropertyHCrossPoint(Tool *i, const QString
template
void VToolOptionsPropertyBrowser::AddPropertyAxisType(Tool *i, const QString &propertyName)
{
- auto itemProperty = new VPE::VEnumProperty(propertyName);
+ auto *itemProperty = new VPE::VEnumProperty(propertyName);
itemProperty->setLiterals(QStringList({VToolOptionsPropertyBrowser::tr("Vertical axis"),
VToolOptionsPropertyBrowser::tr("Horizontal axis")}));
itemProperty->setValue(static_cast(i->GetAxisType())-1);
@@ -613,7 +622,7 @@ template
void VToolOptionsPropertyBrowser::AddPropertyLineType(Tool *i, const QString &propertyName,
const QMap &styles)
{
- VPE::VLineTypeProperty *lineTypeProperty = new VPE::VLineTypeProperty(propertyName);
+ auto *lineTypeProperty = new VPE::VLineTypeProperty(propertyName);
lineTypeProperty->setStyles(styles);
const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(styles, i->getLineType());
if (index == -1)
@@ -629,7 +638,7 @@ template
void VToolOptionsPropertyBrowser::AddPropertyCurvePenStyle(Tool *i, const QString &propertyName,
const QMap &styles)
{
- VPE::VLineTypeProperty *penStyleProperty = new VPE::VLineTypeProperty(propertyName);
+ auto *penStyleProperty = new VPE::VLineTypeProperty(propertyName);
penStyleProperty->setStyles(styles);
const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(styles, i->GetPenStyle());
if (index == -1)
@@ -645,7 +654,7 @@ template
void VToolOptionsPropertyBrowser::AddPropertyLineColor(Tool *i, const QString &propertyName,
const QMap &colors, const QString &id)
{
- VPE::VLineColorProperty *lineColorProperty = new VPE::VLineColorProperty(propertyName);
+ auto *lineColorProperty = new VPE::VLineColorProperty(propertyName);
lineColorProperty->setColors(colors);
const qint32 index = VPE::VLineColorProperty::IndexOfColor(colors, i->GetLineColor());
if (index == -1)
@@ -665,17 +674,18 @@ void VToolOptionsPropertyBrowser::AddPropertyApproximationScale(const QString &p
settings.insert(QStringLiteral("Step"), 0.1);
settings.insert(QStringLiteral("Precision"), 1);
- VPE::VDoubleProperty *aScaleProperty = new VPE::VDoubleProperty(propertyName, settings);
+ auto *aScaleProperty = new VPE::VDoubleProperty(propertyName, settings);
aScaleProperty->setValue(aScale);
AddProperty(aScaleProperty, AttrAScale);
}
//---------------------------------------------------------------------------------------------------------------------
template
-void VToolOptionsPropertyBrowser::SetPointName(const QString &name)
+void VToolOptionsPropertyBrowser::SetPointName(VPE::VProperty *property)
{
- if (Tool *i = qgraphicsitem_cast(currentItem))
+ if (auto *i = qgraphicsitem_cast(currentItem))
{
+ QString name = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toString();
if (name == i->name())
{
return;
@@ -700,10 +710,11 @@ void VToolOptionsPropertyBrowser::SetPointName(const QString &name)
//---------------------------------------------------------------------------------------------------------------------
template
-void VToolOptionsPropertyBrowser::SetPointName1(const QString &name)
+void VToolOptionsPropertyBrowser::SetPointName1(VPE::VProperty *property)
{
- if (Tool *i = qgraphicsitem_cast(currentItem))
+ if (auto *i = qgraphicsitem_cast(currentItem))
{
+ QString name = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toString();
if (name == i->nameP1())
{
return;
@@ -728,10 +739,11 @@ void VToolOptionsPropertyBrowser::SetPointName1(const QString &name)
//---------------------------------------------------------------------------------------------------------------------
template
-void VToolOptionsPropertyBrowser::SetPointName2(const QString &name)
+void VToolOptionsPropertyBrowser::SetPointName2(VPE::VProperty *property)
{
- if (Tool *i = qgraphicsitem_cast(currentItem))
+ if (auto *i = qgraphicsitem_cast(currentItem))
{
+ QString name = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toString();
if (name == i->nameP2())
{
return;
@@ -756,10 +768,12 @@ void VToolOptionsPropertyBrowser::SetPointName2(const QString &name)
//---------------------------------------------------------------------------------------------------------------------
template
-void VToolOptionsPropertyBrowser::SetOperationSuffix(const QString &suffix)
+void VToolOptionsPropertyBrowser::SetOperationSuffix(VPE::VProperty *property)
{
- if (Tool *item = qgraphicsitem_cast(currentItem))
+ if (auto *item = qgraphicsitem_cast(currentItem))
{
+ QString suffix = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toString();
+
if (suffix == item->Suffix())
{
return;
@@ -817,10 +831,11 @@ Type VToolOptionsPropertyBrowser::GetCrossPoint(const QVariant &value)
//---------------------------------------------------------------------------------------------------------------------
template
-void VToolOptionsPropertyBrowser::SetCrossCirclesPoint(const QVariant &value)
+void VToolOptionsPropertyBrowser::SetCrossCirclesPoint(VPE::VProperty *property)
{
- if (Tool *i = qgraphicsitem_cast(currentItem))
+ if (auto *i = qgraphicsitem_cast(currentItem))
{
+ const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
i->SetCrossCirclesPoint(GetCrossPoint(value));
}
else
@@ -831,11 +846,18 @@ void VToolOptionsPropertyBrowser::SetCrossCirclesPoint(const QVariant &value)
//---------------------------------------------------------------------------------------------------------------------
template
-void VToolOptionsPropertyBrowser::SetVCrossCurvesPoint(const QVariant &value)
+void VToolOptionsPropertyBrowser::SetVCrossCurvesPoint(VPE::VProperty *property)
{
- if (auto i = qgraphicsitem_cast(currentItem))
+ if (auto *i = qgraphicsitem_cast(currentItem))
{
- i->SetVCrossPoint(GetCrossPoint(value));
+ const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
+ auto type = GetCrossPoint(value);
+ if (type == i->GetVCrossPoint())
+ {
+ return;
+ }
+
+ i->SetVCrossPoint(type);
}
else
{
@@ -845,10 +867,17 @@ void VToolOptionsPropertyBrowser::SetVCrossCurvesPoint(const QVariant &value)
//---------------------------------------------------------------------------------------------------------------------
template
-void VToolOptionsPropertyBrowser::SetHCrossCurvesPoint(const QVariant &value)
+void VToolOptionsPropertyBrowser::SetHCrossCurvesPoint(VPE::VProperty *property)
{
- if (auto i = qgraphicsitem_cast(currentItem))
+ if (auto *i = qgraphicsitem_cast(currentItem))
{
+ const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
+ auto type = GetCrossPoint(value);
+ if (type == i->GetHCrossPoint())
+ {
+ return;
+ }
+
i->SetHCrossPoint(GetCrossPoint(value));
}
else
@@ -859,11 +888,238 @@ void VToolOptionsPropertyBrowser::SetHCrossCurvesPoint(const QVariant &value)
//---------------------------------------------------------------------------------------------------------------------
template
-void VToolOptionsPropertyBrowser::SetAxisType(const QVariant &value)
+void VToolOptionsPropertyBrowser::SetAxisType(VPE::VProperty *property)
{
- if (auto i = qgraphicsitem_cast(currentItem))
+ if (auto *i = qgraphicsitem_cast(currentItem))
{
- i->SetAxisType(GetCrossPoint(value));
+ const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
+ AxisType type = GetCrossPoint(value);
+ if (type == i->GetAxisType())
+ {
+ return;
+ }
+
+ i->SetAxisType(type);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetNotes(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ QString notes = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toString();
+ if (notes == i->GetNotes())
+ {
+ return;
+ }
+
+ i->SetNotes(notes);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetLineType(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ QString type = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toString();
+ if (type == i->getLineType())
+ {
+ return;
+ }
+
+ i->SetLineType(type);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetLineColor(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ QString color = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toString();
+ if (color == i->GetLineColor())
+ {
+ return;
+ }
+
+ i->SetLineColor(color);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetFormulaLength(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetFormulaLength())
+ {
+ return;
+ }
+
+ i->SetFormulaLength(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetFormulaAngle(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetFormulaAngle())
+ {
+ return;
+ }
+
+ i->SetFormulaAngle(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetFormulaRadius(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetFormulaRadius())
+ {
+ return;
+ }
+
+ i->SetFormulaRadius(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetFormulaF1(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetFormulaF1())
+ {
+ return;
+ }
+
+ i->SetFormulaF1(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetFormulaF2(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetFormulaF2())
+ {
+ return;
+ }
+
+ i->SetFormulaF2(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetPenStyle(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ QString pen = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toString();
+ if (pen == i->GetPenStyle())
+ {
+ return;
+ }
+
+ i->SetPenStyle(pen);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetFormulaRotationAngle(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetFormulaRotationAngle())
+ {
+ return;
+ }
+
+ i->SetFormulaRotationAngle(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+template
+void VToolOptionsPropertyBrowser::SetApproximationScale(VPE::VProperty *property)
+{
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ double scale = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toDouble();
+ if (VFuzzyComparePossibleNulls(scale, i->GetApproximationScale()))
+ {
+ return;
+ }
+
+ i->SetApproximationScale(scale);
}
else
{
@@ -884,18 +1140,31 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSinglePoint(VPE::VProperty *prop
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolBasePoint *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
+ auto SetPosition = [this](VPE::VProperty *property)
+ {
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
+ i->SetBasePointPos(value.toPointF());
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+ };
+
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 1: // QLatin1String("position")
- i->SetBasePointPos(value.toPointF());
+ SetPosition(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolEndLine *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 3: // AttrTypeLine
- i->SetTypeLine(value.toString());
+ SetLineType(property);
break;
case 26: // AttrTypeLineColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
break;
case 4: // AttrLength
- i->SetFormulaLength(value.value());
+ SetFormulaLength(property);
break;
case 5: // AttrAngle
- i->SetFormulaAngle(value.value());
+ SetFormulaAngle(property);
break;
case 2: // AttrBasePoint (read only)
break;
+ case 61: // AttrNotes
+ SetNotes(property);
+ break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolAlongLine *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 3: // AttrTypeLine
- i->SetTypeLine(value.toString());
+ SetLineType(property);
break;
case 26: // AttrTypeLineColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
break;
case 4: // AttrLength
- i->SetFormulaLength(value.value());
+ SetFormulaLength(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 2: // AttrBasePoint (read only)
case 7: // AttrSecondPoint (read only)
@@ -976,35 +1245,35 @@ void VToolOptionsPropertyBrowser::ChangeDataToolArc(VPE::VProperty *property)
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolArc *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
Q_UNREACHABLE();//The attribute is read only
break;
case 8: // AttrRadius
- i->SetFormulaRadius(value.value());
+ SetFormulaRadius(property);
break;
case 9: // AttrAngle1
- i->SetFormulaF1(value.value());
+ SetFormulaF1(property);
break;
case 10: // AttrAngle2
- i->SetFormulaF2(value.value());
+ SetFormulaF2(property);
break;
case 27: // AttrTypeColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
break;
case 11: // AttrCenter (read only)
break;
case 59: // AttrPenStyle
- i->SetPenStyle(value.toString());
+ SetPenStyle(property);
break;
case 60: // AttrAScale
- i->SetApproximationScale(value.toDouble());
+ SetApproximationScale(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolArcWithLength *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
Q_UNREACHABLE();//The attribute is read only
break;
case 8: // AttrRadius
- i->SetFormulaRadius(value.value());
+ SetFormulaRadius(property);
break;
case 9: // AttrAngle1
- i->SetFormulaF1(value.value());
+ SetFormulaF1(property);
break;
case 4: // AttrLength
- i->SetFormulaLength(value.value());
+ SetFormulaLength(property);
break;
case 27: // AttrTypeColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
break;
case 11: // AttrCenter (read only)
break;
case 59: // AttrPenStyle
- i->SetPenStyle(value.toString());
+ SetPenStyle(property);
break;
case 60: // AttrAScale
- i->SetApproximationScale(value.toDouble());
+ SetApproximationScale(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolBisector *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 4: // AttrLength
- i->SetFormulaLength(value.value());
+ SetFormulaLength(property);
break;
case 3: // AttrTypeLine
- i->SetTypeLine(value.toString());
+ SetLineType(property);
break;
case 26: // AttrTypeLineColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
break;
case 6: // AttrFirstPoint (read only)
case 2: // AttrBasePoint (read only)
case 12: // AttrThirdPoint (read only)
break;
+ case 61: // AttrNotes
+ SetNotes(property);
+ break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
switch (PropertiesList().indexOf(id))
{
case 32: // AttrName1
- SetPointName1(value.toString());
+ SetPointName1(property);
break;
case 33: // AttrName2
- SetPointName2(value.toString());
+ SetPointName2(property);
break;
case 6: // AttrFirstPoint (read only)
case 7: // AttrSecondPoint (read only)
@@ -1109,6 +1377,9 @@ void VToolOptionsPropertyBrowser::ChangeDataToolTrueDarts(VPE::VProperty *proper
case 44: // AttrDartP2 (read only)
case 45: // AttrDartP3 (read only)
break;
+ case 61: // AttrNotes
+ SetNotes(property);
+ break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolCutArc *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 4: // AttrLength
- i->SetFormula(value.value());
+ SetFormulaLength(property);
break;
case 13: // AttrArc (read only)
break;
+ case 61: // AttrNotes
+ SetNotes(property);
+ break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolCutSpline *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 4: // AttrLength
- i->SetFormula(value.value());
+ SetFormulaLength(property);
break;
case 46: // AttrCurve (read only)
break;
+ case 61: // AttrNotes
+ SetNotes(property);
+ break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolCutSplinePath *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 4: // AttrLength
- i->SetFormula(value.value());
+ SetFormulaLength(property);
break;
case 46: // AttrCurve (read only)
break;
+ case 61: // AttrNotes
+ SetNotes(property);
+ break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolHeight *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 3: // AttrTypeLine
- i->SetTypeLine(value.toString());
+ SetLineType(property);
break;
case 26: // AttrTypeLineColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 2: // AttrBasePoint (read only)
case 16: // AttrP1Line (read only)
@@ -1229,18 +1500,18 @@ void VToolOptionsPropertyBrowser::ChangeDataToolLine(VPE::VProperty *property)
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolLine *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 3: // AttrTypeLine
- i->SetTypeLine(value.toString());
+ SetLineType(property);
break;
case 26: // AttrTypeLineColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 6: // AttrFirstPoint (read only)
case 7: // AttrSecondPoint (read only)
@@ -1256,13 +1527,15 @@ void VToolOptionsPropertyBrowser::ChangeDataToolLineIntersect(VPE::VProperty *pr
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 18: // AttrP1Line1 (read only)
case 19: // AttrP2Line1 (read only)
@@ -1280,27 +1553,45 @@ void VToolOptionsPropertyBrowser::ChangeDataToolNormal(VPE::VProperty *property)
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolNormal *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
+ auto SetAngle = [this](VPE::VProperty *property)
+ {
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ double value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).toDouble();
+ if (VFuzzyComparePossibleNulls(value, i->GetAngle()))
+ {
+ return;
+ }
+
+ i->SetAngle(value);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+ };
+
switch (PropertiesList().indexOf(id))
{
case 4: // AttrLength
- i->SetFormulaLength(value.value());
+ SetFormulaLength(property);
break;
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 5: // AttrAngle
- i->SetAngle(value.toDouble());
+ SetAngle(property);
break;
case 3: // AttrTypeLine
- i->SetTypeLine(value.toString());
+ SetLineType(property);
break;
case 26: // AttrTypeLineColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 2: // AttrBasePoint (read only)
case 7: // AttrSecondPoint (read only)
@@ -1316,18 +1607,36 @@ void VToolOptionsPropertyBrowser::ChangeDataToolPointOfContact(VPE::VProperty *p
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolPointOfContact *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
+ auto SetArcRadius = [this](VPE::VProperty *property)
+ {
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->getArcRadius())
+ {
+ return;
+ }
+
+ i->setArcRadius(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+ };
+
switch (PropertiesList().indexOf(id))
{
case 8: // AttrRadius
- i->setArcRadius(value.value());
+ SetArcRadius(property);
break;
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 11: // AttrCenter (read only)
case 6: // AttrFirstPoint (read only)
@@ -1344,13 +1653,15 @@ void VToolOptionsPropertyBrowser::ChangeDataToolPointOfIntersection(VPE::VProper
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 6: // AttrFirstPoint (read only)
case 7: // AttrSecondPoint (read only)
@@ -1371,17 +1682,14 @@ void VToolOptionsPropertyBrowser::ChangeDataToolPointOfIntersectionArcs(VPE::VPr
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
- SetPointName(value.toString());
+ SetPointName(property);
break;
- }
case 28: // AttrCrossPoint
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
- SetCrossCirclesPoint(value);
+ SetCrossCirclesPoint(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
- }
case 47: // AttrFirstArc (read only)
case 48: // AttrSecondArc (read only)
break;
@@ -1398,27 +1706,57 @@ void VToolOptionsPropertyBrowser::ChangeDataToolPointOfIntersectionCircles(VPE::
const QString id = propertyToId[property];
- VToolPointOfIntersectionCircles *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
+ auto SetFirstCircleRadius = [this](VPE::VProperty *property)
+ {
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetFirstCircleRadius())
+ {
+ return;
+ }
+
+ i->SetFirstCircleRadius(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+ };
+
+ auto SetSecondCircleRadius = [this](VPE::VProperty *property)
+ {
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetSecondCircleRadius())
+ {
+ return;
+ }
+
+ i->SetSecondCircleRadius(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+ };
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
- SetPointName(value.toString());
+ SetPointName(property);
break;
- }
case 28: // AttrCrossPoint
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
- SetCrossCirclesPoint(value);
+ SetCrossCirclesPoint(property);
break;
- }
case 29: // AttrC1Radius
- i->SetFirstCircleRadius(property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value());
+ SetFirstCircleRadius(property);
break;
case 30: // AttrC2Radius
- i->SetSecondCircleRadius(property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value());
+ SetSecondCircleRadius(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 49: // AttrC1Center (read only)
case 50: // AttrC2Center (read only)
@@ -1439,23 +1777,17 @@ void VToolOptionsPropertyBrowser::ChangeDataToolPointOfIntersectionCurves(VPE::V
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
- SetPointName(value.toString());
+ SetPointName(property);
break;
- }
case 34: // AttrVCrossPoint
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
- SetVCrossCurvesPoint(value);
+ SetVCrossCurvesPoint(property);
break;
- }
case 35: // AttrHCrossPoint
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
- SetHCrossCurvesPoint(value);
+ SetHCrossCurvesPoint(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
- }
case 51: // AttrCurve1 (read only)
case 52: // AttrCurve2 (read only)
break;
@@ -1472,25 +1804,38 @@ void VToolOptionsPropertyBrowser::ChangeDataToolPointFromCircleAndTangent(VPE::V
const QString id = propertyToId[property];
- VToolPointFromCircleAndTangent *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
+ auto SetCircleRadius = [this](VPE::VProperty *property)
+ {
+ if (auto *i = qgraphicsitem_cast(currentItem))
+ {
+ VFormula formula = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value();
+ if (formula == i->GetCircleRadius())
+ {
+ return;
+ }
+
+ i->SetCircleRadius(formula);
+ }
+ else
+ {
+ qWarning()<<"Can't cast item";
+ }
+ };
+
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
- SetPointName(value.toString());
+ SetPointName(property);
break;
- }
case 31: // AttrCRadius
- i->SetCircleRadius(property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole).value());
+ SetCircleRadius(property);
break;
case 28: // AttrCrossPoint
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
- SetCrossCirclesPoint(value);
+ SetCrossCirclesPoint(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
- }
case 53: // AttrCCenter (read only)
case 54: // AttrTangent (read only)
break;
@@ -1510,17 +1855,14 @@ void VToolOptionsPropertyBrowser::ChangeDataToolPointFromArcAndTangent(VPE::VPro
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
- SetPointName(value.toString());
+ SetPointName(property);
break;
- }
case 28: // AttrCrossPoint
- {
- const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::EditRole);
- SetCrossCirclesPoint(value);
+ SetCrossCirclesPoint(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
- }
case 54: // AttrTangent (read only)
case 13: // AttrArc (read only)
break;
@@ -1535,24 +1877,24 @@ void VToolOptionsPropertyBrowser::ChangeDataToolShoulderPoint(VPE::VProperty *pr
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolShoulderPoint *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 4: // AttrLength
- i->SetFormulaLength(value.value());
+ SetFormulaLength(property);
break;
case 0: // AttrName
- SetPointName(value.toString());
+ SetPointName(property);
break;
case 3: // AttrTypeLine
- i->SetTypeLine(value.toString());
+ SetLineType(property);
break;
case 26: // AttrTypeLineColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
+ break;
+ case 61: // AttrNotes
+ SetNotes(property);
break;
case 6: // AttrFirstPoint (read only)
case 2: // AttrBasePoint (read only)
@@ -1572,7 +1914,7 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSpline(VPE::VProperty *property)
QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- auto i = qgraphicsitem_cast(currentItem);
+ auto *i = qgraphicsitem_cast(currentItem);
SCASSERT(i != nullptr)
VSpline spl = i->getSpline();
@@ -1612,15 +1954,18 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSpline(VPE::VProperty *property)
}
break;
case 27: // AttrTypeColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
break;
case 59: // AttrPenStyle
- i->SetPenStyle(value.toString());
+ SetPenStyle(property);
break;
case 60: // AttrAScale
spl.SetApproximationScale(value.toDouble());
i->setSpline(spl);
break;
+ case 61: // AttrNotes
+ SetNotes(property);
+ break;
default:
qWarning()<<"Unknown property type. id = "<data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- auto i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
-
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
Q_UNREACHABLE();//The attribute is read only
break;
case 27: // AttrTypeColor
- i->SetLineColor(value.toString());
+ SetLineColor(property);
break;
case 59: // AttrPenStyle
- i->SetPenStyle(value.toString());
+ SetPenStyle(property);
break;
case 60: // AttrAScale
{
+ auto *i = qgraphicsitem_cast(currentItem);
+ SCASSERT(i != nullptr)
+
+ const QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
VCubicBezier spl = i->getSpline();
spl.SetApproximationScale(value.toDouble());
i->setSpline(spl);
break;
}
+ case 61: // AttrNotes
+ SetNotes(property);
+ break;
case 55: // AttrPoint1 (read only)
case 56: // AttrPoint2 (read only)
case 57: // AttrPoint3 (read only)
@@ -1672,29 +2020,33 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSplinePath(VPE::VProperty *prope
{
SCASSERT(property != nullptr)
- QVariant value = property->data(VPE::VProperty::DPC_Data, Qt::DisplayRole);
const QString id = propertyToId[property];
- VToolSplinePath *i = qgraphicsitem_cast(currentItem);
- SCASSERT(i != nullptr)
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
Q_UNREACHABLE();//The attribute is read only
break;
case 27: // AttrTypeColor
- i->SetLineColor(value.toString());
+ SetLineColor