Compare commits

...

7 commits

Author SHA1 Message Date
Roman Telezhynskyi 867348fb8e Fix issue with incorrect placing pattern making translations. 2023-05-17 09:35:34 +03:00
Roman Telezhynskyi 3d1dc32b73 Fix transifex config. 2023-05-17 09:35:34 +03:00
Roman Telezhynskyi e71497a280 Lupdate. 2023-05-17 09:35:34 +03:00
Roman Telezhynskyi f69eaafe86 Independent translation for piece labels. 2023-05-16 19:21:17 +03:00
Roman Telezhynskyi e2815f39ed Fix preparing placeholders for piece areas. 2023-05-16 19:21:16 +03:00
Roman Telezhynskyi 7320c1c5df Refactoring.
Fix code style.
2023-05-16 19:21:16 +03:00
Roman Telezhynskyi 3ce8e6e5a7 Refactoring.
Fix method name.
2023-05-16 17:37:53 +03:00
38 changed files with 45504 additions and 27605 deletions

View file

@ -1,5 +1,5 @@
[main]
host = https://app.transifex.com/
host = https://www.transifex.com
lang_map = es: es_ES, id: id_ID, uk: uk_UA, cs: cs_CZ, nl: nl_NL, fi: fi_FI
[o:valentina:p:valentina-project:r:measurements_p0ts]

View file

@ -27,6 +27,7 @@
- Simplify number of versions for DXF AAMA/ASTM.
- New notch type - Check Notch.
- Control a notch width and angle with formulas.
- Independent translation for piece labels.
# Valentina 0.7.52 September 12, 2022
- Fix crash when default locale is ru.

View file

@ -34,6 +34,10 @@ qbs resolve -d ../../build_translations modules.i18n.update:true moduleProviders
qbs -d ../../build_translations -f ../valentina.qbs -p 'Translations' modules.i18n.update:true moduleProviders.Qt.qmakeFilePaths:$HOME/Qt6.5/6.5.0/gcc_64/bin/qmake
qbs -d ../../build_translations -f ../valentina.qbs -p 'MTranslations' modules.i18n.update:true moduleProviders.Qt.qmakeFilePaths:$HOME/Qt6.5/6.5.0/gcc_64/bin/qmake
# cannot fix incorrect placing for pattern making systems
cp -r ./share/translations/* ../share/translations
rm -r ./share
end=$(date +%s)
runtime=$(python3 -c "print('Time passed %u:%02u seconds' % ((${end} - ${start})/60, (${end} - ${start})%60))")
echo $runtime

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -27,11 +27,12 @@
*************************************************************************/
#include "preferencesconfigurationpage.h"
#include "ui_preferencesconfigurationpage.h"
#include "../../core/vapplication.h"
#include "../vpatterndb/pmsystems.h"
#include "../vmisc/vvalentinasettings.h"
#include "../vmisc/literals.h"
#include "../vmisc/vvalentinasettings.h"
#include "../vpatterndb/pmsystems.h"
#include "def.h"
#include "ui_preferencesconfigurationpage.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
#include "../vmisc/backport/qoverload.h"
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
@ -43,8 +44,8 @@
//---------------------------------------------------------------------------------------------------------------------
PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
: QWidget(parent),
ui(new Ui::PreferencesConfigurationPage)
: QWidget(parent),
ui(new Ui::PreferencesConfigurationPage)
{
ui->setupUi(this);
RetranslateUi();
@ -55,10 +56,12 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
ui->autoSaveCheck->setChecked(VAbstractValApplication::VApp()->ValentinaSettings()->GetAutosaveState());
InitLanguages(ui->langCombo);
connect(ui->langCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
{
m_langChanged = true;
});
connect(ui->langCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
[this]() { m_langChanged = true; });
InitPieceLabelLanguages(ui->comboBoxPieceLbelLanguage);
connect(ui->comboBoxPieceLbelLanguage, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
[this]() { m_pieceLabelLangChanged = true; });
//-------------------- Decimal separator setup
ui->osOptionCheck->setChecked(VAbstractValApplication::VApp()->ValentinaSettings()->GetOsSeparator());
@ -71,10 +74,8 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
ui->unitCombo->setCurrentIndex(indexUnit);
}
connect(ui->unitCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
{
m_unitChanged = true;
});
connect(ui->unitCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
[this]() { m_unitChanged = true; });
//----------------------- Label language
SetLabelComboBox(VApplication::LabelLanguages());
@ -84,24 +85,23 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
{
ui->labelCombo->setCurrentIndex(index);
}
connect(ui->labelCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
{
m_labelLangChanged = true;
});
connect(ui->labelCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
[this]() { m_labelLangChanged = true; });
//---------------------- Pattern making system
ui->systemBookValueLabel->setFixedHeight(4 * QFontMetrics(ui->systemBookValueLabel->font()).lineSpacing());
connect(ui->systemCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
{
m_systemChanged = true;
QString text = VAbstractApplication::VApp()->TrVars()
->PMSystemAuthor(ui->systemCombo->currentData().toString());
ui->systemAuthorValueLabel->setText(text);
ui->systemAuthorValueLabel->setToolTip(text);
connect(ui->systemCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
[this]()
{
m_systemChanged = true;
QString text =
VAbstractApplication::VApp()->TrVars()->PMSystemAuthor(ui->systemCombo->currentData().toString());
ui->systemAuthorValueLabel->setText(text);
ui->systemAuthorValueLabel->setToolTip(text);
text = VAbstractApplication::VApp()->TrVars()->PMSystemBook(ui->systemCombo->currentData().toString());
ui->systemBookValueLabel->setPlainText(text);
});
text = VAbstractApplication::VApp()->TrVars()->PMSystemBook(ui->systemCombo->currentData().toString());
ui->systemBookValueLabel->setPlainText(text);
});
// set default pattern making system
index = ui->systemCombo->findData(VAbstractValApplication::VApp()->ValentinaSettings()->GetPMSystemCode());
@ -111,14 +111,15 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
}
//----------------------------- Pattern Editing
connect(ui->resetWarningsButton, &QPushButton::released, this, []()
{
VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings();
connect(ui->resetWarningsButton, &QPushButton::released, this,
[]()
{
VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings();
settings->SetConfirmItemDelete(true);
settings->SetConfirmFormatRewriting(true);
settings->SetAskContinueIfLayoutStale(true);
});
settings->SetConfirmItemDelete(true);
settings->SetConfirmFormatRewriting(true);
settings->SetAskContinueIfLayoutStale(true);
});
VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings();
@ -181,7 +182,7 @@ auto PreferencesConfigurationPage::Apply() -> QStringList
QTimer *autoSaveTimer = VApplication::VApp()->getAutoSaveTimer();
SCASSERT(autoSaveTimer)
ui->autoSaveCheck->isChecked() ? autoSaveTimer->start(ui->autoTime->value()*60000) : autoSaveTimer->stop();
ui->autoSaveCheck->isChecked() ? autoSaveTimer->start(ui->autoTime->value() * 60000) : autoSaveTimer->stop();
settings->SetOsSeparator(ui->osOptionCheck->isChecked());
settings->SetToolBarStyle(ui->toolBarStyleCheck->isChecked());
@ -206,6 +207,13 @@ auto PreferencesConfigurationPage::Apply() -> QStringList
settings->SetDoubleClickZoomFitBestCurrentPP(ui->checkBoxZoomFitBestCurrentPP->isChecked());
settings->SetInteractiveTools(ui->checkBoxInteractiveTools->isChecked());
if (m_pieceLabelLangChanged)
{
const auto locale = qvariant_cast<QString>(ui->comboBoxPieceLbelLanguage->currentData());
settings->SetPieceLabelLocale(locale);
m_pieceLabelLangChanged = false;
}
if (m_langChanged || m_systemChanged)
{
const auto locale = qvariant_cast<QString>(ui->langCombo->currentData());
@ -285,21 +293,30 @@ void PreferencesConfigurationPage::RetranslateUi()
ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(LocaleDecimalPoint(QLocale())));
{
ui->unitCombo->blockSignals(true);
const auto unit = qvariant_cast<QString>(ui->unitCombo->currentData());
ui->unitCombo->clear();
InitUnits();
ui->unitCombo->setCurrentIndex(ui->unitCombo->findData(unit));
ui->unitCombo->blockSignals(false);
ui->unitCombo->blockSignals(true);
const auto unit = qvariant_cast<QString>(ui->unitCombo->currentData());
ui->unitCombo->clear();
InitUnits();
ui->unitCombo->setCurrentIndex(ui->unitCombo->findData(unit));
ui->unitCombo->blockSignals(false);
}
{
const auto code = qvariant_cast<QString>(ui->systemCombo->currentData());
ui->systemCombo->blockSignals(true);
ui->systemCombo->clear();
InitPMSystems(ui->systemCombo);
ui->systemCombo->setCurrentIndex(-1);
ui->systemCombo->blockSignals(false);
ui->systemCombo->setCurrentIndex(ui->systemCombo->findData(code));
const auto code = qvariant_cast<QString>(ui->systemCombo->currentData());
ui->systemCombo->blockSignals(true);
ui->systemCombo->clear();
InitPMSystems(ui->systemCombo);
ui->systemCombo->setCurrentIndex(-1);
ui->systemCombo->blockSignals(false);
ui->systemCombo->setCurrentIndex(ui->systemCombo->findData(code));
}
{
ui->comboBoxPieceLbelLanguage->blockSignals(true);
const auto code = qvariant_cast<QString>(ui->comboBoxPieceLbelLanguage->currentData());
InitPieceLabelLanguages(ui->comboBoxPieceLbelLanguage);
ui->comboBoxPieceLbelLanguage->setCurrentIndex(-1);
ui->comboBoxPieceLbelLanguage->blockSignals(false);
ui->comboBoxPieceLbelLanguage->setCurrentIndex(ui->comboBoxPieceLbelLanguage->findData(code));
}
}

View file

