diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 29418c6c0..7c686a4d5 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -550,7 +550,7 @@ void TMainWindow::AddCustom() VMeasurement *meash; if (mType == MeasurementsType::Standard) { - meash = new VMeasurement(currentRow, name, 0, 0, 0); + meash = new VMeasurement(currentRow, name, m->BaseSize(), m->BaseHeight(), 0, 0, 0); } else { @@ -592,15 +592,43 @@ void TMainWindow::AddKnown() //--------------------------------------------------------------------------------------------------------------------- void TMainWindow::ChangedSize(const QString &text) { + const int row = ui->tableWidget->currentRow(); + + if (row == -1) + { + return; + } + data->SetSize(text.toInt()); RefreshData(); + + ui->tableWidget->blockSignals(true); + ui->tableWidget->selectRow(row); + ui->tableWidget->resizeColumnsToContents(); + ui->tableWidget->resizeRowsToContents(); + ui->tableWidget->horizontalHeader()->setStretchLastSection(true); + ui->tableWidget->blockSignals(false); } //--------------------------------------------------------------------------------------------------------------------- void TMainWindow::ChangedHeight(const QString &text) { + const int row = ui->tableWidget->currentRow(); + + if (row == -1) + { + return; + } + data->SetHeight(text.toInt()); RefreshData(); + + ui->tableWidget->blockSignals(true); + ui->tableWidget->selectRow(row); + ui->tableWidget->resizeColumnsToContents(); + ui->tableWidget->resizeRowsToContents(); + ui->tableWidget->horizontalHeader()->setStretchLastSection(true); + ui->tableWidget->blockSignals(false); } //--------------------------------------------------------------------------------------------------------------------- @@ -836,10 +864,12 @@ void TMainWindow::SaveMBaseValue(int value) RefreshData(); + ui->tableWidget->blockSignals(true); ui->tableWidget->selectRow(row); ui->tableWidget->resizeColumnsToContents(); ui->tableWidget->resizeRowsToContents(); ui->tableWidget->horizontalHeader()->setStretchLastSection(true); + ui->tableWidget->blockSignals(false); } //--------------------------------------------------------------------------------------------------------------------- @@ -859,10 +889,12 @@ void TMainWindow::SaveMSizeIncrease(int value) RefreshData(); + ui->tableWidget->blockSignals(true); ui->tableWidget->selectRow(row); ui->tableWidget->resizeColumnsToContents(); ui->tableWidget->resizeRowsToContents(); ui->tableWidget->horizontalHeader()->setStretchLastSection(true); + ui->tableWidget->blockSignals(false); } //--------------------------------------------------------------------------------------------------------------------- @@ -1003,7 +1035,7 @@ void TMainWindow::InitWindow() connect(ui->spinBoxBaseValue, static_cast(&QSpinBox::valueChanged), this, &TMainWindow::SaveMBaseValue); - connect(ui->spinBoxInHeights, static_cast(&QSpinBox::valueChanged), this, + connect(ui->spinBoxInSizes, static_cast(&QSpinBox::valueChanged), this, &TMainWindow::SaveMSizeIncrease); connect(ui->spinBoxInHeights, static_cast(&QSpinBox::valueChanged), this, &TMainWindow::SaveMHeightIncrease); diff --git a/src/app/valentina/dialogs/dialogincrements.cpp b/src/app/valentina/dialogs/dialogincrements.cpp index 5b9fc373b..a1c5c8be5 100644 --- a/src/app/valentina/dialogs/dialogincrements.cpp +++ b/src/app/valentina/dialogs/dialogincrements.cpp @@ -721,7 +721,7 @@ void DialogIncrements::clickedToolButtonAdd() const quint32 id = data->getNextId(); const QString description(tr("Description")); - VIncrement *incr = new VIncrement(name, id, 0, 0, 0, description); + VIncrement *incr = new VIncrement(name, id, 0, description); data->AddVariable(name, incr); AddIncrementToFile(id, name, 0, 0, 0, description); diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index a4a375e82..dbbdbc405 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -2164,7 +2164,7 @@ void VPattern::ParseIncrementsElement(const QDomNode &node) const qreal kgrowth = GetParametrDouble(domElement, IncrementKgrowth, "0"); const QString desc = GetParametrString(domElement, IncrementDescription, "Description"); data->UpdateId(id); - data->AddVariable(name, new VIncrement(name, id, base, ksize, kgrowth, desc)); + data->AddVariable(name, new VIncrement(name, id, base, desc)); } } } diff --git a/src/app/valentina/xml/vstandardmeasurements.cpp b/src/app/valentina/xml/vstandardmeasurements.cpp index b490124d5..a8b8202c9 100644 --- a/src/app/valentina/xml/vstandardmeasurements.cpp +++ b/src/app/valentina/xml/vstandardmeasurements.cpp @@ -116,7 +116,7 @@ void VStandardMeasurements::ReadMeasurement(const QDomElement &domElement, const qWarning()<<"Standard table can't use inch unit."; } - data->AddVariable(tag, new VMeasurement(0, tag, value, size_increase, height_increase, + data->AddVariable(tag, new VMeasurement(0, tag, Size(), Height(), value, size_increase, height_increase, qApp->TrVars()->GuiText(tag), qApp->TrVars()->Description(tag), tag)); } diff --git a/src/libs/vformat/vmeasurements.cpp b/src/libs/vformat/vmeasurements.cpp index 300a6f491..2c2f7ae37 100644 --- a/src/libs/vformat/vmeasurements.cpp +++ b/src/libs/vformat/vmeasurements.cpp @@ -186,7 +186,7 @@ void VMeasurements::ReadMeasurements() const const quint32 ksize = GetParametrUInt(dom, AttrSizeIncrease, "0"); const quint32 kheight = GetParametrUInt(dom, AttrHeightIncrease, "0"); - meash = new VMeasurement(i, name, base, ksize, kheight, "", description); + meash = new VMeasurement(i, name, BaseSize(), BaseHeight(), base, ksize, kheight, "", description); } else { @@ -381,7 +381,7 @@ void VMeasurements::SetMBaseValue(const QString &name, int value) QDomElement node = FindM(name); if (not node.isNull()) { - SetAttribute(node, AttrValue, value); + SetAttribute(node, AttrBase, value); } } diff --git a/src/libs/vpatterndb/variables/vincrement.cpp b/src/libs/vpatterndb/variables/vincrement.cpp index 2ec9465c7..3231a83c1 100644 --- a/src/libs/vpatterndb/variables/vincrement.cpp +++ b/src/libs/vpatterndb/variables/vincrement.cpp @@ -44,13 +44,11 @@ VIncrement::VIncrement() * @brief VIncrementTableRow create increment * @param name increment's name * @param id id - * @param base value in base size and height - * @param ksize increment in sizes - * @param kheight increment in heights + * @param base value * @param description description of increment */ -VIncrement::VIncrement(const QString &name, quint32 id, qreal base, qreal ksize, qreal kheight, QString description) - :VVariable(name, base, ksize, kheight, description), d(new VIncrementData(id)) +VIncrement::VIncrement(const QString &name, quint32 id, qreal base, QString description) + :VVariable(name, base, description), d(new VIncrementData(id)) { SetType(VarType::Increment); } diff --git a/src/libs/vpatterndb/variables/vincrement.h b/src/libs/vpatterndb/variables/vincrement.h index b6223998e..b2df14f6d 100644 --- a/src/libs/vpatterndb/variables/vincrement.h +++ b/src/libs/vpatterndb/variables/vincrement.h @@ -40,8 +40,7 @@ class VIncrement :public VVariable { public: VIncrement(); - VIncrement(const QString &name, quint32 id, qreal base, qreal ksize, qreal kheight, - QString description = QString()); + VIncrement(const QString &name, quint32 id, qreal base, QString description = QString()); VIncrement(const VIncrement &incr); VIncrement &operator=(const VIncrement &incr); virtual ~VIncrement() Q_DECL_OVERRIDE; diff --git a/src/libs/vpatterndb/variables/vmeasurement.cpp b/src/libs/vpatterndb/variables/vmeasurement.cpp index 9e09d30ae..0e6527a81 100644 --- a/src/libs/vpatterndb/variables/vmeasurement.cpp +++ b/src/libs/vpatterndb/variables/vmeasurement.cpp @@ -40,10 +40,11 @@ * @param description measurement full description * @param tagName measurement's tag name in file */ -VMeasurement::VMeasurement(quint32 index, const QString &name, const qreal &base, const qreal &ksize, - const qreal &kheight, - const QString &gui_text, const QString &description, const QString &tagName) - :VVariable(name, base, ksize, kheight, description), d(new VMeasurementData(index, gui_text, tagName)) +VMeasurement::VMeasurement(quint32 index, const QString &name, qreal baseSize, qreal baseHeight, const qreal &base, + const qreal &ksize, const qreal &kheight, const QString &gui_text, + const QString &description, const QString &tagName) + :VVariable(name, baseSize, baseHeight, base, ksize, kheight, description), + d(new VMeasurementData(index, gui_text, tagName)) { SetType(VarType::Measurement); } diff --git a/src/libs/vpatterndb/variables/vmeasurement.h b/src/libs/vpatterndb/variables/vmeasurement.h index 931cc5083..6fb8a3f93 100644 --- a/src/libs/vpatterndb/variables/vmeasurement.h +++ b/src/libs/vpatterndb/variables/vmeasurement.h @@ -43,9 +43,9 @@ class VContainer; class VMeasurement :public VVariable { public: - VMeasurement(quint32 index, const QString &name, const qreal &base, const qreal &ksize, - const qreal &kheight, const QString &gui_text = QString(), const QString &description = QString(), - const QString &TagName = QString()); + VMeasurement(quint32 index, const QString &name, qreal baseSize, qreal baseHeight, const qreal &base, + const qreal &ksize, const qreal &kheight, const QString &gui_text = QString(), + const QString &description = QString(), const QString &TagName = QString()); VMeasurement(VContainer *data, quint32 index, const QString &name, const qreal &base, const QString &formula, bool ok, const QString &gui_text = QString(), const QString &description = QString(), const QString &TagName = QString()); diff --git a/src/libs/vpatterndb/variables/vvariable.cpp b/src/libs/vpatterndb/variables/vvariable.cpp index dba562cd5..ac3a2d44c 100644 --- a/src/libs/vpatterndb/variables/vvariable.cpp +++ b/src/libs/vpatterndb/variables/vvariable.cpp @@ -37,9 +37,9 @@ VVariable::VVariable() } //--------------------------------------------------------------------------------------------------------------------- -VVariable::VVariable(const QString &name, const qreal &base, const qreal &ksize, const qreal &kheight, - const QString &description) - :VInternalVariable(), d(new VVariableData(base, ksize, kheight, description)) +VVariable::VVariable(const QString &name, qreal baseSize, qreal baseHeight, const qreal &base, const qreal &ksize, + const qreal &kheight, const QString &description) + :VInternalVariable(), d(new VVariableData(baseSize, baseHeight, base, ksize, kheight, description)) { VInternalVariable::SetValue(d->base); SetName(name); @@ -82,14 +82,12 @@ void VVariable::SetValue(const qreal &size, const qreal &height, Unit patternUni qWarning("Gradation doesn't support inches"); return; } - const qreal baseSize = UnitConvertor(50.0, Unit::Cm, patternUnit); - const qreal baseHeight = UnitConvertor(176.0, Unit::Cm, patternUnit); const qreal sizeIncrement = UnitConvertor(2.0, Unit::Cm, patternUnit); const qreal heightIncrement = UnitConvertor(6.0, Unit::Cm, patternUnit); // Formula for calculation gradation - const qreal k_size = ( size - baseSize ) / sizeIncrement; - const qreal k_height = ( height - baseHeight ) / heightIncrement; + const qreal k_size = ( size - d->baseSize ) / sizeIncrement; + const qreal k_height = ( height - d->baseHeight ) / heightIncrement; VInternalVariable::SetValue(d->base + k_size * d->ksize + k_height * d->kheight); } diff --git a/src/libs/vpatterndb/variables/vvariable.h b/src/libs/vpatterndb/variables/vvariable.h index 36016814e..a97cc3da2 100644 --- a/src/libs/vpatterndb/variables/vvariable.h +++ b/src/libs/vpatterndb/variables/vvariable.h @@ -38,8 +38,8 @@ class VVariable :public VInternalVariable { public: VVariable(); - VVariable(const QString &name, const qreal &base, const qreal &ksize = 0, const qreal &kheight = 0, - const QString &description = QString()); + VVariable(const QString &name, qreal baseSize, qreal baseHeight, const qreal &base, const qreal &ksize = 0, + const qreal &kheight = 0, const QString &description = QString()); VVariable(const QString &name, const qreal &base, const QString &description = QString()); VVariable(const VVariable &var); VVariable &operator=(const VVariable &var); diff --git a/src/libs/vpatterndb/variables/vvariable_p.h b/src/libs/vpatterndb/variables/vvariable_p.h index 5b5b7f960..9f948dce7 100644 --- a/src/libs/vpatterndb/variables/vvariable_p.h +++ b/src/libs/vpatterndb/variables/vvariable_p.h @@ -41,19 +41,22 @@ class VVariableData : public QSharedData public: VVariableData() - :base(0), ksize(0), kheight(0), description(QString()) + :base(0), ksize(0), kheight(0), description(QString()), baseSize(0), baseHeight(0) {} - VVariableData(const qreal &base, const qreal &ksize, const qreal &kheight, const QString &description) - :base(base), ksize(ksize), kheight(kheight), description(description) + VVariableData(qreal baseSize, qreal baseHeight, const qreal &base, const qreal &ksize, const qreal &kheight, + const QString &description) + :base(base), ksize(ksize), kheight(kheight), description(description), baseSize(baseSize), + baseHeight(baseHeight) {} VVariableData(const qreal &base, const QString &description) - :base(base), ksize(0), kheight(0), description(description) + :base(base), ksize(0), kheight(0), description(description), baseSize(0), baseHeight(0) {} VVariableData(const VVariableData &var) - :QSharedData(var), base(var.base), ksize(var.ksize), kheight(var.kheight), description(var.description) + :QSharedData(var), base(var.base), ksize(var.ksize), kheight(var.kheight), description(var.description), + baseSize(var.baseSize), baseHeight(var.baseHeight) {} virtual ~VVariableData(); @@ -69,6 +72,9 @@ public: /** @brief description description of increment */ QString description; + + qreal baseSize; + qreal baseHeight; }; VVariableData::~VVariableData()