Setter and getter for options VToolArc.
--HG-- branch : feature
This commit is contained in:
parent
8412cb464a
commit
3d3282ae61
|
@ -35,13 +35,13 @@
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VFormula::VFormula()
|
VFormula::VFormula()
|
||||||
:formula(QString()), value(QString(tr("Error"))), checkZero(true), data(nullptr), toolId(NULL_ID),
|
:formula(QString()), value(QString(tr("Error"))), checkZero(true), data(nullptr), toolId(NULL_ID),
|
||||||
postfix(QStringLiteral("")), _error(true)
|
postfix(QStringLiteral("")), _error(true), dValue(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VFormula::VFormula(const QString &formula, const VContainer *container)
|
VFormula::VFormula(const QString &formula, const VContainer *container)
|
||||||
:formula(qApp->FormulaToUser(formula)), value(QString(tr("Error"))), checkZero(true), data(container), toolId(NULL_ID),
|
:formula(qApp->FormulaToUser(formula)), value(QString(tr("Error"))), checkZero(true), data(container), toolId(NULL_ID),
|
||||||
postfix(QStringLiteral("")), _error(true)
|
postfix(QStringLiteral("")), _error(true), dValue(0)
|
||||||
{
|
{
|
||||||
this->formula.replace("\n", " ");// Replace line return with spaces for calc if exist
|
this->formula.replace("\n", " ");// Replace line return with spaces for calc if exist
|
||||||
Eval();
|
Eval();
|
||||||
|
@ -55,29 +55,31 @@ VFormula &VFormula::operator=(const VFormula &formula)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
this->formula = formula.getFormula();
|
this->formula = formula.getFormula();
|
||||||
this->value = formula.getValue();
|
this->value = formula.getStringValue();
|
||||||
this->checkZero = formula.getCheckZero();
|
this->checkZero = formula.getCheckZero();
|
||||||
this->data = formula.getData();
|
this->data = formula.getData();
|
||||||
this->toolId = formula.getToolId();
|
this->toolId = formula.getToolId();
|
||||||
this->postfix = formula.getPostfix();
|
this->postfix = formula.getPostfix();
|
||||||
this->_error = formula.error();
|
this->_error = formula.error();
|
||||||
|
this->dValue = formula.getDoubleValue();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VFormula::VFormula(const VFormula &formula)
|
VFormula::VFormula(const VFormula &formula)
|
||||||
:formula(formula.getFormula()), value(formula.getValue()), checkZero(formula.getCheckZero()),
|
:formula(formula.getFormula()), value(formula.getStringValue()), checkZero(formula.getCheckZero()),
|
||||||
data(formula.getData()), toolId(formula.getToolId()), postfix(formula.getPostfix()), _error(formula.error())
|
data(formula.getData()), toolId(formula.getToolId()), postfix(formula.getPostfix()), _error(formula.error()),
|
||||||
|
dValue(formula.getDoubleValue())
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
bool VFormula::operator==(const VFormula &formula) const
|
bool VFormula::operator==(const VFormula &formula) const
|
||||||
{
|
{
|
||||||
bool isEqual = false;
|
bool isEqual = false;
|
||||||
if (this->formula == formula.getFormula() && this->value == formula.getValue() &&
|
if (this->formula == formula.getFormula() && this->value == formula.getStringValue() &&
|
||||||
this->checkZero == formula.getCheckZero() && this->data == formula.getData() &&
|
this->checkZero == formula.getCheckZero() && this->data == formula.getData() &&
|
||||||
this->toolId == formula.getToolId() && this->postfix == formula.getPostfix() &&
|
this->toolId == formula.getToolId() && this->postfix == formula.getPostfix() &&
|
||||||
this->_error == formula.error())
|
this->_error == formula.error() && this->dValue == formula.getDoubleValue())
|
||||||
{
|
{
|
||||||
isEqual = true;
|
isEqual = true;
|
||||||
}
|
}
|
||||||
|
@ -121,11 +123,17 @@ void VFormula::setFormula(const QString &value, FormulaType type)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QString VFormula::getValue() const
|
QString VFormula::getStringValue() const
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
qreal VFormula::getDoubleValue() const
|
||||||
|
{
|
||||||
|
return dValue;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
bool VFormula::getCheckZero() const
|
bool VFormula::getCheckZero() const
|
||||||
{
|
{
|
||||||
|
@ -209,6 +217,7 @@ void VFormula::Eval()
|
||||||
{
|
{
|
||||||
value = QString(tr("Error"));
|
value = QString(tr("Error"));
|
||||||
_error = true;
|
_error = true;
|
||||||
|
dValue = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -224,6 +233,7 @@ void VFormula::Eval()
|
||||||
{
|
{
|
||||||
value = QString("0");
|
value = QString("0");
|
||||||
_error = true;
|
_error = true;
|
||||||
|
dValue = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -236,6 +246,7 @@ void VFormula::Eval()
|
||||||
{
|
{
|
||||||
loc = QLocale(QLocale::C);
|
loc = QLocale(QLocale::C);
|
||||||
}
|
}
|
||||||
|
dValue = result;
|
||||||
value = QString(loc.toString(result) + " " + postfix);
|
value = QString(loc.toString(result) + " " + postfix);
|
||||||
_error = false;
|
_error = false;
|
||||||
}
|
}
|
||||||
|
@ -244,6 +255,7 @@ void VFormula::Eval()
|
||||||
{
|
{
|
||||||
value = QString(tr("Error"));
|
value = QString(tr("Error"));
|
||||||
_error = true;
|
_error = true;
|
||||||
|
dValue = 0;
|
||||||
qDebug() << "\nMath parser error:\n"
|
qDebug() << "\nMath parser error:\n"
|
||||||
<< "--------------------------------------\n"
|
<< "--------------------------------------\n"
|
||||||
<< "Message: " << e.GetMsg() << "\n"
|
<< "Message: " << e.GetMsg() << "\n"
|
||||||
|
|
|
@ -49,7 +49,8 @@ public:
|
||||||
QString getFormula(FormulaType type = FormulaType::ToUser) const;
|
QString getFormula(FormulaType type = FormulaType::ToUser) const;
|
||||||
void setFormula(const QString &value, FormulaType type = FormulaType::ToUser);
|
void setFormula(const QString &value, FormulaType type = FormulaType::ToUser);
|
||||||
|
|
||||||
QString getValue() const;
|
QString getStringValue() const;
|
||||||
|
qreal getDoubleValue() const;
|
||||||
|
|
||||||
bool getCheckZero() const;
|
bool getCheckZero() const;
|
||||||
void setCheckZero(bool value);
|
void setCheckZero(bool value);
|
||||||
|
@ -74,6 +75,7 @@ private:
|
||||||
quint32 toolId;
|
quint32 toolId;
|
||||||
QString postfix;
|
QString postfix;
|
||||||
bool _error;
|
bool _error;
|
||||||
|
qreal dValue;
|
||||||
|
|
||||||
void Eval();
|
void Eval();
|
||||||
};
|
};
|
||||||
|
|
|
@ -37,6 +37,8 @@
|
||||||
# include <QtMath> // for M_PI on Windows
|
# include <QtMath> // for M_PI on Windows
|
||||||
#endif /*Q_OS_WIN32*/
|
#endif /*Q_OS_WIN32*/
|
||||||
|
|
||||||
|
#include "../container/vformula.h"
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
|
@ -247,6 +249,13 @@ QString VArc::GetFormulaF1() const
|
||||||
return d->formulaF1;
|
return d->formulaF1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VArc::SetFormulaF1(const VFormula &value)
|
||||||
|
{
|
||||||
|
d->formulaF1 = value.getFormula(FormulaType::FromUser);
|
||||||
|
d->f1 = value.getDoubleValue();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief GetF1 return formula for start angle.
|
* @brief GetF1 return formula for start angle.
|
||||||
|
@ -267,6 +276,13 @@ QString VArc::GetFormulaF2() const
|
||||||
return d->formulaF2;
|
return d->formulaF2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VArc::SetFormulaF2(const VFormula &value)
|
||||||
|
{
|
||||||
|
d->formulaF2 = value.getFormula(FormulaType::FromUser);
|
||||||
|
d->f2 = value.getDoubleValue();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief GetF2 return formula for end angle.
|
* @brief GetF2 return formula for end angle.
|
||||||
|
@ -287,6 +303,13 @@ QString VArc::GetFormulaRadius() const
|
||||||
return d->formulaRadius;
|
return d->formulaRadius;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VArc::SetFormulaRadius(const VFormula &value)
|
||||||
|
{
|
||||||
|
d->formulaRadius = value.getFormula(FormulaType::FromUser);
|
||||||
|
d->radius = value.getDoubleValue();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief GetRadius return formula for radius.
|
* @brief GetRadius return formula for radius.
|
||||||
|
@ -306,3 +329,9 @@ VPointF VArc::GetCenter() const
|
||||||
{
|
{
|
||||||
return d->center;
|
return d->center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VArc::SetCenter(const VPointF &value)
|
||||||
|
{
|
||||||
|
d->center = value;
|
||||||
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
class QPainterPath;
|
class QPainterPath;
|
||||||
class VArcData;
|
class VArcData;
|
||||||
|
class VFormula;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief VArc class for anticlockwise arc.
|
* @brief VArc class for anticlockwise arc.
|
||||||
|
@ -52,13 +53,21 @@ public:
|
||||||
virtual ~VArc();
|
virtual ~VArc();
|
||||||
|
|
||||||
QString GetFormulaF1 () const;
|
QString GetFormulaF1 () const;
|
||||||
|
void SetFormulaF1 (const VFormula &value);
|
||||||
qreal GetF1 () const;
|
qreal GetF1 () const;
|
||||||
|
|
||||||
QString GetFormulaF2 () const;
|
QString GetFormulaF2 () const;
|
||||||
|
void SetFormulaF2 (const VFormula &value);
|
||||||
qreal GetF2 () const;
|
qreal GetF2 () const;
|
||||||
qreal GetLength () const;
|
|
||||||
QString GetFormulaRadius () const;
|
QString GetFormulaRadius () const;
|
||||||
|
void SetFormulaRadius (const VFormula &value);
|
||||||
qreal GetRadius () const;
|
qreal GetRadius () const;
|
||||||
|
|
||||||
VPointF GetCenter () const;
|
VPointF GetCenter () const;
|
||||||
|
void SetCenter (const VPointF &value);
|
||||||
|
|
||||||
|
qreal GetLength () const;
|
||||||
QPointF GetP1() const;
|
QPointF GetP1() const;
|
||||||
QPointF GetP2 () const;
|
QPointF GetP2 () const;
|
||||||
qreal AngleArc() const;
|
qreal AngleArc() const;
|
||||||
|
|
|
@ -29,8 +29,10 @@
|
||||||
#include "vtoolarc.h"
|
#include "vtoolarc.h"
|
||||||
#include "../../container/calculator.h"
|
#include "../../container/calculator.h"
|
||||||
#include "../../dialogs/tools/dialogarc.h"
|
#include "../../dialogs/tools/dialogarc.h"
|
||||||
#include <QKeyEvent>
|
|
||||||
#include "../../geometry/varc.h"
|
#include "../../geometry/varc.h"
|
||||||
|
#include "../container/vformula.h"
|
||||||
|
|
||||||
|
#include <QKeyEvent>
|
||||||
|
|
||||||
const QString VToolArc::TagName = QStringLiteral("arc");
|
const QString VToolArc::TagName = QStringLiteral("arc");
|
||||||
const QString VToolArc::ToolType = QStringLiteral("simple");
|
const QString VToolArc::ToolType = QStringLiteral("simple");
|
||||||
|
@ -170,6 +172,101 @@ QString VToolArc::getTagName() const
|
||||||
return VToolArc::TagName;
|
return VToolArc::TagName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
quint32 VToolArc::getCenter() const
|
||||||
|
{
|
||||||
|
QSharedPointer<VArc> arc = VAbstractTool::data.GeometricObject<VArc>(id);
|
||||||
|
SCASSERT(arc.isNull() == false);
|
||||||
|
|
||||||
|
return arc->GetCenter().id();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VToolArc::setCenter(const quint32 &value)
|
||||||
|
{
|
||||||
|
QSharedPointer<VGObject> obj = VAbstractTool::data.GetGObject(id);
|
||||||
|
QSharedPointer<VArc> arc = qSharedPointerDynamicCast<VArc>(obj);
|
||||||
|
|
||||||
|
QSharedPointer<VPointF> point = VAbstractTool::data.GeometricObject<VPointF>(value);
|
||||||
|
arc->SetCenter(*point.data());
|
||||||
|
SaveOption(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
VFormula VToolArc::getFormulaRadius() const
|
||||||
|
{
|
||||||
|
QSharedPointer<VArc> arc = VAbstractTool::data.GeometricObject<VArc>(id);
|
||||||
|
SCASSERT(arc.isNull() == false);
|
||||||
|
|
||||||
|
VFormula radius(arc->GetFormulaRadius(), getData());
|
||||||
|
radius.setCheckZero(true);
|
||||||
|
radius.setToolId(id);
|
||||||
|
radius.setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit()));
|
||||||
|
return radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VToolArc::setFormulaRadius(const VFormula &value)
|
||||||
|
{
|
||||||
|
if (value.error() == false)
|
||||||
|
{
|
||||||
|
QSharedPointer<VGObject> obj = VAbstractTool::data.GetGObject(id);
|
||||||
|
QSharedPointer<VArc> arc = qSharedPointerDynamicCast<VArc>(obj);
|
||||||
|
arc->SetFormulaRadius(value);
|
||||||
|
SaveOption(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
VFormula VToolArc::getFormulaF1() const
|
||||||
|
{
|
||||||
|
QSharedPointer<VArc> arc = VAbstractTool::data.GeometricObject<VArc>(id);
|
||||||
|
SCASSERT(arc.isNull() == false);
|
||||||
|
|
||||||
|
VFormula f1(arc->GetFormulaF1(), getData());
|
||||||
|
f1.setCheckZero(false);
|
||||||
|
f1.setToolId(id);
|
||||||
|
f1.setPostfix(QStringLiteral("°"));
|
||||||
|
return f1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VToolArc::setFormulaF1(const VFormula &value)
|
||||||
|
{
|
||||||
|
if (value.error() == false)
|
||||||
|
{
|
||||||
|
QSharedPointer<VGObject> obj = VAbstractTool::data.GetGObject(id);
|
||||||
|
QSharedPointer<VArc> arc = qSharedPointerDynamicCast<VArc>(obj);
|
||||||
|
arc->SetFormulaF1(value);
|
||||||
|
SaveOption(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
VFormula VToolArc::getFormulaF2() const
|
||||||
|
{
|
||||||
|
QSharedPointer<VArc> arc = VAbstractTool::data.GeometricObject<VArc>(id);
|
||||||
|
SCASSERT(arc.isNull() == false);
|
||||||
|
|
||||||
|
VFormula f2(arc->GetFormulaF2(), getData());
|
||||||
|
f2.setCheckZero(false);
|
||||||
|
f2.setToolId(id);
|
||||||
|
f2.setPostfix(QStringLiteral("°"));
|
||||||
|
return f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VToolArc::setFormulaF2(const VFormula &value)
|
||||||
|
{
|
||||||
|
if (value.error() == false)
|
||||||
|
{
|
||||||
|
QSharedPointer<VGObject> obj = VAbstractTool::data.GetGObject(id);
|
||||||
|
QSharedPointer<VArc> arc = qSharedPointerDynamicCast<VArc>(obj);
|
||||||
|
arc->SetFormulaF2(value);
|
||||||
|
SaveOption(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief FullUpdateFromFile update tool data form file.
|
* @brief FullUpdateFromFile update tool data form file.
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
|
|
||||||
#include "vabstractspline.h"
|
#include "vabstractspline.h"
|
||||||
|
|
||||||
|
class VFormula;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The VToolArc class tool for creation arc.
|
* @brief The VToolArc class tool for creation arc.
|
||||||
*/
|
*/
|
||||||
|
@ -49,6 +51,18 @@ public:
|
||||||
virtual int type() const {return Type;}
|
virtual int type() const {return Type;}
|
||||||
enum { Type = UserType + static_cast<int>(Tool::Arc)};
|
enum { Type = UserType + static_cast<int>(Tool::Arc)};
|
||||||
virtual QString getTagName() const;
|
virtual QString getTagName() const;
|
||||||
|
|
||||||
|
quint32 getCenter() const;
|
||||||
|
void setCenter(const quint32 &value);
|
||||||
|
|
||||||
|
VFormula getFormulaRadius() const;
|
||||||
|
void setFormulaRadius(const VFormula &value);
|
||||||
|
|
||||||
|
VFormula getFormulaF1() const;
|
||||||
|
void setFormulaF1(const VFormula &value);
|
||||||
|
|
||||||
|
VFormula getFormulaF2() const;
|
||||||
|
void setFormulaF2(const VFormula &value);
|
||||||
public slots:
|
public slots:
|
||||||
virtual void FullUpdateFromFile();
|
virtual void FullUpdateFromFile();
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -181,7 +181,7 @@ void VFormulaProperty::setFormula(const VFormula &formula)
|
||||||
value.convert(VFormula::FormulaTypeId());
|
value.convert(VFormula::FormulaTypeId());
|
||||||
VProperty::d_ptr->VariantValue = value;
|
VProperty::d_ptr->VariantValue = value;
|
||||||
|
|
||||||
QVariant tmpValue(formula.getValue());
|
QVariant tmpValue(formula.getStringValue());
|
||||||
tmpValue.convert(QVariant::String);
|
tmpValue.convert(QVariant::String);
|
||||||
|
|
||||||
QVariant tmpFormula(formula.getFormula());
|
QVariant tmpFormula(formula.getFormula());
|
||||||
|
|
|
@ -58,7 +58,7 @@ VFormulaPropertyEditor::VFormulaPropertyEditor(QWidget *parent) :
|
||||||
|
|
||||||
// Create the text label
|
// Create the text label
|
||||||
TextLabel = new QLabel(this);
|
TextLabel = new QLabel(this);
|
||||||
TextLabel->setText(formula.getValue());
|
TextLabel->setText(formula.getStringValue());
|
||||||
|
|
||||||
// Spacer (this is needed for proper display of the label and button)
|
// Spacer (this is needed for proper display of the label and button)
|
||||||
Spacer = new QSpacerItem(1, 0, QSizePolicy::Expanding, QSizePolicy::Ignored);
|
Spacer = new QSpacerItem(1, 0, QSizePolicy::Expanding, QSizePolicy::Ignored);
|
||||||
|
@ -78,7 +78,7 @@ void VFormulaPropertyEditor::setFormula(const VFormula& formula)
|
||||||
if (this->formula != formula)
|
if (this->formula != formula)
|
||||||
{
|
{
|
||||||
this->formula = formula;
|
this->formula = formula;
|
||||||
TextLabel->setText(this->formula.getValue());
|
TextLabel->setText(this->formula.getStringValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ void VFormulaPropertyEditor::onToolButtonClicked()
|
||||||
if (tmpWidget->exec() == QDialog::Accepted)
|
if (tmpWidget->exec() == QDialog::Accepted)
|
||||||
{
|
{
|
||||||
formula.setFormula(tmpWidget->getFormula(), FormulaType::ToUser);
|
formula.setFormula(tmpWidget->getFormula(), FormulaType::ToUser);
|
||||||
TextLabel->setText(formula.getValue());
|
TextLabel->setText(formula.getStringValue());
|
||||||
delete tmpWidget;
|
delete tmpWidget;
|
||||||
emit dataChangedByUser(formula, this);
|
emit dataChangedByUser(formula, this);
|
||||||
UserChangeEvent *event = new UserChangeEvent();
|
UserChangeEvent *event = new UserChangeEvent();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user