Show name in a property browser.

--HG--
branch : feature
This commit is contained in:
Roman Telezhynskyi 2016-02-16 15:04:21 +02:00
parent c36f1eb8ef
commit c80fe9c61b
9 changed files with 78 additions and 55 deletions

View File

@ -445,11 +445,12 @@ void VToolOptionsPropertyBrowser::AddPropertyFormula(const QString &propertyName
//---------------------------------------------------------------------------------------------------------------------
template<class Tool>
void VToolOptionsPropertyBrowser::AddPropertyPointName(Tool *i, const QString &propertyName)
void VToolOptionsPropertyBrowser::AddPropertyObjectName(Tool *i, const QString &propertyName, bool readOnly)
{
VStringProperty *itemName = new VStringProperty(propertyName);
auto itemName = new VStringProperty(propertyName);
itemName->setClearButtonEnable(true);
itemName->setValue(i->name());
itemName->setReadOnly(readOnly);
AddProperty(itemName, AttrName);
}
@ -1301,6 +1302,9 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSpline(VProperty *property)
SCASSERT(i != nullptr);
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
Q_UNREACHABLE();//The attribute is read only
break;
case 25: // AttrKCurve
{
VSpline spl = i->getSpline();
@ -1329,6 +1333,9 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSplinePath(VProperty *property)
SCASSERT(i != nullptr);
switch (PropertiesList().indexOf(id))
{
case 0: // AttrName
Q_UNREACHABLE();//The attribute is read only
break;
case 25: // AttrKCurve
{
VSplinePath splPath = i->getSplinePath();
@ -1431,7 +1438,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolSinglePoint(QGraphicsItem *item
i->ShowVisualization(true);
formView->setTitle(tr("Base point"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
VPointFProperty* itemPosition = new VPointFProperty(tr("Position"));
itemPosition->setValue(i->pos());
@ -1445,7 +1452,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolEndLine(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Point at distance and angle"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyLineType(i, tr("Line type"), VAbstractTool::LineStylesPics());
AddPropertyLineColor(i, tr("Line color"), VAbstractTool::ColorsList(), AttrLineColor);
AddPropertyFormula(tr("Length"), i->GetFormulaLength(), AttrLength);
@ -1459,7 +1466,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolAlongLine(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Point at distance along line"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyLineType(i, tr("Line type"), VAbstractTool::LineStylesPics());
AddPropertyLineColor(i, tr("Line color"), VAbstractTool::ColorsList(), AttrLineColor);
AddPropertyFormula(tr("Length"), i->GetFormulaLength(), AttrLength);
@ -1498,7 +1505,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolBisector(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Point along bisector"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyLineType(i, tr("Line type"), VAbstractTool::LineStylesPics());
AddPropertyLineColor(i, tr("Line color"), VAbstractTool::ColorsList(), AttrLineColor);
AddPropertyFormula(tr("Length"), i->GetFormulaLength(), AttrLength);
@ -1522,7 +1529,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolCutArc(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Cut arc tool"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyFormula(tr("Length"), i->GetFormula(), AttrLength);
AddPropertyLineColor(i, tr("Color"), VAbstractTool::ColorsList(), AttrColor);
}
@ -1534,7 +1541,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolCutSpline(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Tool for segmenting a curve"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyFormula(tr("Length"), i->GetFormula(), AttrLength);
AddPropertyLineColor(i, tr("Color"), VAbstractTool::ColorsList(), AttrColor);
}
@ -1546,7 +1553,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolCutSplinePath(QGraphicsItem *it
i->ShowVisualization(true);
formView->setTitle(tr("Tool segment a pathed curve"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyFormula(tr("Length"), i->GetFormula(), AttrLength);
AddPropertyLineColor(i, tr("Color"), VAbstractTool::ColorsList(), AttrColor);
}
@ -1558,7 +1565,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolHeight(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Perpendicular point along line"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyLineType(i, tr("Line type"), VAbstractTool::LineStylesPics());
AddPropertyLineColor(i, tr("Line color"), VAbstractTool::ColorsList(), AttrLineColor);
}
@ -1583,7 +1590,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolLineIntersect(QGraphicsItem *it
i->ShowVisualization(true);
formView->setTitle(tr("Point at line intersection"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
}
//---------------------------------------------------------------------------------------------------------------------
@ -1594,7 +1601,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolNormal(QGraphicsItem *item)
formView->setTitle(tr("Point along perpendicular"));
AddPropertyFormula(tr("Length"), i->GetFormulaLength(), AttrLength);
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyLineType(i, tr("Line type"), VAbstractTool::LineStylesPics());
AddPropertyLineColor(i, tr("Line color"), VAbstractTool::ColorsList(), AttrLineColor);
@ -1613,7 +1620,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolPointOfContact(QGraphicsItem *i
i->ShowVisualization(true);
formView->setTitle(tr("Point at intersection of arc and line"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyFormula(tr("Radius"), i->getArcRadius(), AttrRadius);
}
@ -1624,7 +1631,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolPointOfIntersection(QGraphicsIt
i->ShowVisualization(true);
formView->setTitle(tr("Tool to make point from x & y of two other points"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
}
//---------------------------------------------------------------------------------------------------------------------
@ -1634,7 +1641,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolPointOfIntersectionArcs(QGraphi
i->ShowVisualization(true);
formView->setTitle(tr("Tool to make point from intersection two arcs"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyCrossPoint(i, tr("Take"));
}
@ -1645,7 +1652,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolPointOfIntersectionCircles(QGra
i->ShowVisualization(true);
formView->setTitle(tr("Tool to make point from intersection two circles"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyFormula(tr("First circle radius"), i->GetFirstCircleRadius(), AttrC1Radius);
AddPropertyFormula(tr("Second circle radius"), i->GetSecondCircleRadius(), AttrC2Radius);
AddPropertyCrossPoint(i, tr("Take"));
@ -1658,7 +1665,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolPointOfIntersectionCurves(QGrap
i->ShowVisualization(true);
formView->setTitle(tr("Tool to make point from intersection two curves"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyVCrossPoint(i, tr("Vertical correction"));
AddPropertyHCrossPoint(i, tr("Horizontal correction"));
}
@ -1670,7 +1677,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolPointFromCircleAndTangent(QGrap
i->ShowVisualization(true);
formView->setTitle(tr("Tool to make point from circle and tangent"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyFormula(tr("Circle radius"), i->GetCircleRadius(), AttrCRadius);
AddPropertyCrossPoint(i, tr("Take"));
}
@ -1682,7 +1689,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolPointFromArcAndTangent(QGraphic
i->ShowVisualization(true);
formView->setTitle(tr("Tool to make point from arc and tangent"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyCrossPoint(i, tr("Take"));
}
@ -1693,7 +1700,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolShoulderPoint(QGraphicsItem *it
i->ShowVisualization(true);
formView->setTitle(tr("Special point on shoulder"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyLineType(i, tr("Line type"), VAbstractTool::LineStylesPics());
AddPropertyLineColor(i, tr("Line color"), VAbstractTool::ColorsList(), AttrLineColor);
AddPropertyFormula(tr("Length"), i->GetFormulaLength(), AttrLength);
@ -1706,6 +1713,8 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolSpline(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Curve tool"));
AddPropertyObjectName(i, tr("Name"), true);
VDoubleProperty* itemFactor = new VDoubleProperty(tr("Curve factor"));
VSpline spl = i->getSpline();
itemFactor->setSetting("Min", 0.1);
@ -1724,6 +1733,8 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolSplinePath(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Tool for path curve"));
AddPropertyObjectName(i, tr("Name"), true);
VDoubleProperty* itemFactor = new VDoubleProperty(tr("Curve factor"));
VSplinePath splPath = i->getSplinePath();
itemFactor->setSetting("Min", 0.1);
@ -1742,7 +1753,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolTriangle(QGraphicsItem *item)
i->ShowVisualization(true);
formView->setTitle(tr("Tool triangle"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
}
//---------------------------------------------------------------------------------------------------------------------
@ -1752,7 +1763,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolLineIntersectAxis(QGraphicsItem
i->ShowVisualization(true);
formView->setTitle(tr("Point intersection line and axis"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyLineType(i, tr("Line type"), VAbstractTool::LineStylesPics());
AddPropertyLineColor(i, tr("Line color"), VAbstractTool::ColorsList(), AttrLineColor);
AddPropertyFormula(tr("Angle"), i->GetFormulaAngle(), AttrAngle);
@ -1765,7 +1776,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolCurveIntersectAxis(QGraphicsIte
i->ShowVisualization(true);
formView->setTitle(tr("Point intersection curve and axis"));
AddPropertyPointName(i, tr("Point label"));
AddPropertyObjectName(i, tr("Point label"));
AddPropertyLineType(i, tr("Line type"), VAbstractTool::LineStylesPics());
AddPropertyLineColor(i, tr("Line color"), VAbstractTool::ColorsList(), AttrLineColor);
AddPropertyFormula(tr("Angle"), i->GetFormulaAngle(), AttrAngle);
@ -2112,25 +2123,21 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolShoulderPoint()
//---------------------------------------------------------------------------------------------------------------------
void VToolOptionsPropertyBrowser::UpdateOptionsToolSpline()
{
VToolSpline *i = qgraphicsitem_cast<VToolSpline *>(currentItem);
auto i = qgraphicsitem_cast<VToolSpline *>(currentItem);
VSpline spl = i->getSpline();
idToProperty[AttrKCurve]->setValue(spl.GetKcurve());
const qint32 index = VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor());
idToProperty[AttrColor]->setValue(index);
idToProperty[AttrName]->setValue(i->name());
idToProperty[AttrKCurve]->setValue(i->getSpline().GetKcurve());
idToProperty[AttrColor]->setValue(VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()));
}
//---------------------------------------------------------------------------------------------------------------------
void VToolOptionsPropertyBrowser::UpdateOptionsToolSplinePath()
{
VToolSplinePath *i = qgraphicsitem_cast<VToolSplinePath *>(currentItem);
auto i = qgraphicsitem_cast<VToolSplinePath *>(currentItem);
VSplinePath splPath = i->getSplinePath();
idToProperty[AttrKCurve]->setValue(splPath.GetKCurve());
const qint32 index = VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor());
idToProperty[AttrColor]->setValue(index);
idToProperty[AttrName]->setValue(i->name());
idToProperty[AttrKCurve]->setValue(i->getSplinePath().GetKCurve());
idToProperty[AttrColor]->setValue(VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()));
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -87,7 +87,7 @@ private:
void SetHCrossCurvesPoint(const QVariant &value);
template<class Tool>
void AddPropertyPointName(Tool *i, const QString &propertyName);
void AddPropertyObjectName(Tool *i, const QString &propertyName, bool readOnly = false);
template<class Tool>
void AddPropertyPointName1(Tool *i, const QString &propertyName);

View File

@ -266,3 +266,9 @@ void VAbstractSpline::setEnabled(bool enabled)
qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor));
}
}
//---------------------------------------------------------------------------------------------------------------------
QString VAbstractSpline::name() const
{
return ObjectName<VAbstractCurve>(id);
}

View File

@ -52,6 +52,8 @@ public:
void setEnabled(bool enabled);
QString name() const;
public slots:
virtual void FullUpdateFromFile () Q_DECL_OVERRIDE;
virtual void Disable(bool disable, const QString &namePP) Q_DECL_OVERRIDE;

View File

@ -76,7 +76,7 @@ void VToolDoublePoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *
//---------------------------------------------------------------------------------------------------------------------
QString VToolDoublePoint::nameP1() const
{
return PointName(p1id);
return ObjectName<VPointF>(p1id);
}
//---------------------------------------------------------------------------------------------------------------------
@ -88,7 +88,7 @@ void VToolDoublePoint::setNameP1(const QString &name)
//---------------------------------------------------------------------------------------------------------------------
QString VToolDoublePoint::nameP2() const
{
return PointName(p2id);
return ObjectName<VPointF>(p2id);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -95,7 +95,7 @@ void VToolSinglePoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *
//---------------------------------------------------------------------------------------------------------------------
QString VToolSinglePoint::name() const
{
return PointName(id);
return ObjectName<VPointF>(id);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -71,21 +71,6 @@ void VAbstractPoint::DeleteFromLabel()
}
}
//---------------------------------------------------------------------------------------------------------------------
QString VAbstractPoint::PointName(quint32 id) const
{
try
{
return VAbstractTool::data.GeometricObject<VPointF>(id)->name();
}
catch (const VExceptionBadId &e)
{
qCDebug(vTool, "Error! Couldn't get point name. %s %s", qUtf8Printable(e.ErrorMessage()),
qUtf8Printable(e.DetailedInformation()));
return QString("");// Return empty string for property browser
}
}
//---------------------------------------------------------------------------------------------------------------------
void VAbstractPoint::SetPointName(quint32 id, const QString &name)
{

View File

@ -50,7 +50,6 @@ public slots:
void DeleteFromLabel();
protected:
QString PointName(quint32 id) const;
void SetPointName(quint32 id, const QString &name);
template <typename T>

View File

@ -112,6 +112,9 @@ protected:
template <typename Item>
void ShowItem(Item *item, quint32 id, bool enable);
template <typename T>
QString ObjectName(quint32 id) const;
private:
Q_DISABLE_COPY(VDrawTool)
};
@ -202,4 +205,25 @@ void VDrawTool::ShowItem(Item *item, quint32 id, bool enable)
}
}
//---------------------------------------------------------------------------------------------------------------------
template <typename T>
/**
* @brief ObjectName get object (point, curve, arc) name.
* @param id object id in container.
*/
QString VDrawTool::ObjectName(quint32 id) const
{
try
{
return VAbstractTool::data.GeometricObject<T>(id)->name();
}
catch (const VExceptionBadId &e)
{
qCDebug(vTool, "Error! Couldn't get object name by id = %s. %s %s", qUtf8Printable(QString().setNum(id)),
qUtf8Printable(e.ErrorMessage()),
qUtf8Printable(e.DetailedInformation()));
return QString("");// Return empty string for property browser
}
}
#endif // VDRAWTOOL_H