Merge with DialogTools

--HG--
branch : develop
This commit is contained in:
dismine 2014-06-10 12:05:21 +03:00
commit 695b357c4a
113 changed files with 1855 additions and 556 deletions

View file

@ -93,7 +93,7 @@ void VContainer::setData(const VContainer &data)
qDeleteAll(gObjects); qDeleteAll(gObjects);
gObjects.clear(); gObjects.clear();
const QHash<quint32, VGObject*> *obj = data.DataGObjects(); const QHash<quint32, VGObject*> *obj = data.DataGObjects();
Q_CHECK_PTR(obj); SCASSERT(obj != nullptr);
QHashIterator<quint32, VGObject*> i(*obj); QHashIterator<quint32, VGObject*> i(*obj);
while (i.hasNext()) while (i.hasNext())
{ {
@ -331,7 +331,7 @@ template <typename val>
void VContainer::UpdateObject(QHash<quint32, val> &obj, const quint32 &id, val point) void VContainer::UpdateObject(QHash<quint32, val> &obj, const quint32 &id, val point)
{ {
Q_ASSERT_X(id > 0, Q_FUNC_INFO, "id <= 0"); Q_ASSERT_X(id > 0, Q_FUNC_INFO, "id <= 0");
Q_CHECK_PTR(point); SCASSERT(point != nullptr);
point->setId(id); point->setId(id);
if (gObjects.contains(id)) if (gObjects.contains(id))
{ {
@ -542,7 +542,7 @@ void VContainer::AddLine(const quint32 &firstPointId, const quint32 &secondPoint
template <typename key, typename val> template <typename key, typename val>
quint32 VContainer::AddObject(QHash<key, val> &obj, val value) quint32 VContainer::AddObject(QHash<key, val> &obj, val value)
{ {
Q_CHECK_PTR(value); SCASSERT(value != nullptr);
quint32 id = getNextId(); quint32 id = getNextId();
value->setId(id); value->setId(id);
obj[id] = value; obj[id] = value;

View file

@ -73,7 +73,7 @@ public:
try try
{ {
T obj = dynamic_cast<T>(gObj); T obj = dynamic_cast<T>(gObj);
Q_CHECK_PTR(obj); SCASSERT(obj != nullptr);
return obj; return obj;
} }
catch (const std::bad_alloc &) catch (const std::bad_alloc &)

View file

@ -32,8 +32,6 @@
#include <QDate> #include <QDate>
#include <QDesktopServices> #include <QDesktopServices>
#include <QMessageBox> #include <QMessageBox>
#include <QDesktopServices>
#include <QMessageBox>
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
DialogAboutApp::DialogAboutApp(QWidget *parent) : DialogAboutApp::DialogAboutApp(QWidget *parent) :

View file

@ -153,7 +153,7 @@ void DialogHistory::FillTable()
{ {
ui->tableWidget->clear(); ui->tableWidget->clear();
const QVector<VToolRecord> *history = doc->getHistory(); const QVector<VToolRecord> *history = doc->getHistory();
Q_CHECK_PTR(history); SCASSERT(history != nullptr);
qint32 currentRow = -1; qint32 currentRow = -1;
qint32 count = 0; qint32 count = 0;
ui->tableWidget->setRowCount(history->size()); ui->tableWidget->setRowCount(history->size());
@ -188,7 +188,7 @@ void DialogHistory::FillTable()
{ {
cursorRow = currentRow; cursorRow = currentRow;
QTableWidgetItem *item = ui->tableWidget->item(cursorRow, 0); QTableWidgetItem *item = ui->tableWidget->item(cursorRow, 0);
Q_CHECK_PTR(item); SCASSERT(item != nullptr);
item->setIcon(QIcon("://icon/32x32/put_after.png")); item->setIcon(QIcon("://icon/32x32/put_after.png"));
} }
ui->tableWidget->resizeColumnsToContents(); ui->tableWidget->resizeColumnsToContents();
@ -290,7 +290,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
case Valentina::SplineTool: case Valentina::SplineTool:
{ {
const VSpline *spl = data->GeometricObject<const VSpline *>(tool.getId()); const VSpline *spl = data->GeometricObject<const VSpline *>(tool.getId());
Q_CHECK_PTR(spl); SCASSERT(spl != nullptr);
const QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name(); const QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name();
const QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name(); const QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name();
return QString(tr("Curve %1_%2")).arg(splP1Name, splP4Name); return QString(tr("Curve %1_%2")).arg(splP1Name, splP4Name);
@ -298,14 +298,14 @@ QString DialogHistory::Record(const VToolRecord &tool)
case Valentina::ArcTool: case Valentina::ArcTool:
{ {
const VArc *arc = data->GeometricObject<const VArc *>(tool.getId()); const VArc *arc = data->GeometricObject<const VArc *>(tool.getId());
Q_CHECK_PTR(arc); SCASSERT(arc != nullptr);
const QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name(); const QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name();
return QString(tr("Arc with center in point %1")).arg(arcCenterName); return QString(tr("Arc with center in point %1")).arg(arcCenterName);
} }
case Valentina::SplinePathTool: case Valentina::SplinePathTool:
{ {
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(tool.getId()); const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(tool.getId());
Q_CHECK_PTR(splPath); SCASSERT(splPath != nullptr);
const QVector<VSplinePoint> points = splPath->GetSplinePath(); const QVector<VSplinePoint> points = splPath->GetSplinePath();
QString record; QString record;
if (points.size() != 0 ) if (points.size() != 0 )
@ -376,7 +376,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
{ {
const quint32 arcId = doc->GetParametrUInt(domElement, VToolCutArc::AttrArc, "0"); const quint32 arcId = doc->GetParametrUInt(domElement, VToolCutArc::AttrArc, "0");
const VArc *arc = data->GeometricObject<const VArc *>(arcId); const VArc *arc = data->GeometricObject<const VArc *>(arcId);
Q_CHECK_PTR(arc); SCASSERT(arc != nullptr);
const QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name(); const QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name(); const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%1 - cut arc with center %2")).arg(toolIdName, arcCenterName); return QString(tr("%1 - cut arc with center %2")).arg(toolIdName, arcCenterName);
@ -385,7 +385,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
{ {
const quint32 splineId = doc->GetParametrUInt(domElement, VToolCutSpline::AttrSpline, "0"); const quint32 splineId = doc->GetParametrUInt(domElement, VToolCutSpline::AttrSpline, "0");
const VSpline *spl = data->GeometricObject<const VSpline *>(splineId); const VSpline *spl = data->GeometricObject<const VSpline *>(splineId);
Q_CHECK_PTR(spl); SCASSERT(spl != nullptr);
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name(); const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
const QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name(); const QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name();
const QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name(); const QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name();
@ -395,7 +395,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
{ {
const quint32 splinePathId = doc->GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, "0"); const quint32 splinePathId = doc->GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, "0");
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(splinePathId); const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(splinePathId);
Q_CHECK_PTR(splPath); SCASSERT(splPath != nullptr);
const QVector<VSplinePoint> points = splPath->GetSplinePath(); const QVector<VSplinePoint> points = splPath->GetSplinePath();
QString record; QString record;
if (points.size() != 0 ) if (points.size() != 0 )

View file

@ -48,6 +48,10 @@ public:
virtual ~DialogHistory(); virtual ~DialogHistory();
public slots: public slots:
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void cellClicked(int row, int column); void cellClicked(int row, int column);
void ChangedCursor(quint32 id); void ChangedCursor(quint32 id);
void UpdateHistory(); void UpdateHistory();

View file

@ -48,6 +48,10 @@ public:
DialogIncrements(VContainer *data, VPattern *doc, QWidget *parent = nullptr); DialogIncrements(VContainer *data, VPattern *doc, QWidget *parent = nullptr);
~DialogIncrements(); ~DialogIncrements();
public slots: public slots:
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void clickedToolButtonAdd(); void clickedToolButtonAdd();
void clickedToolButtonRemove(); void clickedToolButtonRemove();
void IncrementChanged ( qint32 row, qint32 column ); void IncrementChanged ( qint32 row, qint32 column );

View file

@ -46,12 +46,12 @@ DialogIndividualMeasurements::DialogIndividualMeasurements(VContainer *data, con
{ {
const QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok); const QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogIndividualMeasurements::DialogAccepted); connect(bOk, &QPushButton::clicked, this, &DialogIndividualMeasurements::DialogAccepted);
} }
{ {
const QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel); const QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel); SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogIndividualMeasurements::DialogRejected); connect(bCansel, &QPushButton::clicked, this, &DialogIndividualMeasurements::DialogRejected);
} }
@ -176,7 +176,7 @@ void DialogIndividualMeasurements::CheckState()
QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok); QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
bOk->setEnabled(flagName && flagPath); bOk->setEnabled(flagName && flagPath);
} }

View file

@ -37,7 +37,7 @@ DialogPatternProperties::DialogPatternProperties(VPattern *doc, QWidget *parent)
{ {
ui->setupUi(this); ui->setupUi(this);
Q_CHECK_PTR(doc); SCASSERT(doc != nullptr);
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(),
QApplication::applicationName()); QApplication::applicationName());
@ -52,11 +52,11 @@ DialogPatternProperties::DialogPatternProperties(VPattern *doc, QWidget *parent)
ui->plainTextEditTechNotes->setPlainText(this->doc->UniqueTagText("notes")); ui->plainTextEditTechNotes->setPlainText(this->doc->UniqueTagText("notes"));
QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok); QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogPatternProperties::Apply); connect(bOk, &QPushButton::clicked, this, &DialogPatternProperties::Apply);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel); QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel); SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogPatternProperties::close); connect(bCansel, &QPushButton::clicked, this, &DialogPatternProperties::close);
connect(this, &DialogPatternProperties::haveChange, this->doc, &VPattern::haveLiteChange); connect(this, &DialogPatternProperties::haveChange, this->doc, &VPattern::haveLiteChange);

View file

@ -42,12 +42,12 @@ DialogStandardMeasurements::DialogStandardMeasurements(VContainer *data, const Q
{ {
const QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok); const QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogAccepted); connect(bOk, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogAccepted);
} }
{ {
const QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel); const QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel); SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogRejected); connect(bCansel, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogRejected);
} }
@ -121,7 +121,7 @@ void DialogStandardMeasurements::CheckState()
bool flagTable = false; bool flagTable = false;
{ {
const QComboBox *box = ui->comboBoxTables; const QComboBox *box = ui->comboBoxTables;
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
if (box->count() > 0 && box->currentIndex() != -1) if (box->count() > 0 && box->currentIndex() != -1)
{ {
flagTable = true; flagTable = true;
@ -129,7 +129,7 @@ void DialogStandardMeasurements::CheckState()
} }
QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok); QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
bOk->setEnabled(flagTable && flagName); bOk->setEnabled(flagTable && flagName);
} }

View file

@ -43,12 +43,14 @@ DialogAlongLine::DialogAlongLine(const VContainer *data, QWidget *parent)
{ {
ui->setupUi(this); ui->setupUi(this);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula; plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
this->formulaBaseHeight=ui->plainTextEditFormula->height();
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;
InitOkCansel(ui); InitOkCancelApply(ui);
CheckState(); CheckState();
FillComboBoxTypeLine(ui->comboBoxLineType); FillComboBoxTypeLine(ui->comboBoxLineType);
@ -60,9 +62,38 @@ DialogAlongLine::DialogAlongLine(const VContainer *data, QWidget *parent)
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogAlongLine::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogAlongLine::PutHere);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogAlongLine::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogAlongLine::NamePointChanged);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogAlongLine::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogAlongLine::EvalFormula);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogAlongLine::FormulaChanged); connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogAlongLine::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogAlongLine::DeployFormulaTextEdit);
InitVariables(ui); InitVariables(ui);
connect(listWidget, &QListWidget::itemDoubleClicked, this, &DialogTool::PutVal); connect(listWidget, &QListWidget::itemDoubleClicked, this, &DialogTool::PutVal);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogAlongLine::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogAlongLine::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGALONLINE_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGALONLINE_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -108,13 +139,26 @@ void DialogAlongLine::ChoosedObject(quint32 id, const Valentina::Scenes &type)
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
void DialogAlongLine::DialogAccepted() void DialogAlongLine::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogAlongLine::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogAlongLine::SaveData()
{ {
pointName = ui->lineEditNamePoint->text(); pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType); typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text(); formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint); firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint);
secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint); secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint);
emit DialogClosed(QDialog::Accepted);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -147,7 +191,12 @@ void DialogAlongLine::setFirstPointId(const quint32 &value, const quint32 &id)
void DialogAlongLine::setFormula(const QString &value) void DialogAlongLine::setFormula(const QString &value)
{ {
formula = qApp->FormulaToUser(value); formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula); // increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -31,6 +31,7 @@
#include "dialogtool.h" #include "dialogtool.h"
#define DIALOGALONLINE_MAX_FORMULA_HEIGHT 64
namespace Ui namespace Ui
{ {
class DialogAlongLine; class DialogAlongLine;
@ -62,6 +63,18 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private: private:
Q_DISABLE_COPY(DialogAlongLine) Q_DISABLE_COPY(DialogAlongLine)
@ -85,6 +98,14 @@ private:
/** @brief secondPointId id second point of line */ /** @brief secondPointId id second point of line */
quint32 secondPointId; quint32 secondPointId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -74,11 +74,17 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEditFormula"> <spacer name="horizontalSpacer">
<property name="toolTip"> <property name="orientation">
<string>Formula for the calculation of length of line</string> <enum>Qt::Horizontal</enum>
</property> </property>
</widget> <property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item> </item>
<item> <item>
<widget class="QToolButton" name="toolButtonPutHere"> <widget class="QToolButton" name="toolButtonPutHere">
@ -150,6 +156,55 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../share/resources/theme.qrc">
<normaloff>:/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png</normaloff>:/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png</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>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
@ -390,14 +445,13 @@
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>toolButtonEqual</tabstop> <tabstop>toolButtonEqual</tabstop>
<tabstop>lineEditNamePoint</tabstop> <tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxFirstPoint</tabstop> <tabstop>comboBoxFirstPoint</tabstop>
@ -414,6 +468,7 @@
</tabstops> </tabstops>
<resources> <resources>
<include location="../../share/resources/icon.qrc"/> <include location="../../share/resources/icon.qrc"/>
<include location="../../share/resources/theme.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>

View file

@ -53,7 +53,7 @@ DialogArc::DialogArc(const VContainer *data, QWidget *parent)
timerF2 = new QTimer(this); timerF2 = new QTimer(this);
connect(timerF2, &QTimer::timeout, this, &DialogArc::EvalF2); connect(timerF2, &QTimer::timeout, this, &DialogArc::EvalF2);
InitOkCansel(ui); InitOkCancel(ui);
FillComboBoxPoints(ui->comboBoxBasePoint); FillComboBoxPoints(ui->comboBoxBasePoint);
@ -250,7 +250,7 @@ void DialogArc::F2Changed()
*/ */
void DialogArc::CheckState() void DialogArc::CheckState()
{ {
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
bOk->setEnabled(flagRadius && flagF1 && flagF2); bOk->setEnabled(flagRadius && flagF1 && flagF2);
} }
@ -294,7 +294,7 @@ void DialogArc::ShowLineAngles()
ui->listWidget->clear(); ui->listWidget->clear();
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogArc::ValChenged); connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogArc::ValChenged);
const QHash<QString, qreal> *lineAnglesTable = data->DataLineAngles(); const QHash<QString, qreal> *lineAnglesTable = data->DataLineAngles();
Q_CHECK_PTR(lineAnglesTable); SCASSERT(lineAnglesTable != nullptr);
QHashIterator<QString, qreal> i(*lineAnglesTable); QHashIterator<QString, qreal> i(*lineAnglesTable);
while (i.hasNext()) while (i.hasNext())
{ {

View file

@ -60,6 +60,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
virtual void ValChenged(int row); virtual void ValChenged(int row);
void PutRadius(); void PutRadius();
void PutF1(); void PutF1();

View file

@ -44,10 +44,13 @@ DialogBisector::DialogBisector(const VContainer *data, QWidget *parent)
ui->setupUi(this); ui->setupUi(this);
InitVariables(ui); InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula; plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
InitOkCancelApply(ui);
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;
CheckState(); CheckState();
@ -62,7 +65,36 @@ DialogBisector::DialogBisector(const VContainer *data, QWidget *parent)
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogBisector::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogBisector::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogBisector::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogBisector::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogBisector::FormulaChanged); connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogBisector::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogBisector::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogBisector::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogBisector::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGBISECTOR_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGBISECTOR_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -151,7 +183,12 @@ void DialogBisector::setTypeLine(const QString &value)
void DialogBisector::setFormula(const QString &value) void DialogBisector::setFormula(const QString &value)
{ {
formula = qApp->FormulaToUser(value); formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula); // increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -192,12 +229,25 @@ void DialogBisector::setThirdPointId(const quint32 &value, const quint32 &id)
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
void DialogBisector::DialogAccepted() void DialogBisector::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogBisector::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogBisector::SaveData()
{ {
pointName = ui->lineEditNamePoint->text(); pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType); typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text(); formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint); firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint);
secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint); secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint);
thirdPointId = getCurrentObjectId(ui->comboBoxThirdPoint); thirdPointId = getCurrentObjectId(ui->comboBoxThirdPoint);
emit DialogClosed(QDialog::Accepted);
} }

View file