@ -31,29 +31,29 @@
#include <QWidget>
#include "../vmisc/defglobal.h"
namespace Ui
{
class PreferencesConfigurationPage;
class PreferencesConfigurationPage;
}
class PreferencesConfigurationPage : public QWidget
{
Q_OBJECT // NOLINT
public:
explicit PreferencesConfigurationPage(QWidget *parent = nullptr);
public : explicit PreferencesConfigurationPage(QWidget *parent = nullptr);
~PreferencesConfigurationPage() override;
auto Apply() -> QStringList;
protected:
void changeEvent(QEvent* event) override;
void changeEvent(QEvent *event) override;
private:
// cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(PreferencesConfigurationPage) // NOLINT
Ui::PreferencesConfigurationPage *ui;
bool m_langChanged{false};
bool m_pieceLabelLangChanged{false};
bool m_systemChanged{false};
bool m_unitChanged{false};
bool m_labelLangChanged{false};

View file

@ -35,7 +35,7 @@
<x>0</x>
<y>0</y>
<width>624</width>
<height>867</height>
<height>898</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
@ -104,13 +104,20 @@
<widget class="QComboBox" name="langCombo"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Piece label language:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Decimal separator parts:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="2" column="1">
<widget class="QCheckBox" name="osOptionCheck">
<property name="text">
<string notr="true">&lt; With OS options &gt;</string>
@ -120,26 +127,29 @@
</property>
</widget>
</item>
<item row="2" column="0">
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Default unit:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<item row="3" column="1">
<widget class="QComboBox" name="unitCombo"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Label language:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="unitCombo"/>
</item>
<item row="3" column="1">
<item row="4" column="1">
<widget class="QComboBox" name="labelCombo"/>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBoxPieceLbelLanguage"/>
</item>
</layout>
</widget>
</item>

View file

@ -26,28 +26,28 @@
**
*************************************************************************/
#include <QApplication>
#include <QDate>
#include <QDebug>
#include <QFileInfo>
#include <QFlags> // QFlags<Qt::Alignment>
#include <QFontMetrics>
#include <QGlobalStatic>
#include <QLatin1String>
#include <QRegularExpression>
#include <QApplication>
#include <QDebug>
#include <QFlags> // QFlags<Qt::Alignment>
#include <QtMath>
#include <QGlobalStatic>
#include "../ifc/xml/vabstractpattern.h"
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
#include "../vmisc/vabstractvalapplication.h"
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 9, 0)
# include "../vmisc/vdatastreamenum.h"
#include "../vmisc/vdatastreamenum.h"
#endif
#include "../vpatterndb/vcontainer.h"
#include "../vpatterndb/calculator.h"
#include "../vpatterndb/variables/vmeasurement.h"
#include "../vpatterndb/vcontainer.h"
#include "vtextmanager.h"
const quint32 TextLine::streamHeader = 0xA3881E49; // CRC-32Q string "TextLine"
@ -55,7 +55,7 @@ const quint16 TextLine::classVersion = 1;
// Friend functions
//---------------------------------------------------------------------------------------------------------------------
auto operator<<(QDataStream &dataStream, const TextLine &data) -> QDataStream&
auto operator<<(QDataStream &dataStream, const TextLine &data) -> QDataStream &
{
dataStream << TextLine::streamHeader << TextLine::classVersion;
@ -72,7 +72,7 @@ auto operator<<(QDataStream &dataStream, const TextLine &data) -> QDataStream&
}
//---------------------------------------------------------------------------------------------------------------------
auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream&
auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream &
{
quint32 actualStreamHeader = 0;
dataStream >> actualStreamHeader;
@ -81,8 +81,8 @@ auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream&
{
QString message = QCoreApplication::tr("TextLine prefix mismatch error: actualStreamHeader = 0x%1 and "
"streamHeader = 0x%2")
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
.arg(TextLine::streamHeader, 8, 0x10, QChar('0'));
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
.arg(TextLine::streamHeader, 8, 0x10, QChar('0'));
throw VException(message);
}
@ -93,7 +93,8 @@ auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream&
{
QString message = QCoreApplication::tr("TextLine compatibility error: actualClassVersion = %1 and "
"classVersion = %2")
.arg(actualClassVersion).arg(TextLine::classVersion);
.arg(actualClassVersion)
.arg(TextLine::classVersion);
throw VException(message);
}
@ -103,10 +104,10 @@ auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream&
dataStream >> data.m_italic;
dataStream >> data.m_eAlign;
// if (actualClassVersion >= 2)
// {
// if (actualClassVersion >= 2)
// {
// }
// }
return dataStream;
}
@ -121,7 +122,7 @@ Q_GLOBAL_STATIC(QVector<TextLine>, m_patternLabelLines) // NOLINT
// Friend functions
//---------------------------------------------------------------------------------------------------------------------
auto operator<<(QDataStream &dataStream, const VTextManager &data) -> QDataStream&
auto operator<<(QDataStream &dataStream, const VTextManager &data) -> QDataStream &
{
dataStream << VTextManager::streamHeader << VTextManager::classVersion;
@ -135,7 +136,7 @@ auto operator<<(QDataStream &dataStream, const VTextManager &data) -> QDataStrea
}
//---------------------------------------------------------------------------------------------------------------------
auto operator>>(QDataStream &dataStream, VTextManager &data) -> QDataStream&
auto operator>>(QDataStream &dataStream, VTextManager &data) -> QDataStream &
{
quint32 actualStreamHeader = 0;
dataStream >> actualStreamHeader;
@ -144,8 +145,8 @@ auto operator>>(QDataStream &dataStream, VTextManager &data) -> QDataStream&
{
QString message = QCoreApplication::tr("VTextManager prefix mismatch error: actualStreamHeader = 0x%1 and "
"streamHeader = 0x%2")
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
.arg(VTextManager::streamHeader, 8, 0x10, QChar('0'));
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
.arg(VTextManager::streamHeader, 8, 0x10, QChar('0'));
throw VException(message);
}
@ -156,17 +157,18 @@ auto operator>>(QDataStream &dataStream, VTextManager &data) -> QDataStream&
{
QString message = QCoreApplication::tr("VTextManager compatibility error: actualClassVersion = %1 and "
"classVersion = %2")
.arg(actualClassVersion).arg(VTextManager::classVersion);
.arg(actualClassVersion)
.arg(VTextManager::classVersion);
throw VException(message);
}
dataStream >> data.m_font;
dataStream >> data.m_liLines;
// if (actualClassVersion >= 2)
// {
// if (actualClassVersion >= 2)
// {
// }
// }
return dataStream;
}
@ -205,8 +207,8 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
{
placeholders.insert(pl_customer, VAbstractValApplication::VApp()->GetCustomerName());
const QString birthDate = locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(),
doc->GetLabelDateFormat());
const QString birthDate =
locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(), doc->GetLabelDateFormat());
placeholders.insert(pl_birthDate, birthDate);
placeholders.insert(pl_email, VAbstractValApplication::VApp()->CustomerEmail());
@ -256,7 +258,8 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
}
placeholders.insert(pl_mExt, VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Multisize
? QStringLiteral("vst") : QStringLiteral("vit"));
? QStringLiteral("vst")
: QStringLiteral("vit"));
const QMap<int, QString> materials = doc->GetPatternMaterials();
for (int i = 0; i < userMaterialPlaceholdersQuantity; ++i)
@ -273,7 +276,7 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
}
{
const QMap<QString, QSharedPointer<VMeasurement> > measurements = data->DataMeasurements();
const QMap<QString, QSharedPointer<VMeasurement>> measurements = data->DataMeasurements();
auto i = measurements.constBegin();
while (i != measurements.constEnd())
{
@ -290,7 +293,7 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
placeholders.insert(pl_currentArea, QString());
placeholders.insert(pl_currentSeamLineArea, QString());
for (int i=0; i < measurements.size(); ++i)
for (int i = 0; i < measurements.size(); ++i)
{
const VFinalMeasurement &m = measurements.at(i);
@ -304,9 +307,12 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
catch (qmu::QmuParserError &e)
{
const QString errorMsg = QObject::tr("Failed to prepare final measurement placeholder. Parser error at "
"line %1: %2.").arg(i+1).arg(e.GetMsg());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
"line %1: %2.")
.arg(i + 1)
.arg(e.GetMsg());
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
}
}
@ -321,17 +327,20 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
placeholders.insert(pl_pName, QString());
placeholders.insert(pl_pQuantity, QString());
placeholders.insert(pl_wOnFold, QString());
placeholders.insert(pl_mFabric, QObject::tr("Fabric"));
placeholders.insert(pl_mLining, QObject::tr("Lining"));
placeholders.insert(pl_mInterfacing, QObject::tr("Interfacing"));
placeholders.insert(pl_mInterlining, QObject::tr("Interlining"));
placeholders.insert(pl_wCut, QObject::tr("Cut"));
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
placeholders.insert(pl_mFabric, phTr->translate("Placeholder", "Fabric"));
placeholders.insert(pl_mLining, phTr->translate("Placeholder", "Lining"));
placeholders.insert(pl_mInterfacing, phTr->translate("Placeholder", "Interfacing"));
placeholders.insert(pl_mInterlining, phTr->translate("Placeholder", "Interlining"));
placeholders.insert(pl_wCut, phTr->translate("Placeholder", "Cut"));
return placeholders;
}
//---------------------------------------------------------------------------------------------------------------------
void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &name, const VPieceLabelData& data,
void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &name, const VPieceLabelData &data,
const VContainer *pattern)
{
placeholders[pl_pLetter] = data.GetLetter();
@ -345,7 +354,8 @@ void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &
if (data.IsOnFold())
{
placeholders[pl_wOnFold] = QObject::tr("on fold");
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
placeholders[pl_wOnFold] = phTr->translate("Placeholder", "on fold");
}
VContainer completeData = *pattern;
@ -355,28 +365,30 @@ void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &
try
{
const QString formula = pieceArea_ + data.GetAreaShartName();
const QString formula = pieceArea_ + data.GetAreaShortName();
const qreal result = cal->EvalFormula(completeData.DataVariables(), formula);
placeholders[pl_currentArea] = QString::number(result);
}
catch (qmu::QmuParserError &e)
{
const QString errorMsg = QObject::tr("Failed to prepare full piece area placeholder. %2.").arg(e.GetMsg());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
try
{
const QString formula = pieceSeamLineArea_ + data.GetAreaShartName();
const QString formula = pieceSeamLineArea_ + data.GetAreaShortName();
const qreal result = cal->EvalFormula(completeData.DataVariables(), formula);
placeholders[pl_currentSeamLineArea] = QString::number(result);
}
catch (qmu::QmuParserError &e)
{
const QString errorMsg = QObject::tr("Failed to prepare piece seam line area placeholder. %2.").arg(e.GetMsg());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
}
@ -387,10 +399,11 @@ auto ReplacePlaceholders(const QMap<QString, QString> &placeholders, QString lin
auto TestDimension = [per, placeholders, line](const QString &placeholder, const QString &errorMsg)
{
if (line.contains(per+placeholder+per) && placeholders.value(placeholder) == QChar('0'))
if (line.contains(per + placeholder + per) && placeholders.value(placeholder) == QChar('0'))
{
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
};
@ -407,7 +420,7 @@ auto ReplacePlaceholders(const QMap<QString, QString> &placeholders, QString lin
auto i = placeholders.constBegin();
while (i != placeholders.constEnd())
{
line.replace(per+i.key()+per, i.value());
line.replace(per + i.key() + per, i.value());
++i;
}
return line;
@ -435,7 +448,7 @@ auto PrepareLines(const QVector<VLabelTemplateLine> &lines) -> QVector<TextLine>
return textLines;
}
} // namespace
} // namespace
//---------------------------------------------------------------------------------------------------------------------
/**
@ -452,7 +465,7 @@ auto VTextManager::GetSpacing() const -> int
* @brief SetFont set the text base font
* @param font text base font
*/
void VTextManager::SetFont(const QFont& font)
void VTextManager::SetFont(const QFont &font)
{
m_font = font;
}
@ -462,7 +475,7 @@ void VTextManager::SetFont(const QFont& font)
* @brief GetFont returns the text base font
* @return text base font
*/
auto VTextManager::GetFont() const -> const QFont&
auto VTextManager::GetFont() const -> const QFont &
{
return m_font;
}
@ -505,7 +518,7 @@ auto VTextManager::GetSourceLinesCount() const -> vsizetype
* @param i index of the requested line
* @return reference to the requested TextLine object
*/
auto VTextManager::GetSourceLine(vsizetype i) const -> const TextLine&
auto VTextManager::GetSourceLine(vsizetype i) const -> const TextLine &
{
Q_ASSERT(i >= 0);
Q_ASSERT(i < m_liLines.count());
@ -518,7 +531,7 @@ auto VTextManager::MaxLineWidth(int width) const -> int
int maxWidth = 0;
for (int i = 0; i < m_liLines.count(); ++i)
{
const TextLine& tl = m_liLines.at(i);
const TextLine &tl = m_liLines.at(i);
QFont fnt = m_font;
fnt.setPixelSize(fnt.pixelSize() + tl.m_iFontSize);
@ -551,8 +564,8 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
{
int iFS = 0;
if (GetSourceLinesCount() > 0)
{//division by zero
iFS = 3*qFloor(fH/static_cast<int>(GetSourceLinesCount()))/4;
{ // division by zero
iFS = 3 * qFloor(fH / static_cast<int>(GetSourceLinesCount())) / 4;
}
if (iFS < MIN_FONT_SIZE)
@ -567,7 +580,7 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
QFont fnt;
for (vsizetype i = 0; i < GetSourceLinesCount(); ++i)
{
const TextLine& tl = GetSourceLine(i);
const TextLine &tl = GetSourceLine(i);
fnt = m_font;
fnt.setPixelSize(iFS + tl.m_iFontSize);
fnt.setBold(tl.m_bold);
@ -593,8 +606,7 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
fnt.setPixelSize(iFS + maxLine.m_iFontSize);
QFontMetrics fm(fnt);
lineLength = TextWidth(fm, maxLine.m_qsText);
}
while (lineLength > fW && iFS > MIN_FONT_SIZE);
} while (lineLength > fW && iFS > MIN_FONT_SIZE);
}
SetFontSize(iFS);
}
@ -605,17 +617,17 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
* @param qsName detail name
* @param data reference to the detail data
*/
void VTextManager::Update(const QString& qsName, const VPieceLabelData& data, const VContainer *pattern)
void VTextManager::Update(const QString &qsName, const VPieceLabelData &data, const VContainer *pattern)
{
m_liLines.clear();
QMap<QString, QString> placeholders =
PreparePlaceholders(VAbstractValApplication::VApp()->getCurrentDocument(), pattern);
PreparePlaceholders(VAbstractValApplication::VApp()->getCurrentDocument(), pattern);
InitPiecePlaceholders(placeholders, qsName, data, pattern);
QVector<VLabelTemplateLine> lines = data.GetLabelTemplate();
for (auto & line : lines)
for (auto &line : lines)
{
line.line = ReplacePlaceholders(placeholders, line.line);
}
@ -642,7 +654,7 @@ void VTextManager::Update(VAbstractPattern *pDoc, const VContainer *pattern)
const QMap<QString, QString> placeholders = PreparePlaceholders(pDoc, pattern);
for (auto & line : lines)
for (auto &line : lines)
{
line.line = ReplacePlaceholders(placeholders, line.line);
}

View file

@ -33,9 +33,12 @@
#include <QColor>
#include <QComboBox>
#include <QCursor>
#include <QDesktopServices>
#include <QDir>
#include <QDirIterator>
#include <QFileInfo>
#include <QGlobalStatic>
#include <QGraphicsItem>
#include <QGuiApplication>
#include <QImage>
#include <QLatin1Char>
@ -44,19 +47,16 @@
#include <QMessageLogger>
#include <QObject>
#include <QPixmap>
#include <QPixmapCache>
#include <QPrinterInfo>
#include <QProcess>
#include <QRgb>
#include <QtDebug>
#include <QPixmapCache>
#include <QGraphicsItem>
#include <QGlobalStatic>
#include <QDesktopServices>
#include <QUrl>
#include <QtDebug>
#include "vabstractapplication.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
# include "vdatastreamenum.h"
#include "vdatastreamenum.h"
#endif
#include "../ifc/exception/vexception.h"
#include "literals.h"
@ -65,6 +65,79 @@
#include "../vmisc/diagnostic.h"
#endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
namespace
{
//---------------------------------------------------------------------------------------------------------------------
auto LocalList() -> QStringList
{
static QStringList fileNames;
// Check if file names have already been cached
if (!fileNames.isEmpty())
{
return fileNames;
}
QDirIterator it(VAbstractApplication::translationsPath(), QStringList("valentina_*.qm"), QDir::Files,
QDirIterator::Subdirectories);
while (it.hasNext())
{
it.next();
fileNames.append(it.fileName());
}
return fileNames;
}
//---------------------------------------------------------------------------------------------------------------------
void InitLanguageList(QComboBox *combobox)
{
SCASSERT(combobox != nullptr)
combobox->clear();
const QStringList fileNames = LocalList();
bool englishUS = false;
const QString en_US = QStringLiteral("en_US");
for (auto locale : fileNames)
{
// get locale extracted by filename "valentina_de_De.qm"
locale.truncate(locale.lastIndexOf('.')); // "valentina_de_De"
locale.remove(0, locale.indexOf('_') + 1); // "de_De"
if (locale.startsWith(QLatin1String("ru")))
{
continue;
}
if (not englishUS)
{
englishUS = (en_US == locale);
}
QLocale loc = QLocale(locale);
QString lang = loc.nativeLanguageName();
// Since Qt 5.12 country names have spaces
QString country = QLocale::countryToString(loc.country()).remove(' ');
if (country == QLatin1String("Czechia"))
{
country = QLatin1String("CzechRepublic");
}
QIcon ico(QString("://flags/%1.png").arg(country));
combobox->addItem(ico, lang, locale);
}
if (combobox->count() == 0 || not englishUS)
{
// English language is internal and doens't have own *.qm file.
// Since Qt 5.12 country names have spaces
QIcon ico(QString("://flags/%1.png").arg(QLocale::countryToString(QLocale::UnitedStates).remove(' ')));
QString lang = QLocale(en_US).nativeLanguageName();
combobox->addItem(ico, lang, en_US);
}
}
} // namespace
//---------------------------------------------------------------------------------------------------------------------
auto QPixmapFromCache(const QString &pixmapPath) -> QPixmap
{
@ -95,27 +168,8 @@ void SetItemOverrideCursor(QGraphicsItem *item, const QString &pixmapPath, int h
//---------------------------------------------------------------------------------------------------------------------
auto SupportedLocales() -> QStringList
{
return QStringList
{
"uk_UA",
"de_DE",
"cs_CZ",
"he_IL",
"fr_FR",
"it_IT",
"nl_NL",
"id_ID",
"es_ES",
"fi_FI",
"en_US",
"en_CA",
"en_IN",
"ro_RO",
"zh_CN",
"pt_BR",
"el_GR",
"pl_PL"
};
return QStringList{"uk_UA", "de_DE", "cs_CZ", "he_IL", "fr_FR", "it_IT", "nl_NL", "id_ID", "es_ES",
"fi_FI", "en_US", "en_CA", "en_IN", "ro_RO", "zh_CN", "pt_BR", "el_GR", "pl_PL"};
}
//---------------------------------------------------------------------------------------------------------------------
@ -224,12 +278,10 @@ auto darkenPixmap(const QPixmap &pixmap) -> QPixmap
void ShowInGraphicalShell(const QString &filePath)
{
#ifdef Q_OS_MAC
QStringList args{
"-e", "tell application \"Finder\"",
"-e", "activate",
"-e", "select POSIX file \""+filePath+"\"",
"-e", "end tell"
};
QStringList args{"-e", "tell application \"Finder\"",
"-e", "activate",
"-e", "select POSIX file \"" + filePath + "\"",
"-e", "end tell"};
QProcess::startDetached(QStringLiteral("osascript"), args);
#elif defined(Q_OS_WIN)
QProcess::startDetached(QStringLiteral("explorer"), QStringList{"/select", QDir::toNativeSeparators(filePath)});
@ -238,7 +290,8 @@ void ShowInGraphicalShell(const QString &filePath)
QString command = QStringLiteral("dbus-send --reply-timeout=%1 --session --dest=org.freedesktop.FileManager1 "
"--type=method_call /org/freedesktop/FileManager1 "
"org.freedesktop.FileManager1.ShowItems array:string:\"%2\" string:\"\"")
.arg(timeout).arg(QUrl::fromLocalFile(filePath).toString());
.arg(timeout)
.arg(QUrl::fromLocalFile(filePath).toString());
// Sending message through dbus will highlighting file
QProcess dbus;
@ -321,17 +374,17 @@ void MacosEnableLayerBacking()
#endif // MACOS_LAYER_BACKING_AFFECTED
#endif // Q_OS_MAC
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strTMark, (QLatin1String("tMark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strVMark, (QLatin1String("vMark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strVMark2, (QLatin1String("vMark2"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strUMark, (QLatin1String("uMark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strBoxMark, (QLatin1String("boxMark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strTMark, (QLatin1String("tMark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strVMark, (QLatin1String("vMark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strVMark2, (QLatin1String("vMark2"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strUMark, (QLatin1String("uMark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strBoxMark, (QLatin1String("boxMark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strCheckMark, (QLatin1String("checkMark"))) // NOLINT
//---------------------------------------------------------------------------------------------------------------------
auto PassmarkLineTypeToString(PassmarkLineType type) -> QString
{
switch(type)
switch (type)
{
case PassmarkLineType::OneLine:
return strOne;
@ -364,7 +417,7 @@ auto StringToPassmarkLineType(const QString &value) -> PassmarkLineType
const QStringList values{strOne, strTwo, strThree, *strTMark, *strVMark,
*strVMark2, *strUMark, *strBoxMark, *strCheckMark};
switch(values.indexOf(value))
switch (values.indexOf(value))
{
case 0: // strOne
return PassmarkLineType::OneLine;
@ -393,7 +446,7 @@ auto StringToPassmarkLineType(const QString &value) -> PassmarkLineType
//---------------------------------------------------------------------------------------------------------------------
auto PassmarkAngleTypeToString(PassmarkAngleType type) -> QString
{
switch(type)
switch (type)
{
case PassmarkAngleType::Straightforward:
return strStraightforward;
@ -425,7 +478,7 @@ auto StringToPassmarkAngleType(const QString &value) -> PassmarkAngleType
strStraightforward, strBisector, strIntersection, strIntersectionOnlyLeft,
strIntersectionOnlyRight, strIntersection2, strIntersection2OnlyLeft, strIntersection2OnlyRight};
switch(values.indexOf(value))
switch (values.indexOf(value))
{
case 0:
return PassmarkAngleType::Straightforward;
@ -449,20 +502,19 @@ auto StringToPassmarkAngleType(const QString &value) -> PassmarkAngleType
return PassmarkAngleType::Straightforward;
}
//---------------------------------------------------------------------------------------------------------------------
auto StrToUnits(const QString &unit) -> Unit
{
const QStringList units{unitMM, unitCM, unitINCH, unitPX};
switch (units.indexOf(unit))
{
case 0:// mm
case 0: // mm
return Unit::Mm;
case 2:// inch
case 2: // inch
return Unit::Inch;
case 3:// px
case 3: // px
return Unit::Px;
case 1:// cm
case 1: // cm
default:
return Unit::Cm;
}
@ -499,58 +551,7 @@ auto UnitsToStr(const Unit &unit, const bool translate) -> QString
//---------------------------------------------------------------------------------------------------------------------
void InitLanguages(QComboBox *combobox)
{
SCASSERT(combobox != nullptr)
combobox->clear();
QStringList fileNames;
QDirIterator it(VAbstractApplication::translationsPath(), QStringList("valentina_*.qm"), QDir::Files,
QDirIterator::Subdirectories);
while (it.hasNext())
{
it.next();
fileNames.append(it.fileName());
}
bool englishUS = false;
const QString en_US = QStringLiteral("en_US");
for (auto locale : fileNames)
{
// get locale extracted by filename "valentina_de_De.qm"
locale.truncate(locale.lastIndexOf('.')); // "valentina_de_De"
locale.remove(0, locale.indexOf('_') + 1); // "de_De"
if (locale.startsWith(QLatin1String("ru")))
{
continue;
}
if (not englishUS)
{
englishUS = (en_US == locale);
}
QLocale loc = QLocale(locale);
QString lang = loc.nativeLanguageName();
// Since Qt 5.12 country names have spaces
QString country = QLocale::countryToString(loc.country()).remove(' ');
if (country == QLatin1String("Czechia"))
{
country = QLatin1String("CzechRepublic");
}
QIcon ico(QString("://flags/%1.png").arg(country));
combobox->addItem(ico, lang, locale);
}
if (combobox->count() == 0 || not englishUS)
{
// English language is internal and doens't have own *.qm file.
// Since Qt 5.12 country names have spaces
QIcon ico(QString("://flags/%1.png").arg(QLocale::countryToString(QLocale::UnitedStates).remove(' ')));
QString lang = QLocale(en_US).nativeLanguageName();
combobox->addItem(ico, lang, en_US);
}
InitLanguageList(combobox);
// set default translators and language checked
qint32 index = combobox->findData(VAbstractApplication::VApp()->Settings()->GetLocale());
@ -560,6 +561,21 @@ void InitLanguages(QComboBox *combobox)
}
}
//---------------------------------------------------------------------------------------------------------------------
void InitPieceLabelLanguages(QComboBox *combobox)
{
InitLanguageList(combobox);
combobox->addItem(QApplication::translate("InitPieceLabelLanguages", "Default"),
VCommonSettings::defaultPieceLabelLocale);
qint32 index = combobox->findData(VAbstractApplication::VApp()->Settings()->GetPieceLabelLocale());
if (index != -1)
{
combobox->setCurrentIndex(index);
}
}
const quint32 CustomSARecord::streamHeader = 0xEBFF7586; // CRC-32Q string "CustomSARecord"
const quint16 CustomSARecord::classVersion = 1;
@ -591,8 +607,8 @@ auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &
{
QString message = QCoreApplication::tr("CustomSARecord prefix mismatch error: actualStreamHeader = 0x%1 "
"and streamHeader = 0x%2")
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
.arg(CustomSARecord::streamHeader, 8, 0x10, QChar('0'));
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
.arg(CustomSARecord::streamHeader, 8, 0x10, QChar('0'));
throw VException(message);
}
@ -603,7 +619,8 @@ auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &
{
QString message = QCoreApplication::tr("CustomSARecord compatibility error: actualClassVersion = %1 and "
"classVersion = %2")
.arg(actualClassVersion).arg(CustomSARecord::classVersion);
.arg(actualClassVersion)
.arg(CustomSARecord::classVersion);
throw VException(message);
}
@ -613,10 +630,10 @@ auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &
in >> record.reverse;
in >> record.includeType;
// if (actualClassVersion >= 2)
// {
// if (actualClassVersion >= 2)
// {
// }
// }
return in;
}
@ -624,7 +641,7 @@ auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &
//---------------------------------------------------------------------------------------------------------------------
auto IncrementTypeToString(IncrementType type) -> QString
{
switch(type)
switch (type)
{
case IncrementType::Increment:
return strTypeIncrement;
@ -640,9 +657,9 @@ auto IncrementTypeToString(IncrementType type) -> QString
//---------------------------------------------------------------------------------------------------------------------
auto StringToIncrementType(const QString &value) -> IncrementType
{
const QStringList values { strTypeIncrement, strTypeSeparator };
const QStringList values{strTypeIncrement, strTypeSeparator};
switch(values.indexOf(value))
switch (values.indexOf(value))
{
case 0:
return IncrementType::Increment;
@ -657,7 +674,7 @@ auto StringToIncrementType(const QString &value) -> IncrementType
//---------------------------------------------------------------------------------------------------------------------
auto MeasurementTypeToString(MeasurementType type) -> QString
{
switch(type)
switch (type)
{
case MeasurementType::Measurement:
return strTypeMeasurement;
@ -673,9 +690,9 @@ auto MeasurementTypeToString(MeasurementType type) -> QString
//---------------------------------------------------------------------------------------------------------------------
auto StringToMeasurementType(const QString &value) -> MeasurementType
{
const QStringList values { strTypeMeasurement, strTypeSeparator };
const QStringList values{strTypeMeasurement, strTypeSeparator};
switch(values.indexOf(value))
switch (values.indexOf(value))
{
case 0:
return MeasurementType::Measurement;
@ -703,8 +720,7 @@ auto SplitFilePaths(const QString &path) -> QStringList
result.prepend(lastFileName);
subPath = fileInfo.path();
}
}
while(not lastFileName.isEmpty());
} while (not lastFileName.isEmpty());
return result;
}

View file

@ -31,17 +31,17 @@
#include <QtGlobal>
#ifdef Q_OS_WIN
# include <qt_windows.h>
#include <qt_windows.h>
#endif /*Q_OS_WIN*/
#include <qcompilerdetection.h>
#include <QLineF>
#include <QMargins>
#include <QPrinter>
#include <QString>
#include <QStringList>
#include <Qt>
#include <csignal>
#include <QMargins>
#include <QLineF>
#include <qcompilerdetection.h>
#include "debugbreak.h"
#include "defglobal.h"
@ -56,16 +56,16 @@ template <class T> class QSharedPointer;
// Backport of relaxed constexpr
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
#if defined Q_COMPILER_CONSTEXPR
# if defined(__cpp_constexpr) && __cpp_constexpr-0 >= 201304
# define Q_DECL_RELAXED_CONSTEXPR constexpr
# define Q_RELAXED_CONSTEXPR constexpr
# else
# define Q_DECL_RELAXED_CONSTEXPR
# define Q_RELAXED_CONSTEXPR const
# endif
#if defined(__cpp_constexpr) && __cpp_constexpr - 0 >= 201304
#define Q_DECL_RELAXED_CONSTEXPR constexpr
#define Q_RELAXED_CONSTEXPR constexpr
#else
# define Q_DECL_RELAXED_CONSTEXPR
# define Q_RELAXED_CONSTEXPR const
#define Q_DECL_RELAXED_CONSTEXPR
#define Q_RELAXED_CONSTEXPR const
#endif
#else
#define Q_DECL_RELAXED_CONSTEXPR
#define Q_RELAXED_CONSTEXPR const
#endif
#endif
@ -83,15 +83,63 @@ constexpr qreal maxCurveApproximationScale = 10.0;
constexpr int minLabelFontSize = 5;
constexpr int maxLabelFontSize = 100;
enum class NodeDetail : qint8 { Contour, Modeling };
enum class SceneObject : qint8 { Point, Line, Spline, Arc, ElArc, SplinePath, Detail, Unknown };
enum class MeasurementsType : qint8 { Multisize, Individual, Unknown};
enum class Unit : qint8 { Mm = 0, Cm, Inch, Px, LAST_UNIT_DO_NOT_USE};
enum class Source : qint8 { FromGui, FromFile, FromTool };
enum class NodeUsage : bool {NotInUse = false, InUse = true};
enum class SelectionType : bool {ByMousePress, ByMouseRelease};
enum class PageOrientation : bool {Portrait = true, Landscape = false};
enum class Draw : qint8 { Calculation, Modeling, Layout };
enum class NodeDetail : qint8
{
Contour,
Modeling
};
enum class SceneObject : qint8
{
Point,
Line,
Spline,
Arc,
ElArc,
SplinePath,
Detail,
Unknown
};
enum class MeasurementsType : qint8
{
Multisize,
Individual,
Unknown
};
enum class Unit : qint8
{
Mm = 0,
Cm,
Inch,
Px,
LAST_UNIT_DO_NOT_USE
};
enum class Source : qint8
{
FromGui,
FromFile,
FromTool
};
enum class NodeUsage : bool
{
NotInUse = false,
InUse = true
};
enum class SelectionType : bool
{
ByMousePress,
ByMouseRelease
};
enum class PageOrientation : bool
{
Portrait = true,
Landscape = false
};
enum class Draw : qint8
{
Calculation,
Modeling,
Layout
};
enum class PieceNodeAngle : quint8
{
@ -147,7 +195,13 @@ enum class PiecePathIncludeType : quint8
AsCustomSA = 1
};
enum class PiecePathType : quint8 {PiecePath = 0, CustomSeamAllowance = 1, InternalPath = 2, Unknown = 3};
enum class PiecePathType : quint8
{
PiecePath = 0,
CustomSeamAllowance = 1,
InternalPath = 2,
Unknown = 3
};
typedef int ToolVisHolderType;
enum class Tool : ToolVisHolderType
@ -211,7 +265,7 @@ enum class Tool : ToolVisHolderType
BackgroundImageControls,
BackgroundPixmapImage,
BackgroundSVGImage,
LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used
LAST_ONE_DO_NOT_USE // add new stuffs above this, this constant must be last and never used
};
enum class Vis : ToolVisHolderType
@ -270,30 +324,51 @@ enum class Vis : ToolVisHolderType
PieceItem,
TextGraphicsItem,
ScenePoint,
LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used
LAST_ONE_DO_NOT_USE // add new stuffs above this, this constant must be last and never used
};
enum class Layout : ToolVisHolderType
{
GrainlineItem = static_cast<ToolVisHolderType>(Vis::LAST_ONE_DO_NOT_USE),
LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used
LAST_ONE_DO_NOT_USE // add new stuffs above this, this constant must be last and never used
};
enum class VarType : qint8 { Measurement, MeasurementSeparator, Increment, IncrementSeparator, LineLength, CurveLength,
CurveCLength, LineAngle, CurveAngle, ArcRadius, PieceExternalArea, PieceSeamLineArea,
Unknown };
enum class VarType : qint8
{
Measurement,
MeasurementSeparator,
Increment,
IncrementSeparator,
LineLength,
CurveLength,
CurveCLength,
LineAngle,
CurveAngle,
ArcRadius,
PieceExternalArea,
PieceSeamLineArea,
Unknown
};
enum class IncrementType : qint8 { Increment, Separator };
enum class IncrementType : qint8
{
Increment,
Separator
};
auto IncrementTypeToString(IncrementType type) -> QString;
auto StringToIncrementType(const QString &value) -> IncrementType;
enum class MeasurementType : qint8 { Measurement, Separator };
enum class MeasurementType : qint8
{
Measurement,
Separator
};
auto MeasurementTypeToString(MeasurementType type) -> QString;
auto StringToMeasurementType(const QString &value) -> MeasurementType;
enum class IMD: qint8 // Individual measurement dimension
enum class IMD : qint8 // Individual measurement dimension
{
N, // None
X, // height
@ -327,47 +402,46 @@ enum class IMD: qint8 // Individual measurement dimension
*/
#ifndef V_NO_ASSERT
#define SCASSERT(cond) \
if (!(cond)) \
{ \
qCritical("ASSERT: %s in %s (%s:%u)", \
#cond, Q_FUNC_INFO , __FILE__, __LINE__); \
debug_break(); \
abort(); \
}
#define SCASSERT(cond) \
if (!(cond)) \
{ \
qCritical("ASSERT: %s in %s (%s:%u)", #cond, Q_FUNC_INFO, __FILE__, __LINE__); \
debug_break(); \
abort(); \
}
#else // define but disable this function if debugging is not set
#define SCASSERT(cond) qt_noop();
#endif /* V_NO_ASSERT */
#ifndef __has_cpp_attribute
# define __has_cpp_attribute(x) 0
#define __has_cpp_attribute(x) 0
#endif
#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
#ifndef QT_HAS_CPP_ATTRIBUTE
#ifdef __has_cpp_attribute
# define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
#define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
#else
# define QT_HAS_CPP_ATTRIBUTE(x) 0
#define QT_HAS_CPP_ATTRIBUTE(x) 0
#endif
#endif // QT_HAS_CPP_ATTRIBUTE
#if defined(__cplusplus)
#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
# define Q_FALLTHROUGH() [[clang::fallthrough]]
#define Q_FALLTHROUGH() [[clang::fallthrough]]
#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
# define Q_FALLTHROUGH() [[gnu::fallthrough]]
#define Q_FALLTHROUGH() [[gnu::fallthrough]]
#elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
# define Q_FALLTHROUGH() [[fallthrough]]
#define Q_FALLTHROUGH() [[fallthrough]]
#endif
#endif
#ifndef Q_FALLTHROUGH
# if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
# define Q_FALLTHROUGH() __attribute__((fallthrough))
# else
# define Q_FALLTHROUGH() (void)0
#if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
#define Q_FALLTHROUGH() __attribute__((fallthrough))
#else
#define Q_FALLTHROUGH() (void)0
#endif
#endif // defined(__cplusplus)
#endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
@ -392,11 +466,10 @@ void InitHighDpiScaling(int argc, char *argv[]);
// We'll assume that it will be fixed in 5.12.11, 5.15.3, and 6.0.1.
// Feel free to add other versions if needed.
#define MACOS_LAYER_BACKING_AFFECTED \
(QT_VERSION >= QT_VERSION_CHECK(5, 12, 0) && QT_VERSION < QT_VERSION_CHECK(5, 12, 11) \
|| (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) && QT_VERSION < QT_VERSION_CHECK(5, 15, 3)) \
|| (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 0, 1)) \
)
#define MACOS_LAYER_BACKING_AFFECTED \
(QT_VERSION >= QT_VERSION_CHECK(5, 12, 0) && QT_VERSION < QT_VERSION_CHECK(5, 12, 11) || \
(QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) && QT_VERSION < QT_VERSION_CHECK(5, 15, 3)) || \
(QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 0, 1)))
#if MACOS_LAYER_BACKING_AFFECTED
#include <QOperatingSystemVersion>
@ -408,7 +481,7 @@ void MacosEnableLayerBacking();
const int userMaterialPlaceholdersQuantity = 20;
auto QPixmapFromCache(const QString &pixmapPath) -> QPixmap;
void SetItemOverrideCursor(QGraphicsItem *item, const QString & pixmapPath, int hotX = -1, int hotY = -1);
void SetItemOverrideCursor(QGraphicsItem *item, const QString &pixmapPath, int hotX = -1, int hotY = -1);
template <typename T> constexpr inline auto MmToPixel(T val) noexcept -> T
{
@ -442,9 +515,18 @@ Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel(double val, const Unit &unit) -> do
return 0;
}
template<typename T> constexpr inline auto PixelToInch(T pix) -> T {return pix / PrintDPI;}
template<typename T> constexpr inline auto PixelToMm(T pix) -> T {return PixelToInch(pix) * 25.4;}
template<typename T> constexpr inline auto PixelToCm(T pix) -> T {return PixelToInch(pix) * 2.54;}
template <typename T> constexpr inline auto PixelToInch(T pix) -> T
{
return pix / PrintDPI;
}
template <typename T> constexpr inline auto PixelToMm(T pix) -> T
{
return PixelToInch(pix) * 25.4;
}
template <typename T> constexpr inline auto PixelToCm(T pix) -> T
{
return PixelToInch(pix) * 2.54;
}
//---------------------------------------------------------------------------------------------------------------------
Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel(double pix, const Unit &unit) -> double
@ -465,48 +547,66 @@ Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel(double pix, const Unit &unit) ->
return 0;
}
template<typename T> constexpr inline auto Inch2ToPixel2(T val) -> T {return val * (PrintDPI * PrintDPI);}
template<typename T> constexpr inline auto Mm2ToPixel2(T val) -> T {return Inch2ToPixel2(val * 0.001550031);}
template<typename T> constexpr inline auto Cm2ToPixel2(T val) -> T {return Inch2ToPixel2(val * 0.15500031);}
template <typename T> constexpr inline auto Inch2ToPixel2(T val) -> T
{
return val * (PrintDPI * PrintDPI);
}
template <typename T> constexpr inline auto Mm2ToPixel2(T val) -> T
{
return Inch2ToPixel2(val * 0.001550031);
}
template <typename T> constexpr inline auto Cm2ToPixel2(T val) -> T
{
return Inch2ToPixel2(val * 0.15500031);
}
//---------------------------------------------------------------------------------------------------------------------
Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel2(double val, const Unit &unit) -> double
{
switch (unit)
{
case Unit::Mm:
return Mm2ToPixel2(val);
case Unit::Cm:
return Cm2ToPixel2(val);
case Unit::Inch:
return Inch2ToPixel2(val);
case Unit::Px:
return val;
default:
break;
case Unit::Mm:
return Mm2ToPixel2(val);
case Unit::Cm:
return Cm2ToPixel2(val);
case Unit::Inch:
return Inch2ToPixel2(val);
case Unit::Px:
return val;
default:
break;
}
return 0;
}
template<typename T> constexpr inline auto Pixel2ToInch2(T pix) -> T { return pix / (PrintDPI * PrintDPI);}
template<typename T> constexpr inline auto Pixel2ToMm2(T pix) -> T { return Pixel2ToInch2(pix) / 0.001550031;}
template<typename T> constexpr inline auto Pixel2ToCm2(T pix) -> T { return Pixel2ToInch2(pix) / 0.15500031;}
template <typename T> constexpr inline auto Pixel2ToInch2(T pix) -> T
{
return pix / (PrintDPI * PrintDPI);
}
template <typename T> constexpr inline auto Pixel2ToMm2(T pix) -> T
{
return Pixel2ToInch2(pix) / 0.001550031;
}
template <typename T> constexpr inline auto Pixel2ToCm2(T pix) -> T
{
return Pixel2ToInch2(pix) / 0.15500031;
}
//---------------------------------------------------------------------------------------------------------------------
Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel2(double pix, const Unit &unit) -> double
{
switch (unit)
{
case Unit::Mm:
return Pixel2ToMm2(pix);
case Unit::Cm:
return Pixel2ToCm2(pix);
case Unit::Inch:
return Pixel2ToInch2(pix);
case Unit::Px:
return pix;
default:
break;
case Unit::Mm:
return Pixel2ToMm2(pix);
case Unit::Cm:
return Pixel2ToCm2(pix);
case Unit::Inch:
return Pixel2ToInch2(pix);
case Unit::Px:
return pix;
default:
break;
}
return 0;
}
@ -587,8 +687,8 @@ Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(qreal value, const Unit &from
* @brief UnitConvertor Converts the values of the given margin from given unit to the new unit.
* returns a new instand of QMarginsF.
*/
Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(const QMarginsF &margins, const Unit &from,
const Unit &to) -> QMarginsF
Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(const QMarginsF &margins, const Unit &from, const Unit &to)
-> QMarginsF
{
const qreal left = UnitConvertor(margins.left(), from, to);
const qreal top = UnitConvertor(margins.top(), from, to);
@ -599,6 +699,7 @@ Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(const QMarginsF &margins, con
}
void InitLanguages(QComboBox *combobox);
void InitPieceLabelLanguages(QComboBox *combobox);
Q_REQUIRED_RESULT auto SupportedLocales() -> QStringList;
Q_REQUIRED_RESULT auto StrippedName(const QString &fullFileName) -> QString;
@ -617,11 +718,11 @@ void ShowInGraphicalShell(const QString &filePath);
Q_REQUIRED_RESULT Q_DECL_RELAXED_CONSTEXPR static inline auto VFuzzyComparePossibleNulls(double p1, double p2) -> bool;
Q_DECL_RELAXED_CONSTEXPR static inline auto VFuzzyComparePossibleNulls(double p1, double p2) -> bool
{
if(qFuzzyIsNull(p1))
if (qFuzzyIsNull(p1))
{
return qFuzzyIsNull(p2);
}
else if(qFuzzyIsNull(p2))
else if (qFuzzyIsNull(p2))
{
return false;
}
@ -637,12 +738,13 @@ Q_DECL_RELAXED_CONSTEXPR static inline auto VFuzzyComparePossibleNulls(double p1
struct CustomSARecord
{
CustomSARecord()
: startPoint(0),
path(0),
endPoint(0),
reverse(false),
includeType(PiecePathIncludeType::AsCustomSA)
{}
: startPoint(0),
path(0),
endPoint(0),
reverse(false),
includeType(PiecePathIncludeType::AsCustomSA)
{
}
friend auto operator<<(QDataStream &out, const CustomSARecord &record) -> QDataStream &;
friend auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &;
@ -672,28 +774,27 @@ Q_DECLARE_TYPEINFO(CustomSARecord, Q_MOVABLE_TYPE); // NOLINT
** this file shall be copyright (C) 2006-2008 by Adam Higerd.
****************************************************************************/
#define QXT_DECLARE_PRIVATE(PUB) friend class PUB##Private; QxtPrivateInterface<PUB, PUB##Private> qxt_d;
#define QXT_DECLARE_PRIVATE(PUB) \
friend class PUB##Private; \
QxtPrivateInterface<PUB, PUB##Private> qxt_d;
#define QXT_DECLARE_PUBLIC(PUB) friend class PUB;
#define QXT_INIT_PRIVATE(PUB) qxt_d.setPublic(this);
#define QXT_D(PUB) PUB##Private& d = qxt_d()
#define QXT_P(PUB) PUB& p = qxt_p()
#define QXT_D(PUB) PUB##Private &d = qxt_d()
#define QXT_P(PUB) PUB &p = qxt_p()
QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Wsuggest-final-types")
QT_WARNING_DISABLE_GCC("-Wsuggest-final-methods")
template <typename PUB>
class QxtPrivate
template <typename PUB> class QxtPrivate
{
public:
QxtPrivate(): qxt_p_ptr(nullptr)
{}
virtual ~QxtPrivate()
{}
inline void QXT_setPublic(PUB* pub)
QxtPrivate()
: qxt_p_ptr(nullptr)
{
qxt_p_ptr = pub;
}
virtual ~QxtPrivate() {}
inline void QXT_setPublic(PUB *pub) { qxt_p_ptr = pub; }
protected:
inline auto qxt_p() -> PUB & { return *qxt_p_ptr; }
@ -703,28 +804,24 @@ protected:
private:
Q_DISABLE_COPY_MOVE(QxtPrivate) // NOLINT
PUB* qxt_p_ptr;
PUB *qxt_p_ptr;
};
// cppcheck-suppress unknownMacro
QT_WARNING_POP
template <typename PUB, typename PVT>
class QxtPrivateInterface
template <typename PUB, typename PVT> class QxtPrivateInterface
{
friend class QxtPrivate<PUB>;
public:
QxtPrivateInterface() : pvt(new PVT)
{}
~QxtPrivateInterface()
{
delete pvt;
}
inline void setPublic(PUB* pub)
public:
QxtPrivateInterface()
: pvt(new PVT)
{
pvt->QXT_setPublic(pub);
}
~QxtPrivateInterface() { delete pvt; }
inline void setPublic(PUB *pub) { pvt->QXT_setPublic(pub); }
inline auto operator()() -> PVT & { return *static_cast<PVT *>(pvt); }
inline auto operator()() const -> const PVT & { return *static_cast<PVT *>(pvt); }
inline auto operator->() -> PVT * { return static_cast<PVT *>(pvt); }
@ -732,7 +829,7 @@ public:
private:
Q_DISABLE_COPY_MOVE(QxtPrivateInterface) // NOLINT
QxtPrivate<PUB>* pvt;
QxtPrivate<PUB> *pvt;
};
#endif // DEF_H

View file

@ -29,12 +29,14 @@
#include "customevents.h"
#include "vvalentinasettings.h"
#include <QTranslator>
#include <QWidget>
//---------------------------------------------------------------------------------------------------------------------
VAbstractValApplication::VAbstractValApplication(int &argc, char **argv)
: VAbstractApplication(argc, argv)
{}
: VAbstractApplication(argc, argv)
{
}
//---------------------------------------------------------------------------------------------------------------------
auto VAbstractValApplication::toPixel(double val) const -> double
@ -71,11 +73,38 @@ void VAbstractValApplication::OpenSettings()
auto VAbstractValApplication::ValentinaSettings() -> VValentinaSettings *
{
SCASSERT(settings != nullptr)
return qobject_cast<VValentinaSettings *>(settings);
return qobject_cast<VValentinaSettings *>(settings);
}
//---------------------------------------------------------------------------------------------------------------------
auto VAbstractValApplication::VApp() -> VAbstractValApplication *
{
return qobject_cast<VAbstractValApplication*>(QCoreApplication::instance());
return qobject_cast<VAbstractValApplication *>(QCoreApplication::instance());
}
//---------------------------------------------------------------------------------------------------------------------
auto VAbstractValApplication::GetPlaceholderTranslator() -> QSharedPointer<QTranslator>
{
VValentinaSettings *settings = ValentinaSettings();
QString pieceLabelLocale = settings->GetPieceLabelLocale();
if (pieceLabelLocale == VCommonSettings::defaultPieceLabelLocale)
{
pieceLabelLocale = settings->GetLocale();
}
if (pieceLabelLocale.startsWith(QLatin1String("ru")))
{
return QSharedPointer<QTranslator>(new QTranslator);
}
QSharedPointer<QTranslator> translator = QSharedPointer<QTranslator>(new QTranslator);
const QString appQmDir = VAbstractApplication::translationsPath(settings->GetLocale());
if (translator->load(QStringLiteral("valentina_") + pieceLabelLocale, appQmDir))
{
return translator;
}
return QSharedPointer<QTranslator>(new QTranslator);
}

View file

@ -32,34 +32,35 @@
#include <QDate>
class VAbstractValApplication;// use in define
class VAbstractValApplication; // use in define
class VAbstractPattern;
class VMainGraphicsView;
class QGraphicsScene;
class VValentinaSettings;
class QTranslator;
class VAbstractValApplication : public VAbstractApplication
{
Q_OBJECT // NOLINT
public:
VAbstractValApplication(int &argc, char **argv);
virtual ~VAbstractValApplication() =default;
public : VAbstractValApplication(int &argc, char **argv);
virtual ~VAbstractValApplication() = default;
auto GetCustomerName() const -> QString;
void SetCustomerName(const QString &name);
void SetCustomerName(const QString &name);
auto GetCustomerBirthDate() const -> QDate;
void SetCustomerBirthDate(const QDate &date);
void SetCustomerBirthDate(const QDate &date);
auto CustomerEmail() const -> QString;
void SetCustomerEmail(const QString &email);
void SetCustomerEmail(const QString &email);
auto patternUnits() const -> Unit;
auto patternUnitsP() const -> const Unit *;
void SetPatternUnits(const Unit &patternUnit);
void SetPatternUnits(const Unit &patternUnit);
auto GetMeasurementsType() const -> MeasurementsType;
void SetMeasurementsType(const MeasurementsType &patternType);
void SetMeasurementsType(const MeasurementsType &patternType);
auto MeasurementsUnits() const -> Unit;
void SetMeasurementsUnits(const Unit &measurementsUnits);
@ -70,26 +71,26 @@ public:
auto toPixel(double val) const -> double;
auto fromPixel(double pix) const -> double;
void setCurrentDocument(VAbstractPattern *doc);
void setCurrentDocument(VAbstractPattern *doc);
auto getCurrentDocument() const -> VAbstractPattern *;
auto getSceneView() const -> VMainGraphicsView *;
void setSceneView(VMainGraphicsView *value);
void setSceneView(VMainGraphicsView *value);
auto getCurrentScene() const -> QGraphicsScene *;
void setCurrentScene(QGraphicsScene **value);
void setCurrentScene(QGraphicsScene **value);
auto getMainWindow() const -> QWidget *;
void setMainWindow(QWidget *value);
void setMainWindow(QWidget *value);
auto GetPatternPath() const -> QString;
void SetPatternPath(const QString &value);
void SetPatternPath(const QString &value);
auto GetUserMaterials() const -> QMap<int, QString>;
void SetUserMaterials(const QMap<int, QString> &userMaterials);
void SetUserMaterials(const QMap<int, QString> &userMaterials);
auto GetDrawMode() const -> const Draw &;
void SetDrawMode(const Draw &value);
void SetDrawMode(const Draw &value);
auto getOpeningPattern() const -> bool;
void setOpeningPattern();
@ -97,47 +98,49 @@ public:
void PostWarningMessage(const QString &message, QtMsgType severity) const;
auto GetDimensionHeight() const -> qreal;
void SetDimensionHeight(qreal dimensionHeight);
void SetDimensionHeight(qreal dimensionHeight);
auto GetDimensionSize() const -> qreal;
void SetDimensionSize(qreal dimensionSize);
void SetDimensionSize(qreal dimensionSize);
auto GetDimensionHip() const -> qreal;
void SetDimensionHip(qreal dimensionHip);
void SetDimensionHip(qreal dimensionHip);
auto GetDimensionWaist() const -> qreal;
void SetDimensionWaist(qreal dimensionWaist);
void SetDimensionWaist(qreal dimensionWaist);
auto GetDimensionHeightLabel() const -> QString;
void SetDimensionHeightLabel(const QString &label);
void SetDimensionHeightLabel(const QString &label);
auto GetDimensionSizeLabel() const -> QString;
void SetDimensionSizeLabel(const QString &label);
void SetDimensionSizeLabel(const QString &label);
auto GetDimensionHipLabel() const -> QString;
void SetDimensionHipLabel(const QString &label);
void SetDimensionHipLabel(const QString &label);
auto GetDimensionWaistLabel() const -> QString;
void SetDimensionWaistLabel(const QString &label);
void SetDimensionWaistLabel(const QString &label);
virtual void OpenSettings() override;
auto ValentinaSettings() -> VValentinaSettings *;
static auto VApp() -> VAbstractValApplication *;
auto GetPlaceholderTranslator() -> QSharedPointer<QTranslator>;
protected:
QString m_customerName{};
QDate m_customerBirthDate{};
QDate m_customerBirthDate{};
QString m_customerEmail{};
Unit m_patternUnits{Unit::Cm};
MeasurementsType m_measurementsType{MeasurementsType::Unknown};
Unit m_measurementsUnits{Unit::Cm};
VAbstractPattern *m_doc{nullptr};
VMainGraphicsView *m_sceneView{nullptr};
QGraphicsScene **m_currentScene{nullptr};
QString m_patternFilePath{};
QMap<int, QString> m_userMaterials{};
Unit m_patternUnits{Unit::Cm};
MeasurementsType m_measurementsType{MeasurementsType::Unknown};
Unit m_measurementsUnits{Unit::Cm};
VAbstractPattern *m_doc{nullptr};
VMainGraphicsView *m_sceneView{nullptr};
QGraphicsScene **m_currentScene{nullptr};
QString m_patternFilePath{};
QMap<int, QString> m_userMaterials{};
qreal m_dimensionHeight{0};
qreal m_dimensionSize{0};

View file

@ -29,16 +29,17 @@
#include "vcommonsettings.h"
#include <QApplication>
#include <QColor>
#include <QDate>
#include <QDir>
#include <QLocale>
#include <QMessageLogger>
#include <QVariant>
#include <QtDebug>
#include <QFont>
#include <QGlobalStatic>
#include <QLocale>
#include <QMarginsF>
#include <QColor>
#include <QMessageLogger>
#include <QStringLiteral>
#include <QVariant>
#include <QtDebug>
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
#include "vtextcodec.h"
@ -46,9 +47,9 @@
#include <QTextCodec>
#endif
#include "compatibility.h"
#include "def.h"
#include "defglobal.h"
#include "compatibility.h"
#include "literals.h"
const int VCommonSettings::defaultScrollingDuration = 300;
@ -71,100 +72,143 @@ const qreal VCommonSettings::defaultScrollingAcceleration = 1.3;
const qreal VCommonSettings::scrollingAccelerationMin = 1.0;
const qreal VCommonSettings::scrollingAccelerationMax = 10.0;
const QString VCommonSettings::defaultPieceLabelLocale = QStringLiteral("default");
#ifndef QPRINTENGINE_H
Q_DECLARE_METATYPE(QMarginsF) // NOLINT
#endif
namespace
{
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsIndividualMeasurements, (QLatin1String("paths/individual_measurements"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsMultisizeMeasurements, (QLatin1String("paths/standard_measurements"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsPattern, (QLatin1String("paths/pattern"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsTemplates, (QLatin1String("paths/templates"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLabelTemplate, (QLatin1String("paths/labels"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsIndividualMeasurements,
(QLatin1String("paths/individual_measurements"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsMultisizeMeasurements,
(QLatin1String("paths/standard_measurements"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsPattern, (QLatin1String("paths/pattern"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsTemplates, (QLatin1String("paths/templates"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLabelTemplate, (QLatin1String("paths/labels"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsManualLayouts, (QLatin1String("paths/manualLayouts"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationOsSeparator, (QLatin1String("configuration/osSeparator"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveState, (QLatin1String("configuration/autosave/state"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveTime , (QLatin1String("configuration/autosave/time"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationOsSeparator,
(QLatin1String("configuration/osSeparator"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveState,
(QLatin1String("configuration/autosave/state"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveTime,
(QLatin1String("configuration/autosave/time"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationLocale, (QLatin1String("configuration/locale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPMSystemCode, (QLatin1String("configuration/pmscode"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationPieceLabelLocale, // NOLINT
(QLatin1String("configuration/pieceLabelLocale")))
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPMSystemCode, (QLatin1String("configuration/pmscode"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationUnit, (QLatin1String("configuration/unit"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmItemDeletion, (QLatin1String("configuration/confirm_item_deletion"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmFormatRewriting, (QLatin1String("configuration/confirm_format_rewriting"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAskContinueIfLayoutStale, (QLatin1String("configuration/askContinueIfLayoutStale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationToolBarStyle, (QLatin1String("configuration/tool_bar_style"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationFreeCurveMode, (QLatin1String("configuration/freeCurveMode"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDoubleClickZoomFitBestCurrentPP, (QLatin1String("configuration/doubleClickZoomFitBestCurrentPP"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationInteractiveTools, (QLatin1String("configuration/interactiveTools"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDontUseNativeDialog, (QLatin1String("configuration/dontUseNativeDialog"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmItemDeletion,
(QLatin1String("configuration/confirm_item_deletion"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmFormatRewriting,
(QLatin1String("configuration/confirm_format_rewriting"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAskContinueIfLayoutStale,
(QLatin1String("configuration/askContinueIfLayoutStale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationToolBarStyle,
(QLatin1String("configuration/tool_bar_style"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationFreeCurveMode,
(QLatin1String("configuration/freeCurveMode"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDoubleClickZoomFitBestCurrentPP,
(QLatin1String("configuration/doubleClickZoomFitBestCurrentPP"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationInteractiveTools,
(QLatin1String("configuration/interactiveTools"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDontUseNativeDialog,
(QLatin1String("configuration/dontUseNativeDialog"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUndo, (QLatin1String("pattern/undo"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForbidFlipping, (QLatin1String("pattern/forbidFlipping"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForceFlipping, (QLatin1String("pattern/forceFlipping"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternSewLineOnDrawing, (QLatin1String("pattern/sewLineOnDrawing"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForbidFlipping,
(QLatin1String("pattern/forbidFlipping"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForceFlipping,
(QLatin1String("pattern/forceFlipping"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternSewLineOnDrawing,
(QLatin1String("pattern/sewLineOnDrawing"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternHideMainPath, (QLatin1String("pattern/hideMainPath"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDoublePassmark, (QLatin1String("pattern/doublePassmark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternDefaultSeamAllowance, (QLatin1String("pattern/defaultSeamAllowance"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDoublePassmark, (QLatin1String("pattern/doublePassmark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternDefaultSeamAllowance,
(QLatin1String("pattern/defaultSeamAllowance"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFont, (QLatin1String("pattern/labelFont"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLineWidth, (QLatin1String("pattern/lineWidth"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternCurveApproximationScale, (QLatin1String("pattern/curveApproximationScale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowCurveDetails, (QLatin1String("pattern/showCurveDetails"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternPieceShowMainPath, (QLatin1String("pattern/pieceShowMainPath"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFontSize, (QLatin1String("pattern/labelFontSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternCurveApproximationScale,
(QLatin1String("pattern/curveApproximationScale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowCurveDetails,
(QLatin1String("pattern/showCurveDetails"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternPieceShowMainPath,
(QLatin1String("pattern/pieceShowMainPath"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFontSize,
(QLatin1String("pattern/labelFontSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternHideLabels, (QLatin1String("pattern/hideLabels"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowAccuracyRadius, (QLatin1String("pattern/showAccuracyRadius"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUseOpenGLRender, (QLatin1String("pattern/useOpenGLRender"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternGraphicalOutput, (QLatin1String("pattern/graphicalOutput"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowAccuracyRadius,
(QLatin1String("pattern/showAccuracyRadius"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUseOpenGLRender,
(QLatin1String("pattern/useOpenGLRender"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternGraphicalOutput,
(QLatin1String("pattern/graphicalOutput"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRecentFileList, (QLatin1String("recentFileList"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRecentFileList, (QLatin1String("recentFileList"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRestoreFileList, (QLatin1String("restoreFileList"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralGeometry, (QLatin1String("geometry"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralToolbarsState, (QLatin1String("toolbarsState"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDarkMode, (QLatin1String("configuration/dark_mode"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralGeometry, (QLatin1String("geometry"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralToolbarsState, (QLatin1String("toolbarsState"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDarkMode,
(QLatin1String("configuration/dark_mode"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPreferenceDialogSize, (QLatin1String("preferenceDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingToolSeamAllowanceDialogSize, (QLatin1String("toolSeamAllowanceDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingIncrementsDialogSize, (QLatin1String("toolIncrementsDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFormulaWizardDialogSize, (QLatin1String("formulaWizardDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFinalMeasurementsDialogSize, (QLatin1String("finalMeasurementsDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSettingsDialogSize, (QLatin1String("layoutSettingsDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingToolSeamAllowanceDialogSize,
(QLatin1String("toolSeamAllowanceDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingIncrementsDialogSize,
(QLatin1String("toolIncrementsDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFormulaWizardDialogSize,
(QLatin1String("formulaWizardDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFinalMeasurementsDialogSize,
(QLatin1String("finalMeasurementsDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSettingsDialogSize,
(QLatin1String("layoutSettingsDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDialogSplinePathSize, (QLatin1String("splinePathDialogSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingAutomaticallyCheckUpdates, (QLatin1String("automaticallyCheckUpdates"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLatestSkippedVersion, (QLatin1String("lastestSkippedVersion"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingAutomaticallyCheckUpdates,
(QLatin1String("automaticallyCheckUpdates"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLatestSkippedVersion,
(QLatin1String("lastestSkippedVersion"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDateOfLastRemind, (QLatin1String("dateOfLastRemind"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVWithHeader, (QLatin1String("csv/withHeader"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVCodec, (QLatin1String("csv/withCodec"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVWithHeader, (QLatin1String("csv/withHeader"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVCodec, (QLatin1String("csv/withCodec"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVSeparator, (QLatin1String("csv/withSeparator"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelDateFormat, (QLatin1String("label/dateFormat"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserDateFormats, (QLatin1String("label/userDateFormats"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserDateFormats,
(QLatin1String("label/userDateFormats"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelTimeFormat, (QLatin1String("label/timeFormat"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserTimeFormats, (QLatin1String("label/userTimeFormats"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserTimeFormats,
(QLatin1String("label/userTimeFormats"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingDuration, (QLatin1String("scrolling/duration"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingUpdateInterval, (QLatin1String("scrolling/updateInterval"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingSensorMouseScale, (QLatin1String("scrolling/sensorMouseScale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingWheelMouseScale, (QLatin1String("scrolling/wheelMouseScale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingAcceleration, (QLatin1String("scrolling/acceleration"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingUpdateInterval,
(QLatin1String("scrolling/updateInterval"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingSensorMouseScale,
(QLatin1String("scrolling/sensorMouseScale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingWheelMouseScale,
(QLatin1String("scrolling/wheelMouseScale"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingAcceleration,
(QLatin1String("scrolling/acceleration"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingTiledPDFMargins, (QLatin1String("tiledPDF/margins"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingTiledPDFMargins, (QLatin1String("tiledPDF/margins"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingTiledPDFOrientation, (QLatin1String("tiledPDF/orientation"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingWatermarkEditorSize, (QLatin1String("watermarkEditorSize"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingWatermarkCustomColors, (QLatin1String("watermarkCustomColors"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingWatermarkCustomColors,
(QLatin1String("watermarkCustomColors"))) // NOLINT
// Reading settings file is very expensive, cache curve approximation to speed up getting value
qreal curveApproximationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
Q_GLOBAL_STATIC(QString, localeCached) // NOLINT
qreal lineWidthCached = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
int labelFontSizeCached = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
int pieceShowMainPath = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
int scrollingDurationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
int scrollingUpdateIntervalCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
qreal curveApproximationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
Q_GLOBAL_STATIC(QString, localeCached) // NOLINT
qreal lineWidthCached = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
int labelFontSizeCached = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
int pieceShowMainPath = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
int scrollingDurationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
int scrollingUpdateIntervalCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
qreal scrollingSensorMouseScaleCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
qreal scrollingWheelMouseScaleCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
qreal scrollingAccelerationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
qreal scrollingWheelMouseScaleCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
qreal scrollingAccelerationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
//---------------------------------------------------------------------------------------------------------------------
auto ClearFormats(const QStringList &predefinedFormats, QStringList formats) -> QStringList
@ -175,7 +219,7 @@ auto ClearFormats(const QStringList &predefinedFormats, QStringList formats) ->
}
return formats;
}
} // namespace
} // namespace
Q_GLOBAL_STATIC_WITH_ARGS(const QString, commonIniFilename, (QLatin1String("common"))) // NOLINT
@ -272,7 +316,7 @@ auto PrepareStandardFiles(const QString &currentPath, const QString &standardPat
QDir currentPathDir(currentPath);
if ((currentPath == defPath || not currentPathDir.exists()) && standardPathDir.exists())
{
const QDir localdata (defPath);
const QDir localdata(defPath);
if (localdata.mkpath(QChar('.')))
{
SymlinkCopyDirRecursive(standardPath, defPath, false);
@ -281,18 +325,20 @@ auto PrepareStandardFiles(const QString &currentPath, const QString &standardPat
}
return currentPath;
}
} // namespace
} // namespace
//---------------------------------------------------------------------------------------------------------------------
VCommonSettings::VCommonSettings(Format format, Scope scope, const QString &organization,
const QString &application, QObject *parent)
:QSettings(format, scope, organization, application, parent)
{}
VCommonSettings::VCommonSettings(Format format, Scope scope, const QString &organization, const QString &application,
QObject *parent)
: QSettings(format, scope, organization, application, parent)
{
}
//---------------------------------------------------------------------------------------------------------------------
VCommonSettings::VCommonSettings(const QString &fileName, QSettings::Format format, QObject *parent)
:QSettings(fileName, format, parent)
{}
: QSettings(fileName, format, parent)
{
}
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::SharePath(const QString &shareItem) -> QString
@ -357,7 +403,7 @@ auto VCommonSettings::LabelTemplatesPath() -> QString
}
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::PrepareStandardTemplates(const QString & currentPath) -> QString
auto VCommonSettings::PrepareStandardTemplates(const QString &currentPath) -> QString
{
return PrepareStandardFiles(currentPath, StandardTemplatesPath(), GetDefPathTemplate());
}
@ -542,8 +588,8 @@ auto VCommonSettings::GetAutosaveTime() const -> int
int val = value(*settingConfigurationAutosaveTime, 1).toInt(&ok);
if (not ok)
{
qDebug()<<"Could not convert value"<<value(*settingConfigurationAutosaveTime, 1)
<<"to int. Return default value for autosave time"<<1<<"minutes.";
qDebug() << "Could not convert value" << value(*settingConfigurationAutosaveTime, 1)
<< "to int. Return default value for autosave time" << 1 << "minutes.";
val = 1;
}
return val;
@ -581,6 +627,18 @@ void VCommonSettings::SetLocale(const QString &value)
*localeCached = value;
}
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::GetPieceLabelLocale() const -> QString
{
return value(*settingConfigurationPieceLabelLocale, VCommonSettings::defaultPieceLabelLocale).toString();
}
//---------------------------------------------------------------------------------------------------------------------
void VCommonSettings::SetPieceLabelLocale(const QString &value)
{
setValue(*settingConfigurationPieceLabelLocale, value);
}
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::GetPMSystemCode() const -> QString
{
@ -596,8 +654,8 @@ void VCommonSettings::SetPMSystemCode(const QString &value)
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::GetUnit() const -> QString
{
return value(*settingConfigurationUnit,
QLocale().measurementSystem() == QLocale::MetricSystem ? unitCM : unitINCH).toString();
return value(*settingConfigurationUnit, QLocale().measurementSystem() == QLocale::MetricSystem ? unitCM : unitINCH)
.toString();
}
//---------------------------------------------------------------------------------------------------------------------
@ -666,7 +724,6 @@ void VCommonSettings::SetDarkMode(const bool &value)
setValue(*settingConfigurationDarkMode, value);
}
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::IsFreeCurveMode() const -> bool
{
@ -710,8 +767,8 @@ auto VCommonSettings::GetUndoCount() const -> int
int val = value(*settingPatternUndo, 0).toInt(&ok);
if (not ok)
{
qDebug()<<"Could not convert value"<<value(*settingPatternUndo, 0)
<<"to int. Return default value for undo counts 0 (no limit).";
qDebug() << "Could not convert value" << value(*settingPatternUndo, 0)
<< "to int. Return default value for undo counts 0 (no limit).";
val = 0;
}
return val;
@ -789,7 +846,7 @@ auto VCommonSettings::GetPreferenceDialogSize() const -> QSize
}
//---------------------------------------------------------------------------------------------------------------------
void VCommonSettings::SetPreferenceDialogSize(const QSize& sz)
void VCommonSettings::SetPreferenceDialogSize(const QSize &sz)
{
setValue(*settingPreferenceDialogSize, sz);
}
@ -1025,7 +1082,7 @@ auto VCommonSettings::GetDefCSVCodec() -> int
void VCommonSettings::SetCSVSeparator(const QChar &separator)
{
QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename);
switch(separator.toLatin1())
switch (separator.toLatin1())
{
case '\t':
settings.setValue(*settingCSVSeparator, 0);
@ -1047,7 +1104,7 @@ auto VCommonSettings::GetCSVSeparator() const -> QChar
{
QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename);
const quint8 separator = static_cast<quint8>(settings.value(*settingCSVSeparator, 3).toUInt());
switch(separator)
switch (separator)
{
case 0:
return QChar('\t');
@ -1101,9 +1158,8 @@ auto VCommonSettings::GetDefaultSeamAllowance() -> double
double val = value(*settingPatternDefaultSeamAllowance, -1).toDouble(&ok);
if (not ok)
{
qDebug()<< "Could not convert value"<<value(*settingPatternDefaultSeamAllowance, 0)
<< "to real. Return default value for default seam allowance is "
<< defaultValue << QChar('.');
qDebug() << "Could not convert value" << value(*settingPatternDefaultSeamAllowance, 0)
<< "to real. Return default value for default seam allowance is " << defaultValue << QChar('.');
val = defaultValue;
}
@ -1188,11 +1244,11 @@ void VCommonSettings::SetShowAccuracyRadius(bool value)
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::GetLabelDateFormat() const -> QString
{
const QString format = value(*settingLabelDateFormat,
ConstFirst<QString> (VCommonSettings::PredefinedDateFormats())).toString();
const QString format =
value(*settingLabelDateFormat, ConstFirst<QString>(VCommonSettings::PredefinedDateFormats())).toString();
const QStringList allFormats = VCommonSettings::PredefinedDateFormats() + GetUserDefinedDateFormats();
return allFormats.contains(format) ? format : ConstFirst<QString> (VCommonSettings::PredefinedDateFormats());
return allFormats.contains(format) ? format : ConstFirst<QString>(VCommonSettings::PredefinedDateFormats());
}
//---------------------------------------------------------------------------------------------------------------------
@ -1204,29 +1260,26 @@ void VCommonSettings::SetLabelDateFormat(const QString &format)
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::PredefinedDateFormats() -> QStringList
{
return QStringList
{
"MM-dd-yyyy",
"d/M/yy",
"ddddMMMM dd, yyyy",
"dd/MM/yy",
"dd/MM/yyyy",
"MMM d, yy",
"MMM d, yyyy",
"d. MMM. yyyy",
"MMMM d, yyyy",
"d. MMMM yyyy",
"ddd, MMM d, yy",
"ddd dd/MMM yy",
"ddd, MMMM d, yyyy",
"ddddMMMM d, yyyy",
"MM-dd",
"yy-MM-dd",
"yyyy-MM-dd",
"MM/yy",
"MMM dd",
"MMMM"
};
return QStringList{"MM-dd-yyyy",
"d/M/yy",
"ddddMMMM dd, yyyy",
"dd/MM/yy",
"dd/MM/yyyy",
"MMM d, yy",
"MMM d, yyyy",
"d. MMM. yyyy",
"MMMM d, yyyy",
"d. MMMM yyyy",
"ddd, MMM d, yy",
"ddd dd/MMM yy",
"ddd, MMMM d, yyyy",
"ddddMMMM d, yyyy",
"MM-dd",
"yy-MM-dd",
"yyyy-MM-dd",
"MM/yy",
"MMM dd",
"MMMM"};
}
//---------------------------------------------------------------------------------------------------------------------
@ -1244,11 +1297,11 @@ void VCommonSettings::SetUserDefinedDateFormats(const QStringList &formats)
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::GetLabelTimeFormat() const -> QString
{
const QString format = value(*settingLabelTimeFormat,
ConstFirst<QString> (VCommonSettings::PredefinedTimeFormats())).toString();
const QString format =
value(*settingLabelTimeFormat, ConstFirst<QString>(VCommonSettings::PredefinedTimeFormats())).toString();
const QStringList allFormats = VCommonSettings::PredefinedTimeFormats() + GetUserDefinedTimeFormats();
return allFormats.contains(format) ? format : ConstFirst<QString> (VCommonSettings::PredefinedTimeFormats());
return allFormats.contains(format) ? format : ConstFirst<QString>(VCommonSettings::PredefinedTimeFormats());
}
//---------------------------------------------------------------------------------------------------------------------
@ -1260,13 +1313,7 @@ void VCommonSettings::SetLabelTimeFormat(const QString &format)
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::PredefinedTimeFormats() -> QStringList
{
return QStringList
{
"hh:mm:ss",
"hh:mm:ss AP",
"hh:mm",
"hh:mm AP"
};
return QStringList{"hh:mm:ss", "hh:mm:ss AP", "hh:mm", "hh:mm AP"};
}
//---------------------------------------------------------------------------------------------------------------------
@ -1383,7 +1430,7 @@ auto VCommonSettings::WidthMainLine() const -> qreal
//---------------------------------------------------------------------------------------------------------------------
auto VCommonSettings::WidthHairLine() const -> qreal
{
return WidthMainLine()/3.0;
return WidthMainLine() / 3.0;
}
//---------------------------------------------------------------------------------------------------------------------
@ -1512,8 +1559,8 @@ void VCommonSettings::SetGraphicalOutput(const bool &value)
auto VCommonSettings::GetTiledPDFMargins(const Unit &unit) const -> QMarginsF
{
// default value is 10mm. We save the margins in mm in the setting.
return UnitConvertor(
ValueOrDef<QMarginsF>(*this, *settingTiledPDFMargins, QMarginsF(10, 10, 10, 10)), Unit::Mm, unit);
return UnitConvertor(ValueOrDef<QMarginsF>(*this, *settingTiledPDFMargins, QMarginsF(10, 10, 10, 10)), Unit::Mm,
unit);
}
//---------------------------------------------------------------------------------------------------------------------
@ -1539,7 +1586,7 @@ auto VCommonSettings::GetTiledPDFOrientation() const -> PageOrientation
//---------------------------------------------------------------------------------------------------------------------
void VCommonSettings::SetTiledPDFOrientation(PageOrientation value)
{
setValue(*settingTiledPDFOrientation, static_cast<bool> (value));
setValue(*settingTiledPDFOrientation, static_cast<bool>(value));
}
//---------------------------------------------------------------------------------------------------------------------

View file

@ -38,19 +38,18 @@
#include <QStringList>
#include <QtGlobal>
#include "../vmisc/def.h"
#include "../vlayout/vlayoutdef.h"
#include "../vmisc/def.h"
class QMarginsF;
class VCommonSettings : public QSettings
{
Q_OBJECT // NOLINT
public:
VCommonSettings(Format format, Scope scope, const QString &organization, const QString &application = QString(),
QObject *parent = nullptr);
public : VCommonSettings(Format format, Scope scope, const QString &organization,
const QString &application = QString(), QObject *parent = nullptr);
VCommonSettings(const QString &fileName, Format format, QObject *parent = nullptr);
~VCommonSettings() override =default;
~VCommonSettings() override = default;
static auto SharePath(const QString &shareItem) -> QString;
static auto MultisizeTablesPath() -> QString;
@ -100,6 +99,10 @@ public:
auto GetLocale() const -> QString;
void SetLocale(const QString &value);
static const QString defaultPieceLabelLocale;
auto GetPieceLabelLocale() const -> QString;
void SetPieceLabelLocale(const QString &value);
auto GetPMSystemCode() const -> QString;
void SetPMSystemCode(const QString &value);
@ -146,25 +149,25 @@ public:
void SetToolbarsState(const QByteArray &value);
auto GetPreferenceDialogSize() const -> QSize;
void SetPreferenceDialogSize(const QSize& sz);
void SetPreferenceDialogSize(const QSize &sz);
auto GetToolSeamAllowanceDialogSize() const -> QSize;
void SetToolSeamAllowanceDialogSize(const QSize& sz);
void SetToolSeamAllowanceDialogSize(const QSize &sz);
auto GetFormulaWizardDialogSize() const -> QSize;
void SetFormulaWizardDialogSize(const QSize& sz);
void SetFormulaWizardDialogSize(const QSize &sz);
auto GetIncrementsDialogSize() const -> QSize;
void SetIncrementsDialogSize(const QSize& sz);
void SetIncrementsDialogSize(const QSize &sz);
auto GetFinalMeasurementsDialogSize() const -> QSize;
void SetFinalMeasurementsDialogSize(const QSize& sz);
void SetFinalMeasurementsDialogSize(const QSize &sz);
auto GetLayoutSettingsDialogSize() const -> QSize;
void SetLayoutSettingsDialogSize(const QSize& sz);
void SetLayoutSettingsDialogSize(const QSize &sz);
auto GetDialogSplinePathSize() const -> QSize;
void SetDialogSplinePathSize(const QSize& sz);
void SetDialogSplinePathSize(const QSize &sz);
auto IsAutomaticallyCheckUpdates() const -> bool;
void SetAutomaticallyCheckUpdates(bool value);
@ -300,13 +303,12 @@ public:
void SetGraphicalOutput(const bool &value);
auto GetWatermarkEditorSize() const -> QSize;
void SetWatermarkEditorSize(const QSize& sz);
void SetWatermarkEditorSize(const QSize &sz);
auto GetWatermarkCustomColors() const -> QVector<QColor>;
void SetWatermarkCustomColors(QVector<QColor> colors);
protected:
template <typename T>
static auto GetCachedValue(const QSettings &settings, T &cache, const QString &setting, T defValue, T valueMin,
T valueMax) -> T;
@ -337,7 +339,7 @@ inline auto VCommonSettings::MaximalLineWidth() -> qreal
}
//---------------------------------------------------------------------------------------------------------------------
template<typename T>
template <typename T>
auto VCommonSettings::GetCachedValue(const QSettings &settings, T &cache, const QString &setting, T defValue,
T valueMin, T valueMax) -> T
{
@ -359,8 +361,8 @@ inline auto VCommonSettings::ValueOrDef(const QSettings &settings, const QString
//---------------------------------------------------------------------------------------------------------------------
template <>
inline auto VCommonSettings::ValueOrDef<Cases>(const QSettings &settings, const QString &setting,
const Cases &defValue) -> Cases
inline auto VCommonSettings::ValueOrDef<Cases>(const QSettings &settings, const QString &setting, const Cases &defValue)
-> Cases
{
const QVariant val = settings.value(setting, QVariant::fromValue(static_cast<int>(defValue)));
const int g = val.canConvert<int>() ? val.toInt() : static_cast<int>(defValue);

View file

@ -178,13 +178,13 @@ void VPieceLabelData::SetOnFold(bool onFold)
}
//---------------------------------------------------------------------------------------------------------------------
auto VPieceLabelData::GetAreaShartName() const -> QString
auto VPieceLabelData::GetAreaShortName() const -> QString
{
return d->m_areaShortName;
}
//---------------------------------------------------------------------------------------------------------------------
void VPieceLabelData::SetAreaShartName(const QString &val)
void VPieceLabelData::SetAreaShortName(const QString &val)
{
d->m_areaShortName = val;
}

View file

@ -80,9 +80,9 @@ public:
auto IsOnFold() const -> bool;
void SetOnFold(bool onFold);
auto GetAreaShartName() const -> QString;
void SetAreaShartName(const QString &val);
auto GetAreaShortName() const -> QString;
void SetAreaShortName(const QString &val);
auto GetLabelTemplate() const -> QVector<VLabelTemplateLine>;
void SetLabelTemplate(const QVector<VLabelTemplateLine> &lines);

View file

@ -28,26 +28,26 @@
#include "vcontainer.h"
#include <climits>
#include <QLoggingCategory>
#include <QUuid>
#include <QVector>
#include <QtDebug>
#include <QUuid>
#include <QLoggingCategory>
#include <climits>
#include "../ifc/exception/vexception.h"
#include "../vgeometry/vabstractcubicbezierpath.h"
#include "../vgeometry/vabstractcurve.h"
#include "../vgeometry/varc.h"
#include "../vgeometry/vellipticalarc.h"
#include "../vgeometry/vgeometrydef.h"
#include "../vgeometry/vgobject.h"
#include "../vgeometry/vpointf.h"
#include "../vgeometry/vspline.h"
#include "../vgeometry/varc.h"
#include "../vgeometry/vellipticalarc.h"
#include "../vmisc/literals.h"
#include "variables/varcradius.h"
#include "variables/vcurveangle.h"
#include "variables/vcurvelength.h"
#include "variables/vcurveclength.h"
#include "variables/vcurvelength.h"
#include "variables/vincrement.h"
#include "variables/vlineangle.h"
#include "variables/vlinelength.h"
@ -72,7 +72,7 @@ QMap<QString, quint32> VContainer::copyCounter = QMap<QString, quint32>();
* @brief VContainer create empty container
*/
VContainer::VContainer(const VTranslateVars *trVars, const Unit *patternUnit, const QString &nspace)
:d(new VContainerData(trVars, patternUnit, nspace))
: d(new VContainerData(trVars, patternUnit, nspace))
{
if (nspace.isEmpty())
{
@ -108,7 +108,7 @@ VContainer::VContainer(const VTranslateVars *trVars, const Unit *patternUnit, co
*/
auto VContainer::operator=(const VContainer &data) -> VContainer &
{
if ( &data == this )
if (&data == this)
{
return *this;
}
@ -119,9 +119,9 @@ auto VContainer::operator=(const VContainer &data) -> VContainer &
#ifdef Q_COMPILER_RVALUE_REFS
//---------------------------------------------------------------------------------------------------------------------
VContainer::VContainer(VContainer &&data) Q_DECL_NOTHROW
:d(std::move(data.d))
{}
VContainer::VContainer(VContainer &&data) Q_DECL_NOTHROW : d(std::move(data.d))
{
}
//---------------------------------------------------------------------------------------------------------------------
auto VContainer::operator=(VContainer &&data) Q_DECL_NOTHROW->VContainer &
@ -137,14 +137,15 @@ auto VContainer::operator=(VContainer &&data) Q_DECL_NOTHROW->VContainer &
* @param data container
*/
VContainer::VContainer(const VContainer &data)
:d(data.d)
: d(data.d)
{
++copyCounter[d->nspace];
}
//---------------------------------------------------------------------------------------------------------------------
VContainer::~VContainer()
{}
{
}
//---------------------------------------------------------------------------------------------------------------------
auto VContainer::UniqueNamespace() -> QString
@ -153,8 +154,7 @@ auto VContainer::UniqueNamespace() -> QString
do
{
candidate = QUuid::createUuid().toString();
}
while(_id.contains(candidate));
} while (_id.contains(candidate));
return candidate;
}
@ -204,10 +204,8 @@ auto VContainer::GetPiece(quint32 id) const -> VPiece
{
return d->pieces->value(id);
}
else
{
throw VExceptionBadId(tr("Can't find object"), id);
}
throw VExceptionBadId(tr("Can't find object"), id);
}
//---------------------------------------------------------------------------------------------------------------------
@ -330,12 +328,12 @@ auto VContainer::getId() const -> quint32
*/
auto VContainer::getNextId() const -> quint32
{
//TODO. Current count of ids are very big and allow us save time before someone will reach its max value.
//Better way, of cource, is to seek free ids inside the set of values and reuse them.
//But for now better to keep it as it is now.
// TODO. Current count of ids are very big and allow us save time before someone will reach its max value.
// Better way, of cource, is to seek free ids inside the set of values and reuse them.
// But for now better to keep it as it is now.
if (_id.value(d->nspace) == UINT_MAX)
{
qCritical()<<(tr("Number of free id exhausted."));
qCritical() << (tr("Number of free id exhausted."));
}
_id[d->nspace]++;
return _id.value(d->nspace);
@ -348,7 +346,7 @@ void VContainer::UpdateId(quint32 newId, const QString &nspace)
{
if (newId > _id.value(nspace))
{
_id[nspace] = newId;
_id[nspace] = newId;
}
}
else
@ -392,15 +390,9 @@ void VContainer::ClearForFullParse()
d->pieces->clear();
d->piecePaths->clear();
Q_STATIC_ASSERT_X(static_cast<int>(VarType::Unknown) == 12, "Check that you used all types");
ClearVariables(QVector<VarType>{VarType::Increment,
VarType::IncrementSeparator,
VarType::LineAngle,
VarType::LineLength,
VarType::CurveLength,
VarType::CurveCLength,
VarType::ArcRadius,
VarType::CurveAngle,
VarType::PieceExternalArea,
ClearVariables(QVector<VarType>{VarType::Increment, VarType::IncrementSeparator, VarType::LineAngle,
VarType::LineLength, VarType::CurveLength, VarType::CurveCLength,
VarType::ArcRadius, VarType::CurveAngle, VarType::PieceExternalArea,
VarType::PieceSeamLineArea});
ClearGObjects();
ClearUniqueNames();
@ -439,7 +431,7 @@ void VContainer::ClearVariables(const QVector<VarType> &types)
}
else
{
QHash<QString, QSharedPointer<VInternalVariable> >::iterator i;
QHash<QString, QSharedPointer<VInternalVariable>>::iterator i;
for (i = d->variables.begin(); i != d->variables.end();)
{
if (types.contains(i.value()->GetType()))
@ -495,9 +487,8 @@ void VContainer::AddArc(const QSharedPointer<VAbstractCurve> &arc, const quint32
void VContainer::AddCurve(const QSharedPointer<VAbstractCurve> &curve, const quint32 &id, quint32 parentId)
{
const GOType curveType = curve->getType();
if (curveType != GOType::Spline && curveType != GOType::SplinePath &&
curveType != GOType::CubicBezier && curveType != GOType::CubicBezierPath &&
curveType != GOType::Arc && curveType != GOType::EllipticalArc)
if (curveType != GOType::Spline && curveType != GOType::SplinePath && curveType != GOType::CubicBezier &&
curveType != GOType::CubicBezierPath && curveType != GOType::Arc && curveType != GOType::EllipticalArc)
{
throw VException(tr("Can't create a curve with type '%1'").arg(static_cast<int>(curveType)));
}
@ -595,8 +586,8 @@ auto VContainer::DataMeasurements() const -> const QMap<QString, QSharedPointer<
//---------------------------------------------------------------------------------------------------------------------
auto VContainer::DataMeasurementsWithSeparators() const -> const QMap<QString, QSharedPointer<VMeasurement>>
{
QMap<QString, QSharedPointer<VMeasurement> > measurements = DataVar<VMeasurement>(VarType::Measurement);
QMap<QString, QSharedPointer<VMeasurement> > separators = DataVar<VMeasurement>(VarType::MeasurementSeparator);
QMap<QString, QSharedPointer<VMeasurement>> measurements = DataVar<VMeasurement>(VarType::Measurement);
QMap<QString, QSharedPointer<VMeasurement>> separators = DataVar<VMeasurement>(VarType::MeasurementSeparator);
Insert(measurements, separators);
@ -612,8 +603,8 @@ auto VContainer::DataIncrements() const -> const QMap<QString, QSharedPointer<VI
//---------------------------------------------------------------------------------------------------------------------
auto VContainer::DataIncrementsWithSeparators() const -> const QMap<QString, QSharedPointer<VIncrement>>
{
QMap<QString, QSharedPointer<VIncrement> > increments = DataVar<VIncrement>(VarType::Increment);
QMap<QString, QSharedPointer<VIncrement> > separators = DataVar<VIncrement>(VarType::IncrementSeparator);
QMap<QString, QSharedPointer<VIncrement>> increments = DataVar<VIncrement>(VarType::Increment);
QMap<QString, QSharedPointer<VIncrement>> separators = DataVar<VIncrement>(VarType::IncrementSeparator);
Insert(increments, separators);
@ -659,8 +650,8 @@ auto VContainer::DataAnglesCurves() const -> const QMap<QString, QSharedPointer<
//---------------------------------------------------------------------------------------------------------------------
auto VContainer::DataPieceArea() const -> const QMap<QString, QSharedPointer<VPieceArea>>
{
QMap<QString, QSharedPointer<VPieceArea> > externalAreas = DataVar<VPieceArea>(VarType::PieceExternalArea);
QMap<QString, QSharedPointer<VPieceArea> > seamLineAreas = DataVar<VPieceArea>(VarType::PieceSeamLineArea);
QMap<QString, QSharedPointer<VPieceArea>> externalAreas = DataVar<VPieceArea>(VarType::PieceExternalArea);
QMap<QString, QSharedPointer<VPieceArea>> seamLineAreas = DataVar<VPieceArea>(VarType::PieceSeamLineArea);
Insert(externalAreas, seamLineAreas);
@ -722,9 +713,9 @@ auto VContainer::GetTrVars() const -> const VTranslateVars *
//---------------------------------------------------------------------------------------------------------------------
template <typename T> auto VContainer::DataVar(const VarType &type) const -> const QMap<QString, QSharedPointer<T>>
{
QMap<QString, QSharedPointer<T> > map;
//Sorting QHash by id
QHash<QString, QSharedPointer<VInternalVariable> >::const_iterator i;
QMap<QString, QSharedPointer<T>> map;
// Sorting QHash by id
QHash<QString, QSharedPointer<VInternalVariable>>::const_iterator i;
for (i = d->variables.constBegin(); i != d->variables.constEnd(); ++i)
{
if (i.value()->GetType() == type)

View file

@ -573,7 +573,7 @@ auto VPiece::MissingPlaceLabels(const VPiece &det) const -> QVector<quint32>
void VPiece::SetPieceLabelData(const VPieceLabelData &data)
{
d->m_ppData = data;
d->m_ppData.SetAreaShartName(VPieceArea::PieceShortName(*this));
d->m_ppData.SetAreaShortName(VPieceArea::PieceShortName(*this));
}
//---------------------------------------------------------------------------------------------------------------------

View file

@ -27,36 +27,36 @@
*************************************************************************/
#include "dialogeditlabel.h"
#include "ui_dialogeditlabel.h"
#include "../vmisc/vabstractapplication.h"
#include "ui_dialogeditlabel.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
#include "../vmisc/backport/qoverload.h"
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
#include "../vformat/vlabeltemplate.h"
#include "../ifc/xml/vlabeltemplateconverter.h"
#include "../ifc/xml/vabstractpattern.h"
#include "../ifc/exception/vexception.h"
#include "../vpatterndb/vcontainer.h"
#include "../vpatterndb/vpiece.h"
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
#include "../ifc/xml/vabstractpattern.h"
#include "../ifc/xml/vlabeltemplateconverter.h"
#include "../tools/dialogtool.h"
#include "../vformat/vlabeltemplate.h"
#include "../vpatterndb/calculator.h"
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
#include "../vpatterndb/variables/vmeasurement.h"
#include "../vpatterndb/variables/vpiecearea.h"
#include "../tools/dialogtool.h"
#include "../vpatterndb/vcontainer.h"
#include "../vpatterndb/vpiece.h"
#include <QDate>
#include <QDir>
#include <QMessageBox>
#include <QFileDialog>
#include <QMenu>
#include <QDate>
#include <QMessageBox>
//---------------------------------------------------------------------------------------------------------------------
DialogEditLabel::DialogEditLabel(const VAbstractPattern *doc, const VContainer *data, QWidget *parent)
: QDialog(parent),
ui(new Ui::DialogEditLabel),
m_placeholdersMenu(new QMenu(this)),
m_doc(doc),
m_data(data)
: QDialog(parent),
ui(new Ui::DialogEditLabel),
m_placeholdersMenu(new QMenu(this)),
m_doc(doc),
m_data(data)
{
ui->setupUi(this);
@ -77,12 +77,13 @@ DialogEditLabel::DialogEditLabel(const VAbstractPattern *doc, const VContainer *
connect(ui->toolButtonImportLabel, &QToolButton::clicked, this, &DialogEditLabel::ImportTemplate);
connect(ui->spinBoxFontSize, QOverload<int>::of(&QSpinBox::valueChanged), this,
&DialogEditLabel::SaveAdditionalFontSize);
connect(ui->toolButtonTop, &QToolButton::clicked, this, [this](){DialogTool::MoveListRowTop(ui->listWidgetEdit);});
connect(ui->toolButtonUp, &QToolButton::clicked, this, [this](){DialogTool::MoveListRowUp(ui->listWidgetEdit);});
connect(ui->toolButtonTop, &QToolButton::clicked, this,
[this]() { DialogTool::MoveListRowTop(ui->listWidgetEdit); });
connect(ui->toolButtonUp, &QToolButton::clicked, this, [this]() { DialogTool::MoveListRowUp(ui->listWidgetEdit); });
connect(ui->toolButtonDown, &QToolButton::clicked, this,
[this](){DialogTool::MoveListRowDown(ui->listWidgetEdit);});
[this]() { DialogTool::MoveListRowDown(ui->listWidgetEdit); });
connect(ui->toolButtonBottom, &QToolButton::clicked, this,
[this](){DialogTool::MoveListRowBottom(ui->listWidgetEdit);});
[this]() { DialogTool::MoveListRowBottom(ui->listWidgetEdit); });
InitPlaceholders();
InitPlaceholdersMenu();
@ -279,10 +280,11 @@ void DialogEditLabel::NewTemplate()
{
if (ui->listWidgetEdit->count() > 0)
{
const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Create new template"),
tr("Creating new template will overwrite the current, do "
"you want to continue?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
const QMessageBox::StandardButton answer =
QMessageBox::question(this, tr("Create new template"),
tr("Creating new template will overwrite the current, do "
"you want to continue?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
if (answer == QMessageBox::No)
{
return;
@ -300,7 +302,7 @@ void DialogEditLabel::ExportTemplate()
{
QString filters(tr("Label template") + QLatin1String("(*.xml)"));
const QString path =
VCommonSettings::PrepareLabelTemplates(VAbstractApplication::VApp()->Settings()->GetPathLabelTemplate());
VCommonSettings::PrepareLabelTemplates(VAbstractApplication::VApp()->Settings()->GetPathLabelTemplate());
QString fileName = QFileDialog::getSaveFileName(this, tr("Export label template"),
path + QLatin1String("/") + tr("template") + QLatin1String(".xml"),
@ -311,7 +313,7 @@ void DialogEditLabel::ExportTemplate()
return;
}
QFileInfo f( fileName );
QFileInfo f(fileName);
if (f.suffix().isEmpty() && f.suffix() != QLatin1String("xml"))
{
fileName += QLatin1String(".xml");
@ -340,10 +342,11 @@ void DialogEditLabel::ImportTemplate()
{
if (ui->listWidgetEdit->count() > 0)
{
const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Import template"),
tr("Import template will overwrite the current, do "
"you want to continue?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
const QMessageBox::StandardButton answer =
QMessageBox::question(this, tr("Import template"),
tr("Import template will overwrite the current, do "
"you want to continue?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
if (answer == QMessageBox::No)
{
return;
@ -351,9 +354,9 @@ void DialogEditLabel::ImportTemplate()
}
QString filter(tr("Label template") + QLatin1String(" (*.xml)"));
//Use standard path to label templates
// Use standard path to label templates
const QString path =
VCommonSettings::PrepareLabelTemplates(VAbstractApplication::VApp()->Settings()->GetPathLabelTemplate());
VCommonSettings::PrepareLabelTemplates(VAbstractApplication::VApp()->Settings()->GetPathLabelTemplate());
const QString fileName = QFileDialog::getOpenFileName(this, tr("Import template"), path, filter, nullptr,
VAbstractApplication::VApp()->NativeFileDialog());
if (fileName.isEmpty())
@ -453,7 +456,7 @@ void DialogEditLabel::SetupControls()
ui->toolButtonDown->setEnabled(true);
ui->toolButtonBottom->setEnabled(true);
}
else if (ui->listWidgetEdit->currentRow() == ui->listWidgetEdit->count()-1)
else if (ui->listWidgetEdit->currentRow() == ui->listWidgetEdit->count() - 1)
{
ui->toolButtonTop->setEnabled(true);
ui->toolButtonUp->setEnabled(true);
@ -518,22 +521,22 @@ void DialogEditLabel::InitPlaceholders()
const QString pUnits = UnitsToStr(VAbstractValApplication::VApp()->patternUnits(), true);
m_placeholders.insert(pl_pUnits, qMakePair(tr("Pattern units"), pUnits));
m_placeholders.insert(pl_mSizeUnits, qMakePair(tr("Size units"),
UnitsToStr(VAbstractValApplication::VApp()->DimensionSizeUnits(),
true)));
m_placeholders.insert(
pl_mSizeUnits,
qMakePair(tr("Size units"), UnitsToStr(VAbstractValApplication::VApp()->DimensionSizeUnits(), true)));
m_placeholders.insert(pl_areaUnits, qMakePair(tr("Area units"), pUnits + QStringLiteral("²")));
if (VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Individual)
{
m_placeholders.insert(pl_customer, qMakePair(tr("Customer name"),
VAbstractValApplication::VApp()->GetCustomerName()));
m_placeholders.insert(pl_customer,
qMakePair(tr("Customer name"), VAbstractValApplication::VApp()->GetCustomerName()));
const QString birthDate = locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(),
m_doc->GetLabelDateFormat());
const QString birthDate =
locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(), m_doc->GetLabelDateFormat());
m_placeholders.insert(pl_birthDate, qMakePair(tr("Customer birth date"), birthDate));
m_placeholders.insert(pl_email, qMakePair(tr("Customer email"),
VAbstractValApplication::VApp()->CustomerEmail()));
m_placeholders.insert(pl_email,
qMakePair(tr("Customer email"), VAbstractValApplication::VApp()->CustomerEmail()));
}
else
{
@ -571,41 +574,41 @@ void DialogEditLabel::InitPlaceholders()
{
QString label = VAbstractValApplication::VApp()->GetDimensionHeightLabel();
m_placeholders.insert(pl_heightLabel, qMakePair(tr("Height label", "dimension"),
not label.isEmpty() ? label : heightValue));
m_placeholders.insert(pl_dimensionX, qMakePair(tr("Dimension X label", "dimension"),
not label.isEmpty() ? label : heightValue));
m_placeholders.insert(pl_heightLabel,
qMakePair(tr("Height label", "dimension"), not label.isEmpty() ? label : heightValue));
m_placeholders.insert(
pl_dimensionX, qMakePair(tr("Dimension X label", "dimension"), not label.isEmpty() ? label : heightValue));
label = VAbstractValApplication::VApp()->GetDimensionSizeLabel();
m_placeholders.insert(pl_sizeLabel, qMakePair(tr("Size label", "dimension"),
not label.isEmpty() ? label : sizeValue));
m_placeholders.insert(pl_dimensionY, qMakePair(tr("Dimension Y label", "dimension"),
not label.isEmpty() ? label : sizeValue));
m_placeholders.insert(pl_sizeLabel,
qMakePair(tr("Size label", "dimension"), not label.isEmpty() ? label : sizeValue));
m_placeholders.insert(pl_dimensionY,
qMakePair(tr("Dimension Y label", "dimension"), not label.isEmpty() ? label : sizeValue));
label = VAbstractValApplication::VApp()->GetDimensionHipLabel();
m_placeholders.insert(pl_hipLabel, qMakePair(tr("Hip label", "dimension"),
not label.isEmpty() ? label : hipValue));
m_placeholders.insert(pl_dimensionZ, qMakePair(tr("Dimension Z label", "dimension"),
not label.isEmpty() ? label : hipValue));
m_placeholders.insert(pl_hipLabel,
qMakePair(tr("Hip label", "dimension"), not label.isEmpty() ? label : hipValue));
m_placeholders.insert(pl_dimensionZ,
qMakePair(tr("Dimension Z label", "dimension"), not label.isEmpty() ? label : hipValue));
label = VAbstractValApplication::VApp()->GetDimensionWaistLabel();
m_placeholders.insert(pl_waistLabel, qMakePair(tr("Waist label", "dimension"),
not label.isEmpty() ? label : waistValue));
m_placeholders.insert(pl_dimensionW, qMakePair(tr("Dimension W label", "dimension"),
not label.isEmpty() ? label : waistValue));
m_placeholders.insert(pl_waistLabel,
qMakePair(tr("Waist label", "dimension"), not label.isEmpty() ? label : waistValue));
m_placeholders.insert(
pl_dimensionW, qMakePair(tr("Dimension W label", "dimension"), not label.isEmpty() ? label : waistValue));
}
m_placeholders.insert(pl_mExt,
qMakePair(tr("Measurments extension"),
VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Multisize
? QStringLiteral("vst") : QStringLiteral("vit")));
m_placeholders.insert(
pl_mExt, qMakePair(tr("Measurments extension"),
VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Multisize
? QStringLiteral("vst")
: QStringLiteral("vit")));
const QString userMaterialStr = tr("User material");
const QMap<int, QString> materials = m_doc->GetPatternMaterials();
for (int i = 0; i < userMaterialPlaceholdersQuantity; ++i)
{
const QString number = QString::number(i+1);
const QString number = QString::number(i + 1);
QString materialDescription;
QString value;
@ -623,7 +626,7 @@ void DialogEditLabel::InitPlaceholders()
}
{
const QMap<QString, QSharedPointer<VMeasurement> > measurements = m_data->DataMeasurements();
const QMap<QString, QSharedPointer<VMeasurement>> measurements = m_data->DataMeasurements();
auto i = measurements.constBegin();
while (i != measurements.constEnd())
{
@ -642,7 +645,7 @@ void DialogEditLabel::InitPlaceholders()
m_placeholders.insert(pl_currentArea, qMakePair(tr("Piece full area"), QString()));
m_placeholders.insert(pl_currentSeamLineArea, qMakePair(tr("Piece seam line area"), QString()));
for (int i=0; i < measurements.size(); ++i)
for (int i = 0; i < measurements.size(); ++i)
{
const VFinalMeasurement &m = measurements.at(i);
@ -651,19 +654,24 @@ void DialogEditLabel::InitPlaceholders()
QScopedPointer<Calculator> cal(new Calculator());
const qreal result = cal->EvalFormula(completeData.DataVariables(), m.formula);
m_placeholders.insert(pl_finalMeasurement + m.name, qMakePair(tr("Final measurement: %1").arg(m.name),
QString::number(result)));
m_placeholders.insert(pl_finalMeasurement + m.name,
qMakePair(tr("Final measurement: %1").arg(m.name), QString::number(result)));
}
catch (qmu::QmuParserError &e)
{
const QString errorMsg = QObject::tr("Failed to prepare final measurement placeholder. Parser error at "
"line %1: %2.").arg(i+1).arg(e.GetMsg());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
"line %1: %2.")
.arg(i + 1)
.arg(e.GetMsg());
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
}
}
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
// Piece tags
m_placeholders.insert(pl_pLetter, qMakePair(tr("Piece letter"), QString()));
m_placeholders.insert(pl_pAnnotation, qMakePair(tr("Piece annotation"), QString()));
@ -673,12 +681,14 @@ void DialogEditLabel::InitPlaceholders()
m_placeholders.insert(pl_pFoldPosition, qMakePair(tr("Piece fold position"), QString()));
m_placeholders.insert(pl_pName, qMakePair(tr("Piece name"), QString()));
m_placeholders.insert(pl_pQuantity, qMakePair(tr("Quantity"), QString()));
m_placeholders.insert(pl_mFabric, qMakePair(tr("Material: Fabric"), tr("Fabric")));
m_placeholders.insert(pl_mLining, qMakePair(tr("Material: Lining"), tr("Lining")));
m_placeholders.insert(pl_mInterfacing, qMakePair(tr("Material: Interfacing"), tr("Interfacing")));
m_placeholders.insert(pl_mInterlining, qMakePair(tr("Material: Interlining"), tr("Interlining")));
m_placeholders.insert(pl_wCut, qMakePair(tr("Word: Cut"), tr("Cut")));
m_placeholders.insert(pl_wOnFold, qMakePair(tr("Word: on fold"), QString()));// By default should be empty
m_placeholders.insert(pl_mFabric, qMakePair(tr("Material: Fabric"), phTr->translate("Placeholder", "Fabric")));
m_placeholders.insert(pl_mLining, qMakePair(tr("Material: Lining"), phTr->translate("Placeholder", "Lining")));
m_placeholders.insert(pl_mInterfacing,
qMakePair(tr("Material: Interfacing"), phTr->translate("Placeholder", "Interfacing")));
m_placeholders.insert(pl_mInterlining,
qMakePair(tr("Material: Interlining"), phTr->translate("Placeholder", "Interlining")));
m_placeholders.insert(pl_wCut, qMakePair(tr("Word: Cut"), phTr->translate("Placeholder", "Cut")));
m_placeholders.insert(pl_wOnFold, qMakePair(tr("Word: on fold"), QString())); // By default should be empty
}
//---------------------------------------------------------------------------------------------------------------------
@ -688,10 +698,11 @@ auto DialogEditLabel::ReplacePlaceholders(QString line) const -> QString
auto TestDimension = [per, this, line](const QString &placeholder, const QString &errorMsg)
{
if (line.contains(per+placeholder+per) && m_placeholders.value(placeholder).second == QChar('0'))
if (line.contains(per + placeholder + per) && m_placeholders.value(placeholder).second == QChar('0'))
{
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
};
@ -708,7 +719,7 @@ auto DialogEditLabel::ReplacePlaceholders(QString line) const -> QString
auto i = m_placeholders.constBegin();
while (i != m_placeholders.constEnd())
{
line.replace(per+i.key()+per, i.value().second);
line.replace(per + i.key() + per, i.value().second);
++i;
}
return line;
@ -720,7 +731,7 @@ auto DialogEditLabel::GetTemplate() const -> QVector<VLabelTemplateLine>
QVector<VLabelTemplateLine> lines;
lines.reserve(ui->listWidgetEdit->count());
for (int i=0; i<ui->listWidgetEdit->count(); ++i)
for (int i = 0; i < ui->listWidgetEdit->count(); ++i)
{
const QListWidgetItem *lineItem = ui->listWidgetEdit->item(i);
if (lineItem)
@ -775,7 +786,7 @@ void DialogEditLabel::SetTemplate(const QVector<VLabelTemplateLine> &lines)
//---------------------------------------------------------------------------------------------------------------------
void DialogEditLabel::SetPiece(const VPiece &piece)
{
const VPieceLabelData& pieceData = piece.GetPieceLabelData();
const VPieceLabelData &pieceData = piece.GetPieceLabelData();
m_placeholders[pl_pLetter].second = pieceData.GetLetter();
m_placeholders[pl_pAnnotation].second = pieceData.GetAnnotation();
m_placeholders[pl_pOrientation].second = pieceData.GetOrientation();
@ -786,7 +797,8 @@ void DialogEditLabel::SetPiece(const VPiece &piece)
m_placeholders[pl_pQuantity].second = QString::number(pieceData.GetQuantity());
if (pieceData.IsOnFold())
{
m_placeholders[pl_wOnFold].second = tr("on fold");
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
m_placeholders[pl_wOnFold].second = phTr->translate("Placeholder", "on fold");
}
VContainer completeData = m_doc->GetCompleteData();
@ -803,8 +815,9 @@ void DialogEditLabel::SetPiece(const VPiece &piece)
catch (qmu::QmuParserError &e)
{
const QString errorMsg = QObject::tr("Failed to prepare full piece area placeholder. %2.").arg(e.GetMsg());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
try
@ -816,8 +829,9 @@ void DialogEditLabel::SetPiece(const VPiece &piece)
catch (qmu::QmuParserError &e)
{
const QString errorMsg = QObject::tr("Failed to prepare piece seam line area placeholder. %2.").arg(e.GetMsg());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
}

View file

@ -70,7 +70,6 @@
#include "nodeDetails/vtoolplacelabel.h"
#include <QFuture>
#include <QtConcurrent/QtConcurrentRun>
#include <QGraphicsSceneMouseEvent>
#include <QGraphicsView>
#include <QKeyEvent>
@ -78,6 +77,7 @@
#include <QMessageBox>
#include <QTimer>
#include <QUuid>
#include <QtConcurrent/QtConcurrentRun>
#include <QtMath>
#include <chrono>
#include <memory>
@ -96,30 +96,29 @@ using namespace bpstd::literals::chrono_literals;
// Current version of seam allowance tag need for backward compatibility
const quint8 VToolSeamAllowance::pieceVersion = 2;
const QString VToolSeamAllowance::TagCSA = QStringLiteral("csa"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::TagRecord = QStringLiteral("record"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::TagIPaths = QStringLiteral("iPaths"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::TagPins = QStringLiteral("pins"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::TagCSA = QStringLiteral("csa"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::TagRecord = QStringLiteral("record"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::TagIPaths = QStringLiteral("iPaths"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::TagPins = QStringLiteral("pins"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::TagPlaceLabels = QStringLiteral("placeLabels"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrSeamAllowance = QStringLiteral("seamAllowance"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrHideMainPath = QStringLiteral("hideMainPath"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrSeamAllowanceBuiltIn = // NOLINT(cert-err58-cpp)
QStringLiteral("seamAllowanceBuiltIn");
const QString VToolSeamAllowance::AttrUnited = QStringLiteral("united"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrFont = QStringLiteral("fontSize"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrUnited = QStringLiteral("united"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrFont = QStringLiteral("fontSize"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrTopLeftPin = QStringLiteral("topLeftPin"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrBottomRightPin = QStringLiteral("bottomRightPin"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrCenterPin = QStringLiteral("centerPin"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrTopPin = QStringLiteral("topPin"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrBottomPin = QStringLiteral("bottomPin"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrPiecePriority = QStringLiteral("priority"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrTopPin = QStringLiteral("topPin"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrBottomPin = QStringLiteral("bottomPin"); // NOLINT(cert-err58-cpp)
const QString VToolSeamAllowance::AttrPiecePriority = QStringLiteral("priority"); // NOLINT(cert-err58-cpp)
namespace
{
//---------------------------------------------------------------------------------------------------------------------
template <typename T>
auto FixLabelPins(T itemData, const QMap<quint32, quint32> &mappedPins) -> T
template <typename T> auto FixLabelPins(T itemData, const QMap<quint32, quint32> &mappedPins) -> T
{
itemData.SetCenterPin(mappedPins.value(itemData.CenterPin(), NULL_ID));
itemData.SetTopLeftPin(mappedPins.value(itemData.TopLeftPin(), NULL_ID));
@ -128,8 +127,7 @@ auto FixLabelPins(T itemData, const QMap<quint32, quint32> &mappedPins) -> T
}
//---------------------------------------------------------------------------------------------------------------------
template <typename T>
auto FixGrainlinePins(T itemData, const QMap<quint32, quint32> &mappedPins) -> T
template <typename T> auto FixGrainlinePins(T itemData, const QMap<quint32, quint32> &mappedPins) -> T
{
itemData.SetCenterPin(mappedPins.value(itemData.CenterPin(), NULL_ID));
itemData.SetTopPin(mappedPins.value(itemData.TopPin(), NULL_ID));
@ -141,7 +139,7 @@ auto FixGrainlinePins(T itemData, const QMap<quint32, quint32> &mappedPins) -> T
auto DuplicatePins(const QVector<quint32> &pins, const VToolSeamAllowanceInitData &initData) -> QMap<quint32, quint32>
{
QMap<quint32, quint32> newPins;
for(auto p : pins)
for (auto p : pins)
{
QSharedPointer<VPointF> pin = initData.data->GeometricObject<VPointF>(p);
@ -187,16 +185,14 @@ void UpdateLabelItem(VTextGraphicsItem *labelItem, QPointF pos, qreal labelAngle
labelItem->Update();
labelItem->GetTextLines() > 0 ? labelItem->show() : labelItem->hide();
}
} // namespace
} // namespace
//---------------------------------------------------------------------------------------------------------------------
auto VToolSeamAllowance::Create(const QPointer<DialogTool> &dialog,
VMainGraphicsScene *scene,
VAbstractPattern *doc,
auto VToolSeamAllowance::Create(const QPointer<DialogTool> &dialog, VMainGraphicsScene *scene, VAbstractPattern *doc,
VContainer *data) -> VToolSeamAllowance *
{
SCASSERT(not dialog.isNull());
const QPointer<DialogSeamAllowance> dialogTool = qobject_cast<DialogSeamAllowance*>(dialog);
const QPointer<DialogSeamAllowance> dialogTool = qobject_cast<DialogSeamAllowance *>(dialog);
SCASSERT(not dialogTool.isNull())
VToolSeamAllowanceInitData initData;
@ -222,8 +218,9 @@ auto VToolSeamAllowance::Create(const QPointer<DialogTool> &dialog,
{
const QString errorMsg = QObject::tr("Piece '%1'. Unable to load default piece label template.\n%2\n%3")
.arg(initData.detail.GetName(), e.ErrorMessage(), e.DetailedInformation());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
}
@ -282,18 +279,17 @@ auto VToolSeamAllowance::Create(VToolSeamAllowanceInitData &initData) -> VToolSe
VMainGraphicsView::NewSceneRect(initData.scene, VAbstractValApplication::VApp()->getSceneView(), piece);
VAbstractPattern::AddTool(initData.id, piece);
}
//Very important to delete it. Only this tool need this special variable.
// Very important to delete it. Only this tool need this special variable.
initData.data->RemoveVariable(currentSeamAllowance);
return piece;
}
//---------------------------------------------------------------------------------------------------------------------
auto VToolSeamAllowance::Duplicate(const QPointer<DialogTool> &dialog,
VMainGraphicsScene *scene,
VAbstractPattern *doc) -> VToolSeamAllowance *
auto VToolSeamAllowance::Duplicate(const QPointer<DialogTool> &dialog, VMainGraphicsScene *scene, VAbstractPattern *doc)
-> VToolSeamAllowance *
{
SCASSERT(not dialog.isNull());
const QPointer<DialogDuplicateDetail> dialogTool = qobject_cast<DialogDuplicateDetail*>(dialog);
const QPointer<DialogDuplicateDetail> dialogTool = qobject_cast<DialogDuplicateDetail *>(dialog);
SCASSERT(not dialogTool.isNull())
VToolSeamAllowanceInitData initData;
@ -327,8 +323,8 @@ auto VToolSeamAllowance::Duplicate(VToolSeamAllowanceInitData &initData) -> VToo
QMap<quint32, quint32> replacements;
dupDetail.GetPath().SetNodes(DuplicateNodes(initData.detail.GetPath(), initData, replacements));
dupDetail.SetCustomSARecords(DuplicateCustomSARecords(initData.detail.GetCustomSARecords(), initData,
replacements));
dupDetail.SetCustomSARecords(
DuplicateCustomSARecords(initData.detail.GetCustomSARecords(), initData, replacements));
dupDetail.SetInternalPaths(DuplicateInternalPaths(initData.detail.GetInternalPaths(), initData));
dupDetail.SetPlaceLabels(DuplicatePlaceLabels(initData.detail.GetPlaceLabels(), initData));
dupDetail.SetUUID(QUuid::createUuid());
@ -350,10 +346,10 @@ void VToolSeamAllowance::RemoveWithConfirm(bool ask)
{
DeleteToolWithConfirm(ask);
}
catch(const VExceptionToolWasDeleted &e)
catch (const VExceptionToolWasDeleted &e)
{
Q_UNUSED(e);
return;//Leave this method immediately!!!
return; // Leave this method immediately!!!
}
}
@ -391,7 +387,7 @@ void VToolSeamAllowance::InsertNodes(const QVector<VPieceNode> &nodes, quint32 p
newDet.GetPath().Append(node);
// Seam allowance tool already initializated and can't init the node
auto *saTool = qobject_cast<VToolSeamAllowance*>(VAbstractPattern::getTool(pieceId));
auto *saTool = qobject_cast<VToolSeamAllowance *>(VAbstractPattern::getTool(pieceId));
SCASSERT(saTool != nullptr);
InitNode(node, scene, saTool);
@ -409,28 +405,28 @@ void VToolSeamAllowance::AddAttributes(VAbstractPattern *doc, QDomElement &domEl
doc->SetAttribute(domElement, VDomDocument::AttrId, id);
doc->SetAttribute(domElement, AttrName, piece.GetName());
doc->SetAttributeOrRemoveIf<QString>(domElement, AttrShortName, piece.GetShortName(),
[](const QString &name) noexcept {return name.isEmpty();});
[](const QString &name) noexcept { return name.isEmpty(); });
doc->SetAttribute(domElement, AttrUUID, piece.GetUUID().toString());
doc->SetAttributeOrRemoveIf<QString>(domElement, AttrGradationLabel, piece.GetGradationLabel(),
[](const QString &label) noexcept {return label.isEmpty();});
[](const QString &label) noexcept { return label.isEmpty(); });
doc->SetAttribute(domElement, AttrVersion, QString().setNum(pieceVersion));
doc->SetAttribute(domElement, AttrMx, VAbstractValApplication::VApp()->fromPixel(piece.GetMx()));
doc->SetAttribute(domElement, AttrMy, VAbstractValApplication::VApp()->fromPixel(piece.GetMy()));
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrInLayout, piece.IsInLayout(),
[](bool inLayout) noexcept {return inLayout;});
[](bool inLayout) noexcept { return inLayout; });
doc->SetAttribute(domElement, AttrForbidFlipping, piece.IsForbidFlipping());
doc->SetAttribute(domElement, AttrForceFlipping, piece.IsForceFlipping());
doc->SetAttribute(domElement, AttrSewLineOnDrawing, piece.IsSewLineOnDrawing());
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrSeamAllowance, piece.IsSeamAllowance(),
[](bool seamAllowance) noexcept {return not seamAllowance;});
[](bool seamAllowance) noexcept { return not seamAllowance; });
doc->SetAttribute(domElement, AttrHideMainPath, piece.IsHideMainPath());
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrSeamAllowanceBuiltIn, piece.IsSeamAllowanceBuiltIn(),
[](bool builtin) noexcept {return not builtin;});
[](bool builtin) noexcept { return not builtin; });
doc->SetAttribute(domElement, AttrWidth, piece.GetFormulaSAWidth());
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrUnited, piece.IsUnited(),
[](bool united) noexcept {return not united;});
[](bool united) noexcept { return not united; });
doc->SetAttributeOrRemoveIf<uint>(domElement, AttrPiecePriority, piece.GetPriority(),
[](uint priority) noexcept {return priority == 0;});
[](uint priority) noexcept { return priority == 0; });
}
//---------------------------------------------------------------------------------------------------------------------
@ -495,7 +491,7 @@ void VToolSeamAllowance::AddPlaceLabels(VAbstractPattern *doc, QDomElement &domE
void VToolSeamAllowance::AddPatternPieceData(VAbstractPattern *doc, QDomElement &domElement, const VPiece &piece)
{
QDomElement domData = doc->createElement(VAbstractPattern::TagData);
const VPieceLabelData& data = piece.GetPieceLabelData();
const VPieceLabelData &data = piece.GetPieceLabelData();
doc->SetAttribute(domData, VAbstractPattern::AttrLetter, data.GetLetter());
doc->SetAttribute(domData, VAbstractPattern::AttrAnnotation, data.GetAnnotation());
doc->SetAttribute(domData, VAbstractPattern::AttrOrientation, data.GetOrientation());
@ -512,11 +508,11 @@ void VToolSeamAllowance::AddPatternPieceData(VAbstractPattern *doc, QDomElement
doc->SetAttribute(domData, AttrFont, data.GetFontSize());
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, data.GetRotation());
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, data.CenterPin(),
[](quint32 pin) noexcept {return pin == NULL_ID;});
[](quint32 pin) noexcept { return pin == NULL_ID; });
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopLeftPin, data.TopLeftPin(),
[](quint32 leftPin) noexcept {return leftPin == NULL_ID;});
[](quint32 leftPin) noexcept { return leftPin == NULL_ID; });
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomRightPin, data.BottomRightPin(),
[](quint32 rightPin) noexcept {return rightPin == NULL_ID;});
[](quint32 rightPin) noexcept { return rightPin == NULL_ID; });
doc->SetLabelTemplate(domData, data.GetLabelTemplate());
domElement.appendChild(domData);
@ -526,7 +522,7 @@ void VToolSeamAllowance::AddPatternPieceData(VAbstractPattern *doc, QDomElement
void VToolSeamAllowance::AddPatternInfo(VAbstractPattern *doc, QDomElement &domElement, const VPiece &piece)
{
QDomElement domData = doc->createElement(VAbstractPattern::TagPatternInfo);
const VPatternLabelData& geom = piece.GetPatternLabelData();
const VPatternLabelData &geom = piece.GetPatternLabelData();
doc->SetAttribute(domData, VAbstractPattern::AttrVisible, geom.IsVisible());
doc->SetAttribute(domData, AttrMx, geom.GetPos().x());
doc->SetAttribute(domData, AttrMy, geom.GetPos().y());
@ -535,11 +531,11 @@ void VToolSeamAllowance::AddPatternInfo(VAbstractPattern *doc, QDomElement &domE
doc->SetAttribute(domData, AttrFont, geom.GetFontSize());
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, geom.GetRotation());
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, geom.CenterPin(),
[](quint32 pin) noexcept {return pin <= NULL_ID;});
[](quint32 pin) noexcept { return pin <= NULL_ID; });
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopLeftPin, geom.TopLeftPin(),
[](quint32 pin) noexcept {return pin <= NULL_ID;});
[](quint32 pin) noexcept { return pin <= NULL_ID; });
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomRightPin, geom.BottomRightPin(),
[](quint32 pin) noexcept {return pin <= NULL_ID;});
[](quint32 pin) noexcept { return pin <= NULL_ID; });
domElement.appendChild(domData);
}
@ -549,7 +545,7 @@ void VToolSeamAllowance::AddGrainline(VAbstractPattern *doc, QDomElement &domEle
{
// grainline
QDomElement domData = doc->createElement(VAbstractPattern::TagGrainline);
const VGrainlineData& glGeom = piece.GetGrainlineGeometry();
const VGrainlineData &glGeom = piece.GetGrainlineGeometry();
doc->SetAttribute(domData, VAbstractPattern::AttrVisible, glGeom.IsVisible());
doc->SetAttribute(domData, AttrMx, glGeom.GetPos().x());
doc->SetAttribute(domData, AttrMy, glGeom.GetPos().y());
@ -557,11 +553,11 @@ void VToolSeamAllowance::AddGrainline(VAbstractPattern *doc, QDomElement &domEle
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, glGeom.GetRotation());
doc->SetAttribute(domData, VAbstractPattern::AttrArrows, static_cast<int>(glGeom.GetArrowType()));
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, glGeom.CenterPin(),
[](quint32 pin) noexcept {return pin <= NULL_ID;});
[](quint32 pin) noexcept { return pin <= NULL_ID; });
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopPin, glGeom.TopPin(),
[](quint32 pin) noexcept {return pin <= NULL_ID;});
[](quint32 pin) noexcept { return pin <= NULL_ID; });
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomPin, glGeom.BottomPin(),
[](quint32 pin) noexcept {return pin <= NULL_ID;});
[](quint32 pin) noexcept { return pin <= NULL_ID; });
domElement.appendChild(domData);
}
@ -649,7 +645,10 @@ void VToolSeamAllowance::ReinitInternals(const VPiece &detail, VMainGraphicsScen
}
//---------------------------------------------------------------------------------------------------------------------
auto VToolSeamAllowance::getTagName() const -> QString { return VAbstractPattern::TagDetail; }
auto VToolSeamAllowance::getTagName() const -> QString
{
return VAbstractPattern::TagDetail;
}
//---------------------------------------------------------------------------------------------------------------------
void VToolSeamAllowance::ShowVisualization(bool show)
@ -667,7 +666,7 @@ void VToolSeamAllowance::GroupVisibility(quint32 object, bool visible)
//---------------------------------------------------------------------------------------------------------------------
void VToolSeamAllowance::FullUpdateFromFile()
{
const bool updateChildren = false;// Chilren have their own signals. Avoid double refresh.
const bool updateChildren = false; // Chilren have their own signals. Avoid double refresh.
RefreshGeometry(updateChildren);
}
@ -756,8 +755,9 @@ void VToolSeamAllowance::Highlight(quint32 id)
*/
void VToolSeamAllowance::UpdateDetailLabel()
{
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
const VPieceLabelData& labelData = detail.GetPieceLabelData();
VPiece detail = VAbstractTool::data.GetPiece(m_id);
detail.SetPieceLabelData(detail.GetPieceLabelData()); // Refresh translation
const VPieceLabelData &labelData = detail.GetPieceLabelData();
const QVector<quint32> &pins = detail.GetPins();
if (labelData.IsVisible())
@ -784,7 +784,7 @@ void VToolSeamAllowance::UpdateDetailLabel()
void VToolSeamAllowance::UpdatePatternInfo()
{
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
const VPatternLabelData& geom = detail.GetPatternLabelData();
const VPatternLabelData &geom = detail.GetPatternLabelData();
const QVector<quint32> &pins = detail.GetPins();
if (geom.IsVisible())
@ -818,7 +818,7 @@ void VToolSeamAllowance::UpdatePassmarks()
void VToolSeamAllowance::UpdateGrainline()
{
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
const VGrainlineData& geom = detail.GetGrainlineGeometry();
const VGrainlineData &geom = detail.GetGrainlineGeometry();
const QVector<quint32> &pins = detail.GetPins();
if (geom.IsVisible())
@ -841,10 +841,10 @@ void VToolSeamAllowance::UpdateGrainline()
if (m_geometryIsReady && not IsGrainlinePositionValid())
{
const QString errorMsg = QObject::tr("Piece '%1'. Grainline is not valid.")
.arg(detail.GetName());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
const QString errorMsg = QObject::tr("Piece '%1'. Grainline is not valid.").arg(detail.GetName());
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
}
else
@ -857,7 +857,7 @@ void VToolSeamAllowance::UpdateGrainline()
/**
* @brief SaveMoveDetail saves the move detail operation to the undo stack
*/
void VToolSeamAllowance::SaveMoveDetail(const QPointF& ptPos)
void VToolSeamAllowance::SaveMoveDetail(const QPointF &ptPos)
{
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
@ -909,7 +909,6 @@ void VToolSeamAllowance::SaveRotationDetail(qreal dRot)
VAbstractApplication::VApp()->getUndoStack()->push(rotateCommand);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief SaveMovePattern saves the pattern label position
@ -964,16 +963,15 @@ void VToolSeamAllowance::SaveRotationPattern(qreal dRot)
VAbstractApplication::VApp()->getUndoStack()->push(rotateCommand);
}
//---------------------------------------------------------------------------------------------------------------------
void VToolSeamAllowance::SaveMoveGrainline(const QPointF& ptPos)
void VToolSeamAllowance::SaveMoveGrainline(const QPointF &ptPos)
{
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
newDet.GetGrainlineGeometry().SetPos(ptPos);
qDebug() << "******* new grainline pos" << ptPos;
auto* moveCommand = new SavePieceOptions(oldDet, newDet, doc, m_id);
auto *moveCommand = new SavePieceOptions(oldDet, newDet, doc, m_id);
moveCommand->setText(tr("move grainline"));
VAbstractApplication::VApp()->getUndoStack()->push(moveCommand);
}
@ -988,13 +986,13 @@ void VToolSeamAllowance::SaveResizeGrainline(qreal dLength)
newDet.GetGrainlineGeometry().SetPos(m_grainLine->pos());
newDet.GetGrainlineGeometry().SetLength(QString().setNum(dLength));
auto* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, m_id);
auto *resizeCommand = new SavePieceOptions(oldDet, newDet, doc, m_id);
resizeCommand->setText(tr("resize grainline"));
VAbstractApplication::VApp()->getUndoStack()->push(resizeCommand);
}
//---------------------------------------------------------------------------------------------------------------------
void VToolSeamAllowance::SaveRotateGrainline(qreal dRot, const QPointF& ptPos)
void VToolSeamAllowance::SaveRotateGrainline(qreal dRot, const QPointF &ptPos)
{
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
@ -1076,14 +1074,14 @@ void VToolSeamAllowance::AddToFile()
// nodes
AddNodes(doc, domElement, piece);
//custom seam allowance
// custom seam allowance
AddCSARecords(doc, domElement, piece.GetCustomSARecords());
AddInternalPaths(doc, domElement, piece.GetInternalPaths());
AddPins(doc, domElement, piece.GetPins());
AddPlaceLabels(doc, domElement, piece.GetPlaceLabels());
VAbstractApplication::VApp()->getUndoStack()->push(new AddPiece(domElement, doc, VAbstractTool::data,
m_sceneDetails, m_drawName));
VAbstractApplication::VApp()->getUndoStack()->push(
new AddPiece(domElement, doc, VAbstractTool::data, m_sceneDetails, m_drawName));
}
//---------------------------------------------------------------------------------------------------------------------
@ -1095,8 +1093,7 @@ void VToolSeamAllowance::RefreshDataInFile()
// Refresh only parts that we possibly need to update
{
// TODO. Delete if minimal supported version is 0.4.0
Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 4, 0),
"Time to refactor the code.");
Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 4, 0), "Time to refactor the code.");
const uint version = VAbstractPattern::GetParametrUInt(domElement, AttrVersion, QChar('1'));
if (version == 1)
@ -1133,8 +1130,8 @@ auto VToolSeamAllowance::itemChange(QGraphicsItem::GraphicsItemChange change, co
// value - this is new position.
const QPointF newPos = value.toPointF();
VAbstractApplication::VApp()->getUndoStack()->push(new MovePiece(doc, newPos.x(), newPos.y(), m_id,
scene()));
VAbstractApplication::VApp()->getUndoStack()->push(
new MovePiece(doc, newPos.x(), newPos.y(), m_id, scene()));
const QList<QGraphicsView *> viewList = scene()->views();
if (not viewList.isEmpty())
@ -1172,7 +1169,7 @@ void VToolSeamAllowance::mousePressEvent(QGraphicsSceneMouseEvent *event)
QGraphicsPathItem::mousePressEvent(event);
// Somehow clicking on notselectable object do not clean previous selections.
if (not (flags() & ItemIsSelectable) && scene())
if (not(flags() & ItemIsSelectable) && scene())
{
scene()->clearSelection();
}
@ -1187,7 +1184,8 @@ void VToolSeamAllowance::mousePressEvent(QGraphicsSceneMouseEvent *event)
if (selectionType == SelectionType::ByMouseRelease)
{
event->accept();// Special for not selectable item first need to call standard mousePressEvent then accept event
event
->accept(); // Special for not selectable item first need to call standard mousePressEvent then accept event
}
else
{
@ -1307,12 +1305,12 @@ void VToolSeamAllowance::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
DeleteFromMenu();
}
catch(const VExceptionToolWasDeleted &e)
catch (const VExceptionToolWasDeleted &e)
{
Q_UNUSED(e);
return;//Leave this method immediately!!!
return; // Leave this method immediately!!!
}
//Leave this method immediately after call!!!
// Leave this method immediately after call!!!
}
}
@ -1339,14 +1337,14 @@ void VToolSeamAllowance::keyReleaseEvent(QKeyEvent *event)
}
DeleteToolWithConfirm(false);
}
catch(const VExceptionToolWasDeleted &e)
catch (const VExceptionToolWasDeleted &e)
{
Q_UNUSED(e);
if (not toolList.isEmpty())
{
VAbstractApplication::VApp()->getUndoStack()->endMacro();
}
return;//Leave this method immediately!!!
return; // Leave this method immediately!!!
}
}
break;
@ -1354,7 +1352,7 @@ void VToolSeamAllowance::keyReleaseEvent(QKeyEvent *event)
break;
}
QGraphicsPathItem::keyReleaseEvent ( event );
QGraphicsPathItem::keyReleaseEvent(event);
}
//---------------------------------------------------------------------------------------------------------------------
@ -1387,7 +1385,7 @@ VToolSeamAllowance::VToolSeamAllowance(const VToolSeamAllowanceInitData &initDat
VToolSeamAllowance::AllowHover(true);
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus
this->setFlag(QGraphicsItem::ItemIsFocusable, true); // For keyboard input focus
VToolSeamAllowance::ToolCreation(initData.typeCreation);
setAcceptHoverEvents(m_acceptHoverEvents);
@ -1410,11 +1408,11 @@ void VToolSeamAllowance::UpdateExcludeState()
const VPieceNode &node = path.at(i);
if (node.GetTypeTool() == Tool::NodePoint)
{
auto *tool = qobject_cast<VNodePoint*>(VAbstractPattern::getTool(node.GetId()));
auto *tool = qobject_cast<VNodePoint *>(VAbstractPattern::getTool(node.GetId()));
SCASSERT(tool != nullptr);
tool->SetExluded(node.IsExcluded());
tool->setVisible(not node.IsExcluded());//Hide excluded point
tool->setVisible(not node.IsExcluded()); // Hide excluded point
}
}
}
@ -1429,12 +1427,12 @@ void VToolSeamAllowance::UpdateInternalPaths()
{
try
{
if (auto *tool = qobject_cast<VToolPiecePath*>(VAbstractPattern::getTool(path)))
if (auto *tool = qobject_cast<VToolPiecePath *>(VAbstractPattern::getTool(path)))
{
tool->RefreshGeometry();
}
}
catch(const VExceptionBadId &)
catch (const VExceptionBadId &)
{
// ignore
}
@ -1448,25 +1446,26 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
QFuture<QPainterPath > futurePath = QtConcurrent::run([this, detail](){return detail.MainPathPath(getData());});
QFuture<QPainterPath > futurePassmarks =
QtConcurrent::run([this, detail](){return detail.PassmarksPath(getData());});
QFuture<QPainterPath> futurePath = QtConcurrent::run([this, detail]() { return detail.MainPathPath(getData()); });
QFuture<QPainterPath> futurePassmarks =
QtConcurrent::run([this, detail]() { return detail.PassmarksPath(getData()); });
QFuture<QVector<VLayoutPoint> > futureSeamAllowance;
QFuture<QVector<VLayoutPoint>> futureSeamAllowance;
QFuture<bool> futureSeamAllowanceValid;
if (detail.IsSeamAllowance())
{
futureSeamAllowance = QtConcurrent::run([this, detail](){return detail.SeamAllowancePoints(getData());});
futureSeamAllowanceValid = QtConcurrent::run([this, detail](){return detail.IsSeamAllowanceValid(getData());});
futureSeamAllowance = QtConcurrent::run([this, detail]() { return detail.SeamAllowancePoints(getData()); });
futureSeamAllowanceValid =
QtConcurrent::run([this, detail]() { return detail.IsSeamAllowanceValid(getData()); });
}
this->setPos(detail.GetMx(), detail.GetMy());
QPainterPath path;
if (VAbstractApplication::VApp()->Settings()->IsPieceShowMainPath() || not detail.IsHideMainPath()
|| not detail.IsSeamAllowance() || detail.IsSeamAllowanceBuiltIn())
if (VAbstractApplication::VApp()->Settings()->IsPieceShowMainPath() || not detail.IsHideMainPath() ||
not detail.IsSeamAllowance() || detail.IsSeamAllowanceBuiltIn())
{
m_mainPath = QPainterPath();
m_seamAllowance->setBrush(QBrush(Qt::Dense7Pattern));
@ -1488,10 +1487,10 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
{
if (not futureSeamAllowanceValid.result())
{
const QString errorMsg = QObject::tr("Piece '%1'. Seam allowance is not valid.")
.arg(detail.GetName());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
const QString errorMsg = QObject::tr("Piece '%1'. Seam allowance is not valid.").arg(detail.GetName());
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
path.addPath(detail.SeamAllowancePath(futureSeamAllowance.result()));
path.setFillRule(Qt::OddEvenFill);
@ -1508,19 +1507,20 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
if (VAbstractApplication::VApp()->IsAppInGUIMode())
{
QTimer::singleShot(V_MSECONDS(100), Qt::CoarseTimer, this, [this, updateChildren]()
{
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false);
UpdateDetailLabel();
UpdatePatternInfo();
UpdateGrainline();
UpdateExcludeState();
if (updateChildren)
{
UpdateInternalPaths();
}
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
});
QTimer::singleShot(V_MSECONDS(100), Qt::CoarseTimer, this,
[this, updateChildren]()
{
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false);
UpdateDetailLabel();
UpdatePatternInfo();
UpdateGrainline();
UpdateExcludeState();
if (updateChildren)
{
UpdateInternalPaths();
}
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
});
}
else
{
@ -1546,7 +1546,7 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
void VToolSeamAllowance::SaveDialogChange(const QString &undoText)
{
SCASSERT(not m_dialog.isNull());
auto *dialogTool = qobject_cast<DialogSeamAllowance*>(m_dialog.data());
auto *dialogTool = qobject_cast<DialogSeamAllowance *>(m_dialog.data());
SCASSERT(dialogTool != nullptr);
const VPiece newDet = dialogTool->GetPiece();
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
@ -1562,7 +1562,7 @@ void VToolSeamAllowance::SaveDialogChange(const QString &undoText)
if (groupChange)
{
VAbstractApplication::VApp()->getUndoStack()->beginMacro(undoText.isEmpty() ? saveCommand->text(): undoText);
VAbstractApplication::VApp()->getUndoStack()->beginMacro(undoText.isEmpty() ? saveCommand->text() : undoText);
for (auto command : undocommands)
{
@ -1583,8 +1583,8 @@ void VToolSeamAllowance::SaveDialogChange(const QString &undoText)
//---------------------------------------------------------------------------------------------------------------------
void VToolSeamAllowance::ShowOptions()
{
QPointer<DialogSeamAllowance> dialog = new DialogSeamAllowance(getData(), doc, m_id,
VAbstractValApplication::VApp()->getMainWindow());
QPointer<DialogSeamAllowance> dialog =
new DialogSeamAllowance(getData(), doc, m_id, VAbstractValApplication::VApp()->getMainWindow());
dialog->EnableApply(true);
m_dialog = dialog;
m_dialog->setModal(true);
@ -1605,17 +1605,15 @@ void VToolSeamAllowance::ToggleInLayout(bool checked)
//---------------------------------------------------------------------------------------------------------------------
void VToolSeamAllowance::ToggleForbidFlipping(bool checked)
{
VAbstractApplication::VApp()->getUndoStack()->push(
new TogglePieceForceForbidFlipping(m_id, checked, ForceForbidFlippingType::ForbidFlipping,
&(VAbstractTool::data), doc));
VAbstractApplication::VApp()->getUndoStack()->push(new TogglePieceForceForbidFlipping(
m_id, checked, ForceForbidFlippingType::ForbidFlipping, &(VAbstractTool::data), doc));
}
//---------------------------------------------------------------------------------------------------------------------
void VToolSeamAllowance::ToggleForceFlipping(bool checked)
{
VAbstractApplication::VApp()->getUndoStack()->push(
new TogglePieceForceForbidFlipping(m_id, checked, ForceForbidFlippingType::ForceFlipping,
&(VAbstractTool::data), doc));
VAbstractApplication::VApp()->getUndoStack()->push(new TogglePieceForceForbidFlipping(
m_id, checked, ForceForbidFlippingType::ForceFlipping, &(VAbstractTool::data), doc));
}
//---------------------------------------------------------------------------------------------------------------------
@ -1630,7 +1628,7 @@ void VToolSeamAllowance::ToggleExcludeState(quint32 id)
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
{
VPieceNode node = oldDet.GetPath().at(i);
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
@ -1650,7 +1648,7 @@ void VToolSeamAllowance::ToggleTurnPointState(quint32 id)
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
{
VPieceNode node = oldDet.GetPath().at(i);
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
@ -1670,7 +1668,7 @@ void VToolSeamAllowance::ToggleNodePointAngleType(quint32 id, PieceNodeAngle typ
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
{
VPieceNode node = oldDet.GetPath().at(i);
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
@ -1690,7 +1688,7 @@ void VToolSeamAllowance::ToggleNodePointPassmark(quint32 id, bool toggle)
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
{
VPieceNode node = oldDet.GetPath().at(i);
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
@ -1710,7 +1708,7 @@ void VToolSeamAllowance::TogglePassmarkAngleType(quint32 id, PassmarkAngleType t
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
{
VPieceNode node = oldDet.GetPath().at(i);
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
@ -1730,7 +1728,7 @@ void VToolSeamAllowance::TogglePassmarkLineType(quint32 id, PassmarkLineType typ
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
VPiece newDet = oldDet;
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
{
VPieceNode node = oldDet.GetPath().at(i);
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
@ -1766,19 +1764,17 @@ void VToolSeamAllowance::ResetPieceLabelTemplate()
{
const QString errorMsg = QObject::tr("Piece '%1'. Unable to load default piece label template.\n%2\n%3")
.arg(newDet.GetName(), e.ErrorMessage(), e.DetailedInformation());
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
VAbstractApplication::VApp()->IsPedantic()
? throw VException(errorMsg)
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
}
}
}
//---------------------------------------------------------------------------------------------------------------------
auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
const QVector<quint32> &pins,
qreal &rotationAngle,
qreal &labelWidth,
qreal &labelHeight,
QPointF &pos) -> VPieceItem::MoveTypes
auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData, const QVector<quint32> &pins,
qreal &rotationAngle, qreal &labelWidth, qreal &labelHeight, QPointF &pos)
-> VPieceItem::MoveTypes
{
VPieceItem::MoveTypes restrictions = VPieceItem::AllModifications;
@ -1786,13 +1782,13 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
{
if (not qmu::QmuTokenParser::IsSingle(labelData.GetRotation()))
{
restrictions &= ~ VPieceItem::IsRotatable;
restrictions &= ~VPieceItem::IsRotatable;
}
Calculator cal1;
rotationAngle = cal1.EvalFormula(VAbstractTool::data.DataVariables(), labelData.GetRotation());
}
catch(qmu::QmuParserError &e)
catch (qmu::QmuParserError &e)
{
Q_UNUSED(e);
return VPieceItem::Error;
@ -1801,27 +1797,27 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
const quint32 topLeftPin = labelData.TopLeftPin();
const quint32 bottomRightPin = labelData.BottomRightPin();
if (topLeftPin != NULL_ID && pins.contains(topLeftPin) && bottomRightPin != NULL_ID
&& pins.contains(bottomRightPin))
if (topLeftPin != NULL_ID && pins.contains(topLeftPin) && bottomRightPin != NULL_ID &&
pins.contains(bottomRightPin))
{
try
{
const auto topLeftPinPoint = VAbstractTool::data.GeometricObject<VPointF>(topLeftPin);
const auto bottomRightPinPoint = VAbstractTool::data.GeometricObject<VPointF>(bottomRightPin);
const QRectF labelRect = QRectF(static_cast<QPointF>(*topLeftPinPoint),
static_cast<QPointF>(*bottomRightPinPoint));
const QRectF labelRect =
QRectF(static_cast<QPointF>(*topLeftPinPoint), static_cast<QPointF>(*bottomRightPinPoint));
labelWidth = FromPixel(qAbs(labelRect.width()), *VDataTool::data.GetPatternUnit());
labelHeight = FromPixel(qAbs(labelRect.height()), *VDataTool::data.GetPatternUnit());
pos = labelRect.topLeft();
restrictions &= ~ VPieceItem::IsMovable;
restrictions &= ~ VPieceItem::IsResizable;
restrictions &= ~VPieceItem::IsMovable;
restrictions &= ~VPieceItem::IsResizable;
return restrictions;
}
catch(const VExceptionBadId &)
catch (const VExceptionBadId &)
{
// do nothing.
}
@ -1841,10 +1837,10 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
if (not widthIsSingle || not heightIsSingle)
{
restrictions &= ~ VPieceItem::IsResizable;
restrictions &= ~VPieceItem::IsResizable;
}
}
catch(qmu::QmuParserError &e)
catch (qmu::QmuParserError &e)
{
Q_UNUSED(e);
return VPieceItem::Error;
@ -1861,9 +1857,9 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
const qreal lHeight = ToPixel(labelHeight, *VDataTool::data.GetPatternUnit());
pos = static_cast<QPointF>(*centerPinPoint) - QRectF(0, 0, lWidth, lHeight).center();
restrictions &= ~ VPieceItem::IsMovable;
restrictions &= ~VPieceItem::IsMovable;
}
catch(const VExceptionBadId &)
catch (const VExceptionBadId &)
{
pos = labelData.GetPos();
}
@ -1877,11 +1873,8 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
}
//---------------------------------------------------------------------------------------------------------------------
auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
const QVector<quint32> &pins,
qreal &length,
qreal &rotationAngle,
QPointF &pos) -> VPieceItem::MoveTypes
auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom, const QVector<quint32> &pins, qreal &length,
qreal &rotationAngle, QPointF &pos) -> VPieceItem::MoveTypes
{
const quint32 topPin = geom.TopPin();
const quint32 bottomPin = geom.BottomPin();
@ -1906,7 +1899,7 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
return VPieceItem::NotMovable;
}
catch(const VExceptionBadId &)
catch (const VExceptionBadId &)
{
// do nothing.
}
@ -1917,7 +1910,7 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
{
if (not qmu::QmuTokenParser::IsSingle(geom.GetRotation()))
{
restrictions &= ~ VPieceItem::IsRotatable;
restrictions &= ~VPieceItem::IsRotatable;
}
Calculator cal1;
@ -1925,13 +1918,13 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
if (not qmu::QmuTokenParser::IsSingle(geom.GetLength()))
{
restrictions &= ~ VPieceItem::IsResizable;
restrictions &= ~VPieceItem::IsResizable;
}
Calculator cal2;
length = cal2.EvalFormula(VAbstractTool::data.DataVariables(), geom.GetLength());
}
catch(qmu::QmuParserError &e)
catch (qmu::QmuParserError &e)
{
Q_UNUSED(e);
return VPieceItem::Error;
@ -1945,17 +1938,17 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
const auto centerPinPoint = VAbstractTool::data.GeometricObject<VPointF>(centerPin);
const qreal cLength = ToPixel(length, *VDataTool::data.GetPatternUnit());
QLineF grainline(centerPinPoint->x(), centerPinPoint->y(),
centerPinPoint->x() + cLength / 2.0, centerPinPoint->y());
QLineF grainline(centerPinPoint->x(), centerPinPoint->y(), centerPinPoint->x() + cLength / 2.0,
centerPinPoint->y());
grainline.setAngle(rotationAngle);
grainline = QLineF(grainline.p2(), grainline.p1());
grainline.setLength(cLength);
pos = grainline.p2();
restrictions &= ~ VPieceItem::IsMovable;
restrictions &= ~VPieceItem::IsMovable;
}
catch(const VExceptionBadId &)
catch (const VExceptionBadId &)
{
pos = geom.GetPos();
}
@ -1990,7 +1983,7 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc
{
case (Tool::NodePoint):
{
auto *tool = qobject_cast<VNodePoint*>(VAbstractPattern::getTool(node.GetId()));
auto *tool = qobject_cast<VNodePoint *>(VAbstractPattern::getTool(node.GetId()));
SCASSERT(tool != nullptr);
if (tool->parent() != parent)
@ -2014,15 +2007,15 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc
connect(tool, &VNodePoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem, Qt::UniqueConnection);
connect(tool, &VNodePoint::TogglePassmarkAngleType, parent,
&VToolSeamAllowance::TogglePassmarkAngleType, Qt::UniqueConnection);
connect(tool, &VNodePoint::TogglePassmarkLineType, parent,
&VToolSeamAllowance::TogglePassmarkLineType, Qt::UniqueConnection);
connect(tool, &VNodePoint::TogglePassmarkLineType, parent, &VToolSeamAllowance::TogglePassmarkLineType,
Qt::UniqueConnection);
connect(tool, &VNodePoint::ResetPieceLabelTemplate, parent,
&VToolSeamAllowance::ResetPieceLabelTemplate, Qt::UniqueConnection);
tool->setParentItem(parent);
tool->SetParentType(ParentType::Item);
tool->SetExluded(node.IsExcluded());
}
tool->setVisible(not node.IsExcluded());//Hide excluded point
tool->setVisible(not node.IsExcluded()); // Hide excluded point
break;
}
case (Tool::NodeArc):
@ -2032,7 +2025,7 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc
// Do nothing
break;
default:
qDebug()<<"Get wrong tool type. Ignore.";
qDebug() << "Get wrong tool type. Ignore.";
break;
}
}
@ -2053,7 +2046,7 @@ void VToolSeamAllowance::InitInternalPaths(const VPiece &detail)
const QVector<quint32> paths = detail.GetInternalPaths();
for (auto path : paths)
{
auto *tool = qobject_cast<VToolPiecePath*>(VAbstractPattern::getTool(path));
auto *tool = qobject_cast<VToolPiecePath *>(VAbstractPattern::getTool(path));
SCASSERT(tool != nullptr);
if (tool->parent() != this)
@ -2114,8 +2107,8 @@ auto VToolSeamAllowance::PrepareLabelData(const VPatternLabelData &labelData, co
qreal labelWidth = 0;
qreal labelHeight = 0;
const VTextGraphicsItem::MoveTypes type = FindLabelGeometry(labelData, pins, labelAngle, labelWidth, labelHeight,
pos);
const VTextGraphicsItem::MoveTypes type =
FindLabelGeometry(labelData, pins, labelAngle, labelWidth, labelHeight, pos);
if (type & VGrainlineItem::Error)
{
labelItem->hide();
@ -2139,14 +2132,14 @@ auto VToolSeamAllowance::PrepareLabelData(const VPatternLabelData &labelData, co
auto VToolSeamAllowance::SelectedTools() const -> QList<VToolSeamAllowance *>
{
QList<VToolSeamAllowance *> tools;
if(m_sceneDetails)
if (m_sceneDetails)
{
const QList<QGraphicsItem *> list = m_sceneDetails->selectedItems();
if (not list.isEmpty())
{
tools.reserve(list.size());
for(auto *item : list)
for (auto *item : list)
{
auto *tool = qgraphicsitem_cast<VToolSeamAllowance *>(item);
if (tool != nullptr && tool->getId() != m_id)
@ -2182,8 +2175,8 @@ void VToolSeamAllowance::AddPointRecords(VAbstractPattern *doc, QDomElement &dom
QDomElement pinsElement = doc->createElement(tag);
for (auto record : records)
{
pinsElement.appendChild(doc->CreateElementWithText(VToolSeamAllowance::TagRecord,
QString().setNum(record)));
pinsElement.appendChild(
doc->CreateElementWithText(VToolSeamAllowance::TagRecord, QString().setNum(record)));
}
domElement.appendChild(pinsElement);
}
@ -2236,7 +2229,7 @@ auto VToolSeamAllowance::DuplicateNode(const VPieceNode &node, const VToolSeamAl
VNodeSplinePath::Create(initNodeData);
break;
default:
qDebug()<<"May be wrong tool type!!! Ignoring."<<Q_FUNC_INFO;
qDebug() << "May be wrong tool type!!! Ignoring." << Q_FUNC_INFO;
break;
}
return initNodeData.id;
@ -2278,7 +2271,7 @@ auto VToolSeamAllowance::DuplicateCustomSARecords(const QVector<CustomSARecord>
{
QVector<CustomSARecord> newRecords;
newRecords.reserve(records.size());
for(auto record : records)
for (auto record : records)
{
record.path = DuplicatePiecePath(record.path, initData);
record.startPoint = replacements.value(record.startPoint, NULL_ID);
@ -2294,7 +2287,7 @@ auto VToolSeamAllowance::DuplicateInternalPaths(const QVector<quint32> &iPaths,
{
QVector<quint32> newPaths;
newPaths.reserve(iPaths.size());
for(auto iPath : iPaths)
for (auto iPath : iPaths)
{
newPaths.append(DuplicatePiecePath(iPath, initData));
}
@ -2307,7 +2300,7 @@ auto VToolSeamAllowance::DuplicatePlaceLabels(const QVector<quint32> &placeLabel
{
QVector<quint32> newPlaceLabels;
newPlaceLabels.reserve(placeLabels.size());
for(auto placeLabel : placeLabels)
for (auto placeLabel : placeLabels)
{
QSharedPointer<VPlaceLabelItem> label = initData.data->GeometricObject<VPlaceLabelItem>(placeLabel);
auto *tool = qobject_cast<VAbstractNode *>(VAbstractPattern::getTool(placeLabel));
@ -2341,7 +2334,7 @@ auto VToolSeamAllowance::DuplicateNodes(const VPiecePath &path, const VToolSeamA
{
QVector<VPieceNode> nodes;
nodes.reserve(path.CountNodes());
for (int i = 0; i< path.CountNodes(); ++i)
for (int i = 0; i < path.CountNodes(); ++i)
{
VPieceNode nodeD = path.at(i);
const quint32 oldId = nodeD.GetId();