A piece seam allowance can be controlled by formula.
--HG-- branch : feature
This commit is contained in:
parent
25a2717682
commit
0ef10c01b0
|
@ -296,8 +296,9 @@ void VPattern::setCurrentData()
|
||||||
|
|
||||||
const VDataTool *vTool = tools.value(id);
|
const VDataTool *vTool = tools.value(id);
|
||||||
*data = vTool->getData();
|
*data = vTool->getData();
|
||||||
//Delete special variable if exist
|
//Delete special variables if exist
|
||||||
data->RemoveVariable(currentLength);
|
data->RemoveVariable(currentLength);
|
||||||
|
data->RemoveVariable(currentSeamAllowance);
|
||||||
qCDebug(vXML, "Data successfully updated.");
|
qCDebug(vXML, "Data successfully updated.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -690,7 +691,7 @@ void VPattern::ParseDrawMode(const QDomNode &node, const Document &parse, const
|
||||||
* @param domElement tag in xml tree.
|
* @param domElement tag in xml tree.
|
||||||
* @param parse parser file mode.
|
* @param parse parser file mode.
|
||||||
*/
|
*/
|
||||||
void VPattern::ParseDetailElement(const QDomElement &domElement, const Document &parse)
|
void VPattern::ParseDetailElement(QDomElement &domElement, const Document &parse)
|
||||||
{
|
{
|
||||||
Q_ASSERT_X(not domElement.isNull(), Q_FUNC_INFO, "domElement is null");
|
Q_ASSERT_X(not domElement.isNull(), Q_FUNC_INFO, "domElement is null");
|
||||||
try
|
try
|
||||||
|
@ -701,12 +702,13 @@ void VPattern::ParseDetailElement(const QDomElement &domElement, const Document
|
||||||
detail.SetMx(qApp->toPixel(GetParametrDouble(domElement, AttrMx, "0.0")));
|
detail.SetMx(qApp->toPixel(GetParametrDouble(domElement, AttrMx, "0.0")));
|
||||||
detail.SetMy(qApp->toPixel(GetParametrDouble(domElement, AttrMy, "0.0")));
|
detail.SetMy(qApp->toPixel(GetParametrDouble(domElement, AttrMy, "0.0")));
|
||||||
detail.SetSeamAllowance(GetParametrBool(domElement, VToolSeamAllowance::AttrSeamAllowance, falseStr));
|
detail.SetSeamAllowance(GetParametrBool(domElement, VToolSeamAllowance::AttrSeamAllowance, falseStr));
|
||||||
detail.SetSAWidth(GetParametrDouble(domElement, VToolSeamAllowance::AttrWidth, "0.0"));
|
|
||||||
detail.SetForbidFlipping(GetParametrBool(domElement, VToolSeamAllowance::AttrForbidFlipping,
|
detail.SetForbidFlipping(GetParametrBool(domElement, VToolSeamAllowance::AttrForbidFlipping,
|
||||||
QString().setNum(qApp->ValentinaSettings()->GetForbidWorkpieceFlipping())));
|
QString().setNum(qApp->ValentinaSettings()->GetForbidWorkpieceFlipping())));
|
||||||
detail.SetInLayout(GetParametrBool(domElement, AttrInLayout, trueStr));
|
detail.SetInLayout(GetParametrBool(domElement, AttrInLayout, trueStr));
|
||||||
detail.SetUnited(GetParametrBool(domElement, VToolSeamAllowance::AttrUnited, falseStr));
|
detail.SetUnited(GetParametrBool(domElement, VToolSeamAllowance::AttrUnited, falseStr));
|
||||||
|
|
||||||
|
const QString width = GetParametrString(domElement, VToolSeamAllowance::AttrWidth, "0.0");
|
||||||
|
QString w = width;//need for saving fixed formula;
|
||||||
const uint version = GetParametrUInt(domElement, VToolSeamAllowance::AttrVersion, "1");
|
const uint version = GetParametrUInt(domElement, VToolSeamAllowance::AttrVersion, "1");
|
||||||
|
|
||||||
const QStringList tags = QStringList() << TagNodes
|
const QStringList tags = QStringList() << TagNodes
|
||||||
|
@ -757,7 +759,14 @@ void VPattern::ParseDetailElement(const QDomElement &domElement, const Document
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
VToolSeamAllowance::Create(id, detail, sceneDetail, this, data, parse, Source::FromFile);
|
VToolSeamAllowance::Create(id, detail, w, sceneDetail, this, data, parse, Source::FromFile);
|
||||||
|
//Rewrite attribute formula. Need for situation when we have wrong formula.
|
||||||
|
if (w != width)
|
||||||
|
{
|
||||||
|
SetAttribute(domElement, VToolSeamAllowance::AttrWidth, w);
|
||||||
|
modified = true;
|
||||||
|
haveLiteChange();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (const VExceptionBadId &e)
|
catch (const VExceptionBadId &e)
|
||||||
{
|
{
|
||||||
|
@ -877,7 +886,7 @@ void VPattern::ParseDetails(const QDomElement &domElement, const Document &parse
|
||||||
{
|
{
|
||||||
if (domNode.isElement())
|
if (domNode.isElement())
|
||||||
{
|
{
|
||||||
const QDomElement domElement = domNode.toElement();
|
QDomElement domElement = domNode.toElement();
|
||||||
if (domElement.isNull() == false)
|
if (domElement.isNull() == false)
|
||||||
{
|
{
|
||||||
if (domElement.tagName() == TagDetail)
|
if (domElement.tagName() == TagDetail)
|
||||||
|
|
|
@ -118,7 +118,7 @@ private:
|
||||||
|
|
||||||
void ParseDrawElement(const QDomNode& node, const Document &parse);
|
void ParseDrawElement(const QDomNode& node, const Document &parse);
|
||||||
void ParseDrawMode(const QDomNode& node, const Document &parse, const Draw &mode);
|
void ParseDrawMode(const QDomNode& node, const Document &parse, const Draw &mode);
|
||||||
void ParseDetailElement(const QDomElement &domElement, const Document &parse);
|
void ParseDetailElement(QDomElement &domElement, const Document &parse);
|
||||||
void ParseDetailNodes(const QDomElement &domElement, VPiece &detail, bool closed) const;
|
void ParseDetailNodes(const QDomElement &domElement, VPiece &detail, bool closed) const;
|
||||||
void ParsePieceDataTag(const QDomElement &domElement, VPiece &detail) const;
|
void ParsePieceDataTag(const QDomElement &domElement, VPiece &detail) const;
|
||||||
void ParsePiecePatternInfo(const QDomElement &domElement, VPiece &detail) const;
|
void ParsePiecePatternInfo(const QDomElement &domElement, VPiece &detail) const;
|
||||||
|
|
|
@ -370,8 +370,8 @@
|
||||||
<xs:attribute name="type" type="xs:string" use="required"/>
|
<xs:attribute name="type" type="xs:string" use="required"/>
|
||||||
<xs:attribute name="idObject" type="xs:unsignedInt" use="required"/>
|
<xs:attribute name="idObject" type="xs:unsignedInt" use="required"/>
|
||||||
<xs:attribute name="reverse" type="xs:unsignedInt"/>
|
<xs:attribute name="reverse" type="xs:unsignedInt"/>
|
||||||
<xs:attribute name="before" type="xs:double"/>
|
<xs:attribute name="before" type="xs:string"/>
|
||||||
<xs:attribute name="after" type="xs:double"/>
|
<xs:attribute name="after" type="xs:string"/>
|
||||||
<xs:attribute name="angle" type="nodeAngle"/>
|
<xs:attribute name="angle" type="nodeAngle"/>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
@ -503,8 +503,8 @@
|
||||||
<xs:attribute name="type" type="xs:string" use="required"/>
|
<xs:attribute name="type" type="xs:string" use="required"/>
|
||||||
<xs:attribute name="idObject" type="xs:unsignedInt" use="required"/>
|
<xs:attribute name="idObject" type="xs:unsignedInt" use="required"/>
|
||||||
<xs:attribute name="reverse" type="xs:unsignedInt"/>
|
<xs:attribute name="reverse" type="xs:unsignedInt"/>
|
||||||
<xs:attribute name="before" type="xs:double"/>
|
<xs:attribute name="before" type="xs:string"/>
|
||||||
<xs:attribute name="after" type="xs:double"/>
|
<xs:attribute name="after" type="xs:string"/>
|
||||||
<xs:attribute name="angle" type="nodeAngle"/>
|
<xs:attribute name="angle" type="nodeAngle"/>
|
||||||
<xs:attribute name="mx" type="xs:double"/>
|
<xs:attribute name="mx" type="xs:double"/>
|
||||||
<xs:attribute name="my" type="xs:double"/>
|
<xs:attribute name="my" type="xs:double"/>
|
||||||
|
@ -547,7 +547,7 @@
|
||||||
<xs:attribute name="name" type="xs:string"/>
|
<xs:attribute name="name" type="xs:string"/>
|
||||||
<xs:attribute name="inLayout" type="xs:boolean"/>
|
<xs:attribute name="inLayout" type="xs:boolean"/>
|
||||||
<xs:attribute name="forbidFlipping" type="xs:boolean"/>
|
<xs:attribute name="forbidFlipping" type="xs:boolean"/>
|
||||||
<xs:attribute name="width" type="xs:double"/>
|
<xs:attribute name="width" type="xs:string"/>
|
||||||
<xs:attribute name="seamAllowance" type="xs:boolean"/>
|
<xs:attribute name="seamAllowance" type="xs:boolean"/>
|
||||||
<xs:attribute name="united" type="xs:boolean"/>
|
<xs:attribute name="united" type="xs:boolean"/>
|
||||||
<xs:attribute name="closed" type="xs:unsignedInt"/>
|
<xs:attribute name="closed" type="xs:unsignedInt"/>
|
||||||
|
|
|
@ -634,8 +634,10 @@ VPieceNode VAbstractPattern::ParseSANode(const QDomElement &domElement)
|
||||||
{
|
{
|
||||||
const quint32 id = VDomDocument::GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR);
|
const quint32 id = VDomDocument::GetParametrUInt(domElement, AttrIdObject, NULL_ID_STR);
|
||||||
const bool reverse = VDomDocument::GetParametrUInt(domElement, VAbstractPattern::AttrNodeReverse, "0");
|
const bool reverse = VDomDocument::GetParametrUInt(domElement, VAbstractPattern::AttrNodeReverse, "0");
|
||||||
const qreal saBefore = VDomDocument::GetParametrDouble(domElement, VAbstractPattern::AttrSABefore, "-1");
|
const QString saBefore = VDomDocument::GetParametrString(domElement, VAbstractPattern::AttrSABefore,
|
||||||
const qreal saAfter = VDomDocument::GetParametrDouble(domElement, VAbstractPattern::AttrSAAfter, "-1");
|
currentSeamAllowance);
|
||||||
|
const QString saAfter = VDomDocument::GetParametrString(domElement, VAbstractPattern::AttrSAAfter,
|
||||||
|
currentSeamAllowance);
|
||||||
const PieceNodeAngle angle = static_cast<PieceNodeAngle>(VDomDocument::GetParametrUInt(domElement, AttrAngle, "0"));
|
const PieceNodeAngle angle = static_cast<PieceNodeAngle>(VDomDocument::GetParametrUInt(domElement, AttrAngle, "0"));
|
||||||
|
|
||||||
const QString t = VDomDocument::GetParametrString(domElement, AttrType, VAbstractPattern::NodePoint);
|
const QString t = VDomDocument::GetParametrString(domElement, AttrType, VAbstractPattern::NodePoint);
|
||||||
|
@ -669,8 +671,8 @@ VPieceNode VAbstractPattern::ParseSANode(const QDomElement &domElement)
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
VPieceNode node(id, tool, reverse);
|
VPieceNode node(id, tool, reverse);
|
||||||
node.SetSABefore(saBefore);
|
node.SetFormulaSABefore(saBefore);
|
||||||
node.SetSAAfter(saAfter);
|
node.SetFormulaSAAfter(saAfter);
|
||||||
node.SetAngleType(angle);
|
node.SetAngleType(angle);
|
||||||
|
|
||||||
return node;
|
return node;
|
||||||
|
|
|
@ -199,29 +199,29 @@ QVector<VPieceNode> VNodeDetail::Convert(const VContainer *data, const QVector<V
|
||||||
|
|
||||||
if (IsSABefore(QLineF(point, previosPoint), QLineF(point, xPoint)))
|
if (IsSABefore(QLineF(point, previosPoint), QLineF(point, xPoint)))
|
||||||
{
|
{
|
||||||
path[i].SetSABefore(LocalWidth(node.getMx()));
|
path[i].SetFormulaSABefore(QString().setNum(LocalWidth(node.getMx())));
|
||||||
|
|
||||||
if (IsSAAfter(QLineF(point, nextPoint), QLineF(point, yPoint)))
|
if (IsSAAfter(QLineF(point, nextPoint), QLineF(point, yPoint)))
|
||||||
{
|
{
|
||||||
path[i].SetSAAfter(LocalWidth(node.getMy()));
|
path[i].SetFormulaSAAfter(QString().setNum(LocalWidth(node.getMy())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (IsSABefore(QLineF(point, previosPoint), QLineF(point, yPoint)))
|
else if (IsSABefore(QLineF(point, previosPoint), QLineF(point, yPoint)))
|
||||||
{
|
{
|
||||||
path[i].SetSABefore(LocalWidth(node.getMy()));
|
path[i].SetFormulaSABefore(QString().setNum(LocalWidth(node.getMy())));
|
||||||
|
|
||||||
if (IsSAAfter(QLineF(point, nextPoint), QLineF(point, xPoint)))
|
if (IsSAAfter(QLineF(point, nextPoint), QLineF(point, xPoint)))
|
||||||
{
|
{
|
||||||
path[i].SetSAAfter(LocalWidth(node.getMx()));
|
path[i].SetFormulaSAAfter(QString().setNum(LocalWidth(node.getMx())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (IsSAAfter(QLineF(point, nextPoint), QLineF(point, xPoint)))
|
else if (IsSAAfter(QLineF(point, nextPoint), QLineF(point, xPoint)))
|
||||||
{
|
{
|
||||||
path[i].SetSAAfter(LocalWidth(node.getMx()));
|
path[i].SetFormulaSAAfter(QString().setNum(LocalWidth(node.getMx())));
|
||||||
}
|
}
|
||||||
else if (IsSAAfter(QLineF(point, nextPoint), QLineF(point, yPoint)))
|
else if (IsSAAfter(QLineF(point, nextPoint), QLineF(point, yPoint)))
|
||||||
{
|
{
|
||||||
path[i].SetSAAfter(LocalWidth(node.getMy()));
|
path[i].SetFormulaSAAfter(QString().setNum(LocalWidth(node.getMy())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,8 +230,8 @@ QVector<VPieceNode> VNodeDetail::Convert(const VContainer *data, const QVector<V
|
||||||
|
|
||||||
if (not closed && path.CountNodes() > 1)
|
if (not closed && path.CountNodes() > 1)
|
||||||
{
|
{
|
||||||
path[0].SetSABefore(0);
|
path[0].SetFormulaSABefore("0");
|
||||||
path[path.CountNodes()-1].SetSAAfter(0);
|
path[path.CountNodes()-1].SetFormulaSAAfter("0");
|
||||||
}
|
}
|
||||||
|
|
||||||
return path.GetNodes();
|
return path.GetNodes();
|
||||||
|
|
|
@ -269,6 +269,20 @@ void VPiece::SetUnited(bool united)
|
||||||
d->m_united = united;
|
d->m_united = united;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString VPiece::GetFormulaSAWidth() const
|
||||||
|
{
|
||||||
|
return d->m_formulaWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VPiece::SetFormulaSAWidth(const QString &formula, qreal value)
|
||||||
|
{
|
||||||
|
SetSAWidth(value);
|
||||||
|
const qreal width = GetSAWidth();
|
||||||
|
width >= 0 ? d->m_formulaWidth = formula : d->m_formulaWidth = QLatin1String("0");
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QVector<quint32> VPiece::GetInternalPaths() const
|
QVector<quint32> VPiece::GetInternalPaths() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -79,6 +79,9 @@ public:
|
||||||
bool IsUnited() const;
|
bool IsUnited() const;
|
||||||
void SetUnited(bool united);
|
void SetUnited(bool united);
|
||||||
|
|
||||||
|
QString GetFormulaSAWidth() const;
|
||||||
|
void SetFormulaSAWidth(const QString &formula, qreal value);
|
||||||
|
|
||||||
QVector<quint32> GetInternalPaths() const;
|
QVector<quint32> GetInternalPaths() const;
|
||||||
void SetInternalPaths(const QVector<quint32> &iPaths);
|
void SetInternalPaths(const QVector<quint32> &iPaths);
|
||||||
void AppendInternalPath(quint32 path);
|
void AppendInternalPath(quint32 path);
|
||||||
|
|
|
@ -56,7 +56,8 @@ public:
|
||||||
m_internalPaths(),
|
m_internalPaths(),
|
||||||
m_ppData(),
|
m_ppData(),
|
||||||
m_piPatternInfo(),
|
m_piPatternInfo(),
|
||||||
m_glGrainline()
|
m_glGrainline(),
|
||||||
|
m_formulaWidth("0")
|
||||||
{}
|
{}
|
||||||
|
|
||||||
VPieceData(const VPieceData &detail)
|
VPieceData(const VPieceData &detail)
|
||||||
|
@ -70,7 +71,8 @@ public:
|
||||||
m_internalPaths(detail.m_internalPaths),
|
m_internalPaths(detail.m_internalPaths),
|
||||||
m_ppData(detail.m_ppData),
|
m_ppData(detail.m_ppData),
|
||||||
m_piPatternInfo(detail.m_piPatternInfo),
|
m_piPatternInfo(detail.m_piPatternInfo),
|
||||||
m_glGrainline(detail.m_glGrainline)
|
m_glGrainline(detail.m_glGrainline),
|
||||||
|
m_formulaWidth(detail.m_formulaWidth)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
~VPieceData();
|
~VPieceData();
|
||||||
|
@ -96,6 +98,8 @@ public:
|
||||||
/** @brief m_glGrainline grainline geometry object*/
|
/** @brief m_glGrainline grainline geometry object*/
|
||||||
VGrainlineGeometry m_glGrainline;
|
VGrainlineGeometry m_glGrainline;
|
||||||
|
|
||||||
|
QString m_formulaWidth;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VPieceData &operator=(const VPieceData &) Q_DECL_EQ_DELETE;
|
VPieceData &operator=(const VPieceData &) Q_DECL_EQ_DELETE;
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,8 +28,11 @@
|
||||||
|
|
||||||
#include "vpiecenode.h"
|
#include "vpiecenode.h"
|
||||||
#include "vpiecenode_p.h"
|
#include "vpiecenode_p.h"
|
||||||
|
#include "vcontainer.h"
|
||||||
|
#include "calculator.h"
|
||||||
|
|
||||||
#include <QDataStream>
|
#include <QDataStream>
|
||||||
|
#include <QtNumeric>
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VPieceNode::VPieceNode()
|
VPieceNode::VPieceNode()
|
||||||
|
@ -101,15 +104,15 @@ void VPieceNode::SetReverse(bool reverse)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
qreal VPieceNode::GetSABefore() const
|
qreal VPieceNode::GetSABefore(const VContainer *data) const
|
||||||
{
|
{
|
||||||
return d->m_saBefore;
|
return EvalFormula(data, d->m_formulaWidthBefore);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
qreal VPieceNode::GetSABefore(Unit unit) const
|
qreal VPieceNode::GetSABefore(const VContainer *data, Unit unit) const
|
||||||
{
|
{
|
||||||
qreal value = d->m_saBefore;
|
qreal value = EvalFormula(data, d->m_formulaWidthBefore);
|
||||||
if (value >= 0)
|
if (value >= 0)
|
||||||
{
|
{
|
||||||
value = ToPixel(value, unit);
|
value = ToPixel(value, unit);
|
||||||
|
@ -118,24 +121,30 @@ qreal VPieceNode::GetSABefore(Unit unit) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VPieceNode::SetSABefore(qreal value)
|
QString VPieceNode::GetFormulaSABefore() const
|
||||||
|
{
|
||||||
|
return d->m_formulaWidthBefore;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VPieceNode::SetFormulaSABefore(const QString &formula)
|
||||||
{
|
{
|
||||||
if (d->m_typeTool == Tool::NodePoint)
|
if (d->m_typeTool == Tool::NodePoint)
|
||||||
{
|
{
|
||||||
value < 0 ? d->m_saBefore = -1: d->m_saBefore = value;
|
d->m_formulaWidthBefore = formula;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
qreal VPieceNode::GetSAAfter() const
|
qreal VPieceNode::GetSAAfter(const VContainer *data) const
|
||||||
{
|
{
|
||||||
return d->m_saAfter;
|
return EvalFormula(data, d->m_formulaWidthAfter);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
qreal VPieceNode::GetSAAfter(Unit unit) const
|
qreal VPieceNode::GetSAAfter(const VContainer *data, Unit unit) const
|
||||||
{
|
{
|
||||||
qreal value = d->m_saAfter;
|
qreal value = EvalFormula(data, d->m_formulaWidthAfter);
|
||||||
if (value >= 0)
|
if (value >= 0)
|
||||||
{
|
{
|
||||||
value = ToPixel(value, unit);
|
value = ToPixel(value, unit);
|
||||||
|
@ -144,11 +153,17 @@ qreal VPieceNode::GetSAAfter(Unit unit) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VPieceNode::SetSAAfter(qreal value)
|
QString VPieceNode::GetFormulaSAAfter() const
|
||||||
|
{
|
||||||
|
return d->m_formulaWidthAfter;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VPieceNode::SetFormulaSAAfter(const QString &formula)
|
||||||
{
|
{
|
||||||
if (d->m_typeTool == Tool::NodePoint)
|
if (d->m_typeTool == Tool::NodePoint)
|
||||||
{
|
{
|
||||||
value < 0 ? d->m_saAfter = -1: d->m_saAfter = value;
|
d->m_formulaWidthAfter = formula;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,6 +182,36 @@ void VPieceNode::SetAngleType(PieceNodeAngle type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
qreal VPieceNode::EvalFormula(const VContainer *data, QString formula) const
|
||||||
|
{
|
||||||
|
if (formula.isEmpty())
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Replace line return character with spaces for calc if exist
|
||||||
|
formula.replace("\n", " ");
|
||||||
|
QScopedPointer<Calculator> cal(new Calculator());
|
||||||
|
const qreal result = cal->EvalFormula(data->PlainVariables(), formula);
|
||||||
|
|
||||||
|
if (qIsInf(result) || qIsNaN(result))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (qmu::QmuParserError &e)
|
||||||
|
{
|
||||||
|
Q_UNUSED(e)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Friend functions
|
// Friend functions
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QDataStream& operator<<(QDataStream& out, const VPieceNode& p)
|
QDataStream& operator<<(QDataStream& out, const VPieceNode& p)
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
class VPieceNodeData;
|
class VPieceNodeData;
|
||||||
class QDataStream;
|
class QDataStream;
|
||||||
|
class VContainer;
|
||||||
|
|
||||||
class VPieceNode
|
class VPieceNode
|
||||||
{
|
{
|
||||||
|
@ -59,18 +60,24 @@ public:
|
||||||
bool GetReverse() const;
|
bool GetReverse() const;
|
||||||
void SetReverse(bool reverse);
|
void SetReverse(bool reverse);
|
||||||
|
|
||||||
qreal GetSABefore() const;
|
qreal GetSABefore(const VContainer *data) const;
|
||||||
qreal GetSABefore(Unit unit) const;
|
qreal GetSABefore(const VContainer *data, Unit unit) const;
|
||||||
void SetSABefore(qreal value);
|
|
||||||
|
|
||||||
qreal GetSAAfter() const;
|
QString GetFormulaSABefore() const;
|
||||||
qreal GetSAAfter(Unit unit) const;
|
void SetFormulaSABefore(const QString &formula);
|
||||||
void SetSAAfter(qreal value);
|
|
||||||
|
qreal GetSAAfter(const VContainer *data) const;
|
||||||
|
qreal GetSAAfter(const VContainer *data, Unit unit) const;
|
||||||
|
|
||||||
|
QString GetFormulaSAAfter() const;
|
||||||
|
void SetFormulaSAAfter(const QString &formula);
|
||||||
|
|
||||||
PieceNodeAngle GetAngleType() const;
|
PieceNodeAngle GetAngleType() const;
|
||||||
void SetAngleType(PieceNodeAngle type);
|
void SetAngleType(PieceNodeAngle type);
|
||||||
private:
|
private:
|
||||||
QSharedDataPointer<VPieceNodeData> d;
|
QSharedDataPointer<VPieceNodeData> d;
|
||||||
|
|
||||||
|
qreal EvalFormula(const VContainer *data, QString formula) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(VPieceNode)
|
Q_DECLARE_METATYPE(VPieceNode)
|
||||||
|
|
|
@ -45,6 +45,8 @@ public:
|
||||||
m_reverse(false),
|
m_reverse(false),
|
||||||
m_saBefore(-1),
|
m_saBefore(-1),
|
||||||
m_saAfter(-1),
|
m_saAfter(-1),
|
||||||
|
m_formulaWidthBefore("-1"),
|
||||||
|
m_formulaWidthAfter("-1"),
|
||||||
m_angleType(PieceNodeAngle::ByLength)
|
m_angleType(PieceNodeAngle::ByLength)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
@ -54,6 +56,8 @@ public:
|
||||||
m_reverse(reverse),
|
m_reverse(reverse),
|
||||||
m_saBefore(-1),
|
m_saBefore(-1),
|
||||||
m_saAfter(-1),
|
m_saAfter(-1),
|
||||||
|
m_formulaWidthBefore("-1"),
|
||||||
|
m_formulaWidthAfter("-1"),
|
||||||
m_angleType(PieceNodeAngle::ByLength)
|
m_angleType(PieceNodeAngle::ByLength)
|
||||||
{
|
{
|
||||||
if (m_typeTool == Tool::NodePoint)
|
if (m_typeTool == Tool::NodePoint)
|
||||||
|
@ -69,6 +73,8 @@ public:
|
||||||
m_reverse(node.m_reverse),
|
m_reverse(node.m_reverse),
|
||||||
m_saBefore(node.m_saBefore),
|
m_saBefore(node.m_saBefore),
|
||||||
m_saAfter(node.m_saAfter),
|
m_saAfter(node.m_saAfter),
|
||||||
|
m_formulaWidthBefore(node.m_formulaWidthBefore),
|
||||||
|
m_formulaWidthAfter(node.m_formulaWidthAfter),
|
||||||
m_angleType(node.m_angleType)
|
m_angleType(node.m_angleType)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
@ -86,6 +92,9 @@ public:
|
||||||
qreal m_saBefore;
|
qreal m_saBefore;
|
||||||
qreal m_saAfter;
|
qreal m_saAfter;
|
||||||
|
|
||||||
|
QString m_formulaWidthBefore;
|
||||||
|
QString m_formulaWidthAfter;
|
||||||
|
|
||||||
PieceNodeAngle m_angleType;
|
PieceNodeAngle m_angleType;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -656,8 +656,8 @@ VSAPoint VPiecePath::PreparePointEkv(const VPieceNode &node, const VContainer *d
|
||||||
const QSharedPointer<VPointF> point = data->GeometricObject<VPointF>(node.GetId());
|
const QSharedPointer<VPointF> point = data->GeometricObject<VPointF>(node.GetId());
|
||||||
VSAPoint p(point->toQPointF());
|
VSAPoint p(point->toQPointF());
|
||||||
|
|
||||||
p.SetSAAfter(node.GetSAAfter(*data->GetPatternUnit()));
|
p.SetSAAfter(node.GetSAAfter(data, *data->GetPatternUnit()));
|
||||||
p.SetSABefore(node.GetSABefore(*data->GetPatternUnit()));
|
p.SetSABefore(node.GetSABefore(data, *data->GetPatternUnit()));
|
||||||
p.SetAngleType(node.GetAngleType());
|
p.SetAngleType(node.GetAngleType());
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
|
@ -762,8 +762,8 @@ VSAPoint VPiecePath::CurvePoint(const VSAPoint &candidate, const VContainer *dat
|
||||||
if (curve->IsPointOnCurve(p))
|
if (curve->IsPointOnCurve(p))
|
||||||
{
|
{
|
||||||
point = VSAPoint(p);
|
point = VSAPoint(p);
|
||||||
point.SetSAAfter(node.GetSAAfter(*data->GetPatternUnit()));
|
point.SetSAAfter(node.GetSAAfter(data, *data->GetPatternUnit()));
|
||||||
point.SetSABefore(node.GetSABefore(*data->GetPatternUnit()));
|
point.SetSABefore(node.GetSABefore(data, *data->GetPatternUnit()));
|
||||||
point.SetAngleType(node.GetAngleType());
|
point.SetAngleType(node.GetAngleType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ enum {ColumnName = 0, ColumnFullName};
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
DialogEditWrongFormula::DialogEditWrongFormula(const VContainer *data, const quint32 &toolId, QWidget *parent)
|
DialogEditWrongFormula::DialogEditWrongFormula(const VContainer *data, const quint32 &toolId, QWidget *parent)
|
||||||
:DialogTool(data, toolId, parent), ui(new Ui::DialogEditWrongFormula), formula(QString()), formulaBaseHeight(0),
|
:DialogTool(data, toolId, parent), ui(new Ui::DialogEditWrongFormula), formula(QString()), formulaBaseHeight(0),
|
||||||
checkZero(false), postfix(QString()), restoreCursor(false)
|
checkZero(false), checkLessThanZero(false), postfix(QString()), restoreCursor(false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
InitVariables();
|
InitVariables();
|
||||||
|
@ -156,7 +156,8 @@ void DialogEditWrongFormula::EvalFormula()
|
||||||
{
|
{
|
||||||
SCASSERT(plainTextEditFormula != nullptr)
|
SCASSERT(plainTextEditFormula != nullptr)
|
||||||
SCASSERT(labelResultCalculation != nullptr)
|
SCASSERT(labelResultCalculation != nullptr)
|
||||||
Eval(plainTextEditFormula->toPlainText(), flagFormula, labelResultCalculation, postfix, checkZero);
|
Eval(plainTextEditFormula->toPlainText(), flagFormula, labelResultCalculation, postfix, checkZero,
|
||||||
|
checkLessThanZero);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -383,6 +384,12 @@ void DialogEditWrongFormula::setCheckZero(bool value)
|
||||||
checkZero = value;
|
checkZero = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogEditWrongFormula::setCheckLessThanZero(bool value)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogEditWrongFormula::setPostfix(const QString &value)
|
void DialogEditWrongFormula::setPostfix(const QString &value)
|
||||||
{
|
{
|
||||||
|
|
|
@ -70,6 +70,7 @@ public:
|
||||||
QString GetFormula() const;
|
QString GetFormula() const;
|
||||||
void SetFormula(const QString &value);
|
void SetFormula(const QString &value);
|
||||||
void setCheckZero(bool value);
|
void setCheckZero(bool value);
|
||||||
|
void setCheckLessThanZero(bool value);
|
||||||
void setPostfix(const QString &value);
|
void setPostfix(const QString &value);
|
||||||
public slots:
|
public slots:
|
||||||
virtual void DialogAccepted() Q_DECL_OVERRIDE;
|
virtual void DialogAccepted() Q_DECL_OVERRIDE;
|
||||||
|
@ -109,6 +110,7 @@ private:
|
||||||
int formulaBaseHeight;
|
int formulaBaseHeight;
|
||||||
|
|
||||||
bool checkZero;
|
bool checkZero;
|
||||||
|
bool checkLessThanZero;
|
||||||
QString postfix;
|
QString postfix;
|
||||||
bool restoreCursor;
|
bool restoreCursor;
|
||||||
|
|
||||||
|
|
|
@ -32,72 +32,34 @@
|
||||||
#include "visualization/path/vistoolpiecepath.h"
|
#include "visualization/path/vistoolpiecepath.h"
|
||||||
#include "../../tools/vabstracttool.h"
|
#include "../../tools/vabstracttool.h"
|
||||||
#include "../../tools/vtoolseamallowance.h"
|
#include "../../tools/vtoolseamallowance.h"
|
||||||
|
#include "../support/dialogeditwrongformula.h"
|
||||||
|
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
DialogPiecePath::DialogPiecePath(const VContainer *data, quint32 toolId, QWidget *parent)
|
DialogPiecePath::DialogPiecePath(const VContainer *data, quint32 toolId, QWidget *parent)
|
||||||
: DialogTool(data, toolId, parent),
|
: DialogTool(data, toolId, parent),
|
||||||
ui(new Ui::DialogPiecePath),
|
ui(new Ui::DialogPiecePath),
|
||||||
m_showMode(false)
|
m_showMode(false),
|
||||||
|
m_saWidth(0),
|
||||||
|
m_timerWidth(nullptr),
|
||||||
|
m_timerWidthBefore(nullptr),
|
||||||
|
m_timerWidthAfter(nullptr),
|
||||||
|
m_formulaBaseWidth(0),
|
||||||
|
m_formulaBaseWidthBefore(0),
|
||||||
|
m_formulaBaseWidthAfter(0)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
InitOkCancel(ui);
|
InitOkCancel(ui);
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
|
InitPathTab();
|
||||||
ui->lineEditName->setClearButtonEnabled(true);
|
InitSeamAllowanceTab();
|
||||||
#endif
|
|
||||||
|
|
||||||
FillComboBoxTypeLine(ui->comboBoxPenType, VAbstractTool::LineStylesPics());
|
|
||||||
|
|
||||||
connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogPiecePath::NameChanged);
|
|
||||||
|
|
||||||
InitPathTypes();
|
|
||||||
connect(ui->comboBoxType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
|
||||||
[this]()
|
|
||||||
{
|
|
||||||
ui->comboBoxPenType->setEnabled(GetType() == PiecePathType::InternalPath);
|
|
||||||
ValidObjects(PathIsValid());
|
|
||||||
});
|
|
||||||
|
|
||||||
flagName = true;//We have default name of piece.
|
flagName = true;//We have default name of piece.
|
||||||
flagError = PathIsValid();
|
flagError = PathIsValid();
|
||||||
CheckState();
|
CheckState();
|
||||||
|
|
||||||
const QString suffix = QLatin1String(" ") + VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
|
||||||
ui->doubleSpinBoxSeams->setSuffix(suffix);
|
|
||||||
ui->doubleSpinBoxSABefore->setSuffix(suffix);
|
|
||||||
ui->doubleSpinBoxSAAfter->setSuffix(suffix);
|
|
||||||
|
|
||||||
if(qApp->patternUnit() == Unit::Inch)
|
|
||||||
{
|
|
||||||
ui->doubleSpinBoxSeams->setDecimals(5);
|
|
||||||
ui->doubleSpinBoxSABefore->setDecimals(5);
|
|
||||||
ui->doubleSpinBoxSAAfter->setDecimals(5);
|
|
||||||
}
|
|
||||||
|
|
||||||
InitNodesList();
|
|
||||||
connect(ui->comboBoxNodes, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
||||||
&DialogPiecePath::NodeChanged);
|
|
||||||
|
|
||||||
connect(ui->pushButtonDefBefore, &QPushButton::clicked, this, &DialogPiecePath::ReturnDefBefore);
|
|
||||||
connect(ui->pushButtonDefAfter, &QPushButton::clicked, this, &DialogPiecePath::ReturnDefAfter);
|
|
||||||
|
|
||||||
connect(ui->doubleSpinBoxSeams, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
|
||||||
[this](){NodeChanged(ui->comboBoxNodes->currentIndex());});
|
|
||||||
|
|
||||||
connect(ui->doubleSpinBoxSABefore, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
|
||||||
this, &DialogPiecePath::ChangedSABefore);
|
|
||||||
connect(ui->doubleSpinBoxSAAfter, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
|
||||||
this, &DialogPiecePath::ChangedSAAfter);
|
|
||||||
|
|
||||||
InitNodeAngles(ui->comboBoxAngle);
|
|
||||||
connect(ui->comboBoxAngle, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
||||||
&DialogPiecePath::NodeAngleChanged);
|
|
||||||
|
|
||||||
ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
||||||
connect(ui->listWidget, &QListWidget::customContextMenuRequested, this, &DialogPiecePath::ShowContextMenu);
|
|
||||||
|
|
||||||
vis = new VisToolPiecePath(data);
|
vis = new VisToolPiecePath(data);
|
||||||
|
|
||||||
ui->tabWidget->removeTab(1);
|
ui->tabWidget->removeTab(1);
|
||||||
|
@ -314,14 +276,18 @@ void DialogPiecePath::NameChanged()
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogPiecePath::NodeChanged(int index)
|
void DialogPiecePath::NodeChanged(int index)
|
||||||
{
|
{
|
||||||
ui->doubleSpinBoxSABefore->setDisabled(true);
|
ui->plainTextEditFormulaWidthBefore->setDisabled(true);
|
||||||
ui->doubleSpinBoxSAAfter->setDisabled(true);
|
ui->toolButtonExprBefore->setDisabled(true);
|
||||||
ui->pushButtonDefBefore->setDisabled(true);
|
ui->pushButtonDefBefore->setDisabled(true);
|
||||||
|
|
||||||
|
ui->plainTextEditFormulaWidthAfter->setDisabled(true);
|
||||||
|
ui->toolButtonExprAfter->setDisabled(true);
|
||||||
ui->pushButtonDefAfter->setDisabled(true);
|
ui->pushButtonDefAfter->setDisabled(true);
|
||||||
|
|
||||||
ui->comboBoxAngle->setDisabled(true);
|
ui->comboBoxAngle->setDisabled(true);
|
||||||
|
|
||||||
ui->doubleSpinBoxSABefore->blockSignals(true);
|
ui->plainTextEditFormulaWidthBefore->blockSignals(true);
|
||||||
ui->doubleSpinBoxSAAfter->blockSignals(true);
|
ui->plainTextEditFormulaWidthAfter->blockSignals(true);
|
||||||
ui->comboBoxAngle->blockSignals(true);
|
ui->comboBoxAngle->blockSignals(true);
|
||||||
|
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
|
@ -337,32 +303,42 @@ void DialogPiecePath::NodeChanged(int index)
|
||||||
{
|
{
|
||||||
const VPieceNode &node = path.at(nodeIndex);
|
const VPieceNode &node = path.at(nodeIndex);
|
||||||
|
|
||||||
ui->doubleSpinBoxSABefore->setEnabled(true);
|
// Seam alowance before
|
||||||
ui->doubleSpinBoxSAAfter->setEnabled(true);
|
ui->plainTextEditFormulaWidthBefore->setEnabled(true);
|
||||||
ui->comboBoxAngle->setEnabled(true);
|
ui->toolButtonExprBefore->setEnabled(true);
|
||||||
|
|
||||||
qreal w1 = node.GetSABefore();
|
QString w1Formula = node.GetFormulaSABefore();
|
||||||
if (w1 < 0)
|
if (w1Formula != currentSeamAllowance)
|
||||||
{
|
|
||||||
w1 = ui->doubleSpinBoxSeams->value();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
ui->pushButtonDefBefore->setEnabled(true);
|
ui->pushButtonDefBefore->setEnabled(true);
|
||||||
}
|
}
|
||||||
ui->doubleSpinBoxSABefore->setValue(w1);
|
if (w1Formula.length() > 80)// increase height if needed.
|
||||||
|
|
||||||
qreal w2 = node.GetSAAfter();
|
|
||||||
if (w2 < 0)
|
|
||||||
{
|
{
|
||||||
w2 = ui->doubleSpinBoxSeams->value();
|
this->DeployWidthBeforeFormulaTextEdit();
|
||||||
}
|
}
|
||||||
else
|
w1Formula = qApp->TrVars()->FormulaToUser(w1Formula, qApp->Settings()->GetOsSeparator());
|
||||||
{
|
ui->plainTextEditFormulaWidthBefore->setPlainText(w1Formula);
|
||||||
ui->pushButtonDefAfter->setEnabled(true);
|
MoveCursorToEnd(ui->plainTextEditFormulaWidthBefore);
|
||||||
}
|
|
||||||
ui->doubleSpinBoxSAAfter->setValue(w2);
|
|
||||||
|
|
||||||
|
// Seam alowance after
|
||||||
|
ui->plainTextEditFormulaWidthAfter->setEnabled(true);
|
||||||
|
ui->toolButtonExprAfter->setEnabled(true);
|
||||||
|
|
||||||
|
QString w2Formula = node.GetFormulaSAAfter();
|
||||||
|
if (w2Formula != currentSeamAllowance)
|
||||||
|
{
|
||||||
|
ui->pushButtonDefBefore->setEnabled(true);
|
||||||
|
}
|
||||||
|
if (w2Formula.length() > 80)// increase height if needed.
|
||||||
|
{
|
||||||
|
this->DeployWidthAfterFormulaTextEdit();
|
||||||
|
}
|
||||||
|
w2Formula = qApp->TrVars()->FormulaToUser(w2Formula, qApp->Settings()->GetOsSeparator());
|
||||||
|
ui->plainTextEditFormulaWidthAfter->setPlainText(w2Formula);
|
||||||
|
MoveCursorToEnd(ui->plainTextEditFormulaWidthAfter);
|
||||||
|
|
||||||
|
// Angle type
|
||||||
|
ui->comboBoxAngle->setEnabled(true);
|
||||||
const int index = ui->comboBoxAngle->findData(static_cast<unsigned char>(node.GetAngleType()));
|
const int index = ui->comboBoxAngle->findData(static_cast<unsigned char>(node.GetAngleType()));
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
{
|
{
|
||||||
|
@ -372,38 +348,238 @@ void DialogPiecePath::NodeChanged(int index)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui->doubleSpinBoxSABefore->setValue(0);
|
ui->plainTextEditFormulaWidthBefore->setPlainText("");
|
||||||
ui->doubleSpinBoxSAAfter->setValue(0);
|
ui->plainTextEditFormulaWidthAfter->setPlainText("");
|
||||||
ui->comboBoxAngle->setCurrentIndex(-1);
|
ui->comboBoxAngle->setCurrentIndex(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->doubleSpinBoxSABefore->blockSignals(false);
|
ui->plainTextEditFormulaWidthBefore->blockSignals(false);
|
||||||
ui->doubleSpinBoxSAAfter->blockSignals(false);
|
ui->plainTextEditFormulaWidthAfter->blockSignals(false);
|
||||||
ui->comboBoxAngle->blockSignals(false);
|
ui->comboBoxAngle->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogPiecePath::ReturnDefBefore()
|
void DialogPiecePath::ReturnDefBefore()
|
||||||
{
|
{
|
||||||
SetCurrentSABefore(-1);
|
ui->plainTextEditFormulaWidthBefore->setPlainText(currentSeamAllowance);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogPiecePath::ReturnDefAfter()
|
void DialogPiecePath::ReturnDefAfter()
|
||||||
{
|
{
|
||||||
SetCurrentSAAfter(-1);
|
ui->plainTextEditFormulaWidthAfter->setPlainText(currentSeamAllowance);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogPiecePath::ChangedSABefore(double d)
|
void DialogPiecePath::EvalWidth()
|
||||||
{
|
{
|
||||||
SetCurrentSABefore(d);
|
labelEditFormula = ui->labelEditWidth;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
const QString formula = ui->plainTextEditFormulaWidth->toPlainText();
|
||||||
|
m_saWidth = Eval(formula, flagFormula, ui->labelResultWidth, postfix, true, true);
|
||||||
|
|
||||||
|
if (m_saWidth >= 0)
|
||||||
|
{
|
||||||
|
VContainer *locData = const_cast<VContainer *> (data);
|
||||||
|
locData->AddVariable(currentSeamAllowance, new VIncrement(locData, currentSeamAllowance, 0, m_saWidth,
|
||||||
|
QString().setNum(m_saWidth), true,
|
||||||
|
tr("Current seam aloowance")));
|
||||||
|
|
||||||
|
EvalWidthBefore();
|
||||||
|
EvalWidthAfter();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogPiecePath::ChangedSAAfter(double d)
|
void DialogPiecePath::EvalWidthBefore()
|
||||||
{
|
{
|
||||||
SetCurrentSAAfter(d);
|
labelEditFormula = ui->labelEditBefore;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
const QString formula = ui->plainTextEditFormulaWidthBefore->toPlainText();
|
||||||
|
bool flagFormula = false; // fake flag
|
||||||
|
Eval(formula, flagFormula, ui->labelResultBefore, postfix, true, true);
|
||||||
|
|
||||||
|
UpdateNodeSABefore(GetFormulaSAWidthBefore());
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::EvalWidthAfter()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditAfter;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
const QString formula = ui->plainTextEditFormulaWidthAfter->toPlainText();
|
||||||
|
bool flagFormula = false; // fake flag
|
||||||
|
Eval(formula, flagFormula, ui->labelResultAfter, postfix, true, true);
|
||||||
|
|
||||||
|
UpdateNodeSABefore(GetFormulaSAWidthAfter());
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::FXWidth()
|
||||||
|
{
|
||||||
|
DialogEditWrongFormula *dialog = new DialogEditWrongFormula(data, toolId, this);
|
||||||
|
dialog->setWindowTitle(tr("Edit seam allowance width"));
|
||||||
|
dialog->SetFormula(GetFormulaSAWidth());
|
||||||
|
dialog->setCheckLessThanZero(true);
|
||||||
|
dialog->setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit(), true));
|
||||||
|
if (dialog->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
SetFormulaSAWidth(dialog->GetFormula());
|
||||||
|
}
|
||||||
|
delete dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::FXWidthBefore()
|
||||||
|
{
|
||||||
|
DialogEditWrongFormula *dialog = new DialogEditWrongFormula(data, toolId, this);
|
||||||
|
dialog->setWindowTitle(tr("Edit seam allowance width before"));
|
||||||
|
dialog->SetFormula(GetFormulaSAWidthBefore());
|
||||||
|
dialog->setCheckLessThanZero(true);
|
||||||
|
dialog->setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit(), true));
|
||||||
|
if (dialog->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
SetCurrentSABefore(dialog->GetFormula());
|
||||||
|
}
|
||||||
|
delete dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::FXWidthAfter()
|
||||||
|
{
|
||||||
|
DialogEditWrongFormula *dialog = new DialogEditWrongFormula(data, toolId, this);
|
||||||
|
dialog->setWindowTitle(tr("Edit seam allowance width after"));
|
||||||
|
dialog->SetFormula(GetFormulaSAWidthAfter());
|
||||||
|
dialog->setCheckLessThanZero(true);
|
||||||
|
dialog->setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit(), true));
|
||||||
|
if (dialog->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
SetCurrentSAAfter(dialog->GetFormula());
|
||||||
|
}
|
||||||
|
delete dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::WidthChanged()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditWidth;
|
||||||
|
labelResultCalculation = ui->labelResultWidth;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
ValFormulaChanged(flagFormula, ui->plainTextEditFormulaWidth, m_timerWidth, postfix);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::WidthBeforeChanged()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditBefore;
|
||||||
|
labelResultCalculation = ui->labelResultBefore;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
bool flagFormula = false;
|
||||||
|
ValFormulaChanged(flagFormula, ui->plainTextEditFormulaWidthBefore, m_timerWidthBefore, postfix);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::WidthAfterChanged()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditAfter;
|
||||||
|
labelResultCalculation = ui->labelResultAfter;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
bool flagFormula = false;
|
||||||
|
ValFormulaChanged(flagFormula, ui->plainTextEditFormulaWidthAfter, m_timerWidthAfter, postfix);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::DeployWidthFormulaTextEdit()
|
||||||
|
{
|
||||||
|
DeployFormula(ui->plainTextEditFormulaWidth, ui->pushButtonGrowWidth, m_formulaBaseWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::DeployWidthBeforeFormulaTextEdit()
|
||||||
|
{
|
||||||
|
DeployFormula(ui->plainTextEditFormulaWidthBefore, ui->pushButtonGrowWidthBefore, m_formulaBaseWidthBefore);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::DeployWidthAfterFormulaTextEdit()
|
||||||
|
{
|
||||||
|
DeployFormula(ui->plainTextEditFormulaWidthAfter, ui->pushButtonGrowWidthAfter, m_formulaBaseWidthAfter);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::InitPathTab()
|
||||||
|
{
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
ui->lineEditName->setClearButtonEnabled(true);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
FillComboBoxTypeLine(ui->comboBoxPenType, VAbstractTool::LineStylesPics());
|
||||||
|
|
||||||
|
connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogPiecePath::NameChanged);
|
||||||
|
|
||||||
|
InitPathTypes();
|
||||||
|
connect(ui->comboBoxType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||||
|
[this]()
|
||||||
|
{
|
||||||
|
ui->comboBoxPenType->setEnabled(GetType() == PiecePathType::InternalPath);
|
||||||
|
ValidObjects(PathIsValid());
|
||||||
|
});
|
||||||
|
|
||||||
|
ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
connect(ui->listWidget, &QListWidget::customContextMenuRequested, this, &DialogPiecePath::ShowContextMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::InitSeamAllowanceTab()
|
||||||
|
{
|
||||||
|
plainTextEditFormula = ui->plainTextEditFormulaWidth;
|
||||||
|
this->m_formulaBaseWidth = ui->plainTextEditFormulaWidth->height();
|
||||||
|
this->m_formulaBaseWidthBefore = ui->plainTextEditFormulaWidthBefore->height();
|
||||||
|
this->m_formulaBaseWidthAfter = ui->plainTextEditFormulaWidthAfter->height();
|
||||||
|
|
||||||
|
ui->plainTextEditFormulaWidth->installEventFilter(this);
|
||||||
|
ui->plainTextEditFormulaWidthBefore->installEventFilter(this);
|
||||||
|
ui->plainTextEditFormulaWidthAfter->installEventFilter(this);
|
||||||
|
|
||||||
|
m_timerWidth = new QTimer(this);
|
||||||
|
connect(m_timerWidth, &QTimer::timeout, this, &DialogPiecePath::EvalWidth);
|
||||||
|
|
||||||
|
m_timerWidthBefore = new QTimer(this);
|
||||||
|
connect(m_timerWidthBefore, &QTimer::timeout, this, &DialogPiecePath::EvalWidthBefore);
|
||||||
|
|
||||||
|
m_timerWidthAfter = new QTimer(this);
|
||||||
|
connect(m_timerWidthAfter, &QTimer::timeout, this, &DialogPiecePath::EvalWidthAfter);
|
||||||
|
|
||||||
|
// Default value for seam allowence is 1 cm. But pattern have different units, so just set 1 in dialog not enough.
|
||||||
|
m_saWidth = UnitConvertor(1, Unit::Cm, qApp->patternUnit());
|
||||||
|
ui->plainTextEditFormulaWidth->setPlainText(qApp->LocaleToString(m_saWidth));
|
||||||
|
|
||||||
|
InitNodesList();
|
||||||
|
connect(ui->comboBoxNodes, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||||
|
&DialogPiecePath::NodeChanged);
|
||||||
|
|
||||||
|
connect(ui->pushButtonDefBefore, &QPushButton::clicked, this, &DialogPiecePath::ReturnDefBefore);
|
||||||
|
connect(ui->pushButtonDefAfter, &QPushButton::clicked, this, &DialogPiecePath::ReturnDefAfter);
|
||||||
|
|
||||||
|
InitNodeAngles(ui->comboBoxAngle);
|
||||||
|
connect(ui->comboBoxAngle, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||||
|
&DialogPiecePath::NodeAngleChanged);
|
||||||
|
|
||||||
|
connect(ui->toolButtonExprWidth, &QPushButton::clicked, this, &DialogPiecePath::FXWidth);
|
||||||
|
connect(ui->toolButtonExprBefore, &QPushButton::clicked, this, &DialogPiecePath::FXWidthBefore);
|
||||||
|
connect(ui->toolButtonExprAfter, &QPushButton::clicked, this, &DialogPiecePath::FXWidthAfter);
|
||||||
|
|
||||||
|
connect(ui->plainTextEditFormulaWidth, &QPlainTextEdit::textChanged, this, &DialogPiecePath::WidthChanged);
|
||||||
|
connect(ui->plainTextEditFormulaWidthBefore, &QPlainTextEdit::textChanged, this,
|
||||||
|
&DialogPiecePath::WidthBeforeChanged);
|
||||||
|
connect(ui->plainTextEditFormulaWidthAfter, &QPlainTextEdit::textChanged, this,
|
||||||
|
&DialogPiecePath::WidthAfterChanged);
|
||||||
|
|
||||||
|
connect(ui->pushButtonGrowWidth, &QPushButton::clicked, this, &DialogPiecePath::DeployWidthFormulaTextEdit);
|
||||||
|
connect(ui->pushButtonGrowWidthBefore, &QPushButton::clicked,
|
||||||
|
this, &DialogPiecePath::DeployWidthBeforeFormulaTextEdit);
|
||||||
|
connect(ui->pushButtonGrowWidthAfter, &QPushButton::clicked, this,
|
||||||
|
&DialogPiecePath::DeployWidthAfterFormulaTextEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -582,7 +758,21 @@ quint32 DialogPiecePath::GetLastId() const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogPiecePath::SetCurrentSABefore(qreal value)
|
void DialogPiecePath::SetCurrentSABefore(const QString &formula)
|
||||||
|
{
|
||||||
|
UpdateNodeSABefore(formula);
|
||||||
|
ListChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::SetCurrentSAAfter(const QString &formula)
|
||||||
|
{
|
||||||
|
UpdateNodeSAAfter(formula);
|
||||||
|
ListChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::UpdateNodeSABefore(const QString &formula)
|
||||||
{
|
{
|
||||||
const int index = ui->comboBoxNodes->currentIndex();
|
const int index = ui->comboBoxNodes->currentIndex();
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
|
@ -597,16 +787,14 @@ void DialogPiecePath::SetCurrentSABefore(qreal value)
|
||||||
if (rowItem)
|
if (rowItem)
|
||||||
{
|
{
|
||||||
VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
||||||
rowNode.SetSABefore(value);
|
rowNode.SetFormulaSABefore(formula);
|
||||||
rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode));
|
rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode));
|
||||||
|
|
||||||
ListChanged();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogPiecePath::SetCurrentSAAfter(qreal value)
|
void DialogPiecePath::UpdateNodeSAAfter(const QString &formula)
|
||||||
{
|
{
|
||||||
const int index = ui->comboBoxNodes->currentIndex();
|
const int index = ui->comboBoxNodes->currentIndex();
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
|
@ -621,14 +809,30 @@ void DialogPiecePath::SetCurrentSAAfter(qreal value)
|
||||||
if (rowItem)
|
if (rowItem)
|
||||||
{
|
{
|
||||||
VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
||||||
rowNode.SetSAAfter(value);
|
rowNode.SetFormulaSAAfter(formula);
|
||||||
rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode));
|
rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode));
|
||||||
|
|
||||||
ListChanged();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogPiecePath::SetFormulaSAWidth(const QString &formula)
|
||||||
|
{
|
||||||
|
const QString width = qApp->TrVars()->FormulaToUser(formula, qApp->Settings()->GetOsSeparator());
|
||||||
|
// increase height if needed.
|
||||||
|
if (width.length() > 80)
|
||||||
|
{
|
||||||
|
this->DeployWidthFormulaTextEdit();
|
||||||
|
}
|
||||||
|
ui->plainTextEditFormulaWidth->setPlainText(width);
|
||||||
|
|
||||||
|
VisToolPiecePath *path = qobject_cast<VisToolPiecePath *>(vis);
|
||||||
|
SCASSERT(path != nullptr)
|
||||||
|
path->SetPath(CreatePath());
|
||||||
|
|
||||||
|
MoveCursorToEnd(ui->plainTextEditFormulaWidth);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
quint32 DialogPiecePath::GetPieceId() const
|
quint32 DialogPiecePath::GetPieceId() const
|
||||||
{
|
{
|
||||||
|
@ -667,17 +871,11 @@ void DialogPiecePath::SetPieceId(quint32 id)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogPiecePath::SetSAWidth(qreal width)
|
QString DialogPiecePath::GetFormulaSAWidth() const
|
||||||
{
|
{
|
||||||
if (width >=0)
|
QString width = ui->plainTextEditFormulaWidth->toPlainText();
|
||||||
{
|
width.replace("\n", " ");
|
||||||
ui->tabWidget->addTab(ui->tabSeamAllowance, tr("Seam allowance"));
|
return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator());
|
||||||
ui->doubleSpinBoxSeams->setValue(width);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui->tabWidget->removeTab(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -758,3 +956,19 @@ void DialogPiecePath::NewItem(const VPieceNode &node)
|
||||||
{
|
{
|
||||||
NewNodeItem(ui->listWidget, node);
|
NewNodeItem(ui->listWidget, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogPiecePath::GetFormulaSAWidthBefore() const
|
||||||
|
{
|
||||||
|
QString width = ui->plainTextEditFormulaWidthBefore->toPlainText();
|
||||||
|
width.replace("\n", " ");
|
||||||
|
return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator());
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogPiecePath::GetFormulaSAWidthAfter() const
|
||||||
|
{
|
||||||
|
QString width = ui->plainTextEditFormulaWidthAfter->toPlainText();
|
||||||
|
width.replace("\n", " ");
|
||||||
|
return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator());
|
||||||
|
}
|
||||||
|
|
|
@ -51,7 +51,8 @@ public:
|
||||||
quint32 GetPieceId() const;
|
quint32 GetPieceId() const;
|
||||||
void SetPieceId(quint32 id);
|
void SetPieceId(quint32 id);
|
||||||
|
|
||||||
void SetSAWidth(qreal width);
|
QString GetFormulaSAWidth() const;
|
||||||
|
void SetFormulaSAWidth(const QString &formula);
|
||||||
|
|
||||||
virtual void SetPiecesList(const QVector<quint32> &list) Q_DECL_OVERRIDE;
|
virtual void SetPiecesList(const QVector<quint32> &list) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
@ -72,14 +73,39 @@ private slots:
|
||||||
void NodeChanged(int index);
|
void NodeChanged(int index);
|
||||||
void ReturnDefBefore();
|
void ReturnDefBefore();
|
||||||
void ReturnDefAfter();
|
void ReturnDefAfter();
|
||||||
void ChangedSABefore(double d);
|
|
||||||
void ChangedSAAfter(double d);
|
void EvalWidth();
|
||||||
|
void EvalWidthBefore();
|
||||||
|
void EvalWidthAfter();
|
||||||
|
|
||||||
|
void FXWidth();
|
||||||
|
void FXWidthBefore();
|
||||||
|
void FXWidthAfter();
|
||||||
|
|
||||||
|
void WidthChanged();
|
||||||
|
void WidthBeforeChanged();
|
||||||
|
void WidthAfterChanged();
|
||||||
|
|
||||||
|
void DeployWidthFormulaTextEdit();
|
||||||
|
void DeployWidthBeforeFormulaTextEdit();
|
||||||
|
void DeployWidthAfterFormulaTextEdit();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(DialogPiecePath)
|
Q_DISABLE_COPY(DialogPiecePath)
|
||||||
Ui::DialogPiecePath *ui;
|
Ui::DialogPiecePath *ui;
|
||||||
bool m_showMode;
|
bool m_showMode;
|
||||||
|
qreal m_saWidth;
|
||||||
|
|
||||||
|
QTimer *m_timerWidth;
|
||||||
|
QTimer *m_timerWidthBefore;
|
||||||
|
QTimer *m_timerWidthAfter;
|
||||||
|
|
||||||
|
int m_formulaBaseWidth;
|
||||||
|
int m_formulaBaseWidthBefore;
|
||||||
|
int m_formulaBaseWidthAfter;
|
||||||
|
|
||||||
|
void InitPathTab();
|
||||||
|
void InitSeamAllowanceTab();
|
||||||
void InitPathTypes();
|
void InitPathTypes();
|
||||||
void InitListPieces();
|
void InitListPieces();
|
||||||
void InitNodesList();
|
void InitNodesList();
|
||||||
|
@ -101,8 +127,14 @@ private:
|
||||||
|
|
||||||
quint32 GetLastId() const;
|
quint32 GetLastId() const;
|
||||||
|
|
||||||
void SetCurrentSABefore(qreal value);
|
void SetCurrentSABefore(const QString &formula);
|
||||||
void SetCurrentSAAfter(qreal value);
|
void SetCurrentSAAfter(const QString &formula);
|
||||||
|
|
||||||
|
void UpdateNodeSABefore(const QString &formula);
|
||||||
|
void UpdateNodeSAAfter(const QString &formula);
|
||||||
|
|
||||||
|
QString GetFormulaSAWidthBefore() const;
|
||||||
|
QString GetFormulaSAWidthAfter() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DIALOGPIECEPATH_H
|
#endif // DIALOGPIECEPATH_H
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>480</width>
|
<width>480</width>
|
||||||
<height>409</height>
|
<height>437</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -121,19 +121,53 @@
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Seam allowance</string>
|
<string>Seam allowance</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
<item>
|
<item alignment="Qt::AlignLeft">
|
||||||
<widget class="QLabel" name="labelEditWidth">
|
<widget class="QLabel" name="labelEditWidth">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="locale">
|
<property name="palette">
|
||||||
<locale language="English" country="UnitedStates"/>
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Width:</string>
|
<string>Width:</string>
|
||||||
|
@ -141,29 +175,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxSeams">
|
<spacer name="horizontalSpacer_2">
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<double>900.990000000000009</double>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>0.100000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>0.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
|
@ -175,6 +187,125 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QToolButton" name="toolButtonExprWidth">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Formula wizard</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../vmisc/share/resources/icon.qrc">
|
||||||
|
<normaloff>:/icon/24x24/fx.png</normaloff>:/icon/24x24/fx.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../../../vmisc/share/resources/icon.qrc">:/icon/24x24/equal.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="labelResultWidth">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>87</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Value</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">_</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||||
|
<item>
|
||||||
|
<widget class="QPlainTextEdit" name="plainTextEditFormulaWidth">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Calculation</string>
|
||||||
|
</property>
|
||||||
|
<property name="tabChangesFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButtonGrowWidth">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>18</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeIncrement">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Show full calculation in message box</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="go-down">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -182,44 +313,108 @@
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Nodes</string>
|
<string>Nodes</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<property name="fieldGrowthPolicy">
|
<item>
|
||||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
</property>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="labelNode">
|
|
||||||
<property name="text">
|
|
||||||
<string>Node:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBoxNodes"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="labelSABefore">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Seam allowance before node</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Before:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxSABefore">
|
<widget class="QLabel" name="labelNode">
|
||||||
<property name="maximum">
|
<property name="text">
|
||||||
<double>900.990000000000009</double>
|
<string>Node:</string>
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>0.100000000000000</double>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBoxNodes">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||||
|
<item alignment="Qt::AlignLeft">
|
||||||
|
<widget class="QLabel" name="labelEditBefore">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="palette">
|
||||||
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Before:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pushButtonDefBefore">
|
<widget class="QPushButton" name="pushButtonDefBefore">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Return to default width</string>
|
<string>Return to default width</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -228,32 +423,197 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
<item alignment="Qt::AlignRight">
|
||||||
</item>
|
<widget class="QToolButton" name="toolButtonExprBefore">
|
||||||
<item row="2" column="0">
|
<property name="enabled">
|
||||||
<widget class="QLabel" name="labelSAAfter">
|
<bool>false</bool>
|
||||||
<property name="toolTip">
|
|
||||||
<string>Seam allowance after node</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>After:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
||||||
<item>
|
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxSAAfter">
|
|
||||||
<property name="maximum">
|
|
||||||
<double>900.990000000000009</double>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="singleStep">
|
<property name="toolTip">
|
||||||
<double>0.100000000000000</double>
|
<string>Formula wizard</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../vmisc/share/resources/icon.qrc">
|
||||||
|
<normaloff>:/icon/24x24/fx.png</normaloff>:/icon/24x24/fx.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../../../vmisc/share/resources/icon.qrc">:/icon/24x24/equal.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="labelResultBefore">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>87</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Value</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">_</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||||
|
<item>
|
||||||
|
<widget class="QPlainTextEdit" name="plainTextEditFormulaWidthBefore">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Calculation</string>
|
||||||
|
</property>
|
||||||
|
<property name="tabChangesFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButtonGrowWidthBefore">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>18</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeIncrement">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Show full calculation in message box</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="go-down">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_16">
|
||||||
|
<item alignment="Qt::AlignLeft">
|
||||||
|
<widget class="QLabel" name="labelEditAfter">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="palette">
|
||||||
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>After:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pushButtonDefAfter">
|
<widget class="QPushButton" name="pushButtonDefAfter">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Return to default width</string>
|
<string>Return to default width</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -262,17 +622,157 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QToolButton" name="toolButtonExprAfter">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Formula wizard</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../vmisc/share/resources/icon.qrc">
|
||||||
|
<normaloff>:/icon/24x24/fx.png</normaloff>:/icon/24x24/fx.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="label_10">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../../../vmisc/share/resources/icon.qrc">:/icon/24x24/equal.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="labelResultAfter">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>87</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Value</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">_</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="labelAngle">
|
<layout class="QHBoxLayout" name="horizontalLayout_17">
|
||||||
<property name="text">
|
<item>
|
||||||
<string>Angle:</string>
|
<widget class="QPlainTextEdit" name="plainTextEditFormulaWidthAfter">
|
||||||
</property>
|
<property name="sizePolicy">
|
||||||
</widget>
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Calculation</string>
|
||||||
|
</property>
|
||||||
|
<property name="tabChangesFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButtonGrowWidthAfter">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>18</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeIncrement">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Show full calculation in message box</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="go-down">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item>
|
||||||
<widget class="QComboBox" name="comboBoxAngle"/>
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelAngle">
|
||||||
|
<property name="text">
|
||||||
|
<string>Angle:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBoxAngle">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "../support/dialogeditwrongformula.h"
|
#include "../support/dialogeditwrongformula.h"
|
||||||
|
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
#include <QTimer>
|
||||||
#include <QtNumeric>
|
#include <QtNumeric>
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -55,7 +56,14 @@ DialogSeamAllowance::DialogSeamAllowance(const VContainer *data, const quint32 &
|
||||||
m_oldGeom(),
|
m_oldGeom(),
|
||||||
m_oldGrainline(),
|
m_oldGrainline(),
|
||||||
m_iRotBaseHeight(0),
|
m_iRotBaseHeight(0),
|
||||||
m_iLenBaseHeight(0)
|
m_iLenBaseHeight(0),
|
||||||
|
m_formulaBaseWidth(0),
|
||||||
|
m_formulaBaseWidthBefore(0),
|
||||||
|
m_formulaBaseWidthAfter(0),
|
||||||
|
m_timerWidth(nullptr),
|
||||||
|
m_timerWidthBefore(nullptr),
|
||||||
|
m_timerWidthAfter(nullptr),
|
||||||
|
m_saWidth(0)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
@ -84,6 +92,9 @@ DialogSeamAllowance::DialogSeamAllowance(const VContainer *data, const quint32 &
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
DialogSeamAllowance::~DialogSeamAllowance()
|
DialogSeamAllowance::~DialogSeamAllowance()
|
||||||
{
|
{
|
||||||
|
VContainer *locData = const_cast<VContainer *> (data);
|
||||||
|
locData->RemoveVariable(currentSeamAllowance);
|
||||||
|
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,10 +152,12 @@ void DialogSeamAllowance::SetPiece(const VPiece &piece)
|
||||||
CustomSAChanged(0);
|
CustomSAChanged(0);
|
||||||
|
|
||||||
ui->checkBoxForbidFlipping->setChecked(piece.IsForbidFlipping());
|
ui->checkBoxForbidFlipping->setChecked(piece.IsForbidFlipping());
|
||||||
ui->doubleSpinBoxSeams->setValue(piece.GetSAWidth());
|
|
||||||
ui->checkBoxSeams->setChecked(piece.IsSeamAllowance());
|
ui->checkBoxSeams->setChecked(piece.IsSeamAllowance());
|
||||||
ui->lineEditName->setText(piece.GetName());
|
ui->lineEditName->setText(piece.GetName());
|
||||||
|
|
||||||
|
ui->plainTextEditFormulaWidth->setPlainText(piece.GetFormulaSAWidth());
|
||||||
|
m_saWidth = piece.GetSAWidth();
|
||||||
|
|
||||||
m_mx = piece.GetMx();
|
m_mx = piece.GetMx();
|
||||||
m_my = piece.GetMy();
|
m_my = piece.GetMy();
|
||||||
|
|
||||||
|
@ -283,7 +296,7 @@ void DialogSeamAllowance::SaveData()
|
||||||
void DialogSeamAllowance::CheckState()
|
void DialogSeamAllowance::CheckState()
|
||||||
{
|
{
|
||||||
SCASSERT(bOk != nullptr);
|
SCASSERT(bOk != nullptr);
|
||||||
bOk->setEnabled(flagName && flagError);
|
bOk->setEnabled(flagName && flagError && flagFormula);
|
||||||
// In case dialog hasn't apply button
|
// In case dialog hasn't apply button
|
||||||
if ( bApply != nullptr && applyAllowed)
|
if ( bApply != nullptr && applyAllowed)
|
||||||
{
|
{
|
||||||
|
@ -506,7 +519,7 @@ void DialogSeamAllowance::ShowCustomSAContextMenu(const QPoint &pos)
|
||||||
dialog->SetPieceId(toolId);
|
dialog->SetPieceId(toolId);
|
||||||
if (record.includeType == PiecePathIncludeType::AsMainPath)
|
if (record.includeType == PiecePathIncludeType::AsMainPath)
|
||||||
{
|
{
|
||||||
dialog->SetSAWidth(ui->doubleSpinBoxSeams->value());
|
dialog->SetFormulaSAWidth(GetFormulaSAWidth());
|
||||||
}
|
}
|
||||||
dialog->EnbleShowMode(true);
|
dialog->EnbleShowMode(true);
|
||||||
m_dialog = dialog;
|
m_dialog = dialog;
|
||||||
|
@ -580,14 +593,18 @@ void DialogSeamAllowance::EnableSeamAllowance(bool enable)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogSeamAllowance::NodeChanged(int index)
|
void DialogSeamAllowance::NodeChanged(int index)
|
||||||
{
|
{
|
||||||
ui->doubleSpinBoxSABefore->setDisabled(true);
|
ui->plainTextEditFormulaWidthBefore->setDisabled(true);
|
||||||
ui->doubleSpinBoxSAAfter->setDisabled(true);
|
ui->toolButtonExprBefore->setDisabled(true);
|
||||||
ui->pushButtonDefBefore->setDisabled(true);
|
ui->pushButtonDefBefore->setDisabled(true);
|
||||||
|
|
||||||
|
ui->plainTextEditFormulaWidthAfter->setDisabled(true);
|
||||||
|
ui->toolButtonExprAfter->setDisabled(true);
|
||||||
ui->pushButtonDefAfter->setDisabled(true);
|
ui->pushButtonDefAfter->setDisabled(true);
|
||||||
|
|
||||||
ui->comboBoxAngle->setDisabled(true);
|
ui->comboBoxAngle->setDisabled(true);
|
||||||
|
|
||||||
ui->doubleSpinBoxSABefore->blockSignals(true);
|
ui->plainTextEditFormulaWidthBefore->blockSignals(true);
|
||||||
ui->doubleSpinBoxSAAfter->blockSignals(true);
|
ui->plainTextEditFormulaWidthAfter->blockSignals(true);
|
||||||
ui->comboBoxAngle->blockSignals(true);
|
ui->comboBoxAngle->blockSignals(true);
|
||||||
|
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
|
@ -603,32 +620,42 @@ void DialogSeamAllowance::NodeChanged(int index)
|
||||||
{
|
{
|
||||||
const VPieceNode &node = piece.GetPath().at(nodeIndex);
|
const VPieceNode &node = piece.GetPath().at(nodeIndex);
|
||||||
|
|
||||||
ui->doubleSpinBoxSABefore->setEnabled(true);
|
// Seam alowance before
|
||||||
ui->doubleSpinBoxSAAfter->setEnabled(true);
|
ui->plainTextEditFormulaWidthBefore->setEnabled(true);
|
||||||
ui->comboBoxAngle->setEnabled(true);
|
ui->toolButtonExprBefore->setEnabled(true);
|
||||||
|
|
||||||
qreal w1 = node.GetSABefore();
|
QString w1Formula = node.GetFormulaSABefore();
|
||||||
if (w1 < 0)
|
if (w1Formula != currentSeamAllowance)
|
||||||
{
|
|
||||||
w1 = piece.GetSAWidth();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
ui->pushButtonDefBefore->setEnabled(true);
|
ui->pushButtonDefBefore->setEnabled(true);
|
||||||
}
|
}
|
||||||
ui->doubleSpinBoxSABefore->setValue(w1);
|
if (w1Formula.length() > 80)// increase height if needed.
|
||||||
|
|
||||||
qreal w2 = node.GetSAAfter();
|
|
||||||
if (w2 < 0)
|
|
||||||
{
|
{
|
||||||
w2 = piece.GetSAWidth();
|
this->DeployWidthBeforeFormulaTextEdit();
|
||||||
}
|
}
|
||||||
else
|
w1Formula = qApp->TrVars()->FormulaToUser(w1Formula, qApp->Settings()->GetOsSeparator());
|
||||||
|
ui->plainTextEditFormulaWidthBefore->setPlainText(w1Formula);
|
||||||
|
MoveCursorToEnd(ui->plainTextEditFormulaWidthBefore);
|
||||||
|
|
||||||
|
// Seam alowance after
|
||||||
|
ui->plainTextEditFormulaWidthAfter->setEnabled(true);
|
||||||
|
ui->toolButtonExprAfter->setEnabled(true);
|
||||||
|
|
||||||
|
QString w2Formula = node.GetFormulaSAAfter();
|
||||||
|
if (w2Formula != currentSeamAllowance)
|
||||||
{
|
{
|
||||||
ui->pushButtonDefAfter->setEnabled(true);
|
ui->pushButtonDefAfter->setEnabled(true);
|
||||||
}
|
}
|
||||||
ui->doubleSpinBoxSAAfter->setValue(w2);
|
if (w2Formula.length() > 80)// increase height if needed.
|
||||||
|
{
|
||||||
|
this->DeployWidthAfterFormulaTextEdit();
|
||||||
|
}
|
||||||
|
w2Formula = qApp->TrVars()->FormulaToUser(w2Formula, qApp->Settings()->GetOsSeparator());
|
||||||
|
ui->plainTextEditFormulaWidthAfter->setPlainText(w2Formula);
|
||||||
|
MoveCursorToEnd(ui->plainTextEditFormulaWidthAfter);
|
||||||
|
|
||||||
|
// Angle type
|
||||||
|
ui->comboBoxAngle->setEnabled(true);
|
||||||
const int index = ui->comboBoxAngle->findData(static_cast<unsigned char>(node.GetAngleType()));
|
const int index = ui->comboBoxAngle->findData(static_cast<unsigned char>(node.GetAngleType()));
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
{
|
{
|
||||||
|
@ -638,13 +665,13 @@ void DialogSeamAllowance::NodeChanged(int index)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui->doubleSpinBoxSABefore->setValue(0);
|
ui->plainTextEditFormulaWidthBefore->setPlainText("");
|
||||||
ui->doubleSpinBoxSAAfter->setValue(0);
|
ui->plainTextEditFormulaWidthAfter->setPlainText("");
|
||||||
ui->comboBoxAngle->setCurrentIndex(-1);
|
ui->comboBoxAngle->setCurrentIndex(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->doubleSpinBoxSABefore->blockSignals(false);
|
ui->plainTextEditFormulaWidthBefore->blockSignals(false);
|
||||||
ui->doubleSpinBoxSAAfter->blockSignals(false);
|
ui->plainTextEditFormulaWidthAfter->blockSignals(false);
|
||||||
ui->comboBoxAngle->blockSignals(false);
|
ui->comboBoxAngle->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -752,25 +779,13 @@ void DialogSeamAllowance::NodeAngleChanged(int index)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogSeamAllowance::ReturnDefBefore()
|
void DialogSeamAllowance::ReturnDefBefore()
|
||||||
{
|
{
|
||||||
SetCurrentSABefore(-1);
|
ui->plainTextEditFormulaWidthBefore->setPlainText(currentSeamAllowance);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogSeamAllowance::ReturnDefAfter()
|
void DialogSeamAllowance::ReturnDefAfter()
|
||||||
{
|
{
|
||||||
SetCurrentSAAfter(-1);
|
ui->plainTextEditFormulaWidthAfter->setPlainText(currentSeamAllowance);
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void DialogSeamAllowance::ChangedSABefore(double d)
|
|
||||||
{
|
|
||||||
SetCurrentSABefore(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void DialogSeamAllowance::ChangedSAAfter(double d)
|
|
||||||
{
|
|
||||||
SetCurrentSAAfter(d);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1061,6 +1076,142 @@ void DialogSeamAllowance::ResetWarning()
|
||||||
ui->tabWidget->setTabIcon(ui->tabWidget->indexOf(ui->tabGrainline), icon);
|
ui->tabWidget->setTabIcon(ui->tabWidget->indexOf(ui->tabGrainline), icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::EvalWidth()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditWidth;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
const QString formula = ui->plainTextEditFormulaWidth->toPlainText();
|
||||||
|
m_saWidth = Eval(formula, flagFormula, ui->labelResultWidth, postfix, true, true);
|
||||||
|
|
||||||
|
if (m_saWidth >= 0)
|
||||||
|
{
|
||||||
|
VContainer *locData = const_cast<VContainer *> (data);
|
||||||
|
locData->AddVariable(currentSeamAllowance, new VIncrement(locData, currentSeamAllowance, 0, m_saWidth,
|
||||||
|
QString().setNum(m_saWidth), true,
|
||||||
|
tr("Current seam allowance")));
|
||||||
|
|
||||||
|
EvalWidthBefore();
|
||||||
|
EvalWidthAfter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::EvalWidthBefore()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditBefore;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
const QString formula = ui->plainTextEditFormulaWidthBefore->toPlainText();
|
||||||
|
bool flagFormula = false; // fake flag
|
||||||
|
Eval(formula, flagFormula, ui->labelResultBefore, postfix, true, true);
|
||||||
|
|
||||||
|
UpdateNodeSABefore(GetFormulaSAWidthBefore());
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::EvalWidthAfter()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditAfter;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
const QString formula = ui->plainTextEditFormulaWidthAfter->toPlainText();
|
||||||
|
bool flagFormula = false; // fake flag
|
||||||
|
Eval(formula, flagFormula, ui->labelResultAfter, postfix, true, true);
|
||||||
|
|
||||||
|
UpdateNodeSAAfter(GetFormulaSAWidthAfter());
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::FXWidth()
|
||||||
|
{
|
||||||
|
DialogEditWrongFormula *dialog = new DialogEditWrongFormula(data, toolId, this);
|
||||||
|
dialog->setWindowTitle(tr("Edit seam allowance width"));
|
||||||
|
dialog->SetFormula(GetFormulaSAWidth());
|
||||||
|
dialog->setCheckLessThanZero(true);
|
||||||
|
dialog->setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit(), true));
|
||||||
|
if (dialog->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
SetFormulaSAWidth(dialog->GetFormula());
|
||||||
|
}
|
||||||
|
delete dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::FXWidthBefore()
|
||||||
|
{
|
||||||
|
DialogEditWrongFormula *dialog = new DialogEditWrongFormula(data, toolId, this);
|
||||||
|
dialog->setWindowTitle(tr("Edit seam allowance width before"));
|
||||||
|
dialog->SetFormula(GetFormulaSAWidthBefore());
|
||||||
|
dialog->setCheckLessThanZero(true);
|
||||||
|
dialog->setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit(), true));
|
||||||
|
if (dialog->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
SetCurrentSABefore(dialog->GetFormula());
|
||||||
|
}
|
||||||
|
delete dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::FXWidthAfter()
|
||||||
|
{
|
||||||
|
DialogEditWrongFormula *dialog = new DialogEditWrongFormula(data, toolId, this);
|
||||||
|
dialog->setWindowTitle(tr("Edit seam allowance width after"));
|
||||||
|
dialog->SetFormula(GetFormulaSAWidthAfter());
|
||||||
|
dialog->setCheckLessThanZero(true);
|
||||||
|
dialog->setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit(), true));
|
||||||
|
if (dialog->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
SetCurrentSAAfter(dialog->GetFormula());
|
||||||
|
}
|
||||||
|
delete dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::WidthChanged()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditWidth;
|
||||||
|
labelResultCalculation = ui->labelResultWidth;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
ValFormulaChanged(flagFormula, ui->plainTextEditFormulaWidth, m_timerWidth, postfix);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::WidthBeforeChanged()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditBefore;
|
||||||
|
labelResultCalculation = ui->labelResultBefore;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
bool flagFormula = false;
|
||||||
|
ValFormulaChanged(flagFormula, ui->plainTextEditFormulaWidthBefore, m_timerWidthBefore, postfix);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::WidthAfterChanged()
|
||||||
|
{
|
||||||
|
labelEditFormula = ui->labelEditAfter;
|
||||||
|
labelResultCalculation = ui->labelResultAfter;
|
||||||
|
const QString postfix = VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
||||||
|
bool flagFormula = false;
|
||||||
|
ValFormulaChanged(flagFormula, ui->plainTextEditFormulaWidthAfter, m_timerWidthAfter, postfix);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::DeployWidthFormulaTextEdit()
|
||||||
|
{
|
||||||
|
DeployFormula(ui->plainTextEditFormulaWidth, ui->pushButtonGrowWidth, m_formulaBaseWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::DeployWidthBeforeFormulaTextEdit()
|
||||||
|
{
|
||||||
|
DeployFormula(ui->plainTextEditFormulaWidthBefore, ui->pushButtonGrowWidthBefore, m_formulaBaseWidthBefore);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::DeployWidthAfterFormulaTextEdit()
|
||||||
|
{
|
||||||
|
DeployFormula(ui->plainTextEditFormulaWidthAfter, ui->pushButtonGrowWidthAfter, m_formulaBaseWidthAfter);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VPiece DialogSeamAllowance::CreatePiece() const
|
VPiece DialogSeamAllowance::CreatePiece() const
|
||||||
{
|
{
|
||||||
|
@ -1089,11 +1240,14 @@ VPiece DialogSeamAllowance::CreatePiece() const
|
||||||
|
|
||||||
piece.SetForbidFlipping(ui->checkBoxForbidFlipping->isChecked());
|
piece.SetForbidFlipping(ui->checkBoxForbidFlipping->isChecked());
|
||||||
piece.SetSeamAllowance(ui->checkBoxSeams->isChecked());
|
piece.SetSeamAllowance(ui->checkBoxSeams->isChecked());
|
||||||
piece.SetSAWidth(ui->doubleSpinBoxSeams->value());
|
|
||||||
piece.SetName(ui->lineEditName->text());
|
piece.SetName(ui->lineEditName->text());
|
||||||
piece.SetMx(m_mx);
|
piece.SetMx(m_mx);
|
||||||
piece.SetMy(m_my);
|
piece.SetMy(m_my);
|
||||||
|
|
||||||
|
QString width = ui->plainTextEditFormulaWidth->toPlainText();
|
||||||
|
width.replace("\n", " ");
|
||||||
|
piece.SetFormulaSAWidth(width, m_saWidth);
|
||||||
|
|
||||||
piece.GetPatternPieceData().SetLetter(ui->lineEditLetter->text());
|
piece.GetPatternPieceData().SetLetter(ui->lineEditLetter->text());
|
||||||
|
|
||||||
for (int i = 0; i < m_conMCP.count(); ++i)
|
for (int i = 0; i < m_conMCP.count(); ++i)
|
||||||
|
@ -1306,7 +1460,21 @@ quint32 DialogSeamAllowance::GetLastId() const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogSeamAllowance::SetCurrentSABefore(qreal value)
|
void DialogSeamAllowance::SetCurrentSABefore(const QString &formula)
|
||||||
|
{
|
||||||
|
UpdateNodeSABefore(formula);
|
||||||
|
ListChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::SetCurrentSAAfter(const QString &formula)
|
||||||
|
{
|
||||||
|
UpdateNodeSAAfter(formula);
|
||||||
|
ListChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::UpdateNodeSABefore(const QString &formula)
|
||||||
{
|
{
|
||||||
const int index = ui->comboBoxNodes->currentIndex();
|
const int index = ui->comboBoxNodes->currentIndex();
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
|
@ -1321,16 +1489,14 @@ void DialogSeamAllowance::SetCurrentSABefore(qreal value)
|
||||||
if (rowItem)
|
if (rowItem)
|
||||||
{
|
{
|
||||||
VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
||||||
rowNode.SetSABefore(value);
|
rowNode.SetFormulaSABefore(formula);
|
||||||
rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode));
|
rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode));
|
||||||
|
|
||||||
ListChanged();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogSeamAllowance::SetCurrentSAAfter(qreal value)
|
void DialogSeamAllowance::UpdateNodeSAAfter(const QString &formula)
|
||||||
{
|
{
|
||||||
const int index = ui->comboBoxNodes->currentIndex();
|
const int index = ui->comboBoxNodes->currentIndex();
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
|
@ -1345,10 +1511,8 @@ void DialogSeamAllowance::SetCurrentSAAfter(qreal value)
|
||||||
if (rowItem)
|
if (rowItem)
|
||||||
{
|
{
|
||||||
VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
||||||
rowNode.SetSAAfter(value);
|
rowNode.SetFormulaSAAfter(formula);
|
||||||
rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode));
|
rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode));
|
||||||
|
|
||||||
ListChanged();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1367,21 +1531,29 @@ void DialogSeamAllowance::InitMainPathTab()
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogSeamAllowance::InitSeamAllowanceTab()
|
void DialogSeamAllowance::InitSeamAllowanceTab()
|
||||||
{
|
{
|
||||||
|
plainTextEditFormula = ui->plainTextEditFormulaWidth;
|
||||||
|
this->m_formulaBaseWidth = ui->plainTextEditFormulaWidth->height();
|
||||||
|
this->m_formulaBaseWidthBefore = ui->plainTextEditFormulaWidthBefore->height();
|
||||||
|
this->m_formulaBaseWidthAfter = ui->plainTextEditFormulaWidthAfter->height();
|
||||||
|
|
||||||
|
ui->plainTextEditFormulaWidth->installEventFilter(this);
|
||||||
|
ui->plainTextEditFormulaWidthBefore->installEventFilter(this);
|
||||||
|
ui->plainTextEditFormulaWidthAfter->installEventFilter(this);
|
||||||
|
|
||||||
|
m_timerWidth = new QTimer(this);
|
||||||
|
connect(m_timerWidth, &QTimer::timeout, this, &DialogSeamAllowance::EvalWidth);
|
||||||
|
|
||||||
|
m_timerWidthBefore = new QTimer(this);
|
||||||
|
connect(m_timerWidthBefore, &QTimer::timeout, this, &DialogSeamAllowance::EvalWidthBefore);
|
||||||
|
|
||||||
|
m_timerWidthAfter = new QTimer(this);
|
||||||
|
connect(m_timerWidthAfter, &QTimer::timeout, this, &DialogSeamAllowance::EvalWidthAfter);
|
||||||
|
|
||||||
connect(ui->checkBoxSeams, &QCheckBox::toggled, this, &DialogSeamAllowance::EnableSeamAllowance);
|
connect(ui->checkBoxSeams, &QCheckBox::toggled, this, &DialogSeamAllowance::EnableSeamAllowance);
|
||||||
|
|
||||||
const QString suffix = QLatin1String(" ") + VDomDocument::UnitsToStr(qApp->patternUnit(), true);
|
|
||||||
ui->doubleSpinBoxSeams->setSuffix(suffix);
|
|
||||||
ui->doubleSpinBoxSABefore->setSuffix(suffix);
|
|
||||||
ui->doubleSpinBoxSAAfter->setSuffix(suffix);
|
|
||||||
|
|
||||||
if(qApp->patternUnit() == Unit::Inch)
|
|
||||||
{
|
|
||||||
ui->doubleSpinBoxSeams->setDecimals(5);
|
|
||||||
ui->doubleSpinBoxSABefore->setDecimals(5);
|
|
||||||
ui->doubleSpinBoxSAAfter->setDecimals(5);
|
|
||||||
}
|
|
||||||
// Default value for seam allowence is 1 cm. But pattern have different units, so just set 1 in dialog not enough.
|
// Default value for seam allowence is 1 cm. But pattern have different units, so just set 1 in dialog not enough.
|
||||||
ui->doubleSpinBoxSeams->setValue(UnitConvertor(1, Unit::Cm, qApp->patternUnit()));
|
m_saWidth = UnitConvertor(1, Unit::Cm, qApp->patternUnit());
|
||||||
|
ui->plainTextEditFormulaWidth->setPlainText(qApp->LocaleToString(m_saWidth));
|
||||||
|
|
||||||
InitNodesList();
|
InitNodesList();
|
||||||
connect(ui->comboBoxNodes, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
connect(ui->comboBoxNodes, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||||
|
@ -1390,14 +1562,6 @@ void DialogSeamAllowance::InitSeamAllowanceTab()
|
||||||
connect(ui->pushButtonDefBefore, &QPushButton::clicked, this, &DialogSeamAllowance::ReturnDefBefore);
|
connect(ui->pushButtonDefBefore, &QPushButton::clicked, this, &DialogSeamAllowance::ReturnDefBefore);
|
||||||
connect(ui->pushButtonDefAfter, &QPushButton::clicked, this, &DialogSeamAllowance::ReturnDefAfter);
|
connect(ui->pushButtonDefAfter, &QPushButton::clicked, this, &DialogSeamAllowance::ReturnDefAfter);
|
||||||
|
|
||||||
connect(ui->doubleSpinBoxSeams, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
|
||||||
[this](){NodeChanged(ui->comboBoxNodes->currentIndex());});
|
|
||||||
|
|
||||||
connect(ui->doubleSpinBoxSABefore, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
|
||||||
this, &DialogSeamAllowance::ChangedSABefore);
|
|
||||||
connect(ui->doubleSpinBoxSAAfter, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
|
||||||
this, &DialogSeamAllowance::ChangedSAAfter);
|
|
||||||
|
|
||||||
InitNodeAngles(ui->comboBoxAngle);
|
InitNodeAngles(ui->comboBoxAngle);
|
||||||
connect(ui->comboBoxAngle, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
connect(ui->comboBoxAngle, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||||
&DialogSeamAllowance::NodeAngleChanged);
|
&DialogSeamAllowance::NodeAngleChanged);
|
||||||
|
@ -1412,6 +1576,22 @@ void DialogSeamAllowance::InitSeamAllowanceTab()
|
||||||
&DialogSeamAllowance::CSAEndPointChanged);
|
&DialogSeamAllowance::CSAEndPointChanged);
|
||||||
connect(ui->comboBoxIncludeType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
connect(ui->comboBoxIncludeType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||||
&DialogSeamAllowance::CSAIncludeTypeChanged);
|
&DialogSeamAllowance::CSAIncludeTypeChanged);
|
||||||
|
|
||||||
|
connect(ui->toolButtonExprWidth, &QPushButton::clicked, this, &DialogSeamAllowance::FXWidth);
|
||||||
|
connect(ui->toolButtonExprBefore, &QPushButton::clicked, this, &DialogSeamAllowance::FXWidthBefore);
|
||||||
|
connect(ui->toolButtonExprAfter, &QPushButton::clicked, this, &DialogSeamAllowance::FXWidthAfter);
|
||||||
|
|
||||||
|
connect(ui->plainTextEditFormulaWidth, &QPlainTextEdit::textChanged, this, &DialogSeamAllowance::WidthChanged);
|
||||||
|
connect(ui->plainTextEditFormulaWidthBefore, &QPlainTextEdit::textChanged, this,
|
||||||
|
&DialogSeamAllowance::WidthBeforeChanged);
|
||||||
|
connect(ui->plainTextEditFormulaWidthAfter, &QPlainTextEdit::textChanged, this,
|
||||||
|
&DialogSeamAllowance::WidthAfterChanged);
|
||||||
|
|
||||||
|
connect(ui->pushButtonGrowWidth, &QPushButton::clicked, this, &DialogSeamAllowance::DeployWidthFormulaTextEdit);
|
||||||
|
connect(ui->pushButtonGrowWidthBefore, &QPushButton::clicked,
|
||||||
|
this, &DialogSeamAllowance::DeployWidthBeforeFormulaTextEdit);
|
||||||
|
connect(ui->pushButtonGrowWidthAfter, &QPushButton::clicked, this,
|
||||||
|
&DialogSeamAllowance::DeployWidthAfterFormulaTextEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1513,6 +1693,49 @@ void DialogSeamAllowance::InitGrainlineTab()
|
||||||
m_iLenBaseHeight = ui->lineEditLenFormula->height();
|
m_iLenBaseHeight = ui->lineEditLenFormula->height();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogSeamAllowance::GetFormulaSAWidth() const
|
||||||
|
{
|
||||||
|
QString width = ui->plainTextEditFormulaWidth->toPlainText();
|
||||||
|
width.replace("\n", " ");
|
||||||
|
return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator());
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogSeamAllowance::SetFormulaSAWidth(const QString &formula)
|
||||||
|
{
|
||||||
|
const QString width = qApp->TrVars()->FormulaToUser(formula, qApp->Settings()->GetOsSeparator());
|
||||||
|
// increase height if needed.
|
||||||
|
if (width.length() > 80)
|
||||||
|
{
|
||||||
|
this->DeployWidthFormulaTextEdit();
|
||||||
|
}
|
||||||
|
ui->plainTextEditFormulaWidth->setPlainText(width);
|
||||||
|
|
||||||
|
VisToolPiece *path = qobject_cast<VisToolPiece *>(vis);
|
||||||
|
SCASSERT(path != nullptr)
|
||||||
|
const VPiece p = CreatePiece();
|
||||||
|
path->SetPiece(p);
|
||||||
|
|
||||||
|
MoveCursorToEnd(ui->plainTextEditFormulaWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogSeamAllowance::GetFormulaSAWidthBefore() const
|
||||||
|
{
|
||||||
|
QString width = ui->plainTextEditFormulaWidthBefore->toPlainText();
|
||||||
|
width.replace("\n", " ");
|
||||||
|
return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator());
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogSeamAllowance::GetFormulaSAWidthAfter() const
|
||||||
|
{
|
||||||
|
QString width = ui->plainTextEditFormulaWidthAfter->toPlainText();
|
||||||
|
width.replace("\n", " ");
|
||||||
|
return qApp->TrVars()->TryFormulaFromUser(width, qApp->Settings()->GetOsSeparator());
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogSeamAllowance::UpdateCurrentCustomSARecord()
|
void DialogSeamAllowance::UpdateCurrentCustomSARecord()
|
||||||
{
|
{
|
||||||
|
|
|
@ -53,6 +53,8 @@ public:
|
||||||
VPiece GetPiece() const;
|
VPiece GetPiece() const;
|
||||||
void SetPiece(const VPiece &m_piece);
|
void SetPiece(const VPiece &m_piece);
|
||||||
|
|
||||||
|
QString GetFormulaSAWidth() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
virtual void ChosenObject(quint32 id, const SceneObject &type) Q_DECL_OVERRIDE;
|
virtual void ChosenObject(quint32 id, const SceneObject &type) Q_DECL_OVERRIDE;
|
||||||
virtual void ShowDialog(bool click) Q_DECL_OVERRIDE;
|
virtual void ShowDialog(bool click) Q_DECL_OVERRIDE;
|
||||||
|
@ -84,8 +86,6 @@ private slots:
|
||||||
void NodeAngleChanged(int index);
|
void NodeAngleChanged(int index);
|
||||||
void ReturnDefBefore();
|
void ReturnDefBefore();
|
||||||
void ReturnDefAfter();
|
void ReturnDefAfter();
|
||||||
void ChangedSABefore(double d);
|
|
||||||
void ChangedSAAfter(double d);
|
|
||||||
void CustomSAChanged(int row);
|
void CustomSAChanged(int row);
|
||||||
void PathDialogClosed(int result);
|
void PathDialogClosed(int result);
|
||||||
|
|
||||||
|
@ -98,6 +98,22 @@ private slots:
|
||||||
void DeployLength();
|
void DeployLength();
|
||||||
void ResetWarning();
|
void ResetWarning();
|
||||||
|
|
||||||
|
void EvalWidth();
|
||||||
|
void EvalWidthBefore();
|
||||||
|
void EvalWidthAfter();
|
||||||
|
|
||||||
|
void FXWidth();
|
||||||
|
void FXWidthBefore();
|
||||||
|
void FXWidthAfter();
|
||||||
|
|
||||||
|
void WidthChanged();
|
||||||
|
void WidthBeforeChanged();
|
||||||
|
void WidthAfterChanged();
|
||||||
|
|
||||||
|
void DeployWidthFormulaTextEdit();
|
||||||
|
void DeployWidthBeforeFormulaTextEdit();
|
||||||
|
void DeployWidthAfterFormulaTextEdit();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(DialogSeamAllowance)
|
Q_DISABLE_COPY(DialogSeamAllowance)
|
||||||
|
|
||||||
|
@ -119,6 +135,14 @@ private:
|
||||||
VGrainlineGeometry m_oldGrainline;
|
VGrainlineGeometry m_oldGrainline;
|
||||||
int m_iRotBaseHeight;
|
int m_iRotBaseHeight;
|
||||||
int m_iLenBaseHeight;
|
int m_iLenBaseHeight;
|
||||||
|
int m_formulaBaseWidth;
|
||||||
|
int m_formulaBaseWidthBefore;
|
||||||
|
int m_formulaBaseWidthAfter;
|
||||||
|
|
||||||
|
QTimer *m_timerWidth;
|
||||||
|
QTimer *m_timerWidthBefore;
|
||||||
|
QTimer *m_timerWidthAfter;
|
||||||
|
qreal m_saWidth;
|
||||||
|
|
||||||
VPiece CreatePiece() const;
|
VPiece CreatePiece() const;
|
||||||
|
|
||||||
|
@ -137,8 +161,11 @@ private:
|
||||||
|
|
||||||
quint32 GetLastId() const;
|
quint32 GetLastId() const;
|
||||||
|
|
||||||
void SetCurrentSABefore(qreal value);
|
void SetCurrentSABefore(const QString &formula);
|
||||||
void SetCurrentSAAfter(qreal value);
|
void SetCurrentSAAfter(const QString &formula);
|
||||||
|
|
||||||
|
void UpdateNodeSABefore(const QString &formula);
|
||||||
|
void UpdateNodeSAAfter(const QString &formula);
|
||||||
|
|
||||||
void InitMainPathTab();
|
void InitMainPathTab();
|
||||||
void InitSeamAllowanceTab();
|
void InitSeamAllowanceTab();
|
||||||
|
@ -148,6 +175,11 @@ private:
|
||||||
void InitInternalPathsTab();
|
void InitInternalPathsTab();
|
||||||
void InitPatternPieceDataTab();
|
void InitPatternPieceDataTab();
|
||||||
void InitGrainlineTab();
|
void InitGrainlineTab();
|
||||||
|
|
||||||
|
void SetFormulaSAWidth(const QString &formula);
|
||||||
|
|
||||||
|
QString GetFormulaSAWidthBefore() const;
|
||||||
|
QString GetFormulaSAWidthAfter() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DIALOGSEAMALLOWANCE_H
|
#endif // DIALOGSEAMALLOWANCE_H
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>521</width>
|
<width>521</width>
|
||||||
<height>493</height>
|
<height>611</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>4</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tabMainPath">
|
<widget class="QWidget" name="tabMainPath">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Seam allowance</string>
|
<string>Seam allowance</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
<layout class="QVBoxLayout" name="verticalLayout_11">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBoxSeams">
|
<widget class="QCheckBox" name="checkBoxSeams">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -119,50 +119,62 @@
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
<property name="topMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
<item>
|
<item alignment="Qt::AlignLeft">
|
||||||
<widget class="QLabel" name="labelEditWidth">
|
<widget class="QLabel" name="labelEditWidth">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="locale">
|
<property name="palette">
|
||||||
<locale language="English" country="UnitedStates"/>
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Width:</string>
|
<string>Width:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxSeams">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<double>900.990000000000009</double>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>0.100000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>1.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
@ -176,6 +188,119 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QToolButton" name="toolButtonExprWidth">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Formula wizard</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../vmisc/share/resources/icon.qrc">
|
||||||
|
<normaloff>:/icon/24x24/fx.png</normaloff>:/icon/24x24/fx.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../../../vmisc/share/resources/icon.qrc">:/icon/24x24/equal.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="labelResultWidth">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>87</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Value</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">_</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||||
|
<item>
|
||||||
|
<widget class="QPlainTextEdit" name="plainTextEditFormulaWidth">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Calculation</string>
|
||||||
|
</property>
|
||||||
|
<property name="tabChangesFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButtonGrowWidth">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>18</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeIncrement">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Show full calculation in message box</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="go-down">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -183,42 +308,115 @@
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Nodes</string>
|
<string>Nodes</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<property name="fieldGrowthPolicy">
|
<property name="bottomMargin">
|
||||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="labelNode">
|
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||||
<property name="text">
|
|
||||||
<string>Node:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBoxNodes"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="labelSABefore">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Seam allowance before node</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Before:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxSABefore">
|
<widget class="QLabel" name="labelNode">
|
||||||
<property name="maximum">
|
<property name="sizePolicy">
|
||||||
<double>900.990000000000009</double>
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="singleStep">
|
<property name="text">
|
||||||
<double>0.100000000000000</double>
|
<string>Node:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBoxNodes">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_7">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||||
|
<item alignment="Qt::AlignLeft">
|
||||||
|
<widget class="QLabel" name="labelEditBefore">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="palette">
|
||||||
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Before:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pushButtonDefBefore">
|
<widget class="QPushButton" name="pushButtonDefBefore">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
@ -229,30 +427,186 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
<item alignment="Qt::AlignRight">
|
||||||
</item>
|
<widget class="QToolButton" name="toolButtonExprBefore">
|
||||||
<item row="2" column="0">
|
<property name="toolTip">
|
||||||
<widget class="QLabel" name="labelSAAfter">
|
<string>Formula wizard</string>
|
||||||
<property name="toolTip">
|
|
||||||
<string>Seam allowance after node</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>After:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
||||||
<item>
|
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBoxSAAfter">
|
|
||||||
<property name="maximum">
|
|
||||||
<double>900.990000000000009</double>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="singleStep">
|
<property name="text">
|
||||||
<double>0.100000000000000</double>
|
<string notr="true">...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../vmisc/share/resources/icon.qrc">
|
||||||
|
<normaloff>:/icon/24x24/fx.png</normaloff>:/icon/24x24/fx.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../../../vmisc/share/resources/icon.qrc">:/icon/24x24/equal.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="labelResultBefore">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>87</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Value</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">_</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||||
|
<item>
|
||||||
|
<widget class="QPlainTextEdit" name="plainTextEditFormulaWidthBefore">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Calculation</string>
|
||||||
|
</property>
|
||||||
|
<property name="tabChangesFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButtonGrowWidthBefore">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>18</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeIncrement">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Show full calculation in message box</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="go-down">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_16">
|
||||||
|
<item alignment="Qt::AlignLeft">
|
||||||
|
<widget class="QLabel" name="labelEditAfter">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="palette">
|
||||||
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>After:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pushButtonDefAfter">
|
<widget class="QPushButton" name="pushButtonDefAfter">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
@ -263,17 +617,154 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QToolButton" name="toolButtonExprAfter">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Formula wizard</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../vmisc/share/resources/icon.qrc">
|
||||||
|
<normaloff>:/icon/24x24/fx.png</normaloff>:/icon/24x24/fx.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="label_10">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../../../vmisc/share/resources/icon.qrc">:/icon/24x24/equal.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item alignment="Qt::AlignRight">
|
||||||
|
<widget class="QLabel" name="labelResultAfter">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>87</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Value</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">_</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="labelAngle">
|
<layout class="QHBoxLayout" name="horizontalLayout_17">
|
||||||
<property name="text">
|
<item>
|
||||||
<string>Angle:</string>
|
<widget class="QPlainTextEdit" name="plainTextEditFormulaWidthAfter">
|
||||||
</property>
|
<property name="sizePolicy">
|
||||||
</widget>
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Calculation</string>
|
||||||
|
</property>
|
||||||
|
<property name="tabChangesFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButtonGrowWidthAfter">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>18</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeIncrement">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Show full calculation in message box</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="go-down">
|
||||||
|
<normaloff>.</normaloff>.</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item>
|
||||||
<widget class="QComboBox" name="comboBoxAngle"/>
|
<layout class="QHBoxLayout" name="horizontalLayout_15">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelAngle">
|
||||||
|
<property name="text">
|
||||||
|
<string>Angle:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBoxAngle">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_8">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -293,6 +784,12 @@
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -582,7 +582,7 @@ void DialogTool::ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer *tim
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
timer->setSingleShot(true);
|
timer->setSingleShot(true);
|
||||||
timer->start(1000);
|
timer->start(300);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -594,13 +594,11 @@ void DialogTool::ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer *tim
|
||||||
* @param postfix unit name
|
* @param postfix unit name
|
||||||
* @param checkZero true - if formula can't be equal zero
|
* @param checkZero true - if formula can't be equal zero
|
||||||
*/
|
*/
|
||||||
qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QString& postfix, bool checkZero)
|
qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QString& postfix, bool checkZero,
|
||||||
|
bool checkLessThanZero)
|
||||||
{
|
{
|
||||||
qDebug() << "Eval started";
|
|
||||||
SCASSERT(label != nullptr)
|
SCASSERT(label != nullptr)
|
||||||
qDebug() << "Label ok";
|
|
||||||
SCASSERT(labelEditFormula != nullptr)
|
SCASSERT(labelEditFormula != nullptr)
|
||||||
qDebug() << "lef ok";
|
|
||||||
|
|
||||||
qreal result = INT_MIN;//Value can be 0, so use max imposible value
|
qreal result = INT_MIN;//Value can be 0, so use max imposible value
|
||||||
|
|
||||||
|
@ -640,6 +638,13 @@ qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QSt
|
||||||
label->setText(tr("Error") + " (" + postfix + ")");
|
label->setText(tr("Error") + " (" + postfix + ")");
|
||||||
label->setToolTip(tr("Value can't be 0"));
|
label->setToolTip(tr("Value can't be 0"));
|
||||||
}
|
}
|
||||||
|
else if (checkLessThanZero && result < 0)
|
||||||
|
{
|
||||||
|
flag = false;
|
||||||
|
ChangeColor(labelEditFormula, Qt::red);
|
||||||
|
label->setText(tr("Error") + " (" + postfix + ")");
|
||||||
|
label->setToolTip(tr("Value can't be lass than 0"));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
label->setText(qApp->LocaleToString(result) + " " +postfix);
|
label->setText(qApp->LocaleToString(result) + " " +postfix);
|
||||||
|
|
|
@ -231,7 +231,7 @@ protected:
|
||||||
void ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer * timer,
|
void ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer * timer,
|
||||||
const QString &postfix = QString());
|
const QString &postfix = QString());
|
||||||
qreal Eval(const QString &text, bool &flag, QLabel *label, const QString &postfix,
|
qreal Eval(const QString &text, bool &flag, QLabel *label, const QString &postfix,
|
||||||
bool checkZero = true);
|
bool checkZero = true, bool checkLessThanZero = false);
|
||||||
|
|
||||||
void setCurrentPointId(QComboBox *box, const quint32 &value,
|
void setCurrentPointId(QComboBox *box, const quint32 &value,
|
||||||
FillComboBox rule = FillComboBox::NoChildren,
|
FillComboBox rule = FillComboBox::NoChildren,
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
|
|
||||||
#include "vdrawtool.h"
|
#include "vdrawtool.h"
|
||||||
|
|
||||||
#include <qnumeric.h>
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QDomNode>
|
#include <QDomNode>
|
||||||
#include <QMessageLogger>
|
#include <QMessageLogger>
|
||||||
|
@ -41,10 +40,6 @@
|
||||||
#include "../ifc/ifcdef.h"
|
#include "../ifc/ifcdef.h"
|
||||||
#include "../ifc/xml/vdomdocument.h"
|
#include "../ifc/xml/vdomdocument.h"
|
||||||
#include "../ifc/xml/vabstractpattern.h"
|
#include "../ifc/xml/vabstractpattern.h"
|
||||||
#include "../ifc/exception/vexceptionundo.h"
|
|
||||||
#include "../vpatterndb/calculator.h"
|
|
||||||
#include "../../dialogs/support/dialogeditwrongformula.h"
|
|
||||||
#include "../../dialogs/support/dialogundo.h"
|
|
||||||
#include "../../undocommands/addtocalc.h"
|
#include "../../undocommands/addtocalc.h"
|
||||||
#include "../../undocommands/savetooloptions.h"
|
#include "../../undocommands/savetooloptions.h"
|
||||||
#include "../qmuparser/qmuparsererror.h"
|
#include "../qmuparser/qmuparsererror.h"
|
||||||
|
@ -292,96 +287,6 @@ void VDrawTool::DetailsMode(bool mode)
|
||||||
// Do nothing.
|
// Do nothing.
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief CheckFormula check formula.
|
|
||||||
*
|
|
||||||
* Try calculate formula. If find error show dialog that allow user try fix formula. If user can't throw exception. In
|
|
||||||
* successes case return result calculation and fixed formula string. If formula ok don't touch formula.
|
|
||||||
*
|
|
||||||
* @param toolId [in] tool's id.
|
|
||||||
* @param formula [in|out] string with formula.
|
|
||||||
* @param data [in] container with variables. Need for math parser.
|
|
||||||
* @throw QmuParserError.
|
|
||||||
* @return result of calculation formula.
|
|
||||||
*/
|
|
||||||
qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContainer *data)
|
|
||||||
{
|
|
||||||
SCASSERT(data != nullptr)
|
|
||||||
qreal result = 0;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
QScopedPointer<Calculator> cal(new Calculator());
|
|
||||||
result = cal->EvalFormula(data->PlainVariables(), formula);
|
|
||||||
|
|
||||||
if (qIsInf(result) || qIsNaN(result))
|
|
||||||
{
|
|
||||||
qDebug() << "Invalid the formula value";
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (qmu::QmuParserError &e)
|
|
||||||
{
|
|
||||||
qDebug() << "\nMath parser error:\n"
|
|
||||||
<< "--------------------------------------\n"
|
|
||||||
<< "Message: " << e.GetMsg() << "\n"
|
|
||||||
<< "Expression: " << e.GetExpr() << "\n"
|
|
||||||
<< "--------------------------------------";
|
|
||||||
|
|
||||||
if (qApp->IsAppInGUIMode())
|
|
||||||
{
|
|
||||||
QScopedPointer<DialogUndo> dialogUndo(new DialogUndo(qApp->getMainWindow()));
|
|
||||||
forever
|
|
||||||
{
|
|
||||||
if (dialogUndo->exec() == QDialog::Accepted)
|
|
||||||
{
|
|
||||||
const UndoButton resultUndo = dialogUndo->Result();
|
|
||||||
if (resultUndo == UndoButton::Fix)
|
|
||||||
{
|
|
||||||
auto *dialog = new DialogEditWrongFormula(data, toolId, qApp->getMainWindow());
|
|
||||||
dialog->setWindowTitle(tr("Edit wrong formula"));
|
|
||||||
dialog->SetFormula(formula);
|
|
||||||
if (dialog->exec() == QDialog::Accepted)
|
|
||||||
{
|
|
||||||
formula = dialog->GetFormula();
|
|
||||||
/* Need delete dialog here because parser in dialog don't allow use correct separator for
|
|
||||||
* parsing here. */
|
|
||||||
delete dialog;
|
|
||||||
QScopedPointer<Calculator> cal1(new Calculator());
|
|
||||||
result = cal1->EvalFormula(data->PlainVariables(), formula);
|
|
||||||
|
|
||||||
if (qIsInf(result) || qIsNaN(result))
|
|
||||||
{
|
|
||||||
qDebug() << "Invalid the formula value";
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delete dialog;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw VExceptionUndo(QString("Undo wrong formula %1").arg(formula));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief AddToCalculation add tool to calculation tag in pattern file.
|
* @brief AddToCalculation add tool to calculation tag in pattern file.
|
||||||
|
|
|
@ -75,7 +75,6 @@ public:
|
||||||
/** @brief setDialog set dialog when user want change tool option. */
|
/** @brief setDialog set dialog when user want change tool option. */
|
||||||
virtual void setDialog() {}
|
virtual void setDialog() {}
|
||||||
virtual void DialogLinkDestroy();
|
virtual void DialogLinkDestroy();
|
||||||
static qreal CheckFormula(const quint32 &toolId, QString &formula, VContainer *data);
|
|
||||||
|
|
||||||
QString getLineType() const;
|
QString getLineType() const;
|
||||||
virtual void SetTypeLine(const QString &value);
|
virtual void SetTypeLine(const QString &value);
|
||||||
|
|
|
@ -52,11 +52,13 @@
|
||||||
#include <QUndoStack>
|
#include <QUndoStack>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <new>
|
#include <new>
|
||||||
|
#include <qnumeric.h>
|
||||||
|
|
||||||
#include "../vgeometry/vpointf.h"
|
#include "../vgeometry/vpointf.h"
|
||||||
#include "../vpropertyexplorer/checkablemessagebox.h"
|
#include "../vpropertyexplorer/checkablemessagebox.h"
|
||||||
#include "../vwidgets/vmaingraphicsview.h"
|
#include "../vwidgets/vmaingraphicsview.h"
|
||||||
#include "../ifc/exception/vexception.h"
|
#include "../ifc/exception/vexception.h"
|
||||||
|
#include "../ifc/exception/vexceptionundo.h"
|
||||||
#include "../ifc/xml/vtoolrecord.h"
|
#include "../ifc/xml/vtoolrecord.h"
|
||||||
#include "../undocommands/deltool.h"
|
#include "../undocommands/deltool.h"
|
||||||
#include "../vgeometry/../ifc/ifcdef.h"
|
#include "../vgeometry/../ifc/ifcdef.h"
|
||||||
|
@ -71,8 +73,11 @@
|
||||||
#include "../vmisc/logging.h"
|
#include "../vmisc/logging.h"
|
||||||
#include "../vpatterndb/vcontainer.h"
|
#include "../vpatterndb/vcontainer.h"
|
||||||
#include "../vpatterndb/vpiecenode.h"
|
#include "../vpatterndb/vpiecenode.h"
|
||||||
|
#include "../vpatterndb/calculator.h"
|
||||||
#include "../vwidgets/vgraphicssimpletextitem.h"
|
#include "../vwidgets/vgraphicssimpletextitem.h"
|
||||||
#include "nodeDetails/nodedetails.h"
|
#include "nodeDetails/nodedetails.h"
|
||||||
|
#include "../dialogs/support/dialogundo.h"
|
||||||
|
#include "../dialogs/support/dialogeditwrongformula.h"
|
||||||
|
|
||||||
class QGraphicsEllipseItem;
|
class QGraphicsEllipseItem;
|
||||||
class QGraphicsLineItem;
|
class QGraphicsLineItem;
|
||||||
|
@ -152,6 +157,96 @@ VAbstractTool::~VAbstractTool()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief CheckFormula check formula.
|
||||||
|
*
|
||||||
|
* Try calculate formula. If find error show dialog that allow user try fix formula. If user can't throw exception. In
|
||||||
|
* successes case return result calculation and fixed formula string. If formula ok don't touch formula.
|
||||||
|
*
|
||||||
|
* @param toolId [in] tool's id.
|
||||||
|
* @param formula [in|out] string with formula.
|
||||||
|
* @param data [in] container with variables. Need for math parser.
|
||||||
|
* @throw QmuParserError.
|
||||||
|
* @return result of calculation formula.
|
||||||
|
*/
|
||||||
|
qreal VAbstractTool::CheckFormula(const quint32 &toolId, QString &formula, VContainer *data)
|
||||||
|
{
|
||||||
|
SCASSERT(data != nullptr)
|
||||||
|
qreal result = 0;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QScopedPointer<Calculator> cal(new Calculator());
|
||||||
|
result = cal->EvalFormula(data->PlainVariables(), formula);
|
||||||
|
|
||||||
|
if (qIsInf(result) || qIsNaN(result))
|
||||||
|
{
|
||||||
|
qDebug() << "Invalid the formula value";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (qmu::QmuParserError &e)
|
||||||
|
{
|
||||||
|
qDebug() << "\nMath parser error:\n"
|
||||||
|
<< "--------------------------------------\n"
|
||||||
|
<< "Message: " << e.GetMsg() << "\n"
|
||||||
|
<< "Expression: " << e.GetExpr() << "\n"
|
||||||
|
<< "--------------------------------------";
|
||||||
|
|
||||||
|
if (qApp->IsAppInGUIMode())
|
||||||
|
{
|
||||||
|
QScopedPointer<DialogUndo> dialogUndo(new DialogUndo(qApp->getMainWindow()));
|
||||||
|
forever
|
||||||
|
{
|
||||||
|
if (dialogUndo->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
const UndoButton resultUndo = dialogUndo->Result();
|
||||||
|
if (resultUndo == UndoButton::Fix)
|
||||||
|
{
|
||||||
|
auto *dialog = new DialogEditWrongFormula(data, toolId, qApp->getMainWindow());
|
||||||
|
dialog->setWindowTitle(tr("Edit wrong formula"));
|
||||||
|
dialog->SetFormula(formula);
|
||||||
|
if (dialog->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
formula = dialog->GetFormula();
|
||||||
|
/* Need delete dialog here because parser in dialog don't allow use correct separator for
|
||||||
|
* parsing here. */
|
||||||
|
delete dialog;
|
||||||
|
QScopedPointer<Calculator> cal1(new Calculator());
|
||||||
|
result = cal1->EvalFormula(data->PlainVariables(), formula);
|
||||||
|
|
||||||
|
if (qIsInf(result) || qIsNaN(result))
|
||||||
|
{
|
||||||
|
qDebug() << "Invalid the formula value";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
delete dialog;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw VExceptionUndo(QString("Undo wrong formula %1").arg(formula));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief DeleteTool full delete object form scene and file.
|
* @brief DeleteTool full delete object form scene and file.
|
||||||
|
@ -536,16 +631,14 @@ QDomElement VAbstractTool::AddSANode(VAbstractPattern *doc, const QString &tagNa
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const qreal w1 = node.GetSABefore();
|
if (node.GetFormulaSABefore() != currentSeamAllowance)
|
||||||
if (w1 >= 0)
|
|
||||||
{
|
{
|
||||||
doc->SetAttribute(nod, VAbstractPattern::AttrSABefore, w1);
|
doc->SetAttribute(nod, VAbstractPattern::AttrSABefore, node.GetFormulaSABefore());
|
||||||
}
|
}
|
||||||
|
|
||||||
const qreal w2 = node.GetSAAfter();
|
if (node.GetFormulaSAAfter() != currentSeamAllowance)
|
||||||
if (w2 >= 0)
|
|
||||||
{
|
{
|
||||||
doc->SetAttribute(nod, VAbstractPattern::AttrSAAfter, w2);
|
doc->SetAttribute(nod, VAbstractPattern::AttrSAAfter, node.GetFormulaSAAfter());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,8 @@ public:
|
||||||
|
|
||||||
static const QString AttrInUse;
|
static const QString AttrInUse;
|
||||||
|
|
||||||
|
static qreal CheckFormula(const quint32 &toolId, QString &formula, VContainer *data);
|
||||||
|
|
||||||
static const QStringList StylesList();
|
static const QStringList StylesList();
|
||||||
static Qt::PenStyle LineStyleToPenStyle(const QString &typeLine);
|
static Qt::PenStyle LineStyleToPenStyle(const QString &typeLine);
|
||||||
static QString PenStyleToLineStyle(Qt::PenStyle penStyle);
|
static QString PenStyleToLineStyle(Qt::PenStyle penStyle);
|
||||||
|
|
|
@ -91,10 +91,11 @@ VToolSeamAllowance *VToolSeamAllowance::Create(DialogTool *dialog, VMainGraphics
|
||||||
DialogSeamAllowance *dialogTool = qobject_cast<DialogSeamAllowance*>(dialog);
|
DialogSeamAllowance *dialogTool = qobject_cast<DialogSeamAllowance*>(dialog);
|
||||||
SCASSERT(dialogTool != nullptr);
|
SCASSERT(dialogTool != nullptr);
|
||||||
VPiece detail = dialogTool->GetPiece();
|
VPiece detail = dialogTool->GetPiece();
|
||||||
|
QString width = detail.GetFormulaSAWidth();
|
||||||
qApp->getUndoStack()->beginMacro("add detail");
|
qApp->getUndoStack()->beginMacro("add detail");
|
||||||
detail.GetPath().SetNodes(PrepareNodes(detail.GetPath(), scene, doc, data));
|
detail.GetPath().SetNodes(PrepareNodes(detail.GetPath(), scene, doc, data));
|
||||||
|
|
||||||
VToolSeamAllowance *piece = Create(0, detail, scene, doc, data, Document::FullParse, Source::FromGui);
|
VToolSeamAllowance *piece = Create(0, detail, width, scene, doc, data, Document::FullParse, Source::FromGui);
|
||||||
|
|
||||||
if (piece != nullptr)
|
if (piece != nullptr)
|
||||||
{
|
{
|
||||||
|
@ -104,16 +105,24 @@ VToolSeamAllowance *VToolSeamAllowance::Create(DialogTool *dialog, VMainGraphics
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VToolSeamAllowance *VToolSeamAllowance::Create(quint32 id, const VPiece &newPiece, VMainGraphicsScene *scene,
|
VToolSeamAllowance *VToolSeamAllowance::Create(quint32 id, VPiece newPiece, QString &width, VMainGraphicsScene *scene,
|
||||||
VAbstractPattern *doc, VContainer *data, const Document &parse,
|
VAbstractPattern *doc, VContainer *data, const Document &parse,
|
||||||
const Source &typeCreation, const QString &drawName)
|
const Source &typeCreation, const QString &drawName)
|
||||||
{
|
{
|
||||||
if (typeCreation == Source::FromGui || typeCreation == Source::FromTool)
|
if (typeCreation == Source::FromGui || typeCreation == Source::FromTool)
|
||||||
{
|
{
|
||||||
|
data->AddVariable(currentSeamAllowance, new VIncrement(data, currentSeamAllowance, 0, newPiece.GetSAWidth(),
|
||||||
|
width, true, tr("Current seam allowance")));
|
||||||
id = data->AddPiece(newPiece);
|
id = data->AddPiece(newPiece);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
const qreal calcWidth = CheckFormula(id, width, data);
|
||||||
|
newPiece.SetFormulaSAWidth(width, calcWidth);
|
||||||
|
|
||||||
|
data->AddVariable(currentSeamAllowance, new VIncrement(data, currentSeamAllowance, 0, calcWidth,
|
||||||
|
width, true, tr("Current seam allowance")));
|
||||||
|
|
||||||
data->UpdatePiece(id, newPiece);
|
data->UpdatePiece(id, newPiece);
|
||||||
if (parse != Document::FullParse)
|
if (parse != Document::FullParse)
|
||||||
{
|
{
|
||||||
|
@ -121,19 +130,20 @@ VToolSeamAllowance *VToolSeamAllowance::Create(quint32 id, const VPiece &newPiec
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
VAbstractTool::AddRecord(id, Tool::Piece, doc);
|
VAbstractTool::AddRecord(id, Tool::Piece, doc);
|
||||||
|
VToolSeamAllowance *piece = nullptr;
|
||||||
if (parse == Document::FullParse)
|
if (parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
VToolSeamAllowance *piece = new VToolSeamAllowance(doc, data, id, typeCreation, scene, drawName);
|
piece = new VToolSeamAllowance(doc, data, id, typeCreation, scene, drawName);
|
||||||
scene->addItem(piece);
|
scene->addItem(piece);
|
||||||
connect(piece, &VToolSeamAllowance::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
connect(piece, &VToolSeamAllowance::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
|
||||||
connect(scene, &VMainGraphicsScene::EnableDetailItemHover, piece, &VToolSeamAllowance::AllowHover);
|
connect(scene, &VMainGraphicsScene::EnableDetailItemHover, piece, &VToolSeamAllowance::AllowHover);
|
||||||
connect(scene, &VMainGraphicsScene::EnableDetailItemSelection, piece, &VToolSeamAllowance::AllowSelecting);
|
connect(scene, &VMainGraphicsScene::EnableDetailItemSelection, piece, &VToolSeamAllowance::AllowSelecting);
|
||||||
connect(scene, &VMainGraphicsScene::HighlightDetail, piece, &VToolSeamAllowance::Highlight);
|
connect(scene, &VMainGraphicsScene::HighlightDetail, piece, &VToolSeamAllowance::Highlight);
|
||||||
doc->AddTool(id, piece);
|
doc->AddTool(id, piece);
|
||||||
|
|
||||||
return piece;
|
|
||||||
}
|
}
|
||||||
return nullptr;
|
//Very important to delete it. Only this tool need this special variable.
|
||||||
|
data->RemoveVariable(currentLength);
|
||||||
|
return piece;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -163,7 +173,7 @@ void VToolSeamAllowance::AddAttributes(VAbstractPattern *doc, QDomElement &domEl
|
||||||
doc->SetAttribute(domElement, AttrInLayout, piece.IsInLayout());
|
doc->SetAttribute(domElement, AttrInLayout, piece.IsInLayout());
|
||||||
doc->SetAttribute(domElement, AttrForbidFlipping, piece.IsForbidFlipping());
|
doc->SetAttribute(domElement, AttrForbidFlipping, piece.IsForbidFlipping());
|
||||||
doc->SetAttribute(domElement, AttrSeamAllowance, piece.IsSeamAllowance());
|
doc->SetAttribute(domElement, AttrSeamAllowance, piece.IsSeamAllowance());
|
||||||
doc->SetAttribute(domElement, AttrWidth, piece.GetSAWidth());
|
doc->SetAttribute(domElement, AttrWidth, piece.GetFormulaSAWidth());
|
||||||
doc->SetAttribute(domElement, AttrUnited, piece.IsUnited());
|
doc->SetAttribute(domElement, AttrUnited, piece.IsUnited());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ public:
|
||||||
|
|
||||||
static VToolSeamAllowance* Create(DialogTool *m_dialog, VMainGraphicsScene *scene, VAbstractPattern *doc,
|
static VToolSeamAllowance* Create(DialogTool *m_dialog, VMainGraphicsScene *scene, VAbstractPattern *doc,
|
||||||
VContainer *data);
|
VContainer *data);
|
||||||
static VToolSeamAllowance* Create(quint32 id, const VPiece &newPiece, VMainGraphicsScene *scene,
|
static VToolSeamAllowance* Create(quint32 id, VPiece newPiece, QString &width, VMainGraphicsScene *scene,
|
||||||
VAbstractPattern *doc, VContainer *data, const Document &parse,
|
VAbstractPattern *doc, VContainer *data, const Document &parse,
|
||||||
const Source &typeCreation, const QString &m_drawName = QString());
|
const Source &typeCreation, const QString &m_drawName = QString());
|
||||||
|
|
||||||
|
|
|
@ -1182,11 +1182,12 @@ void CreateUnitedDetail(quint32 id, const VToolUnionDetailsInitData &initData, q
|
||||||
CreateUnitedInternalPaths(newDetail, d1, d2, id, drawName, initData, dx, dy, pRotate, angle);
|
CreateUnitedInternalPaths(newDetail, d1, d2, id, drawName, initData, dx, dy, pRotate, angle);
|
||||||
|
|
||||||
newDetail.SetName(QObject::tr("United detail"));
|
newDetail.SetName(QObject::tr("United detail"));
|
||||||
newDetail.SetSAWidth(d1.GetSAWidth());
|
QString formulaSAWidth = d1.GetFormulaSAWidth();
|
||||||
|
newDetail.SetFormulaSAWidth(formulaSAWidth, d1.GetSAWidth());
|
||||||
newDetail.SetMx(d1.GetMx());
|
newDetail.SetMx(d1.GetMx());
|
||||||
newDetail.SetMy(d1.GetMy());
|
newDetail.SetMy(d1.GetMy());
|
||||||
VToolSeamAllowance::Create(0, newDetail, initData.scene, initData.doc, initData.data, initData.parse,
|
VToolSeamAllowance::Create(0, newDetail, formulaSAWidth, initData.scene, initData.doc, initData.data,
|
||||||
Source::FromTool, drawName);
|
initData.parse, Source::FromTool, drawName);
|
||||||
|
|
||||||
auto RemoveDetail = [initData](quint32 id)
|
auto RemoveDetail = [initData](quint32 id)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user