@ -31,6 +31,7 @@
#include "dialogtool.h" #include "dialogtool.h"
#define DIALOGBISECTOR_MAX_FORMULA_HEIGHT 64
namespace Ui namespace Ui
{ {
class DialogBisector; class DialogBisector;
@ -67,6 +68,18 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private: private:
Q_DISABLE_COPY(DialogBisector) Q_DISABLE_COPY(DialogBisector)
@ -93,6 +106,14 @@ private:
/** @brief thirdPointId id of third point */ /** @brief thirdPointId id of third point */
quint32 thirdPointId; quint32 thirdPointId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -71,17 +71,17 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEditFormula"> <spacer name="horizontalSpacer">
<property name="sizePolicy"> <property name="orientation">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <enum>Qt::Horizontal</enum>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="toolTip"> <property name="sizeHint" stdset="0">
<string>Calculation of length of bisector by using the formula</string> <size>
<width>40</width>
<height>20</height>
</size>
</property> </property>
</widget> </spacer>
</item> </item>
<item> <item>
<widget class="QToolButton" name="toolButtonPutHere"> <widget class="QToolButton" name="toolButtonPutHere">
@ -147,6 +147,54 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png"/>
</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>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
@ -429,14 +477,13 @@
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>lineEditNamePoint</tabstop> <tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxFirstPoint</tabstop> <tabstop>comboBoxFirstPoint</tabstop>
<tabstop>comboBoxSecondPoint</tabstop> <tabstop>comboBoxSecondPoint</tabstop>

View file

@ -41,14 +41,15 @@ DialogCutArc::DialogCutArc(const VContainer *data, QWidget *parent) :
ui->setupUi(this); ui->setupUi(this);
InitVariables(ui); InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula; plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); InitOkCancelApply(ui);
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;
CheckState(); CheckState();
this->formulaBaseHeight=ui->plainTextEditFormula->height();
FillComboBoxArcs(ui->comboBoxArc); FillComboBoxArcs(ui->comboBoxArc);
@ -57,7 +58,36 @@ DialogCutArc::DialogCutArc(const VContainer *data, QWidget *parent) :
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutArc::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutArc::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutArc::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutArc::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogCutArc::FormulaChanged); connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogCutArc::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogCutArc::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogCutArc::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogCutArc::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGCUTARC_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGCUTARC_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -89,12 +119,25 @@ void DialogCutArc::ChoosedObject(quint32 id, const Valentina::Scenes &type)
*/ */
void DialogCutArc::DialogAccepted() void DialogCutArc::DialogAccepted()
{ {
pointName = ui->lineEditNamePoint->text(); this->SaveData();
formula = ui->lineEditFormula->text();
arcId = getCurrentObjectId(ui->comboBoxArc);
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogCutArc::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogCutArc::SaveData()
{
pointName = ui->lineEditNamePoint->text();
formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
arcId = getCurrentObjectId(ui->comboBoxArc);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief setArcId set id of arc * @brief setArcId set id of arc
@ -114,7 +157,12 @@ void DialogCutArc::setArcId(const quint32 &value, const quint32 &id)
void DialogCutArc::setFormula(const QString &value) void DialogCutArc::setFormula(const QString &value)
{ {
formula = qApp->FormulaToUser(value); formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula); // increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -31,6 +31,7 @@
#include "dialogtool.h" #include "dialogtool.h"
#define DIALOGCUTARC_MAX_FORMULA_HEIGHT 64
namespace Ui namespace Ui
{ {
class DialogCutArc; class DialogCutArc;
@ -43,6 +44,7 @@ class DialogCutArc : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
DialogCutArc(const VContainer *data, QWidget *parent = nullptr); DialogCutArc(const VContainer *data, QWidget *parent = nullptr);
~DialogCutArc(); ~DialogCutArc();
@ -57,6 +59,18 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private: private:
Q_DISABLE_COPY(DialogCutArc) Q_DISABLE_COPY(DialogCutArc)
/** @brief ui keeps information about user interface */ /** @brief ui keeps information about user interface */
@ -70,6 +84,13 @@ private:
/** @brief arcId keep id of arc */ /** @brief arcId keep id of arc */
quint32 arcId; quint32 arcId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -67,17 +67,17 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEditFormula"> <spacer name="horizontalSpacer">
<property name="sizePolicy"> <property name="orientation">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <enum>Qt::Horizontal</enum>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="toolTip"> <property name="sizeHint" stdset="0">
<string>Formula for the calculation of the spline</string> <size>
<width>40</width>
<height>20</height>
</size>
</property> </property>
</widget> </spacer>
</item> </item>
<item> <item>
<widget class="QToolButton" name="toolButtonPutHere"> <widget class="QToolButton" name="toolButtonPutHere">
@ -140,6 +140,56 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<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>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
@ -353,7 +403,7 @@
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>

View file

@ -44,7 +44,7 @@ DialogCutSpline::DialogCutSpline(const VContainer *data, QWidget *parent)
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); InitOkCancel(ui);
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;

View file

@ -57,6 +57,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogCutSpline) Q_DISABLE_COPY(DialogCutSpline)

View file

@ -46,7 +46,7 @@ DialogCutSplinePath::DialogCutSplinePath(const VContainer *data, QWidget *parent
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); InitOkCancel(ui);
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;
CheckState(); CheckState();

View file

@ -57,6 +57,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogCutSplinePath) Q_DISABLE_COPY(DialogCutSplinePath)

View file

@ -44,10 +44,10 @@ DialogDetail::DialogDetail(const VContainer *data, QWidget *parent)
labelEditNamePoint = ui.labelEditNameDetail; labelEditNamePoint = ui.labelEditNameDetail;
bOk = ui.buttonBox->button(QDialogButtonBox::Ok); bOk = ui.buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted); connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted);
QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel); QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel); SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected); connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
flagName = true;//We have default name of detail. flagName = true;//We have default name of detail.
@ -217,7 +217,7 @@ void DialogDetail::BiasXChanged(qreal d)
{ {
qint32 row = ui.listWidget->currentRow(); qint32 row = ui.listWidget->currentRow();
QListWidgetItem *item = ui.listWidget->item( row ); QListWidgetItem *item = ui.listWidget->item( row );
Q_CHECK_PTR(item); SCASSERT(item != nullptr);
VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole)); VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole));
node.setMx(qApp->toPixel(d)); node.setMx(qApp->toPixel(d));
item->setData(Qt::UserRole, QVariant::fromValue(node)); item->setData(Qt::UserRole, QVariant::fromValue(node));
@ -232,7 +232,7 @@ void DialogDetail::BiasYChanged(qreal d)
{ {
qint32 row = ui.listWidget->currentRow(); qint32 row = ui.listWidget->currentRow();
QListWidgetItem *item = ui.listWidget->item( row ); QListWidgetItem *item = ui.listWidget->item( row );
Q_CHECK_PTR(item); SCASSERT(item != nullptr);
VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole)); VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole));
node.setMy(qApp->toPixel(d)); node.setMy(qApp->toPixel(d));
item->setData(Qt::UserRole, QVariant::fromValue(node)); item->setData(Qt::UserRole, QVariant::fromValue(node));

View file

@ -46,6 +46,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void BiasXChanged(qreal d); void BiasXChanged(qreal d);
void BiasYChanged(qreal d); void BiasYChanged(qreal d);
void ClickedSeams(bool checked); void ClickedSeams(bool checked);

View file

@ -41,7 +41,7 @@ DialogEditWrongFormula::DialogEditWrongFormula(const VContainer *data, QWidget *
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelFormula; labelEditFormula = ui->labelFormula;
InitOkCansel(ui); InitOkCancel(ui);
flagFormula = false; flagFormula = false;
CheckState(); CheckState();
@ -85,7 +85,7 @@ void DialogEditWrongFormula::DialogRejected()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogEditWrongFormula::CheckState() void DialogEditWrongFormula::CheckState()
{ {
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
bOk->setEnabled(flagFormula); bOk->setEnabled(flagFormula);
} }

View file

@ -44,11 +44,13 @@ DialogEndLine::DialogEndLine(const VContainer *data, QWidget *parent)
ui->setupUi(this); ui->setupUi(this);
InitVariables(ui); InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula; plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); this->formulaBaseHeight=ui->plainTextEditFormula->height();
InitOkCancelApply(ui);
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;
CheckState(); CheckState();
@ -62,7 +64,37 @@ DialogEndLine::DialogEndLine(const VContainer *data, QWidget *parent)
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogEndLine::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogEndLine::PutVal);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogEndLine::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogEndLine::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogEndLine::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogEndLine::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogEndLine::FormulaChanged); connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogEndLine::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogEndLine::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogEndLine::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogEndLine::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGENDLINE_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGENDLINE_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -112,7 +144,16 @@ void DialogEndLine::setTypeLine(const QString &value)
void DialogEndLine::setFormula(const QString &value) void DialogEndLine::setFormula(const QString &value)
{ {
formula = qApp->FormulaToUser(value); formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula); // increase height if needed. TODO : see if I can get the max number of caracters in one line
// of this PlainTextEdit to change 80 to this value
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
//QTextCursor cursor = ui->plainTextEditFormula->textCursor();
//cursor.insertText(value);
//ui->plainTextEditFormula->setCursor(cursor);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -142,13 +183,26 @@ void DialogEndLine::setBasePointId(const quint32 &value, const quint32 &id)
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
void DialogEndLine::DialogAccepted() void DialogEndLine::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogEndLine::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogEndLine::SaveData()
{ {
pointName = ui->lineEditNamePoint->text(); pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType); typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text(); formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
angle = ui->doubleSpinBoxAngle->value(); angle = ui->doubleSpinBoxAngle->value();
basePointId = getCurrentObjectId(ui->comboBoxBasePoint); basePointId = getCurrentObjectId(ui->comboBoxBasePoint);
emit DialogClosed(QDialog::Accepted);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -31,6 +31,8 @@
#include "dialogtool.h" #include "dialogtool.h"
#define DIALOGENDLINE_MAX_FORMULA_HEIGHT 64
namespace Ui namespace Ui
{ {
class DialogEndLine; class DialogEndLine;
@ -63,6 +65,18 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private: private:
Q_DISABLE_COPY(DialogEndLine) Q_DISABLE_COPY(DialogEndLine)
@ -83,6 +97,13 @@ private:
/** @brief basePointId id base point of line */ /** @brief basePointId id base point of line */
quint32 basePointId; quint32 basePointId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>584</width> <width>486</width>
<height>718</height> <height>586</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -80,17 +80,17 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEditFormula"> <spacer name="horizontalSpacer">
<property name="sizePolicy"> <property name="orientation">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <enum>Qt::Horizontal</enum>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="toolTip"> <property name="sizeHint" stdset="0">
<string>Formula for calculation of length of line</string> <size>
<width>40</width>
<height>20</height>
</size>
</property> </property>
</widget> </spacer>
</item> </item>
<item> <item>
<widget class="QToolButton" name="toolButtonPutHere"> <widget class="QToolButton" name="toolButtonPutHere">
@ -153,6 +153,58 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
<property name="baseSize">
<size>
<width>4</width>
<height>0</height>
</size>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../share/resources/theme.qrc">
<normaloff>:/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png</normaloff>:/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png</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>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
@ -594,14 +646,13 @@
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>comboBoxBasePoint</tabstop> <tabstop>comboBoxBasePoint</tabstop>
<tabstop>lineEditNamePoint</tabstop> <tabstop>lineEditNamePoint</tabstop>
<tabstop>doubleSpinBoxAngle</tabstop> <tabstop>doubleSpinBoxAngle</tabstop>
@ -626,6 +677,7 @@
</tabstops> </tabstops>
<resources> <resources>
<include location="../../share/resources/icon.qrc"/> <include location="../../share/resources/icon.qrc"/>
<include location="../../share/resources/theme.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>

View file

@ -43,7 +43,7 @@ DialogHeight::DialogHeight(const VContainer *data, QWidget *parent)
{ {
ui->setupUi(this); ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); InitOkCancel(ui);
flagName = false; flagName = false;
CheckState(); CheckState();

View file

@ -63,6 +63,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogHeight) Q_DISABLE_COPY(DialogHeight)

View file

@ -41,7 +41,7 @@ DialogLine::DialogLine(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogLine), number(0), firstPoint(0), secondPoint(0), typeLine(QString()) :DialogTool(data, parent), ui(new Ui::DialogLine), number(0), firstPoint(0), secondPoint(0), typeLine(QString())
{ {
ui->setupUi(this); ui->setupUi(this);
InitOkCansel(ui); InitOkCancel(ui);
FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui->comboBoxSecondPoint); FillComboBoxPoints(ui->comboBoxSecondPoint);

View file

@ -57,6 +57,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogLine) Q_DISABLE_COPY(DialogLine)

View file

@ -43,7 +43,7 @@ DialogLineIntersect::DialogLineIntersect(const VContainer *data, QWidget *parent
{ {
ui->setupUi(this); ui->setupUi(this);
number = 0; number = 0;
InitOkCansel(ui); InitOkCancel(ui);
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
flagName = false; flagName = false;
@ -208,7 +208,7 @@ void DialogLineIntersect::P2Line2Changed(int index)
*/ */
void DialogLineIntersect::CheckState() void DialogLineIntersect::CheckState()
{ {
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
bOk->setEnabled(flagName && flagPoint); bOk->setEnabled(flagName && flagPoint);
} }

View file

@ -63,6 +63,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void P1Line1Changed( int index); void P1Line1Changed( int index);
void P2Line1Changed( int index); void P2Line1Changed( int index);
void P1Line2Changed( int index); void P1Line2Changed( int index);

View file

@ -44,10 +44,12 @@ DialogNormal::DialogNormal(const VContainer *data, QWidget *parent)
ui->setupUi(this); ui->setupUi(this);
InitVariables(ui); InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula; plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); InitOkCancelApply(ui);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;
@ -63,7 +65,34 @@ DialogNormal::DialogNormal(const VContainer *data, QWidget *parent)
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogNormal::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogNormal::PutVal);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogNormal::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogNormal::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogNormal::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogNormal::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogNormal::FormulaChanged); connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogNormal::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogNormal::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogNormal::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogNormal::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGNORMAL_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGNORMAL_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next"));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down"));
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -109,14 +138,27 @@ void DialogNormal::ChoosedObject(quint32 id, const Valentina::Scenes &type)
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
void DialogNormal::DialogAccepted() void DialogNormal::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogNormal::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogNormal::SaveData()
{ {
pointName = ui->lineEditNamePoint->text(); pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType); typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text(); formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
angle = ui->doubleSpinBoxAngle->value(); angle = ui->doubleSpinBoxAngle->value();
firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint); firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint);
secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint); secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint);
emit DialogClosed(QDialog::Accepted);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -160,7 +202,12 @@ void DialogNormal::setAngle(const qreal &value)
void DialogNormal::setFormula(const QString &value) void DialogNormal::setFormula(const QString &value)
{ {
formula = qApp->FormulaToUser(value); formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula); // increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -31,6 +31,7 @@
#include "dialogtool.h" #include "dialogtool.h"
#define DIALOGNORMAL_MAX_FORMULA_HEIGHT 64
namespace Ui namespace Ui
{ {
class DialogNormal; class DialogNormal;
@ -66,6 +67,18 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private: private:
Q_DISABLE_COPY(DialogNormal) Q_DISABLE_COPY(DialogNormal)
@ -92,6 +105,13 @@ private:
/** @brief secondPointId id second point of line */ /** @brief secondPointId id second point of line */
quint32 secondPointId; quint32 secondPointId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -74,17 +74,17 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEditFormula"> <spacer name="horizontalSpacer">
<property name="sizePolicy"> <property name="orientation">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <enum>Qt::Horizontal</enum>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="toolTip"> <property name="sizeHint" stdset="0">
<string>Formula for calculation of length of normal</string> <size>
<width>40</width>
<height>20</height>
</size>
</property> </property>
</widget> </spacer>
</item> </item>
<item> <item>
<widget class="QToolButton" name="toolButtonPutHere"> <widget class="QToolButton" name="toolButtonPutHere">
@ -150,6 +150,56 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<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>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
@ -601,14 +651,13 @@
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>lineEditNamePoint</tabstop> <tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxFirstPoint</tabstop> <tabstop>comboBoxFirstPoint</tabstop>
<tabstop>comboBoxSecondPoint</tabstop> <tabstop>comboBoxSecondPoint</tabstop>

View file

@ -37,60 +37,93 @@
* @param parent parent widget * @param parent parent widget
*/ */
DialogPointOfContact::DialogPointOfContact(const VContainer *data, QWidget *parent) DialogPointOfContact::DialogPointOfContact(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(), number(0), pointName(QString()), radius(QString()), center(0), :DialogTool(data, parent), ui(new Ui::DialogPointOfContact), number(0), pointName(QString()), radius(QString()), center(0),
firstPoint(0), secondPoint(0) firstPoint(0), secondPoint(0)
{ {
ui.setupUi(this); ui->setupUi(this);
listWidget = ui.listWidget; InitVariables(ui);
labelResultCalculation = ui.labelResultCalculation; listWidget = ui->listWidget;
labelDescription = ui.labelDescription; labelResultCalculation = ui->labelResultCalculation;
radioButtonSizeGrowth = ui.radioButtonSizeGrowth; labelDescription = ui->labelDescription;
radioButtonStandardTable = ui.radioButtonStandardTable; radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonIncrements = ui.radioButtonIncrements; radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonLengthLine = ui.radioButtonLengthLine; radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthArc = ui.radioButtonLengthArc; radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthCurve = ui.radioButtonLengthSpline; radioButtonLengthArc = ui->radioButtonLengthArc;
lineEditFormula = ui.lineEditFormula; radioButtonLengthCurve = ui->radioButtonLengthSpline;
labelEditFormula = ui.labelEditFormula; plainTextEditFormula = ui->plainTextEditFormula;
labelEditNamePoint = ui.labelEditNamePoint; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
bOk = ui.buttonBox->button(QDialogButtonBox::Ok); this->formulaBaseHeight=ui->plainTextEditFormula->height();
Q_CHECK_PTR(bOk); InitOkCancelApply(ui);
/* bOk = ui.buttonBox->button(QDialogButtonBox::Ok);
SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted); connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted);
QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel); QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel); SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected); connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
*/
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;
CheckState(); CheckState();
FillComboBoxPoints(ui.comboBoxCenter); FillComboBoxPoints(ui->comboBoxCenter);
FillComboBoxPoints(ui.comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui.comboBoxSecondPoint); FillComboBoxPoints(ui->comboBoxSecondPoint);
connect(ui.toolButtonPutHere, &QPushButton::clicked, this, &DialogPointOfContact::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogPointOfContact::PutHere);
connect(ui.listWidget, &QListWidget::itemDoubleClicked, this, &DialogPointOfContact::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogPointOfContact::PutVal);
connect(ui.listWidget, &QListWidget::currentRowChanged, this, &DialogPointOfContact::ValChenged); connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogPointOfContact::ValChenged);
if (qApp->patternType() == Pattern::Standard) if (qApp->patternType() == Pattern::Standard)
{ {
SizeHeight(); SizeHeight();
connect(ui.radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogTool::SizeHeight); connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogTool::SizeHeight);
} }
else else
{ {
radioButtonSizeGrowth->setVisible(false); radioButtonSizeGrowth->setVisible(false);
Measurements(); Measurements();
} }
connect(ui.radioButtonStandardTable, &QRadioButton::clicked, this, &DialogPointOfContact::Measurements); connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogPointOfContact::Measurements);
connect(ui.radioButtonIncrements, &QRadioButton::clicked, this, &DialogPointOfContact::Increments); connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogPointOfContact::Increments);
connect(ui.radioButtonLengthLine, &QRadioButton::clicked, this, &DialogPointOfContact::LengthLines); connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogPointOfContact::LengthLines);
connect(ui.radioButtonLengthArc, &QRadioButton::clicked, this, &DialogPointOfContact::LengthArcs); connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogPointOfContact::LengthArcs);
connect(ui.radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogPointOfContact::LengthCurves); connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogPointOfContact::LengthCurves);
connect(ui.toolButtonEqual, &QPushButton::clicked, this, &DialogPointOfContact::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogPointOfContact::EvalFormula);
connect(ui.lineEditNamePoint, &QLineEdit::textChanged, this, &DialogPointOfContact::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogPointOfContact::NamePointChanged);
connect(ui.lineEditFormula, &QLineEdit::textChanged, this, &DialogPointOfContact::FormulaChanged); connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogPointOfContact::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogPointOfContact::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfContact::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfContact::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGPOINTOFCONTACT_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGPOINTOFCONTACT_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -106,10 +139,10 @@ void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &ty
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
{ {
qint32 index = ui.comboBoxFirstPoint->findText(point->name()); qint32 index = ui->comboBoxFirstPoint->findText(point->name());
if ( index != -1 ) if ( index != -1 )
{ // -1 for not found { // -1 for not found
ui.comboBoxFirstPoint->setCurrentIndex(index); ui->comboBoxFirstPoint->setCurrentIndex(index);
number++; number++;
emit ToolTip(tr("Select second point of line")); emit ToolTip(tr("Select second point of line"));
return; return;
@ -117,10 +150,10 @@ void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &ty
} }
if (number == 1) if (number == 1)
{ {
qint32 index = ui.comboBoxSecondPoint->findText(point->name()); qint32 index = ui->comboBoxSecondPoint->findText(point->name());
if ( index != -1 ) if ( index != -1 )
{ // -1 for not found { // -1 for not found
ui.comboBoxSecondPoint->setCurrentIndex(index); ui->comboBoxSecondPoint->setCurrentIndex(index);
number++; number++;
emit ToolTip(tr("Select point of center of arc")); emit ToolTip(tr("Select point of center of arc"));
return; return;
@ -128,10 +161,10 @@ void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &ty
} }
if (number == 2) if (number == 2)
{ {
qint32 index = ui.comboBoxCenter->findText(point->name()); qint32 index = ui->comboBoxCenter->findText(point->name());
if ( index != -1 ) if ( index != -1 )
{ // -1 for not found { // -1 for not found
ui.comboBoxCenter->setCurrentIndex(index); ui->comboBoxCenter->setCurrentIndex(index);
number = 0; number = 0;
emit ToolTip(""); emit ToolTip("");
} }
@ -149,14 +182,27 @@ void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &ty
*/ */
void DialogPointOfContact::DialogAccepted() void DialogPointOfContact::DialogAccepted()
{ {
pointName = ui.lineEditNamePoint->text(); this->SaveData();
radius = ui.lineEditFormula->text();
center = getCurrentObjectId(ui.comboBoxCenter);
firstPoint = getCurrentObjectId(ui.comboBoxFirstPoint);
secondPoint = getCurrentObjectId(ui.comboBoxSecondPoint);
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfContact::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfContact::SaveData()
{
pointName = ui->lineEditNamePoint->text();
radius = ui->plainTextEditFormula->toPlainText();
radius.replace("\n"," ");
center = getCurrentObjectId(ui->comboBoxCenter);
firstPoint = getCurrentObjectId(ui->comboBoxFirstPoint);
secondPoint = getCurrentObjectId(ui->comboBoxSecondPoint);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief setSecondPoint set id second point * @brief setSecondPoint set id second point
@ -165,7 +211,7 @@ void DialogPointOfContact::DialogAccepted()
*/ */
void DialogPointOfContact::setSecondPoint(const quint32 &value, const quint32 &id) void DialogPointOfContact::setSecondPoint(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui.comboBoxSecondPoint, secondPoint, value, id); setCurrentPointId(ui->comboBoxSecondPoint, secondPoint, value, id);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -176,7 +222,7 @@ void DialogPointOfContact::setSecondPoint(const quint32 &value, const quint32 &i
*/ */
void DialogPointOfContact::setFirstPoint(const quint32 &value, const quint32 &id) void DialogPointOfContact::setFirstPoint(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui.comboBoxFirstPoint, firstPoint, value, id); setCurrentPointId(ui->comboBoxFirstPoint, firstPoint, value, id);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -187,7 +233,7 @@ void DialogPointOfContact::setFirstPoint(const quint32 &value, const quint32 &id
*/ */
void DialogPointOfContact::setCenter(const quint32 &value, const quint32 &id) void DialogPointOfContact::setCenter(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui.comboBoxCenter, center, value, id); setCurrentPointId(ui->comboBoxCenter, center, value, id);
center = value; center = value;
} }
@ -199,7 +245,12 @@ void DialogPointOfContact::setCenter(const quint32 &value, const quint32 &id)
void DialogPointOfContact::setRadius(const QString &value) void DialogPointOfContact::setRadius(const QString &value)
{ {
radius = value; radius = value;
ui.lineEditFormula->setText(radius); // increase height if needed.
if (radius.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(radius);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -210,5 +261,5 @@ void DialogPointOfContact::setRadius(const QString &value)
void DialogPointOfContact::setPointName(const QString &value) void DialogPointOfContact::setPointName(const QString &value)
{ {
pointName = value; pointName = value;
ui.lineEditNamePoint->setText(pointName); ui->lineEditNamePoint->setText(pointName);
} }

View file

@ -32,6 +32,11 @@
#include "ui_dialogpointofcontact.h" #include "ui_dialogpointofcontact.h"
#include "dialogtool.h" #include "dialogtool.h"
#define DIALOGPOINTOFCONTACT_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogPointOfContact;
}
/** /**
* @brief The DialogPointOfContact class dialog for ToolPointOfContact. Help create point and edit option. * @brief The DialogPointOfContact class dialog for ToolPointOfContact. Help create point and edit option.
*/ */
@ -58,11 +63,23 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private: private:
Q_DISABLE_COPY(DialogPointOfContact) Q_DISABLE_COPY(DialogPointOfContact)
/** @brief ui keeps information about user interface */ /** @brief ui keeps information about user interface */
Ui::DialogPointOfContact ui; Ui::DialogPointOfContact *ui;
/** @brief number number of handled objects */ /** @brief number number of handled objects */
qint32 number; qint32 number;
@ -81,6 +98,14 @@ private:
/** @brief secondPoint id second point of line */ /** @brief secondPoint id second point of line */
quint32 secondPoint; quint32 secondPoint;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -74,17 +74,17 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEditFormula"> <spacer name="horizontalSpacer">
<property name="sizePolicy"> <property name="orientation">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <enum>Qt::Horizontal</enum>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="toolTip"> <property name="sizeHint" stdset="0">
<string>Formula for calculation of radius of arc</string> <size>
<width>40</width>
<height>20</height>
</size>
</property> </property>
</widget> </spacer>
</item> </item>
<item> <item>
<widget class="QToolButton" name="toolButtonPutHere"> <widget class="QToolButton" name="toolButtonPutHere">
@ -150,6 +150,56 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<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>
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item> <item>
@ -441,14 +491,13 @@
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>lineEditNamePoint</tabstop> <tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxCenter</tabstop> <tabstop>comboBoxCenter</tabstop>
<tabstop>comboBoxFirstPoint</tabstop> <tabstop>comboBoxFirstPoint</tabstop>

View file

@ -43,7 +43,7 @@ DialogPointOfIntersection::DialogPointOfIntersection(const VContainer *data, QWi
{ {
ui->setupUi(this); ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); InitOkCancel(ui);
flagName = false; flagName = false;
CheckState(); CheckState();

View file

@ -57,6 +57,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogPointOfIntersection) Q_DISABLE_COPY(DialogPointOfIntersection)

View file

@ -45,10 +45,12 @@ DialogShoulderPoint::DialogShoulderPoint(const VContainer *data, QWidget *parent
number = 0; number = 0;
InitVariables(ui); InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula; plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); InitOkCancelApply(ui);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
flagFormula = false; flagFormula = false;
flagName = false; flagName = false;
@ -63,7 +65,36 @@ DialogShoulderPoint::DialogShoulderPoint(const VContainer *data, QWidget *parent
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogShoulderPoint::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogShoulderPoint::PutVal);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogShoulderPoint::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogShoulderPoint::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogShoulderPoint::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogShoulderPoint::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogShoulderPoint::FormulaChanged); connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogShoulderPoint::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogShoulderPoint::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogShoulderPoint::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogShoulderPoint::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGSHOULDERPOINT_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGSHOULDERPOINT_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -127,14 +158,27 @@ void DialogShoulderPoint::ChoosedObject(quint32 id, const Valentina::Scenes &typ
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
void DialogShoulderPoint::DialogAccepted() void DialogShoulderPoint::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogShoulderPoint::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogShoulderPoint::SaveData()
{ {
pointName = ui->lineEditNamePoint->text(); pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType); typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text(); formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
p1Line = getCurrentObjectId(ui->comboBoxP1Line); p1Line = getCurrentObjectId(ui->comboBoxP1Line);
p2Line = getCurrentObjectId(ui->comboBoxP2Line); p2Line = getCurrentObjectId(ui->comboBoxP2Line);
pShoulder = getCurrentObjectId(ui->comboBoxPShoulder); pShoulder = getCurrentObjectId(ui->comboBoxPShoulder);
emit DialogClosed(QDialog::Accepted);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -178,7 +222,12 @@ void DialogShoulderPoint::setP1Line(const quint32 &value, const quint32 &id)
void DialogShoulderPoint::setFormula(const QString &value) void DialogShoulderPoint::setFormula(const QString &value)
{ {
formula = qApp->FormulaToUser(value); formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula); // increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -31,6 +31,7 @@
#include "dialogtool.h" #include "dialogtool.h"
#define DIALOGSHOULDERPOINT_MAX_FORMULA_HEIGHT 64
namespace Ui namespace Ui
{ {
class DialogShoulderPoint; class DialogShoulderPoint;
@ -66,6 +67,18 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private: private:
Q_DISABLE_COPY(DialogShoulderPoint) Q_DISABLE_COPY(DialogShoulderPoint)
@ -92,6 +105,14 @@ private:
/** @brief pShoulder id shoulder point */ /** @brief pShoulder id shoulder point */
quint32 pShoulder; quint32 pShoulder;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -74,17 +74,17 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEditFormula"> <spacer name="horizontalSpacer">
<property name="sizePolicy"> <property name="orientation">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <enum>Qt::Horizontal</enum>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="toolTip"> <property name="sizeHint" stdset="0">
<string>Formula for calculation of length of line</string> <size>
<width>40</width>
<height>20</height>
</size>
</property> </property>
</widget> </spacer>
</item> </item>
<item> <item>
<widget class="QToolButton" name="toolButtonPutHere"> <widget class="QToolButton" name="toolButtonPutHere">
@ -150,6 +150,56 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<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>
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item> <item>
@ -462,14 +512,13 @@
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>lineEditNamePoint</tabstop> <tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxP1Line</tabstop> <tabstop>comboBoxP1Line</tabstop>
<tabstop>comboBoxP2Line</tabstop> <tabstop>comboBoxP2Line</tabstop>

View file

@ -45,7 +45,7 @@ DialogSinglePoint::DialogSinglePoint(const VContainer *data, QWidget *parent)
ui->doubleSpinBoxX->setRange(0, qApp->fromPixel(SceneSize)); ui->doubleSpinBoxX->setRange(0, qApp->fromPixel(SceneSize));
ui->doubleSpinBoxY->setRange(0, qApp->fromPixel(SceneSize)); ui->doubleSpinBoxY->setRange(0, qApp->fromPixel(SceneSize));
labelEditNamePoint = ui->labelEditName; labelEditNamePoint = ui->labelEditName;
InitOkCansel(ui); InitOkCancel(ui);
flagName = false; flagName = false;
CheckState(); CheckState();

View file

@ -51,6 +51,10 @@ public:
public slots: public slots:
void mousePress(const QPointF &scenePos); void mousePress(const QPointF &scenePos);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogSinglePoint) Q_DISABLE_COPY(DialogSinglePoint)

View file

@ -42,7 +42,7 @@ DialogSpline::DialogSpline(const VContainer *data, QWidget *parent)
kAsm1(1), kAsm2(1), kCurve(1) kAsm1(1), kAsm2(1), kCurve(1)
{ {
ui->setupUi(this); ui->setupUi(this);
InitOkCansel(ui); InitOkCancel(ui);
FillComboBoxPoints(ui->comboBoxP1); FillComboBoxPoints(ui->comboBoxP1);
FillComboBoxPoints(ui->comboBoxP4); FillComboBoxPoints(ui->comboBoxP4);

View file

@ -69,6 +69,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogSpline) Q_DISABLE_COPY(DialogSpline)

View file

@ -42,7 +42,7 @@ DialogSplinePath::DialogSplinePath(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogSplinePath), path(VSplinePath()) :DialogTool(data, parent), ui(new Ui::DialogSplinePath), path(VSplinePath())
{ {
ui->setupUi(this); ui->setupUi(this);
InitOkCansel(ui); InitOkCancel(ui);
bOk->setEnabled(false); bOk->setEnabled(false);
FillComboBoxPoints(ui->comboBoxPoint); FillComboBoxPoints(ui->comboBoxPoint);
@ -160,7 +160,7 @@ void DialogSplinePath::Angle1Changed(qreal index)
{ {
qint32 row = ui->listWidget->currentRow(); qint32 row = ui->listWidget->currentRow();
QListWidgetItem *item = ui->listWidget->item( row ); QListWidgetItem *item = ui->listWidget->item( row );
Q_CHECK_PTR(item); SCASSERT(item != nullptr);
VSplinePoint p = qvariant_cast<VSplinePoint>(item->data(Qt::UserRole)); VSplinePoint p = qvariant_cast<VSplinePoint>(item->data(Qt::UserRole));
p.SetAngle1(index); p.SetAngle1(index);
DataPoint(p.P().id(), p.KAsm1(), p.Angle1(), p.KAsm2(), p.Angle2()); DataPoint(p.P().id(), p.KAsm1(), p.Angle1(), p.KAsm2(), p.Angle2());
@ -176,7 +176,7 @@ void DialogSplinePath::Angle2Changed(qreal index)
{ {
qint32 row = ui->listWidget->currentRow(); qint32 row = ui->listWidget->currentRow();
QListWidgetItem *item = ui->listWidget->item( row ); QListWidgetItem *item = ui->listWidget->item( row );
Q_CHECK_PTR(item); SCASSERT(item != nullptr);
VSplinePoint p = qvariant_cast<VSplinePoint>(item->data(Qt::UserRole)); VSplinePoint p = qvariant_cast<VSplinePoint>(item->data(Qt::UserRole));
p.SetAngle2(index); p.SetAngle2(index);
DataPoint(p.P().id(), p.KAsm1(), p.Angle1(), p.KAsm2(), p.Angle2()); DataPoint(p.P().id(), p.KAsm1(), p.Angle1(), p.KAsm2(), p.Angle2());

View file

@ -52,6 +52,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void PointChanged(int row); void PointChanged(int row);
void currentPointChanged( int index ); void currentPointChanged( int index );
void Angle1Changed(qreal index ); void Angle1Changed(qreal index );

View file

@ -34,6 +34,11 @@
#include <QtWidgets> #include <QtWidgets>
#include "../../../libs/qmuparser/qmuparsererror.h" #include "../../../libs/qmuparser/qmuparsererror.h"
// TODO : for issue #79
// replace lineEditFormula -> plainTextEditFormula
// delete lineEditFormala everywhrer
// delete PutValHere and eval overloaded functions
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief DialogTool create dialog * @brief DialogTool create dialog
@ -42,13 +47,13 @@
*/ */
DialogTool::DialogTool(const VContainer *data, QWidget *parent) DialogTool::DialogTool(const VContainer *data, QWidget *parent)
:QDialog(parent), data(data), isInitialized(false), flagName(true), flagFormula(true), timerFormula(nullptr), :QDialog(parent), data(data), isInitialized(false), flagName(true), flagFormula(true), timerFormula(nullptr),
bOk(nullptr), spinBoxAngle(nullptr), lineEditFormula(nullptr), listWidget(nullptr), bOk(nullptr), bApply(nullptr), spinBoxAngle(nullptr), lineEditFormula(nullptr), plainTextEditFormula(nullptr),
labelResultCalculation(nullptr), labelDescription(nullptr), labelEditNamePoint(nullptr), listWidget(nullptr), labelResultCalculation(nullptr), labelDescription(nullptr), labelEditNamePoint(nullptr),
labelEditFormula(nullptr), radioButtonSizeGrowth(nullptr), radioButtonStandardTable(nullptr), labelEditFormula(nullptr), radioButtonSizeGrowth(nullptr), radioButtonStandardTable(nullptr),
radioButtonIncrements(nullptr), radioButtonLengthLine(nullptr), radioButtonLengthArc(nullptr), radioButtonIncrements(nullptr), radioButtonLengthLine(nullptr), radioButtonLengthArc(nullptr),
radioButtonLengthCurve(nullptr), lineStyles(QStringList()) radioButtonLengthCurve(nullptr), lineStyles(QStringList()), associatedTool(nullptr)
{ {
Q_CHECK_PTR(data); SCASSERT(data != nullptr);
timerFormula = new QTimer(this); timerFormula = new QTimer(this);
connect(timerFormula, &QTimer::timeout, this, &DialogTool::EvalFormula); connect(timerFormula, &QTimer::timeout, this, &DialogTool::EvalFormula);
//Keep synchronize with VAbstractTool styles list!!! //Keep synchronize with VAbstractTool styles list!!!
@ -96,7 +101,7 @@ void DialogTool::showEvent(QShowEvent *event)
*/ */
void DialogTool::FillComboBoxPoints(QComboBox *box, const quint32 &id) const void DialogTool::FillComboBoxPoints(QComboBox *box, const quint32 &id) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
const QHash<quint32, VGObject*> *objs = data->DataGObjects(); const QHash<quint32, VGObject*> *objs = data->DataGObjects();
QHashIterator<quint32, VGObject*> i(*objs); QHashIterator<quint32, VGObject*> i(*objs);
QMap<QString, quint32> list; QMap<QString, quint32> list;
@ -119,7 +124,7 @@ void DialogTool::FillComboBoxPoints(QComboBox *box, const quint32 &id) const
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogTool::FillComboBoxArcs(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutArc cut) const void DialogTool::FillComboBoxArcs(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutArc cut) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
const QHash<quint32, VGObject *> *objs = data->DataGObjects(); const QHash<quint32, VGObject *> *objs = data->DataGObjects();
QHashIterator<quint32, VGObject*> i(*objs); QHashIterator<quint32, VGObject*> i(*objs);
QMap<QString, quint32> list; QMap<QString, quint32> list;
@ -163,7 +168,7 @@ void DialogTool::FillComboBoxArcs(QComboBox *box, const quint32 &id, ComboMode::
*/ */
void DialogTool::FillComboBoxSplines(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutSpline cut) const void DialogTool::FillComboBoxSplines(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutSpline cut) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
const QHash<quint32, VGObject *> *objs = data->DataGObjects(); const QHash<quint32, VGObject *> *objs = data->DataGObjects();
QHashIterator<quint32, VGObject*> i(*objs); QHashIterator<quint32, VGObject*> i(*objs);
QMap<QString, quint32> list; QMap<QString, quint32> list;
@ -207,7 +212,7 @@ void DialogTool::FillComboBoxSplines(QComboBox *box, const quint32 &id, ComboMod
*/ */
void DialogTool::FillComboBoxSplinesPath(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutSpline cut) const void DialogTool::FillComboBoxSplinesPath(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutSpline cut) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
const QHash<quint32, VGObject *> *objs = data->DataGObjects(); const QHash<quint32, VGObject *> *objs = data->DataGObjects();
QHashIterator<quint32, VGObject *> i(*objs); QHashIterator<quint32, VGObject *> i(*objs);
QMap<QString, quint32> list; QMap<QString, quint32> list;
@ -249,7 +254,7 @@ void DialogTool::FillComboBoxSplinesPath(QComboBox *box, const quint32 &id, Comb
*/ */
void DialogTool::FillComboBoxTypeLine(QComboBox *box) const void DialogTool::FillComboBoxTypeLine(QComboBox *box) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
box->addItems(lineStyles); box->addItems(lineStyles);
box->setCurrentIndex(1); box->setCurrentIndex(1);
} }
@ -346,16 +351,36 @@ void DialogTool::ChangeCurrentData(QComboBox *box, const quint32 &value) const
*/ */
void DialogTool::PutValHere(QLineEdit *lineEdit, QListWidget *listWidget) void DialogTool::PutValHere(QLineEdit *lineEdit, QListWidget *listWidget)
{ {
Q_CHECK_PTR(lineEdit); SCASSERT(lineEdit != nullptr);
Q_CHECK_PTR(listWidget); SCASSERT(listWidget != nullptr);
QListWidgetItem *item = listWidget->currentItem(); QListWidgetItem *item = listWidget->currentItem();
Q_CHECK_PTR(item); SCASSERT(item != nullptr);
int pos = lineEdit->cursorPosition(); int pos = lineEdit->cursorPosition();
lineEdit->setText(lineEdit->text().insert(lineEdit->cursorPosition(), item->text())); lineEdit->setText(lineEdit->text().insert(lineEdit->cursorPosition(), item->text()));
lineEdit->setFocus(); lineEdit->setFocus();
lineEdit->setCursorPosition(pos + item->text().size()); lineEdit->setCursorPosition(pos + item->text().size());
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::PutValHere(QPlainTextEdit *plainTextEdit, QListWidget *listWidget)
{
SCASSERT(plainTextEdit != nullptr);
SCASSERT(listWidget != nullptr);
QListWidgetItem *item = listWidget->currentItem();
SCASSERT(item != nullptr);
QTextCursor cursor = plainTextEdit->textCursor();
cursor.insertText(item->text());
plainTextEdit->setTextCursor(cursor);
/*
int pos = lineEdit->cursorPosition();
lineEdit->setText(lineEdit->text().insert(lineEdit->cursorPosition(), item->text()));
lineEdit->setFocus();
lineEdit->setCursorPosition(pos + item->text().size());
*/
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief ValFormulaChanged handle change formula * @brief ValFormulaChanged handle change formula
@ -365,9 +390,9 @@ void DialogTool::PutValHere(QLineEdit *lineEdit, QListWidget *listWidget)
*/ */
void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer) void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer)
{ {
Q_CHECK_PTR(edit); SCASSERT(edit != nullptr);
Q_CHECK_PTR(timer); SCASSERT(timer != nullptr);
Q_CHECK_PTR(labelEditFormula); SCASSERT(labelEditFormula != nullptr);
if (edit->text().isEmpty()) if (edit->text().isEmpty())
{ {
flag = false; flag = false;
@ -379,6 +404,23 @@ void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer)
} }
timer->start(1000); timer->start(1000);
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer *timer)
{
SCASSERT(edit != nullptr);
SCASSERT(timer != nullptr);
SCASSERT(labelEditFormula != nullptr);
if (edit->toPlainText().isEmpty())
{
flag = false;
CheckState();
QPalette palette = labelEditFormula->palette();
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
labelEditFormula->setPalette(palette);
return;
}
timer->start(1000);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
@ -390,10 +432,10 @@ void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer)
*/ */
void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label) void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label)
{ {
Q_CHECK_PTR(edit); SCASSERT(edit != nullptr);
Q_CHECK_PTR(timer); SCASSERT(timer != nullptr);
Q_CHECK_PTR(label); SCASSERT(label != nullptr);
Q_CHECK_PTR(labelEditFormula); SCASSERT(labelEditFormula != nullptr);
QPalette palette = labelEditFormula->palette(); QPalette palette = labelEditFormula->palette();
if (edit->text().isEmpty()) if (edit->text().isEmpty())
{ {
@ -446,16 +488,70 @@ void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** void DialogTool::Eval(QPlainTextEdit *edit, bool &flag, QTimer *timer, QLabel *label)
* @brief setCurrentPointId set current point id in combobox {
* @param box combobox SCASSERT(edit != nullptr);
* @param pointId save current point id SCASSERT(timer != nullptr);
* @param value point id SCASSERT(label != nullptr);
* @param id don't show this id in list SCASSERT(labelEditFormula != nullptr);
*/ QPalette palette = labelEditFormula->palette();
if (edit->toPlainText().isEmpty())
{
flag = false;
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
}
else
{
try
{
// Replace line return with spaces for calc
QString formula = edit->toPlainText();
formula.replace("\n"," ");
formula = qApp->FormulaFromUser(formula);
Calculator *cal = new Calculator(data);
const qreal result = cal->EvalFormula(formula);
delete cal;
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(),
QApplication::applicationName());
bool osSeparatorValue = settings.value("configuration/osSeparator", 1).toBool();
if (osSeparatorValue)
{
QLocale loc = QLocale::system();
label->setText(loc.toString(result));
}
else
{
QLocale loc = QLocale(QLocale::C);
label->setText(loc.toString(result));
}
flag = true;
palette.setColor(labelEditFormula->foregroundRole(), QColor(76, 76, 76));
emit ToolTip("");
}
catch(qmu::QmuParserError &e)
{
label->setText(tr("Error"));
flag = false;
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
emit ToolTip("Parser error: "+e.GetMsg());
qDebug() << "\nMath parser error:\n"
<< "--------------------------------------\n"
<< "Message: " << e.GetMsg() << "\n"
<< "Expression: " << e.GetExpr() << "\n"
<< "--------------------------------------";
}
}
CheckState();
timer->stop();
labelEditFormula->setPalette(palette);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::setCurrentPointId(QComboBox *box, quint32 &pointId, const quint32 &value, const quint32 &id) const void DialogTool::setCurrentPointId(QComboBox *box, quint32 &pointId, const quint32 &value, const quint32 &id) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
FillComboBoxPoints(box, id); FillComboBoxPoints(box, id);
pointId = value; pointId = value;
ChangeCurrentData(box, value); ChangeCurrentData(box, value);
@ -473,7 +569,7 @@ void DialogTool::setCurrentPointId(QComboBox *box, quint32 &pointId, const quint
void DialogTool::setCurrentSplineId(QComboBox *box, quint32 &splineId, const quint32 &value, const quint32 &id, void DialogTool::setCurrentSplineId(QComboBox *box, quint32 &splineId, const quint32 &value, const quint32 &id,
ComboMode::ComboBoxCutSpline cut) const ComboMode::ComboBoxCutSpline cut) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
FillComboBoxSplines(box, id, cut); FillComboBoxSplines(box, id, cut);
splineId = value; splineId = value;
ChangeCurrentData(box, value); ChangeCurrentData(box, value);
@ -491,7 +587,7 @@ void DialogTool::setCurrentSplineId(QComboBox *box, quint32 &splineId, const qui
void DialogTool::setCurrentArcId(QComboBox *box, quint32 &arcId, const quint32 &value, const quint32 &id, void DialogTool::setCurrentArcId(QComboBox *box, quint32 &arcId, const quint32 &value, const quint32 &id,
ComboMode::ComboBoxCutArc cut) const ComboMode::ComboBoxCutArc cut) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
FillComboBoxArcs(box, id, cut); FillComboBoxArcs(box, id, cut);
arcId = value; arcId = value;
ChangeCurrentData(box, value); ChangeCurrentData(box, value);
@ -509,7 +605,7 @@ void DialogTool::setCurrentArcId(QComboBox *box, quint32 &arcId, const quint32 &
void DialogTool::setCurrentSplinePathId(QComboBox *box, quint32 &splinePathId, const quint32 &value, void DialogTool::setCurrentSplinePathId(QComboBox *box, quint32 &splinePathId, const quint32 &value,
const quint32 &id, ComboMode::ComboBoxCutSpline cut) const const quint32 &id, ComboMode::ComboBoxCutSpline cut) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
FillComboBoxSplinesPath(box, id, cut); FillComboBoxSplinesPath(box, id, cut);
splinePathId = value; splinePathId = value;
ChangeCurrentData(box, value); ChangeCurrentData(box, value);
@ -523,7 +619,7 @@ void DialogTool::setCurrentSplinePathId(QComboBox *box, quint32 &splinePathId, c
*/ */
quint32 DialogTool::getCurrentObjectId(QComboBox *box) const quint32 DialogTool::getCurrentObjectId(QComboBox *box) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
qint32 index = box->currentIndex(); qint32 index = box->currentIndex();
Q_ASSERT(index != -1); Q_ASSERT(index != -1);
if (index != -1) if (index != -1)
@ -539,9 +635,9 @@ quint32 DialogTool::getCurrentObjectId(QComboBox *box) const
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool DialogTool::ChoosedPoint(const quint32 &id, QComboBox *box, const QString &toolTip) bool DialogTool::ChoosedPoint(const quint32 &id, QComboBox *box, const QString &toolTip)
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
Q_CHECK_PTR(point); SCASSERT(point != nullptr);
const qint32 index = box->findText(point->name()); const qint32 index = box->findText(point->name());
if ( index != -1 ) if ( index != -1 )
{ // -1 for not found { // -1 for not found
@ -560,7 +656,7 @@ bool DialogTool::ChoosedPoint(const quint32 &id, QComboBox *box, const QString &
*/ */
void DialogTool::FillList(QComboBox *box, const QMap<QString, quint32> &list) const void DialogTool::FillList(QComboBox *box, const QMap<QString, quint32> &list) const
{ {
Q_CHECK_PTR(box); SCASSERT(box != nullptr);
box->clear(); box->clear();
QMapIterator<QString, quint32> iter(list); QMapIterator<QString, quint32> iter(list);
@ -577,8 +673,13 @@ void DialogTool::FillList(QComboBox *box, const QMap<QString, quint32> &list) co
*/ */
void DialogTool::CheckState() void DialogTool::CheckState()
{ {
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
bOk->setEnabled(flagFormula && flagName); bOk->setEnabled(flagFormula && flagName);
// In case dialog hasn't apply button
if ( bApply != nullptr)
{
bApply->setEnabled(flagFormula && flagName);
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -599,7 +700,7 @@ void DialogTool::ChoosedObject(quint32 id, const Valentina::Scenes &type)
*/ */
void DialogTool::NamePointChanged() void DialogTool::NamePointChanged()
{ {
Q_CHECK_PTR(labelEditNamePoint); SCASSERT(labelEditNamePoint != nullptr);
QLineEdit* edit = qobject_cast<QLineEdit*>(sender()); QLineEdit* edit = qobject_cast<QLineEdit*>(sender());
if (edit) if (edit)
{ {
@ -652,6 +753,15 @@ void DialogTool::FormulaChanged()
ValFormulaChanged(flagFormula, edit, timerFormula); ValFormulaChanged(flagFormula, edit, timerFormula);
} }
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::FormulaChangedPlainText()
{
QPlainTextEdit* edit = qobject_cast<QPlainTextEdit*>(sender());
if (edit)
{
ValFormulaChanged(flagFormula, edit, timerFormula);
}
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
@ -659,7 +769,7 @@ void DialogTool::FormulaChanged()
*/ */
void DialogTool::ArrowUp() void DialogTool::ArrowUp()
{ {
Q_CHECK_PTR(spinBoxAngle); SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(90); spinBoxAngle->setValue(90);
} }
@ -669,7 +779,7 @@ void DialogTool::ArrowUp()
*/ */
void DialogTool::ArrowDown() void DialogTool::ArrowDown()
{ {
Q_CHECK_PTR(spinBoxAngle); SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(270); spinBoxAngle->setValue(270);
} }
@ -679,7 +789,7 @@ void DialogTool::ArrowDown()
*/ */
void DialogTool::ArrowLeft() void DialogTool::ArrowLeft()
{ {
Q_CHECK_PTR(spinBoxAngle); SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(180); spinBoxAngle->setValue(180);
} }
@ -689,7 +799,7 @@ void DialogTool::ArrowLeft()
*/ */
void DialogTool::ArrowRight() void DialogTool::ArrowRight()
{ {
Q_CHECK_PTR(spinBoxAngle); SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(0); spinBoxAngle->setValue(0);
} }
@ -699,7 +809,7 @@ void DialogTool::ArrowRight()
*/ */
void DialogTool::ArrowLeftUp() void DialogTool::ArrowLeftUp()
{ {
Q_CHECK_PTR(spinBoxAngle); SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(135); spinBoxAngle->setValue(135);
} }
@ -709,7 +819,7 @@ void DialogTool::ArrowLeftUp()
*/ */
void DialogTool::ArrowLeftDown() void DialogTool::ArrowLeftDown()
{ {
Q_CHECK_PTR(spinBoxAngle); SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(225); spinBoxAngle->setValue(225);
} }
@ -719,7 +829,7 @@ void DialogTool::ArrowLeftDown()
*/ */
void DialogTool::ArrowRightUp() void DialogTool::ArrowRightUp()
{ {
Q_CHECK_PTR(spinBoxAngle); SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(45); spinBoxAngle->setValue(45);
} }
@ -729,7 +839,7 @@ void DialogTool::ArrowRightUp()
*/ */
void DialogTool::ArrowRightDown() void DialogTool::ArrowRightDown()
{ {
Q_CHECK_PTR(spinBoxAngle); SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(315); spinBoxAngle->setValue(315);
} }
@ -739,9 +849,9 @@ void DialogTool::ArrowRightDown()
*/ */
void DialogTool::EvalFormula() void DialogTool::EvalFormula()
{ {
Q_CHECK_PTR(lineEditFormula); SCASSERT(plainTextEditFormula != nullptr);
Q_CHECK_PTR(labelResultCalculation); SCASSERT(labelResultCalculation != nullptr);
Eval(lineEditFormula, flagFormula, timerFormula, labelResultCalculation); Eval(plainTextEditFormula, flagFormula, timerFormula, labelResultCalculation);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -750,7 +860,7 @@ void DialogTool::EvalFormula()
*/ */
void DialogTool::SizeHeight() void DialogTool::SizeHeight()
{ {
Q_CHECK_PTR(listWidget); SCASSERT(listWidget != nullptr);
disconnect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged); disconnect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged);
listWidget->clear(); listWidget->clear();
@ -819,7 +929,7 @@ void DialogTool::Increments()
*/ */
void DialogTool::PutHere() void DialogTool::PutHere()
{ {
PutValHere(lineEditFormula, listWidget); PutValHere(plainTextEditFormula, listWidget);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -829,13 +939,17 @@ void DialogTool::PutHere()
*/ */
void DialogTool::PutVal(QListWidgetItem *item) void DialogTool::PutVal(QListWidgetItem *item)
{ {
Q_CHECK_PTR(lineEditFormula); SCASSERT(plainTextEditFormula != nullptr);
Q_CHECK_PTR(item); SCASSERT(item != nullptr);
int pos = lineEditFormula->cursorPosition(); QTextCursor cursor = plainTextEditFormula->textCursor();
cursor.insertText(item->text());
plainTextEditFormula->setTextCursor(cursor);
/*int pos = plainTextEditFormula->cursorPosition();
lineEditFormula->setText(lineEditFormula->text().insert(lineEditFormula->cursorPosition(), lineEditFormula->setText(lineEditFormula->text().insert(lineEditFormula->cursorPosition(),
item->text())); item->text()));
lineEditFormula->setFocus(); lineEditFormula->setFocus();
lineEditFormula->setCursorPosition(pos + item->text().size()); lineEditFormula->setCursorPosition(pos + item->text().size());
*/
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -845,14 +959,14 @@ void DialogTool::PutVal(QListWidgetItem *item)
*/ */
void DialogTool::ValChenged(int row) void DialogTool::ValChenged(int row)
{ {
Q_CHECK_PTR(listWidget); SCASSERT(listWidget != nullptr);
Q_CHECK_PTR(labelDescription); SCASSERT(labelDescription != nullptr);
Q_CHECK_PTR(radioButtonSizeGrowth); SCASSERT(radioButtonSizeGrowth != nullptr);
Q_CHECK_PTR(radioButtonStandardTable); SCASSERT(radioButtonStandardTable != nullptr);
Q_CHECK_PTR(radioButtonIncrements); SCASSERT(radioButtonIncrements != nullptr);
Q_CHECK_PTR(radioButtonLengthLine); SCASSERT(radioButtonLengthLine != nullptr);
Q_CHECK_PTR(radioButtonLengthArc); SCASSERT(radioButtonLengthArc != nullptr);
Q_CHECK_PTR(radioButtonLengthCurve); SCASSERT(radioButtonLengthCurve != nullptr);
if (listWidget->count() == 0) if (listWidget->count() == 0)
{ {
return; return;
@ -918,12 +1032,12 @@ void DialogTool::ValChenged(int row)
*/ */
void DialogTool::UpdateList() void DialogTool::UpdateList()
{ {
Q_CHECK_PTR(radioButtonSizeGrowth); SCASSERT(radioButtonSizeGrowth != nullptr);
Q_CHECK_PTR(radioButtonStandardTable); SCASSERT(radioButtonStandardTable != nullptr);
Q_CHECK_PTR(radioButtonIncrements); SCASSERT(radioButtonIncrements != nullptr);
Q_CHECK_PTR(radioButtonLengthLine); SCASSERT(radioButtonLengthLine != nullptr);
Q_CHECK_PTR(radioButtonLengthArc); SCASSERT(radioButtonLengthArc != nullptr);
Q_CHECK_PTR(radioButtonLengthCurve); SCASSERT(radioButtonLengthCurve != nullptr);
if (radioButtonSizeGrowth->isChecked()) if (radioButtonSizeGrowth->isChecked())
{ {
@ -959,7 +1073,7 @@ void DialogTool::UpdateList()
template <class key, class val> template <class key, class val>
void DialogTool::ShowVariable(const QHash<key, val> *var) void DialogTool::ShowVariable(const QHash<key, val> *var)
{ {
Q_CHECK_PTR(listWidget); SCASSERT(listWidget != nullptr);
disconnect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged); disconnect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged);
listWidget->clear(); listWidget->clear();
@ -982,3 +1096,9 @@ void DialogTool::ShowVariable(const QHash<key, val> *var)
connect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged); connect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged);
listWidget->setCurrentRow (0); listWidget->setCurrentRow (0);
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::DialogApply()
{
}

View file

@ -37,8 +37,10 @@
#include <QRadioButton> #include <QRadioButton>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QPushButton> #include <QPushButton>
#include <QPlainTextEdit>
#include "../../container/vcontainer.h" #include "../../container/vcontainer.h"
#include "../../widgets/vapplication.h" #include "../../widgets/vapplication.h"
#include "../../tools/vabstracttool.h"
namespace ComboMode namespace ComboMode
{ {
@ -63,12 +65,24 @@ class DialogTool : public QDialog
public: public:
DialogTool(const VContainer *data, QWidget *parent = nullptr); DialogTool(const VContainer *data, QWidget *parent = nullptr);
virtual ~DialogTool() {} virtual ~DialogTool() {}
inline VAbstractTool* GetAssociatedTool()
{
return this->associatedTool;
}
inline void SetAssociatedTool(VAbstractTool* tool)
{
this->associatedTool=tool;
}
signals: signals:
/** /**
* @brief DialogClosed signal dialog closed * @brief DialogClosed signal dialog closed
* @param result keep result * @param result keep result
*/ */
void DialogClosed(int result); void DialogClosed(int result);
/**
* @brief DialogApplied emit signal dialog apply changes
*/
void DialogApplied();
/** /**
* @brief ToolTip emit tooltipe for tool * @brief ToolTip emit tooltipe for tool
* @param toolTip text tooltipe * @param toolTip text tooltipe
@ -78,8 +92,16 @@ public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
void NamePointChanged(); void NamePointChanged();
virtual void DialogAccepted(); virtual void DialogAccepted();
/**
* @brief DialogApply save data and emit signal DialogApplied.
*/
virtual void DialogApply();
virtual void DialogRejected(); virtual void DialogRejected();
void FormulaChanged(); void FormulaChanged();
/**
* @brief FormulaChangedPlainText check formula (plain text editor editor)
*/
void FormulaChangedPlainText();
void ArrowUp(); void ArrowUp();
void ArrowDown(); void ArrowDown();
void ArrowLeft(); void ArrowLeft();
@ -120,12 +142,15 @@ protected:
/** @brief bOk button ok */ /** @brief bOk button ok */
QPushButton *bOk; QPushButton *bOk;
/** @brief bApply button apply */
QPushButton *bApply;
/** @brief spinBoxAngle spinbox for angle */ /** @brief spinBoxAngle spinbox for angle */
QDoubleSpinBox *spinBoxAngle; QDoubleSpinBox *spinBoxAngle;
/** @brief lineEditFormula linEdit for formula */ /** @brief lineEditFormula linEdit for formula */
QLineEdit *lineEditFormula; QLineEdit *lineEditFormula;
QPlainTextEdit *plainTextEditFormula;
/** @brief listWidget listWidget with variables */ /** @brief listWidget listWidget with variables */
QListWidget *listWidget; QListWidget *listWidget;
@ -180,8 +205,11 @@ protected:
void ChangeCurrentText(QComboBox *box, const QString &value); void ChangeCurrentText(QComboBox *box, const QString &value);
void ChangeCurrentData(QComboBox *box, const quint32 &value) const; void ChangeCurrentData(QComboBox *box, const quint32 &value) const;
void PutValHere(QLineEdit *lineEdit, QListWidget *listWidget); void PutValHere(QLineEdit *lineEdit, QListWidget *listWidget);
void PutValHere(QPlainTextEdit *plainTextEdit, QListWidget *listWidget);
void ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer * timer); void ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer * timer);
void ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer * timer);
void Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label); void Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label);
void Eval(QPlainTextEdit *edit, bool &flag, QTimer *timer, QLabel *label);
void setCurrentPointId(QComboBox *box, quint32 &pointId, const quint32 &value, const quint32 &id) const; void setCurrentPointId(QComboBox *box, quint32 &pointId, const quint32 &value, const quint32 &id) const;
void setCurrentSplineId(QComboBox *box, quint32 &splineId, const quint32 &value, const quint32 &id, void setCurrentSplineId(QComboBox *box, quint32 &splineId, const quint32 &value, const quint32 &id,
ComboMode::ComboBoxCutSpline cut = ComboMode::NoCutSpline) const; ComboMode::ComboBoxCutSpline cut = ComboMode::NoCutSpline) const;
@ -195,7 +223,7 @@ protected:
template <typename T> template <typename T>
void InitArrow(T *ui) void InitArrow(T *ui)
{ {
Q_CHECK_PTR(ui); SCASSERT(ui != nullptr);
spinBoxAngle = ui->doubleSpinBoxAngle; spinBoxAngle = ui->doubleSpinBoxAngle;
connect(ui->toolButtonArrowDown, &QPushButton::clicked, this, &DialogTool::ArrowDown); connect(ui->toolButtonArrowDown, &QPushButton::clicked, this, &DialogTool::ArrowDown);
connect(ui->toolButtonArrowUp, &QPushButton::clicked, this, &DialogTool::ArrowUp); connect(ui->toolButtonArrowUp, &QPushButton::clicked, this, &DialogTool::ArrowUp);
@ -238,16 +266,36 @@ protected:
connect(radioButtonLengthCurve, &QRadioButton::clicked, this, &DialogTool::LengthCurves); connect(radioButtonLengthCurve, &QRadioButton::clicked, this, &DialogTool::LengthCurves);
} }
template <typename T> template <typename T>
void InitOkCansel(T *ui) /**
* @brief InitOkCancelApply initialise OK / Cancel and Apply buttons
* @param ui Dialog container
*/
void InitOkCancelApply(T *ui)
{
InitOkCancel(ui);
bApply = ui->buttonBox->button(QDialogButtonBox::Apply);
SCASSERT(bApply != nullptr);
connect(bApply, &QPushButton::clicked, this, &DialogTool::DialogApply);
}
template <typename T>
/**
* @brief InitOkCancel initialise OK and Cancel buttons
* @param ui Dialog container
*/
void InitOkCancel(T *ui)
{ {
bOk = ui->buttonBox->button(QDialogButtonBox::Ok); bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk); SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted); connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel); QPushButton *bCancel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel); SCASSERT(bCancel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected); connect(bCancel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
} }
/**
* @brief associatedTool vdrawtool associated with opened dialog.
*/
VAbstractTool* associatedTool;
private: private:
void FillList(QComboBox *box, const QMap<QString, quint32> &list)const; void FillList(QComboBox *box, const QMap<QString, quint32> &list)const;
}; };

View file

@ -43,7 +43,7 @@ DialogTriangle::DialogTriangle(const VContainer *data, QWidget *parent)
{ {
ui->setupUi(this); ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui); InitOkCancel(ui);
flagName = false; flagName = false;
CheckState(); CheckState();

View file

@ -63,6 +63,10 @@ public:
public slots: public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogTriangle) Q_DISABLE_COPY(DialogTriangle)

View file

@ -40,7 +40,7 @@ DialogUnionDetails::DialogUnionDetails(const VContainer *data, QWidget *parent)
numberP(0), p1(0), p2(0) numberP(0), p1(0), p2(0)
{ {
ui->setupUi(this); ui->setupUi(this);
InitOkCansel(ui); InitOkCancel(ui);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -53,6 +53,10 @@ public:
public slots: public slots:
void ChoosedObject(quint32 id, const Valentina::Scenes &type); void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted(); virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private: private:
Q_DISABLE_COPY(DialogUnionDetails) Q_DISABLE_COPY(DialogUnionDetails)

View file

@ -33,7 +33,7 @@
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QPainterPath VEquidistant::ContourPath(const quint32 &idDetail, const VContainer *data) const QPainterPath VEquidistant::ContourPath(const quint32 &idDetail, const VContainer *data) const
{ {
Q_CHECK_PTR(data); SCASSERT(data != nullptr);
VDetail detail = data->GetDetail(idDetail); VDetail detail = data->GetDetail(idDetail);
QVector<QPointF> points; QVector<QPointF> points;
QVector<QPointF> pointsEkv; QVector<QPointF> pointsEkv;

View file

@ -178,7 +178,7 @@ void MainWindow::ActionNewDraw()
connect(spoint, &VToolPoint::ChoosedTool, sceneDraw, &VMainGraphicsScene::ChoosedItem); connect(spoint, &VToolPoint::ChoosedTool, sceneDraw, &VMainGraphicsScene::ChoosedItem);
connect(sceneDraw, &VMainGraphicsScene::NewFactor, spoint, &VToolSinglePoint::SetFactor); connect(sceneDraw, &VMainGraphicsScene::NewFactor, spoint, &VToolSinglePoint::SetFactor);
QHash<quint32, VDataTool*>* tools = doc->getTools(); QHash<quint32, VDataTool*>* tools = doc->getTools();
Q_CHECK_PTR(tools); SCASSERT(tools != nullptr);
tools->insert(id, spoint); tools->insert(id, spoint);
VDrawTool::AddRecord(id, Valentina::SinglePointTool, doc); VDrawTool::AddRecord(id, Valentina::SinglePointTool, doc);
SetEnableTool(true); SetEnableTool(true);
@ -247,12 +247,50 @@ void MainWindow::SetToolButton(bool checked, Valentina::Tools t, const QString &
{ {
if (QToolButton *tButton = qobject_cast< QToolButton * >(this->sender())) if (QToolButton *tButton = qobject_cast< QToolButton * >(this->sender()))
{ {
Q_CHECK_PTR(tButton); SCASSERT(tButton != nullptr);
tButton->setChecked(true); tButton->setChecked(true);
} }
} }
} }
//---------------------------------------------------------------------------------------------------------------------
template <typename Dialog, typename Func, typename Func2>
/**
* @brief SetToolButtonWithApply set tool and show dialog.
* @param checked true if tool button checked.
* @param t tool type.
* @param cursor path tool cursor icon.
* @param toolTip first tooltipe.
* @param closeDialogSlot function to handle close of dialog.
* @param applyDialogSlot function to handle apply in dialog.
*/
void MainWindow::SetToolButtonWithApply(bool checked, Valentina::Tools t, const QString &cursor, const QString &toolTip,
Func closeDialogSlot, Func2 applyDialogSlot)
{
if (checked)
{
CancelTool();
tool = t;
QPixmap pixmap(cursor);
QCursor cur(pixmap, 2, 3);
view->setCursor(cur);
helpLabel->setText(toolTip);
dialogTool = new Dialog(pattern, this);
connect(currentScene, &VMainGraphicsScene::ChoosedObject, dialogTool, &DialogTool::ChoosedObject);
connect(dialogTool, &DialogTool::DialogClosed, this, closeDialogSlot);
connect(dialogTool, &DialogTool::DialogApplied, this, applyDialogSlot);
connect(dialogTool, &DialogTool::ToolTip, this, &MainWindow::ShowToolTip);
connect(doc, &VPattern::FullUpdateFromFile, dialogTool, &DialogTool::UpdateList);
}
else
{
if (QToolButton *tButton = qobject_cast< QToolButton * >(this->sender()))
{
SCASSERT(tButton != nullptr);
tButton->setChecked(true);
}
}
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief ClosedDialog handle close dialog * @brief ClosedDialog handle close dialog
@ -261,7 +299,7 @@ void MainWindow::SetToolButton(bool checked, Valentina::Tools t, const QString &
template <typename DrawTool> template <typename DrawTool>
void MainWindow::ClosedDialog(int result) void MainWindow::ClosedDialog(int result)
{ {
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
if (result == QDialog::Accepted) if (result == QDialog::Accepted)
{ {
DrawTool::Create(dialogTool, currentScene, doc, pattern); DrawTool::Create(dialogTool, currentScene, doc, pattern);
@ -269,6 +307,59 @@ void MainWindow::ClosedDialog(int result)
ArrowTool(); ArrowTool();
} }
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ClosedDialogWithApply handle close dialog that has apply button
* @param result result working dialog.
*/
template <typename DrawTool>
void MainWindow::ClosedDialogWithApply(int result)
{
SCASSERT(dialogTool != nullptr);
if (result == QDialog::Accepted)
{
// Only create tool if not already created with apply
if (dialogTool->GetAssociatedTool() == nullptr)
{
dialogTool->SetAssociatedTool(
dynamic_cast<VAbstractTool * > (DrawTool::Create(dialogTool, currentScene, doc, pattern)));
}
else
{ // Or update associated tool with data
VDrawTool * vtool= static_cast<VDrawTool *>(dialogTool->GetAssociatedTool());
vtool->FullUpdateFromGuiApply();
}
}
if (dialogTool->GetAssociatedTool() != nullptr)
{
VDrawTool * vtool= static_cast<VDrawTool *>(dialogTool->GetAssociatedTool());
vtool->DialogLinkDestroy();
}
ArrowTool();
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialog handle apply in dialog
*/
template <typename DrawTool>
void MainWindow::ApplyDialog()
{
SCASSERT(dialogTool != nullptr);
// Only create tool if not already created with apply
if (dialogTool->GetAssociatedTool() == nullptr)
{
dialogTool->SetAssociatedTool(
static_cast<VAbstractTool * > (DrawTool::Create(dialogTool, currentScene, doc, pattern)));
}
else
{ // Or update associated tool with data
VDrawTool * vtool= static_cast<VDrawTool *>(dialogTool->GetAssociatedTool());
vtool->FullUpdateFromGuiApply();
}
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief ToolEndLine handler tool endLine. * @brief ToolEndLine handler tool endLine.
@ -276,8 +367,17 @@ void MainWindow::ClosedDialog(int result)
*/ */
void MainWindow::ToolEndLine(bool checked) void MainWindow::ToolEndLine(bool checked)
{ {
SetToolButton<DialogEndLine>(checked, Valentina::EndLineTool, ":/cursor/endline_cursor.png", tr("Select point"), SetToolButtonWithApply<DialogEndLine>(checked, Valentina::EndLineTool, ":/cursor/endline_cursor.png", tr("Select point"),
&MainWindow::ClosedDialogEndLine); &MainWindow::ClosedDialogEndLine,&MainWindow::ApplyDialogEndLine);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogEndLine actions after apply in DialogEndLine.
*/
void MainWindow::ApplyDialogEndLine()
{
ApplyDialog<VToolEndLine>();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -287,7 +387,7 @@ void MainWindow::ToolEndLine(bool checked)
*/ */
void MainWindow::ClosedDialogEndLine(int result) void MainWindow::ClosedDialogEndLine(int result)
{ {
ClosedDialog<VToolEndLine>(result); ClosedDialogWithApply<VToolEndLine>(result);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -318,8 +418,17 @@ void MainWindow::ClosedDialogLine(int result)
*/ */
void MainWindow::ToolAlongLine(bool checked) void MainWindow::ToolAlongLine(bool checked)
{ {
SetToolButton<DialogAlongLine>(checked, Valentina::AlongLineTool, ":/cursor/alongline_cursor.png", SetToolButtonWithApply<DialogAlongLine>(checked, Valentina::AlongLineTool, ":/cursor/alongline_cursor.png",
tr("Select point"), &MainWindow::ClosedDialogAlongLine); tr("Select point"), &MainWindow::ClosedDialogAlongLine, &MainWindow::ApplyDialogAlongLine);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogAlongLine actions after apply in DialogAlongLine.
*/
void MainWindow::ApplyDialogAlongLine()
{
ApplyDialog<VToolAlongLine>();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -329,7 +438,7 @@ void MainWindow::ToolAlongLine(bool checked)
*/ */
void MainWindow::ClosedDialogAlongLine(int result) void MainWindow::ClosedDialogAlongLine(int result)
{ {
ClosedDialog<VToolAlongLine>(result); ClosedDialogWithApply<VToolAlongLine>(result);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -339,8 +448,18 @@ void MainWindow::ClosedDialogAlongLine(int result)
*/ */
void MainWindow::ToolShoulderPoint(bool checked) void MainWindow::ToolShoulderPoint(bool checked)
{ {
SetToolButton<DialogShoulderPoint>(checked, Valentina::ShoulderPointTool, ":/cursor/shoulder_cursor.png", SetToolButtonWithApply<DialogShoulderPoint>(checked, Valentina::ShoulderPointTool, ":/cursor/shoulder_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogShoulderPoint); tr("Select first point of line"), &MainWindow::ClosedDialogShoulderPoint,
&MainWindow::ApplyDialogShoulderPoint);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogShoulderPoint actions after apply in DialogShoulderPoint.
*/
void MainWindow::ApplyDialogShoulderPoint()
{
ApplyDialog<VToolShoulderPoint>();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -350,7 +469,7 @@ void MainWindow::ToolShoulderPoint(bool checked)
*/ */
void MainWindow::ClosedDialogShoulderPoint(int result) void MainWindow::ClosedDialogShoulderPoint(int result)
{ {
ClosedDialog<VToolShoulderPoint>(result); ClosedDialogWithApply<VToolShoulderPoint>(result);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -360,8 +479,18 @@ void MainWindow::ClosedDialogShoulderPoint(int result)
*/ */
void MainWindow::ToolNormal(bool checked) void MainWindow::ToolNormal(bool checked)
{ {
SetToolButton<DialogNormal>(checked, Valentina::NormalTool, ":/cursor/normal_cursor.png", SetToolButtonWithApply<DialogNormal>(checked, Valentina::NormalTool, ":/cursor/normal_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogNormal); tr("Select first point of line"), &MainWindow::ClosedDialogNormal,
&MainWindow::ApplyDialogNormal);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogNormal actions after apply in DialogNormal.
*/
void MainWindow::ApplyDialogNormal()
{
ApplyDialog<VToolNormal>();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -371,7 +500,7 @@ void MainWindow::ToolNormal(bool checked)
*/ */
void MainWindow::ClosedDialogNormal(int result) void MainWindow::ClosedDialogNormal(int result)
{ {
ClosedDialog<VToolNormal>(result); ClosedDialogWithApply<VToolNormal>(result);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -381,8 +510,18 @@ void MainWindow::ClosedDialogNormal(int result)
*/ */
void MainWindow::ToolBisector(bool checked) void MainWindow::ToolBisector(bool checked)
{ {
SetToolButton<DialogBisector>(checked, Valentina::BisectorTool, ":/cursor/bisector_cursor.png", SetToolButtonWithApply<DialogBisector>(checked, Valentina::BisectorTool, ":/cursor/bisector_cursor.png",
tr("Select first point of angle"), &MainWindow::ClosedDialogBisector); tr("Select first point of angle"), &MainWindow::ClosedDialogBisector,
&MainWindow::ApplyDialogBisector);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogBisector actions after apply in DialogBisector.
*/
void MainWindow::ApplyDialogBisector()
{
ApplyDialog<VToolBisector>();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -392,7 +531,7 @@ void MainWindow::ToolBisector(bool checked)
*/ */
void MainWindow::ClosedDialogBisector(int result) void MainWindow::ClosedDialogBisector(int result)
{ {
ClosedDialog<VToolBisector>(result); ClosedDialogWithApply<VToolBisector>(result);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -529,8 +668,18 @@ void MainWindow::ClosedDialogCutSplinePath(int result)
*/ */
void MainWindow::ToolPointOfContact(bool checked) void MainWindow::ToolPointOfContact(bool checked)
{ {
SetToolButton<DialogPointOfContact>(checked, Valentina::PointOfContact, ":/cursor/pointcontact_cursor.png", SetToolButtonWithApply<DialogPointOfContact>(checked, Valentina::PointOfContact, ":/cursor/pointcontact_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogPointOfContact); tr("Select first point of line"), &MainWindow::ClosedDialogPointOfContact,
&MainWindow::ApplyDialogPointOfContact);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogPointOfContact actions after apply in DialogPointOfContact.
*/
void MainWindow::ApplyDialogPointOfContact()
{
ApplyDialog<VToolPointOfContact>();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -540,7 +689,7 @@ void MainWindow::ToolPointOfContact(bool checked)
*/ */
void MainWindow::ClosedDialogPointOfContact(int result) void MainWindow::ClosedDialogPointOfContact(int result)
{ {
ClosedDialog<VToolPointOfContact>(result); ClosedDialogWithApply<VToolPointOfContact>(result);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -664,8 +813,17 @@ void MainWindow::ClosedDialogUnionDetails(int result)
*/ */
void MainWindow::ToolCutArc(bool checked) void MainWindow::ToolCutArc(bool checked)
{ {
SetToolButton<DialogCutArc>(checked, Valentina::CutArcTool, ":/cursor/arc_cut_cursor.png", tr("Select arc"), SetToolButtonWithApply<DialogCutArc>(checked, Valentina::CutArcTool, ":/cursor/arc_cut_cursor.png",
&MainWindow::ClosedDialogCutArc); tr("Select arc"), &MainWindow::ClosedDialogCutArc, &MainWindow::ApplyDialogCutArc);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogCutArc actions after apply in DialogCutArc.
*/
void MainWindow::ApplyDialogCutArc()
{
ApplyDialog<VToolCutArc>();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -675,7 +833,7 @@ void MainWindow::ToolCutArc(bool checked)
*/ */
void MainWindow::ClosedDialogCutArc(int result) void MainWindow::ClosedDialogCutArc(int result)
{ {
ClosedDialog<VToolCutArc>(result); ClosedDialogWithApply<VToolCutArc>(result);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -103,17 +103,23 @@ public slots:
void ToolCutArc(bool checked); void ToolCutArc(bool checked);
void ClosedDialogEndLine(int result); void ClosedDialogEndLine(int result);
void ApplyDialogEndLine();
void ClosedDialogLine(int result); void ClosedDialogLine(int result);
void ClosedDialogAlongLine(int result); void ClosedDialogAlongLine(int result);
void ApplyDialogAlongLine();
void ClosedDialogShoulderPoint(int result); void ClosedDialogShoulderPoint(int result);
void ApplyDialogShoulderPoint();
void ClosedDialogNormal(int result); void ClosedDialogNormal(int result);
void ApplyDialogNormal();
void ClosedDialogBisector(int result); void ClosedDialogBisector(int result);
void ApplyDialogBisector();
void ClosedDialogLineIntersect(int result); void ClosedDialogLineIntersect(int result);
void ClosedDialogSpline(int result); void ClosedDialogSpline(int result);
void ClosedDialogArc(int result); void ClosedDialogArc(int result);
void ClosedDialogSplinePath(int result); void ClosedDialogSplinePath(int result);
void ClosedDialogCutSplinePath(int result); void ClosedDialogCutSplinePath(int result);
void ClosedDialogPointOfContact(int result); void ClosedDialogPointOfContact(int result);
void ApplyDialogPointOfContact();
void ClosedDialogDetail(int result); void ClosedDialogDetail(int result);
void ClosedDialogHeight(int result); void ClosedDialogHeight(int result);
void ClosedDialogTriangle(int result); void ClosedDialogTriangle(int result);
@ -121,6 +127,7 @@ public slots:
void ClosedDialogUnionDetails(int result); void ClosedDialogUnionDetails(int result);
void ClosedDialogCutSpline(int result); void ClosedDialogCutSpline(int result);
void ClosedDialogCutArc(int result); void ClosedDialogCutArc(int result);
void ApplyDialogCutArc();
void About(); void About();
void AboutQt(); void AboutQt();
@ -220,10 +227,15 @@ private:
template <typename Dialog, typename Func> template <typename Dialog, typename Func>
void SetToolButton(bool checked, Valentina::Tools t, const QString &cursor, const QString &toolTip, void SetToolButton(bool checked, Valentina::Tools t, const QString &cursor, const QString &toolTip,
Func closeDialogSlot); Func closeDialogSlot);
template <typename Dialog, typename Func, typename Func2>
void SetToolButtonWithApply(bool checked, Valentina::Tools t, const QString &cursor, const QString &toolTip,
Func closeDialogSlot, Func2 applyDialogSlot);
template <typename DrawTool> template <typename DrawTool>
void ClosedDialog(int result); void ClosedDialog(int result);
template <typename DrawTool>
void ClosedDialogWithApply(int result);
template <typename DrawTool>
void ApplyDialog();
bool SavePattern(const QString &curFile); bool SavePattern(const QString &curFile);
void AutoSavePattern(); void AutoSavePattern();
void setCurrentFile(const QString &fileName); void setCurrentFile(const QString &fileName);

View file

@ -341,6 +341,8 @@ extern const QString in_Oprt;
} \ } \
#endif /* Q_OS_WIN32 */ #endif /* Q_OS_WIN32 */
#else // define but disable this function if debugging is not set
#define SCASSERT(cond) qt_noop();
#endif /* QT_NO_DEBUG */ #endif /* QT_NO_DEBUG */
#endif // OPTIONS_H #endif // OPTIONS_H

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -34,5 +34,8 @@
<file alias="24x24/actions/list-add.png">icons/win.icon.theme/24x24/actions/list-add.png</file> <file alias="24x24/actions/list-add.png">icons/win.icon.theme/24x24/actions/list-add.png</file>
<file alias="32x32/actions/list-remove.png">icons/win.icon.theme/32x32/actions/list-remove.png</file> <file alias="32x32/actions/list-remove.png">icons/win.icon.theme/32x32/actions/list-remove.png</file>
<file alias="32x32/actions/list-add.png">icons/win.icon.theme/32x32/actions/list-add.png</file> <file alias="32x32/actions/list-add.png">icons/win.icon.theme/32x32/actions/list-add.png</file>
<file>icons/win.icon.theme/16x16/actions/go-down.png</file>
<file>icons/win.icon.theme/24x24/actions/go-down.png</file>
<file>icons/win.icon.theme/32x32/actions/go-down.png</file>
</qresource> </qresource>
</RCC> </RCC>

View file

@ -38,9 +38,6 @@
#if defined __cplusplus #if defined __cplusplus
/* Add C++ includes here */ /* Add C++ includes here */
#ifdef Q_CC_MSVC
#define _USE_MATH_DEFINES
#endif
#ifdef QT_CORE_LIB #ifdef QT_CORE_LIB
# include <QtCore> # include <QtCore>

View file

@ -97,7 +97,7 @@ void TableWindow::AddDetail()
{ {
tableScene->clearSelection(); tableScene->clearSelection();
VItem* Detail = listDetails[indexDetail]; VItem* Detail = listDetails[indexDetail];
Q_CHECK_PTR(Detail); SCASSERT(Detail != nullptr);
connect(Detail, &VItem::itemOut, this, &TableWindow::itemOut); connect(Detail, &VItem::itemOut, this, &TableWindow::itemOut);
connect(Detail, &VItem::itemColliding, this, &TableWindow::itemColliding); connect(Detail, &VItem::itemColliding, this, &TableWindow::itemColliding);
connect(this, &TableWindow::LengthChanged, Detail, &VItem::LengthChanged); connect(this, &TableWindow::LengthChanged, Detail, &VItem::LengthChanged);
@ -329,7 +329,7 @@ void TableWindow::itemColliding(QList<QGraphicsItem *> list, int number)
if (lis.size()-2 <= 0) if (lis.size()-2 <= 0)
{ {
VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(i) ); VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(i) );
Q_CHECK_PTR(bitem); SCASSERT(bitem != nullptr);
bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()))); bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
listCollidingItems.removeAt(i); listCollidingItems.removeAt(i);
} }
@ -338,7 +338,7 @@ void TableWindow::itemColliding(QList<QGraphicsItem *> list, int number)
else if (listCollidingItems.size()==1) else if (listCollidingItems.size()==1)
{ {
VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(0) ); VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(0) );
Q_CHECK_PTR(bitem); SCASSERT(bitem != nullptr);
bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()))); bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
listCollidingItems.clear(); listCollidingItems.clear();
collidingItems = true; collidingItems = true;

View file

@ -125,6 +125,25 @@ void VDrawTool::FullUpdateFromGui(int result)
dialog = nullptr; dialog = nullptr;
} }
//---------------------------------------------------------------------------------------------------------------------
void VDrawTool::FullUpdateFromGuiApply()
{
QDomElement domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
SaveDialog(domElement);
emit FullUpdateTree();
emit toolhaveChange();
}
}
//---------------------------------------------------------------------------------------------------------------------
void VDrawTool::DialogLinkDestroy()
{
this->dialog=nullptr;
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief SetFactor set current scale factor of scene. * @brief SetFactor set current scale factor of scene.
@ -171,9 +190,9 @@ qreal VDrawTool::CheckFormula(QString &formula, VContainer *data)
//Need delete dialog here because parser in dialog don't allow use correct separator for parsing here. //Need delete dialog here because parser in dialog don't allow use correct separator for parsing here.
//Don't know why. //Don't know why.
delete dialog; delete dialog;
Calculator *cal = new Calculator(data); Calculator *cal1 = new Calculator(data);
result = cal->EvalFormula(formula); result = cal1->EvalFormula(formula);
delete cal;//Here can be memory leak, but dialog already check this formula and probability very low. delete cal1;//Here can be memory leak, but dialog already check this formula and probability very low.
} }
else else
{ {

View file

@ -30,7 +30,6 @@
#define VDRAWTOOL_H #define VDRAWTOOL_H
#include "../vabstracttool.h" #include "../vabstracttool.h"
#include <QMenu> #include <QMenu>
#include <QGraphicsSceneContextMenuEvent> #include <QGraphicsSceneContextMenuEvent>
#include <QGraphicsView> #include <QGraphicsView>
@ -49,6 +48,10 @@ 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() {}
/**
* @brief DialogLinkDestroy removes dialog pointer
*/
virtual void DialogLinkDestroy();
void ignoreContextMenu(bool enable); void ignoreContextMenu(bool enable);
static qreal CheckFormula(QString &formula, VContainer *data); static qreal CheckFormula(QString &formula, VContainer *data);
@ -57,6 +60,10 @@ public slots:
virtual void ChangedActivDraw(const QString &newName); virtual void ChangedActivDraw(const QString &newName);
void ChangedNameDraw(const QString &oldName, const QString &newName); void ChangedNameDraw(const QString &oldName, const QString &newName);
virtual void FullUpdateFromGui(int result); virtual void FullUpdateFromGui(int result);
/**
* @brief FullUpdateFromGuiApply refresh tool data after change in options but do not delete dialog
*/
virtual void FullUpdateFromGuiApply();
virtual void SetFactor(qreal factor); virtual void SetFactor(qreal factor);
protected: protected:
/** @brief ignoreContextMenuEvent ignore or not context menu events. */ /** @brief ignoreContextMenuEvent ignore or not context menu events. */
@ -117,6 +124,7 @@ protected:
connect(qobject_cast< VMainGraphicsScene * >(tool->scene()), connect(qobject_cast< VMainGraphicsScene * >(tool->scene()),
&VMainGraphicsScene::ChoosedObject, dialog, &DialogTool::ChoosedObject); &VMainGraphicsScene::ChoosedObject, dialog, &DialogTool::ChoosedObject);
connect(dialog, &DialogTool::DialogClosed, tool, &Tool::FullUpdateFromGui); connect(dialog, &DialogTool::DialogClosed, tool, &Tool::FullUpdateFromGui);
connect(dialog, &DialogTool::DialogApplied, tool, &Tool::FullUpdateFromGuiApply);
if (ignoreFullUpdate == false) if (ignoreFullUpdate == false)
{ {
connect(doc, &VPattern::FullUpdateFromFile, dialog, &DialogTool::UpdateList); connect(doc, &VPattern::FullUpdateFromFile, dialog, &DialogTool::UpdateList);

View file

@ -133,9 +133,9 @@ void VToolAlongLine::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolAlongLine::SaveDialog(QDomElement &domElement) void VToolAlongLine::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog); DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine()); doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());
@ -146,9 +146,9 @@ void VToolAlongLine::SaveDialog(QDomElement &domElement)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolAlongLine::setDialog() void VToolAlongLine::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog); DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine); dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula); dialogTool->setFormula(formula);
@ -158,22 +158,28 @@ void VToolAlongLine::setDialog()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolAlongLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) VToolAlongLine* VToolAlongLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog); DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
QString formula = dialogTool->getFormula(); QString formula = dialogTool->getFormula();
const quint32 firstPointId = dialogTool->getFirstPointId(); const quint32 firstPointId = dialogTool->getFirstPointId();
const quint32 secondPointId = dialogTool->getSecondPointId(); const quint32 secondPointId = dialogTool->getSecondPointId();
const QString typeLine = dialogTool->getTypeLine(); const QString typeLine = dialogTool->getTypeLine();
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
Create(0, pointName, typeLine, formula, firstPointId, secondPointId, 5, 10, scene, doc, data, VToolAlongLine *point=nullptr;
point = Create(0, pointName, typeLine, formula, firstPointId, secondPointId, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui); Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolAlongLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, QString &formula, VToolAlongLine* VToolAlongLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, QString &formula,
const quint32 &firstPointId, const quint32 &secondPointId, const qreal &mx, const qreal &my, const quint32 &firstPointId, const quint32 &secondPointId, const qreal &mx, const qreal &my,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation) const Document::Documents &parse, const Valentina::Sources &typeCreation)
@ -212,5 +218,7 @@ void VToolAlongLine::Create(const quint32 _id, const QString &pointName, const Q
doc->AddTool(id, point); doc->AddTool(id, point);
doc->IncrementReferens(firstPointId); doc->IncrementReferens(firstPointId);
doc->IncrementReferens(secondPointId); doc->IncrementReferens(secondPointId);
return point;
} }
return nullptr;
} }

View file

@ -64,7 +64,7 @@ public:
* @param doc dom document container. * @param doc dom document container.
* @param data container with variables. * @param data container with variables.
*/ */
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); static VToolAlongLine* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/** /**
* @brief Create help create tool. * @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet. * @param _id tool id, 0 if tool doesn't exist yet.
@ -81,7 +81,7 @@ public:
* @param parse parser file mode. * @param parse parser file mode.
* @param typeCreation way we create this tool. * @param typeCreation way we create this tool.
*/ */
static void Create(const quint32 _id, const QString &pointName, const QString &typeLine, QString &formula, static VToolAlongLine* Create(const quint32 _id, const QString &pointName, const QString &typeLine, QString &formula,
const quint32 &firstPointId, const quint32 &secondPointId, const qreal &mx, const qreal &my, const quint32 &firstPointId, const quint32 &secondPointId, const qreal &mx, const qreal &my,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation); const Document::Documents &parse, const Valentina::Sources &typeCreation);

View file

@ -62,9 +62,9 @@ VToolArc::VToolArc(VPattern *doc, VContainer *data, quint32 id, const Valentina:
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolArc::setDialog() void VToolArc::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog); DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VArc *arc = VAbstractTool::data.GeometricObject<const VArc *>(id); const VArc *arc = VAbstractTool::data.GeometricObject<const VArc *>(id);
dialogTool->SetCenter(arc->GetCenter().id()); dialogTool->SetCenter(arc->GetCenter().id());
dialogTool->SetF1(arc->GetFormulaF1()); dialogTool->SetF1(arc->GetFormulaF1());
@ -75,9 +75,9 @@ void VToolArc::setDialog()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolArc::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) void VToolArc::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog); DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const quint32 center = dialogTool->GetCenter(); const quint32 center = dialogTool->GetCenter();
QString radius = dialogTool->GetRadius(); QString radius = dialogTool->GetRadius();
QString f1 = dialogTool->GetF1(); QString f1 = dialogTool->GetF1();
@ -268,9 +268,9 @@ void VToolArc::keyReleaseEvent(QKeyEvent *event)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolArc::SaveDialog(QDomElement &domElement) void VToolArc::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog); DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetCenter())); doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetCenter()));
doc->SetAttribute(domElement, AttrRadius, dialogTool->GetRadius()); doc->SetAttribute(domElement, AttrRadius, dialogTool->GetRadius());
doc->SetAttribute(domElement, AttrAngle1, dialogTool->GetF1()); doc->SetAttribute(domElement, AttrAngle1, dialogTool->GetF1());

View file

@ -74,9 +74,9 @@ QPointF VToolBisector::FindPoint(const QPointF &firstPoint, const QPointF &secon
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolBisector::setDialog() void VToolBisector::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog); DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine); dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula); dialogTool->setFormula(formula);
@ -87,24 +87,30 @@ void VToolBisector::setDialog()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolBisector::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VToolBisector* VToolBisector::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data) VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog); DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
QString formula = dialogTool->getFormula(); QString formula = dialogTool->getFormula();
const quint32 firstPointId = dialogTool->getFirstPointId(); const quint32 firstPointId = dialogTool->getFirstPointId();
const quint32 secondPointId = dialogTool->getSecondPointId(); const quint32 secondPointId = dialogTool->getSecondPointId();
const quint32 thirdPointId = dialogTool->getThirdPointId(); const quint32 thirdPointId = dialogTool->getThirdPointId();
const QString typeLine = dialogTool->getTypeLine(); const QString typeLine = dialogTool->getTypeLine();
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
Create(0, formula, firstPointId, secondPointId, thirdPointId, typeLine, pointName, 5, 10, scene, doc, data, VToolBisector *point = nullptr;
point=Create(0, formula, firstPointId, secondPointId, thirdPointId, typeLine, pointName, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui); Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &firstPointId, VToolBisector* VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine, const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine,
const QString &pointName, const qreal &mx, const qreal &my, const QString &pointName, const qreal &mx, const qreal &my,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
@ -145,7 +151,9 @@ void VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &f
doc->IncrementReferens(firstPointId); doc->IncrementReferens(firstPointId);
doc->IncrementReferens(secondPointId); doc->IncrementReferens(secondPointId);
doc->IncrementReferens(thirdPointId); doc->IncrementReferens(thirdPointId);
return point;
} }
return nullptr;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -232,9 +240,9 @@ void VToolBisector::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolBisector::SaveDialog(QDomElement &domElement) void VToolBisector::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog); DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine()); doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());

View file

@ -75,7 +75,7 @@ public:
* @param doc dom document container. * @param doc dom document container.
* @param data container with variables. * @param data container with variables.
*/ */
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); static VToolBisector* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/** /**
* @brief Create help create tool. * @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet. * @param _id tool id, 0 if tool doesn't exist yet.
@ -93,7 +93,7 @@ public:
* @param parse parser file mode. * @param parse parser file mode.
* @param typeCreation way we create this tool. * @param typeCreation way we create this tool.
*/ */
static void Create(const quint32 _id, QString &formula, const quint32 &firstPointId, static VToolBisector* Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine, const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine,
const QString &pointName, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, const QString &pointName, const qreal &mx, const qreal &my, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data, const Document::Documents &parse, VPattern *doc, VContainer *data, const Document::Documents &parse,

View file

@ -67,9 +67,9 @@ VToolCutArc::VToolCutArc(VPattern *doc, VContainer *data, const quint32 &id, con
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutArc::setDialog() void VToolCutArc::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog); DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setFormula(formula); dialogTool->setFormula(formula);
dialogTool->setArcId(arcId, id); dialogTool->setArcId(arcId, id);
@ -77,20 +77,26 @@ void VToolCutArc::setDialog()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutArc::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VToolCutArc* VToolCutArc::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data) VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog); DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
QString formula = dialogTool->getFormula(); QString formula = dialogTool->getFormula();
const quint32 arcId = dialogTool->getArcId(); const quint32 arcId = dialogTool->getArcId();
Create(0, pointName, formula, arcId, 5, 10, scene, doc, data, Document::FullParse, Valentina::FromGui); VToolCutArc* point = nullptr;
point=Create(0, pointName, formula, arcId, 5, 10, scene, doc, data, Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId, VToolCutArc* VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation) VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation)
{ {
@ -149,7 +155,9 @@ void VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &f
doc->AddTool(arc1id, point); doc->AddTool(arc1id, point);
doc->AddTool(arc2id, point); doc->AddTool(arc2id, point);
doc->IncrementReferens(arcId); doc->IncrementReferens(arcId);
return point;
} }
return nullptr;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -250,9 +258,9 @@ void VToolCutArc::RefreshGeometry()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutArc::SaveDialog(QDomElement &domElement) void VToolCutArc::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog); DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());
doc->SetAttribute(domElement, AttrArc, QString().setNum(dialogTool->getArcId())); doc->SetAttribute(domElement, AttrArc, QString().setNum(dialogTool->getArcId()));

View file

@ -65,7 +65,7 @@ public:
* @param doc dom document container. * @param doc dom document container.
* @param data container with variables. * @param data container with variables.
*/ */
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); static VToolCutArc* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/** /**
* @brief Create help create tool. * @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet. * @param _id tool id, 0 if tool doesn't exist yet.
@ -80,7 +80,7 @@ public:
* @param parse parser file mode. * @param parse parser file mode.
* @param typeCreation way we create this tool. * @param typeCreation way we create this tool.
*/ */
static void Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId, static VToolCutArc* Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation); VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation);
static const QString ToolType; static const QString ToolType;

View file

@ -67,9 +67,9 @@ VToolCutSpline::VToolCutSpline(VPattern *doc, VContainer *data, const quint32 &i
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutSpline::setDialog() void VToolCutSpline::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog); DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setFormula(formula); dialogTool->setFormula(formula);
dialogTool->setSplineId(splineId, id); dialogTool->setSplineId(splineId, id);
@ -80,9 +80,9 @@ void VToolCutSpline::setDialog()
void VToolCutSpline::Create(DialogTool *dialog, VMainGraphicsScene *scene, void VToolCutSpline::Create(DialogTool *dialog, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data) VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog); DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
QString formula = dialogTool->getFormula(); QString formula = dialogTool->getFormula();
const quint32 splineId = dialogTool->getSplineId(); const quint32 splineId = dialogTool->getSplineId();
@ -251,9 +251,9 @@ void VToolCutSpline::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutSpline::SaveDialog(QDomElement &domElement) void VToolCutSpline::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog); DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());
doc->SetAttribute(domElement, AttrSpline, QString().setNum(dialogTool->getSplineId())); doc->SetAttribute(domElement, AttrSpline, QString().setNum(dialogTool->getSplineId()));

View file

@ -68,9 +68,9 @@ VToolCutSplinePath::VToolCutSplinePath(VPattern *doc, VContainer *data, const qu
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutSplinePath::setDialog() void VToolCutSplinePath::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog); DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setFormula(formula); dialogTool->setFormula(formula);
dialogTool->setSplinePathId(splinePathId, id); dialogTool->setSplinePathId(splinePathId, id);
@ -80,9 +80,9 @@ void VToolCutSplinePath::setDialog()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutSplinePath::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) void VToolCutSplinePath::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog); DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
QString formula = dialogTool->getFormula(); QString formula = dialogTool->getFormula();
const quint32 splinePathId = dialogTool->getSplinePathId(); const quint32 splinePathId = dialogTool->getSplinePathId();
@ -96,7 +96,7 @@ void VToolCutSplinePath::Create(const quint32 _id, const QString &pointName, QSt
const Document::Documents &parse, const Valentina::Sources &typeCreation) const Document::Documents &parse, const Valentina::Sources &typeCreation)
{ {
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(splinePathId); const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(splinePathId);
Q_CHECK_PTR(splPath); SCASSERT(splPath != nullptr);
const qreal result = CheckFormula(formula, data); const qreal result = CheckFormula(formula, data);
@ -326,9 +326,9 @@ void VToolCutSplinePath::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolCutSplinePath::SaveDialog(QDomElement &domElement) void VToolCutSplinePath::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog); DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());
doc->SetAttribute(domElement, AttrSplinePath, QString().setNum(dialogTool->getSplinePathId())); doc->SetAttribute(domElement, AttrSplinePath, QString().setNum(dialogTool->getSplinePathId()));

View file

@ -30,7 +30,6 @@
#include "../../widgets/vmaingraphicsscene.h" #include "../../widgets/vmaingraphicsscene.h"
#include "../../container/calculator.h" #include "../../container/calculator.h"
#include "../../dialogs/tools/dialogendline.h" #include "../../dialogs/tools/dialogendline.h"
#include "../../dialogs/tools/dialogeditwrongformula.h"
const QString VToolEndLine::ToolType = QStringLiteral("endLine"); const QString VToolEndLine::ToolType = QStringLiteral("endLine");
@ -54,9 +53,9 @@ VToolEndLine::VToolEndLine(VPattern *doc, VContainer *data, const quint32 &id,
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolEndLine::setDialog() void VToolEndLine::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog); DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine); dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula); dialogTool->setFormula(formula);
@ -66,26 +65,33 @@ void VToolEndLine::setDialog()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolEndLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VToolEndLine* VToolEndLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data) VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog); DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool);
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
const QString typeLine = dialogTool->getTypeLine(); const QString typeLine = dialogTool->getTypeLine();
QString formula = dialogTool->getFormula(); QString formula = dialogTool->getFormula();
const qreal angle = dialogTool->getAngle(); const qreal angle = dialogTool->getAngle();
const quint32 basePointId = dialogTool->getBasePointId(); const quint32 basePointId = dialogTool->getBasePointId();
Create(0, pointName, typeLine, formula, angle, basePointId, 5, 10, scene, doc, data, Document::FullParse,
Valentina::FromGui); VToolEndLine *point = nullptr;
point=Create(0, pointName, typeLine, formula, angle, basePointId, 5, 10, scene, doc, data, Document::FullParse,
Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolEndLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, VToolEndLine* VToolEndLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine,
QString &formula, const qreal &angle, const quint32 &basePointId, QString &formula, const qreal &angle, const quint32 &basePointId,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation) VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation)
{ {
const VPointF *basePoint = data->GeometricObject<const VPointF *>(basePointId); const VPointF *basePoint = data->GeometricObject<const VPointF *>(basePointId);
QLineF line = QLineF(basePoint->toQPointF(), QPointF(basePoint->x()+100, basePoint->y())); QLineF line = QLineF(basePoint->toQPointF(), QPointF(basePoint->x()+100, basePoint->y()));
@ -117,7 +123,9 @@ void VToolEndLine::Create(const quint32 _id, const QString &pointName, const QSt
connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPoint::SetFactor); connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPoint::SetFactor);
doc->AddTool(id, point); doc->AddTool(id, point);
doc->IncrementReferens(basePointId); doc->IncrementReferens(basePointId);
return point;
} }
return nullptr;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -186,9 +194,9 @@ void VToolEndLine::RefreshDataInFile()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolEndLine::SaveDialog(QDomElement &domElement) void VToolEndLine::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog); DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine()); doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());

View file

@ -63,8 +63,9 @@ public:
* @param scene pointer to scene. * @param scene pointer to scene.
* @param doc dom document container. * @param doc dom document container.
* @param data container with variables. * @param data container with variables.
* @return the created tool
*/ */
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); static VToolEndLine *Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/** /**
* @brief Create help create tool. * @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet. * @param _id tool id, 0 if tool doesn't exist yet.
@ -80,8 +81,9 @@ public:
* @param data container with variables. * @param data container with variables.
* @param parse parser file mode. * @param parse parser file mode.
* @param typeCreation way we create this tool. * @param typeCreation way we create this tool.
* @return the created tool
*/ */
static void Create(const quint32 _id, const QString &pointName, const QString &typeLine, static VToolEndLine *Create(const quint32 _id, const QString &pointName, const QString &typeLine,
QString &formula, const qreal &angle, const quint32 &basePointId, const qreal &mx, QString &formula, const qreal &angle, const quint32 &basePointId, const qreal &mx,
const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation); const Document::Documents &parse, const Valentina::Sources &typeCreation);

View file

@ -51,9 +51,9 @@ VToolHeight::VToolHeight(VPattern *doc, VContainer *data, const quint32 &id, con
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolHeight::setDialog() void VToolHeight::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog); DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine); dialogTool->setTypeLine(typeLine);
dialogTool->setBasePointId(basePointId, id); dialogTool->setBasePointId(basePointId, id);
@ -66,9 +66,9 @@ void VToolHeight::setDialog()
void VToolHeight::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, void VToolHeight::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data) VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog); DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
disconnect(doc, &VPattern::FullUpdateFromFile, dialogTool, &DialogHeight::UpdateList); disconnect(doc, &VPattern::FullUpdateFromFile, dialogTool, &DialogHeight::UpdateList);
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
const QString typeLine = dialogTool->getTypeLine(); const QString typeLine = dialogTool->getTypeLine();
@ -198,9 +198,9 @@ void VToolHeight::RefreshDataInFile()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolHeight::SaveDialog(QDomElement &domElement) void VToolHeight::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog); DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine()); doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrBasePoint, QString().setNum(dialogTool->getBasePointId())); doc->SetAttribute(domElement, AttrBasePoint, QString().setNum(dialogTool->getBasePointId()));

View file

@ -62,9 +62,9 @@ VToolLine::VToolLine(VPattern *doc, VContainer *data, quint32 id, quint32 firstP
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolLine::setDialog() void VToolLine::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog); DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
dialogTool->setFirstPoint(firstPoint); dialogTool->setFirstPoint(firstPoint);
dialogTool->setSecondPoint(secondPoint); dialogTool->setSecondPoint(secondPoint);
dialogTool->setTypeLine(typeLine); dialogTool->setTypeLine(typeLine);
@ -73,9 +73,9 @@ void VToolLine::setDialog()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) void VToolLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog); DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const quint32 firstPoint = dialogTool->getFirstPoint(); const quint32 firstPoint = dialogTool->getFirstPoint();
const quint32 secondPoint = dialogTool->getSecondPoint(); const quint32 secondPoint = dialogTool->getSecondPoint();
const QString typeLine = dialogTool->getTypeLine(); const QString typeLine = dialogTool->getTypeLine();
@ -87,9 +87,9 @@ void VToolLine::Create(const quint32 &_id, const quint32 &firstPoint, const quin
const QString &typeLine, VMainGraphicsScene *scene, VPattern *doc, VContainer *data, const QString &typeLine, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation) const Document::Documents &parse, const Valentina::Sources &typeCreation)
{ {
Q_CHECK_PTR(scene); SCASSERT(scene != nullptr);
Q_CHECK_PTR(doc); SCASSERT(doc != nullptr);
Q_CHECK_PTR(data); SCASSERT(data != nullptr);
quint32 id = _id; quint32 id = _id;
if (typeCreation == Valentina::FromGui) if (typeCreation == Valentina::FromGui)
{ {
@ -243,9 +243,9 @@ void VToolLine::keyReleaseEvent(QKeyEvent *event)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolLine::SaveDialog(QDomElement &domElement) void VToolLine::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog); DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrFirstPoint, QString().setNum(dialogTool->getFirstPoint())); doc->SetAttribute(domElement, AttrFirstPoint, QString().setNum(dialogTool->getFirstPoint()));
doc->SetAttribute(domElement, AttrSecondPoint, QString().setNum(dialogTool->getSecondPoint())); doc->SetAttribute(domElement, AttrSecondPoint, QString().setNum(dialogTool->getSecondPoint()));
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine()); doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());

View file

@ -53,9 +53,9 @@ VToolLineIntersect::VToolLineIntersect(VPattern *doc, VContainer *data, const qu
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolLineIntersect::setDialog() void VToolLineIntersect::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog); DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setP1Line1(p1Line1); dialogTool->setP1Line1(p1Line1);
dialogTool->setP2Line1(p2Line1); dialogTool->setP2Line1(p2Line1);
@ -67,9 +67,9 @@ void VToolLineIntersect::setDialog()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolLineIntersect::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) void VToolLineIntersect::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog); DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const quint32 p1Line1Id = dialogTool->getP1Line1(); const quint32 p1Line1Id = dialogTool->getP1Line1();
const quint32 p2Line1Id = dialogTool->getP2Line1(); const quint32 p2Line1Id = dialogTool->getP2Line1();
const quint32 p1Line2Id = dialogTool->getP1Line2(); const quint32 p1Line2Id = dialogTool->getP1Line2();
@ -217,9 +217,9 @@ void VToolLineIntersect::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolLineIntersect::SaveDialog(QDomElement &domElement) void VToolLineIntersect::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog); DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrP1Line1, QString().setNum(dialogTool->getP1Line1())); doc->SetAttribute(domElement, AttrP1Line1, QString().setNum(dialogTool->getP1Line1()));
doc->SetAttribute(domElement, AttrP2Line1, QString().setNum(dialogTool->getP2Line1())); doc->SetAttribute(domElement, AttrP2Line1, QString().setNum(dialogTool->getP2Line1()));

View file

@ -53,9 +53,9 @@ VToolNormal::VToolNormal(VPattern *doc, VContainer *data, const quint32 &id, con
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolNormal::setDialog() void VToolNormal::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog); DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine); dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula); dialogTool->setFormula(formula);
@ -66,23 +66,29 @@ void VToolNormal::setDialog()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolNormal::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) VToolNormal* VToolNormal::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog); DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
QString formula = dialogTool->getFormula(); QString formula = dialogTool->getFormula();
const quint32 firstPointId = dialogTool->getFirstPointId(); const quint32 firstPointId = dialogTool->getFirstPointId();
const quint32 secondPointId = dialogTool->getSecondPointId(); const quint32 secondPointId = dialogTool->getSecondPointId();
const QString typeLine = dialogTool->getTypeLine(); const QString typeLine = dialogTool->getTypeLine();
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
const qreal angle = dialogTool->getAngle(); const qreal angle = dialogTool->getAngle();
Create(0, formula, firstPointId, secondPointId, typeLine, pointName, angle, 5, 10, scene, doc, data, VToolNormal *point = nullptr;
point=Create(0, formula, firstPointId, secondPointId, typeLine, pointName, angle, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui); Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolNormal::Create(const quint32 _id, QString &formula, const quint32 &firstPointId, VToolNormal* VToolNormal::Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
const quint32 &secondPointId, const QString &typeLine, const QString &pointName, const quint32 &secondPointId, const QString &typeLine, const QString &pointName,
const qreal angle, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, const qreal angle, const qreal &mx, const qreal &my, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data, const Document::Documents &parse, VPattern *doc, VContainer *data, const Document::Documents &parse,
@ -121,7 +127,9 @@ void VToolNormal::Create(const quint32 _id, QString &formula, const quint32 &fir
doc->AddTool(id, point); doc->AddTool(id, point);
doc->IncrementReferens(firstPointId); doc->IncrementReferens(firstPointId);
doc->IncrementReferens(secondPointId); doc->IncrementReferens(secondPointId);
return point;
} }
return nullptr;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -218,9 +226,9 @@ void VToolNormal::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolNormal::SaveDialog(QDomElement &domElement) void VToolNormal::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog); DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine()); doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());

View file

@ -66,7 +66,7 @@ public:
* @param doc dom document container. * @param doc dom document container.
* @param data container with variables. * @param data container with variables.
*/ */
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); static VToolNormal* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/** /**
* @brief Create help create tool. * @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet. * @param _id tool id, 0 if tool doesn't exist yet.
@ -84,7 +84,7 @@ public:
* @param parse parser file mode. * @param parse parser file mode.
* @param typeCreation way we create this tool. * @param typeCreation way we create this tool.
*/ */
static void Create(const quint32 _id, QString &formula, const quint32 &firstPointId, static VToolNormal* Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
const quint32 &secondPointId, const QString &typeLine, const QString &pointName, const quint32 &secondPointId, const QString &typeLine, const QString &pointName,
const qreal angle, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, const qreal angle, const qreal &mx, const qreal &my, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data, const Document::Documents &parse, VPattern *doc, VContainer *data, const Document::Documents &parse,

View file

@ -53,9 +53,9 @@ VToolPointOfContact::VToolPointOfContact(VPattern *doc, VContainer *data, const
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolPointOfContact::setDialog() void VToolPointOfContact::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog); DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setRadius(arcRadius); dialogTool->setRadius(arcRadius);
dialogTool->setCenter(center, id); dialogTool->setCenter(center, id);
@ -92,22 +92,28 @@ QPointF VToolPointOfContact::FindPoint(const qreal &radius, const QPointF &cente
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolPointOfContact::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) VToolPointOfContact* VToolPointOfContact::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog); DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
QString radius = dialogTool->getRadius(); QString radius = dialogTool->getRadius();
const quint32 center = dialogTool->getCenter(); const quint32 center = dialogTool->getCenter();
const quint32 firstPointId = dialogTool->getFirstPoint(); const quint32 firstPointId = dialogTool->getFirstPoint();
const quint32 secondPointId = dialogTool->getSecondPoint(); const quint32 secondPointId = dialogTool->getSecondPoint();
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
Create(0, radius, center, firstPointId, secondPointId, pointName, 5, 10, scene, doc, data, VToolPointOfContact *point = nullptr;
point=Create(0, radius, center, firstPointId, secondPointId, pointName, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui); Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolPointOfContact::Create(const quint32 _id, QString &radius, const quint32 &center, const quint32 &firstPointId, VToolPointOfContact* VToolPointOfContact::Create(const quint32 _id, QString &radius, const quint32 &center, const quint32 &firstPointId,
const quint32 &secondPointId, const QString &pointName, const qreal &mx, const quint32 &secondPointId, const QString &pointName, const qreal &mx,
const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation) const Document::Documents &parse, const Valentina::Sources &typeCreation)
@ -151,7 +157,9 @@ void VToolPointOfContact::Create(const quint32 _id, QString &radius, const quint
doc->IncrementReferens(center); doc->IncrementReferens(center);
doc->IncrementReferens(firstPointId); doc->IncrementReferens(firstPointId);
doc->IncrementReferens(secondPointId); doc->IncrementReferens(secondPointId);
return point;
} }
return nullptr;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -235,9 +243,9 @@ void VToolPointOfContact::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolPointOfContact::SaveDialog(QDomElement &domElement) void VToolPointOfContact::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog); DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrRadius, dialogTool->getRadius()); doc->SetAttribute(domElement, AttrRadius, dialogTool->getRadius());
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->getCenter())); doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->getCenter()));

View file

@ -74,7 +74,7 @@ public:
* @param doc dom document container. * @param doc dom document container.
* @param data container with variables. * @param data container with variables.
*/ */
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); static VToolPointOfContact* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/** /**
* @brief Create help create tool. * @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet. * @param _id tool id, 0 if tool doesn't exist yet.
@ -91,7 +91,7 @@ public:
* @param parse parser file mode. * @param parse parser file mode.
* @param typeCreation way we create this tool. * @param typeCreation way we create this tool.
*/ */
static void Create(const quint32 _id, QString &arcRadius, const quint32 &center, static VToolPointOfContact* Create(const quint32 _id, QString &arcRadius, const quint32 &center,
const quint32 &firstPointId, const quint32 &secondPointId, const QString &pointName, const quint32 &firstPointId, const quint32 &secondPointId, const QString &pointName,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation); VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation);

View file

@ -51,9 +51,9 @@ VToolPointOfIntersection::VToolPointOfIntersection(VPattern *doc, VContainer *da
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolPointOfIntersection::setDialog() void VToolPointOfIntersection::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogPointOfIntersection *dialogTool = qobject_cast<DialogPointOfIntersection*>(dialog); DialogPointOfIntersection *dialogTool = qobject_cast<DialogPointOfIntersection*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setFirstPointId(firstPointId, id); dialogTool->setFirstPointId(firstPointId, id);
dialogTool->setSecondPointId(secondPointId, id); dialogTool->setSecondPointId(secondPointId, id);
@ -64,9 +64,9 @@ void VToolPointOfIntersection::setDialog()
void VToolPointOfIntersection::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, void VToolPointOfIntersection::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data) VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogPointOfIntersection *dialogTool = qobject_cast<DialogPointOfIntersection*>(dialog); DialogPointOfIntersection *dialogTool = qobject_cast<DialogPointOfIntersection*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const quint32 firstPointId = dialogTool->getFirstPointId(); const quint32 firstPointId = dialogTool->getFirstPointId();
const quint32 secondPointId = dialogTool->getSecondPointId(); const quint32 secondPointId = dialogTool->getSecondPointId();
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
@ -177,9 +177,9 @@ void VToolPointOfIntersection::RefreshDataInFile()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolPointOfIntersection::SaveDialog(QDomElement &domElement) void VToolPointOfIntersection::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogPointOfIntersection *dialogTool = qobject_cast<DialogPointOfIntersection*>(dialog); DialogPointOfIntersection *dialogTool = qobject_cast<DialogPointOfIntersection*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrFirstPoint, QString().setNum(dialogTool->getFirstPointId())); doc->SetAttribute(domElement, AttrFirstPoint, QString().setNum(dialogTool->getFirstPointId()));
doc->SetAttribute(domElement, AttrSecondPoint, QString().setNum(dialogTool->getSecondPointId())); doc->SetAttribute(domElement, AttrSecondPoint, QString().setNum(dialogTool->getSecondPointId()));

View file

@ -52,9 +52,9 @@ VToolShoulderPoint::VToolShoulderPoint(VPattern *doc, VContainer *data, const qu
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolShoulderPoint::setDialog() void VToolShoulderPoint::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogShoulderPoint *dialogTool = qobject_cast<DialogShoulderPoint*>(dialog); DialogShoulderPoint *dialogTool = qobject_cast<DialogShoulderPoint*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine); dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula); dialogTool->setFormula(formula);
@ -94,23 +94,29 @@ QPointF VToolShoulderPoint::FindPoint(const QPointF &p1Line, const QPointF &p2Li
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolShoulderPoint::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) VToolShoulderPoint* VToolShoulderPoint::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogShoulderPoint *dialogTool = qobject_cast<DialogShoulderPoint*>(dialog); DialogShoulderPoint *dialogTool = qobject_cast<DialogShoulderPoint*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool);
QString formula = dialogTool->getFormula(); QString formula = dialogTool->getFormula();
const quint32 p1Line = dialogTool->getP1Line(); const quint32 p1Line = dialogTool->getP1Line();
const quint32 p2Line = dialogTool->getP2Line(); const quint32 p2Line = dialogTool->getP2Line();
const quint32 pShoulder = dialogTool->getPShoulder(); const quint32 pShoulder = dialogTool->getPShoulder();
const QString typeLine = dialogTool->getTypeLine(); const QString typeLine = dialogTool->getTypeLine();
const QString pointName = dialogTool->getPointName(); const QString pointName = dialogTool->getPointName();
Create(0, formula, p1Line, p2Line, pShoulder, typeLine, pointName, 5, 10, scene, doc, data, VToolShoulderPoint * point = nullptr;
point=Create(0, formula, p1Line, p2Line, pShoulder, typeLine, pointName, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui); Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolShoulderPoint::Create(const quint32 _id, QString &formula, const quint32 &p1Line, VToolShoulderPoint* VToolShoulderPoint::Create(const quint32 _id, QString &formula, const quint32 &p1Line,
const quint32 &p2Line, const quint32 &pShoulder, const QString &typeLine, const quint32 &p2Line, const quint32 &pShoulder, const QString &typeLine,
const QString &pointName, const qreal &mx, const qreal &my, const QString &pointName, const qreal &mx, const qreal &my,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
@ -154,7 +160,9 @@ void VToolShoulderPoint::Create(const quint32 _id, QString &formula, const quint
doc->IncrementReferens(p1Line); doc->IncrementReferens(p1Line);
doc->IncrementReferens(p2Line); doc->IncrementReferens(p2Line);
doc->IncrementReferens(pShoulder); doc->IncrementReferens(pShoulder);
return point;
} }
return nullptr;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -241,9 +249,9 @@ void VToolShoulderPoint::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolShoulderPoint::SaveDialog(QDomElement &domElement) void VToolShoulderPoint::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogShoulderPoint *dialogTool = qobject_cast<DialogShoulderPoint*>(dialog); DialogShoulderPoint *dialogTool = qobject_cast<DialogShoulderPoint*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine()); doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula()); doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());

View file

@ -76,7 +76,7 @@ public:
* @param doc dom document container. * @param doc dom document container.
* @param data container with variables. * @param data container with variables.
*/ */
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data); static VToolShoulderPoint* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/** /**
* @brief Create help create tool. * @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet. * @param _id tool id, 0 if tool doesn't exist yet.
@ -94,7 +94,7 @@ public:
* @param parse parser file mode. * @param parse parser file mode.
* @param typeCreation way we create this tool. * @param typeCreation way we create this tool.
*/ */
static void Create(const quint32 _id, QString &formula, const quint32 &p1Line, const quint32 &p2Line, static VToolShoulderPoint* Create(const quint32 _id, QString &formula, const quint32 &p1Line, const quint32 &p2Line,
const quint32 &pShoulder, const QString &typeLine, const QString &pointName, const qreal &mx, const quint32 &pShoulder, const QString &typeLine, const QString &pointName, const qreal &mx,
const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data, const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation); const Document::Documents &parse, const Valentina::Sources &typeCreation);

View file

@ -57,9 +57,9 @@ VToolSinglePoint::VToolSinglePoint (VPattern *doc, VContainer *data, quint32 id,
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolSinglePoint::setDialog() void VToolSinglePoint::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogSinglePoint *dialogTool = qobject_cast<DialogSinglePoint*>(dialog); DialogSinglePoint *dialogTool = qobject_cast<DialogSinglePoint*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setData(p->name(), p->toQPointF()); dialogTool->setData(p->name(), p->toQPointF());
} }
@ -145,9 +145,9 @@ void VToolSinglePoint::decrementReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolSinglePoint::SaveDialog(QDomElement &domElement) void VToolSinglePoint::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogSinglePoint *dialogTool = qobject_cast<DialogSinglePoint*>(dialog); DialogSinglePoint *dialogTool = qobject_cast<DialogSinglePoint*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
QPointF p = dialogTool->getPoint(); QPointF p = dialogTool->getPoint();
QString name = dialogTool->getName(); QString name = dialogTool->getName();
doc->SetAttribute(domElement, AttrName, name); doc->SetAttribute(domElement, AttrName, name);

View file

@ -75,9 +75,9 @@ VToolSpline::VToolSpline(VPattern *doc, VContainer *data, quint32 id, const Vale
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolSpline::setDialog() void VToolSpline::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogSpline *dialogTool = qobject_cast<DialogSpline*>(dialog); DialogSpline *dialogTool = qobject_cast<DialogSpline*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VSpline *spl = VAbstractTool::data.GeometricObject<const VSpline *>(id); const VSpline *spl = VAbstractTool::data.GeometricObject<const VSpline *>(id);
dialogTool->setP1(spl->GetP1().id()); dialogTool->setP1(spl->GetP1().id());
dialogTool->setP4(spl->GetP4().id()); dialogTool->setP4(spl->GetP4().id());
@ -92,9 +92,9 @@ void VToolSpline::setDialog()
void VToolSpline::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, void VToolSpline::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data) VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogSpline *dialogTool = qobject_cast<DialogSpline*>(dialog); DialogSpline *dialogTool = qobject_cast<DialogSpline*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const quint32 p1 = dialogTool->getP1(); const quint32 p1 = dialogTool->getP1();
const quint32 p4 = dialogTool->getP4(); const quint32 p4 = dialogTool->getP4();
const qreal kAsm1 = dialogTool->getKAsm1(); const qreal kAsm1 = dialogTool->getKAsm1();
@ -233,9 +233,9 @@ void VToolSpline::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolSpline::SaveDialog(QDomElement &domElement) void VToolSpline::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogSpline *dialogTool = qobject_cast<DialogSpline*>(dialog); DialogSpline *dialogTool = qobject_cast<DialogSpline*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
VPointF point1 = *VAbstractTool::data.GeometricObject<const VPointF *>(dialogTool->getP1()); VPointF point1 = *VAbstractTool::data.GeometricObject<const VPointF *>(dialogTool->getP1());
VPointF point4 = *VAbstractTool::data.GeometricObject<const VPointF *>(dialogTool->getP4()); VPointF point4 = *VAbstractTool::data.GeometricObject<const VPointF *>(dialogTool->getP4());

View file

@ -76,9 +76,9 @@ VToolSplinePath::VToolSplinePath(VPattern *doc, VContainer *data, quint32 id, co
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolSplinePath::setDialog() void VToolSplinePath::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogSplinePath *dialogTool = qobject_cast<DialogSplinePath*>(dialog); DialogSplinePath *dialogTool = qobject_cast<DialogSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VSplinePath *splPath = VAbstractTool::data.GeometricObject<const VSplinePath *>(id); const VSplinePath *splPath = VAbstractTool::data.GeometricObject<const VSplinePath *>(id);
dialogTool->SetPath(*splPath); dialogTool->SetPath(*splPath);
} }
@ -86,9 +86,9 @@ void VToolSplinePath::setDialog()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolSplinePath::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data) void VToolSplinePath::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogSplinePath *dialogTool = qobject_cast<DialogSplinePath*>(dialog); DialogSplinePath *dialogTool = qobject_cast<DialogSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
VSplinePath *path = new VSplinePath(dialogTool->GetPath()); VSplinePath *path = new VSplinePath(dialogTool->GetPath());
for (qint32 i = 0; i < path->CountPoint(); ++i) for (qint32 i = 0; i < path->CountPoint(); ++i)
{ {
@ -287,9 +287,9 @@ void VToolSplinePath::RemoveReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolSplinePath::SaveDialog(QDomElement &domElement) void VToolSplinePath::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogSplinePath *dialogTool = qobject_cast<DialogSplinePath*>(dialog); DialogSplinePath *dialogTool = qobject_cast<DialogSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
VSplinePath splPath = dialogTool->GetPath(); VSplinePath splPath = dialogTool->GetPath();
RefreshSplinePath(splPath); RefreshSplinePath(splPath);

View file

@ -52,9 +52,9 @@ VToolTriangle::VToolTriangle(VPattern *doc, VContainer *data, const quint32 &id,
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolTriangle::setDialog() void VToolTriangle::setDialog()
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogTriangle *dialogTool = qobject_cast<DialogTriangle*>(dialog); DialogTriangle *dialogTool = qobject_cast<DialogTriangle*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id); const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setAxisP1Id(axisP1Id, id); dialogTool->setAxisP1Id(axisP1Id, id);
dialogTool->setAxisP2Id(axisP2Id, id); dialogTool->setAxisP2Id(axisP2Id, id);
@ -67,9 +67,9 @@ void VToolTriangle::setDialog()
void VToolTriangle::Create(DialogTool *dialog, VMainGraphicsScene *scene, void VToolTriangle::Create(DialogTool *dialog, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data) VPattern *doc, VContainer *data)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogTriangle *dialogTool = qobject_cast<DialogTriangle*>(dialog); DialogTriangle *dialogTool = qobject_cast<DialogTriangle*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
const quint32 axisP1Id = dialogTool->getAxisP1Id(); const quint32 axisP1Id = dialogTool->getAxisP1Id();
const quint32 axisP2Id = dialogTool->getAxisP2Id(); const quint32 axisP2Id = dialogTool->getAxisP2Id();
const quint32 firstPointId = dialogTool->getFirstPointId(); const quint32 firstPointId = dialogTool->getFirstPointId();
@ -238,9 +238,9 @@ void VToolTriangle::RefreshDataInFile()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolTriangle::SaveDialog(QDomElement &domElement) void VToolTriangle::SaveDialog(QDomElement &domElement)
{ {
Q_CHECK_PTR(dialog); SCASSERT(dialog != nullptr);
DialogTriangle *dialogTool = qobject_cast<DialogTriangle*>(dialog); DialogTriangle *dialogTool = qobject_cast<DialogTriangle*>(dialog);
Q_CHECK_PTR(dialogTool); SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName()); doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrAxisP1, QString().setNum(dialogTool->getAxisP1Id())); doc->SetAttribute(domElement, AttrAxisP1, QString().setNum(dialogTool->getAxisP1Id()));
doc->SetAttribute(domElement, AttrAxisP2, QString().setNum(dialogTool->getAxisP2Id())); doc->SetAttribute(domElement, AttrAxisP2, QString().setNum(dialogTool->getAxisP2Id()));

View file

@ -66,7 +66,7 @@ void VNodeArc::Create(VPattern *doc, VContainer *data, quint32 id, quint32 idArc
doc->IncrementReferens(idTool); doc->IncrementReferens(idTool);
//Some nodes we don't show on scene. Tool that create this nodes must free memory. //Some nodes we don't show on scene. Tool that create this nodes must free memory.
VDataTool *tool = doc->getTool(idTool); VDataTool *tool = doc->getTool(idTool);
Q_CHECK_PTR(tool); SCASSERT(tool != nullptr);
arc->setParent(tool); arc->setParent(tool);
} }
else else

View file

@ -77,7 +77,7 @@ void VNodePoint::Create(VPattern *doc, VContainer *data, quint32 id, quint32 idP
doc->IncrementReferens(idTool); doc->IncrementReferens(idTool);
//Some nodes we don't show on scene. Tool that create this nodes must free memory. //Some nodes we don't show on scene. Tool that create this nodes must free memory.
VDataTool *tool = doc->getTool(idTool); VDataTool *tool = doc->getTool(idTool);
Q_CHECK_PTR(tool); SCASSERT(tool != nullptr);
point->setParent(tool); point->setParent(tool);
} }
else else

Some files were not shown because too many files have changed in this diff Show more