mirror of
https://gitlab.com/smart-pattern/valentina.git
synced 2024-09-19 23:34:04 +02:00
Compare commits
No commits in common. "867348fb8e9474d4186a7db022d406c8dfb214db" and "7b2707a5283105f7911120b283e341543bd216d2" have entirely different histories.
867348fb8e
...
7b2707a528
|
@ -1,5 +1,5 @@
|
||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://app.transifex.com/
|
||||||
lang_map = es: es_ES, id: id_ID, uk: uk_UA, cs: cs_CZ, nl: nl_NL, fi: fi_FI
|
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]
|
[o:valentina:p:valentina-project:r:measurements_p0ts]
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
- Simplify number of versions for DXF AAMA/ASTM.
|
- Simplify number of versions for DXF AAMA/ASTM.
|
||||||
- New notch type - Check Notch.
|
- New notch type - Check Notch.
|
||||||
- Control a notch width and angle with formulas.
|
- Control a notch width and angle with formulas.
|
||||||
- Independent translation for piece labels.
|
|
||||||
|
|
||||||
# Valentina 0.7.52 September 12, 2022
|
# Valentina 0.7.52 September 12, 2022
|
||||||
- Fix crash when default locale is ru.
|
- Fix crash when default locale is ru.
|
||||||
|
|
|
@ -34,10 +34,6 @@ 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 '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
|
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)
|
end=$(date +%s)
|
||||||
runtime=$(python3 -c "print('Time passed %u:%02u seconds' % ((${end} - ${start})/60, (${end} - ${start})%60))")
|
runtime=$(python3 -c "print('Time passed %u:%02u seconds' % ((${end} - ${start})/60, (${end} - ${start})%60))")
|
||||||
echo $runtime
|
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
|
@ -27,12 +27,11 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "preferencesconfigurationpage.h"
|
#include "preferencesconfigurationpage.h"
|
||||||
#include "../../core/vapplication.h"
|
|
||||||
#include "../vmisc/literals.h"
|
|
||||||
#include "../vmisc/vvalentinasettings.h"
|
|
||||||
#include "../vpatterndb/pmsystems.h"
|
|
||||||
#include "def.h"
|
|
||||||
#include "ui_preferencesconfigurationpage.h"
|
#include "ui_preferencesconfigurationpage.h"
|
||||||
|
#include "../../core/vapplication.h"
|
||||||
|
#include "../vpatterndb/pmsystems.h"
|
||||||
|
#include "../vmisc/vvalentinasettings.h"
|
||||||
|
#include "../vmisc/literals.h"
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
||||||
#include "../vmisc/backport/qoverload.h"
|
#include "../vmisc/backport/qoverload.h"
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
||||||
|
@ -56,12 +55,10 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
|
||||||
ui->autoSaveCheck->setChecked(VAbstractValApplication::VApp()->ValentinaSettings()->GetAutosaveState());
|
ui->autoSaveCheck->setChecked(VAbstractValApplication::VApp()->ValentinaSettings()->GetAutosaveState());
|
||||||
|
|
||||||
InitLanguages(ui->langCombo);
|
InitLanguages(ui->langCombo);
|
||||||
connect(ui->langCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
|
connect(ui->langCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
|
||||||
[this]() { m_langChanged = true; });
|
{
|
||||||
|
m_langChanged = true;
|
||||||
InitPieceLabelLanguages(ui->comboBoxPieceLbelLanguage);
|
});
|
||||||
connect(ui->comboBoxPieceLbelLanguage, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
|
|
||||||
[this]() { m_pieceLabelLangChanged = true; });
|
|
||||||
|
|
||||||
//-------------------- Decimal separator setup
|
//-------------------- Decimal separator setup
|
||||||
ui->osOptionCheck->setChecked(VAbstractValApplication::VApp()->ValentinaSettings()->GetOsSeparator());
|
ui->osOptionCheck->setChecked(VAbstractValApplication::VApp()->ValentinaSettings()->GetOsSeparator());
|
||||||
|
@ -74,8 +71,10 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
|
||||||
ui->unitCombo->setCurrentIndex(indexUnit);
|
ui->unitCombo->setCurrentIndex(indexUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
connect(ui->unitCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
|
connect(ui->unitCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
|
||||||
[this]() { m_unitChanged = true; });
|
{
|
||||||
|
m_unitChanged = true;
|
||||||
|
});
|
||||||
|
|
||||||
//----------------------- Label language
|
//----------------------- Label language
|
||||||
SetLabelComboBox(VApplication::LabelLanguages());
|
SetLabelComboBox(VApplication::LabelLanguages());
|
||||||
|
@ -85,17 +84,18 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
|
||||||
{
|
{
|
||||||
ui->labelCombo->setCurrentIndex(index);
|
ui->labelCombo->setCurrentIndex(index);
|
||||||
}
|
}
|
||||||
connect(ui->labelCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
|
connect(ui->labelCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
|
||||||
[this]() { m_labelLangChanged = true; });
|
{
|
||||||
|
m_labelLangChanged = true;
|
||||||
|
});
|
||||||
|
|
||||||
//---------------------- Pattern making system
|
//---------------------- Pattern making system
|
||||||
ui->systemBookValueLabel->setFixedHeight(4 * QFontMetrics(ui->systemBookValueLabel->font()).lineSpacing());
|
ui->systemBookValueLabel->setFixedHeight(4 * QFontMetrics(ui->systemBookValueLabel->font()).lineSpacing());
|
||||||
connect(ui->systemCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
|
connect(ui->systemCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
|
||||||
[this]()
|
|
||||||
{
|
{
|
||||||
m_systemChanged = true;
|
m_systemChanged = true;
|
||||||
QString text =
|
QString text = VAbstractApplication::VApp()->TrVars()
|
||||||
VAbstractApplication::VApp()->TrVars()->PMSystemAuthor(ui->systemCombo->currentData().toString());
|
->PMSystemAuthor(ui->systemCombo->currentData().toString());
|
||||||
ui->systemAuthorValueLabel->setText(text);
|
ui->systemAuthorValueLabel->setText(text);
|
||||||
ui->systemAuthorValueLabel->setToolTip(text);
|
ui->systemAuthorValueLabel->setToolTip(text);
|
||||||
|
|
||||||
|
@ -111,8 +111,7 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------- Pattern Editing
|
//----------------------------- Pattern Editing
|
||||||
connect(ui->resetWarningsButton, &QPushButton::released, this,
|
connect(ui->resetWarningsButton, &QPushButton::released, this, []()
|
||||||
[]()
|
|
||||||
{
|
{
|
||||||
VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings();
|
VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings();
|
||||||
|
|
||||||
|
@ -207,13 +206,6 @@ auto PreferencesConfigurationPage::Apply() -> QStringList
|
||||||
settings->SetDoubleClickZoomFitBestCurrentPP(ui->checkBoxZoomFitBestCurrentPP->isChecked());
|
settings->SetDoubleClickZoomFitBestCurrentPP(ui->checkBoxZoomFitBestCurrentPP->isChecked());
|
||||||
settings->SetInteractiveTools(ui->checkBoxInteractiveTools->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)
|
if (m_langChanged || m_systemChanged)
|
||||||
{
|
{
|
||||||
const auto locale = qvariant_cast<QString>(ui->langCombo->currentData());
|
const auto locale = qvariant_cast<QString>(ui->langCombo->currentData());
|
||||||
|
@ -310,13 +302,4 @@ void PreferencesConfigurationPage::RetranslateUi()
|
||||||
ui->systemCombo->blockSignals(false);
|
ui->systemCombo->blockSignals(false);
|
||||||
ui->systemCombo->setCurrentIndex(ui->systemCombo->findData(code));
|
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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
|
#include "../vmisc/defglobal.h"
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
class PreferencesConfigurationPage;
|
class PreferencesConfigurationPage;
|
||||||
|
@ -40,20 +42,18 @@ class PreferencesConfigurationPage : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT // NOLINT
|
Q_OBJECT // NOLINT
|
||||||
|
|
||||||
public : explicit PreferencesConfigurationPage(QWidget *parent = nullptr);
|
public:
|
||||||
|
explicit PreferencesConfigurationPage(QWidget *parent = nullptr);
|
||||||
~PreferencesConfigurationPage() override;
|
~PreferencesConfigurationPage() override;
|
||||||
|
|
||||||
auto Apply() -> QStringList;
|
auto Apply() -> QStringList;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void changeEvent(QEvent* event) override;
|
void changeEvent(QEvent* event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// cppcheck-suppress unknownMacro
|
// cppcheck-suppress unknownMacro
|
||||||
Q_DISABLE_COPY_MOVE(PreferencesConfigurationPage) // NOLINT
|
Q_DISABLE_COPY_MOVE(PreferencesConfigurationPage) // NOLINT
|
||||||
Ui::PreferencesConfigurationPage *ui;
|
Ui::PreferencesConfigurationPage *ui;
|
||||||
bool m_langChanged{false};
|
bool m_langChanged{false};
|
||||||
bool m_pieceLabelLangChanged{false};
|
|
||||||
bool m_systemChanged{false};
|
bool m_systemChanged{false};
|
||||||
bool m_unitChanged{false};
|
bool m_unitChanged{false};
|
||||||
bool m_labelLangChanged{false};
|
bool m_labelLangChanged{false};
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>624</width>
|
<width>624</width>
|
||||||
<height>898</height>
|
<height>867</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
@ -104,20 +104,13 @@
|
||||||
<widget class="QComboBox" name="langCombo"/>
|
<widget class="QComboBox" name="langCombo"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<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">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Decimal separator parts:</string>
|
<string>Decimal separator parts:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QCheckBox" name="osOptionCheck">
|
<widget class="QCheckBox" name="osOptionCheck">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">< With OS options ></string>
|
<string notr="true">< With OS options ></string>
|
||||||
|
@ -127,28 +120,25 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_4">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Default unit:</string>
|
<string>Default unit:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="3" column="0">
|
||||||
<widget class="QComboBox" name="unitCombo"/>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0">
|
|
||||||
<widget class="QLabel" name="label_5">
|
<widget class="QLabel" name="label_5">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Label language:</string>
|
<string>Label language:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QComboBox" name="labelCombo"/>
|
<widget class="QComboBox" name="unitCombo"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QComboBox" name="comboBoxPieceLbelLanguage"/>
|
<widget class="QComboBox" name="labelCombo"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -26,28 +26,28 @@
|
||||||
**
|
**
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
#include <QDebug>
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QFlags> // QFlags<Qt::Alignment>
|
|
||||||
#include <QFontMetrics>
|
#include <QFontMetrics>
|
||||||
#include <QGlobalStatic>
|
|
||||||
#include <QLatin1String>
|
#include <QLatin1String>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QFlags> // QFlags<Qt::Alignment>
|
||||||
#include <QtMath>
|
#include <QtMath>
|
||||||
|
#include <QGlobalStatic>
|
||||||
|
|
||||||
#include "../ifc/xml/vabstractpattern.h"
|
#include "../ifc/xml/vabstractpattern.h"
|
||||||
#include "../vmisc/vabstractvalapplication.h"
|
|
||||||
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
|
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
|
||||||
|
#include "../vmisc/vabstractvalapplication.h"
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 9, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 9, 0)
|
||||||
# include "../vmisc/vdatastreamenum.h"
|
# include "../vmisc/vdatastreamenum.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "../vpatterndb/vcontainer.h"
|
||||||
#include "../vpatterndb/calculator.h"
|
#include "../vpatterndb/calculator.h"
|
||||||
#include "../vpatterndb/variables/vmeasurement.h"
|
#include "../vpatterndb/variables/vmeasurement.h"
|
||||||
#include "../vpatterndb/vcontainer.h"
|
|
||||||
#include "vtextmanager.h"
|
#include "vtextmanager.h"
|
||||||
|
|
||||||
const quint32 TextLine::streamHeader = 0xA3881E49; // CRC-32Q string "TextLine"
|
const quint32 TextLine::streamHeader = 0xA3881E49; // CRC-32Q string "TextLine"
|
||||||
|
@ -93,8 +93,7 @@ auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream &
|
||||||
{
|
{
|
||||||
QString message = QCoreApplication::tr("TextLine compatibility error: actualClassVersion = %1 and "
|
QString message = QCoreApplication::tr("TextLine compatibility error: actualClassVersion = %1 and "
|
||||||
"classVersion = %2")
|
"classVersion = %2")
|
||||||
.arg(actualClassVersion)
|
.arg(actualClassVersion).arg(TextLine::classVersion);
|
||||||
.arg(TextLine::classVersion);
|
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,8 +156,7 @@ auto operator>>(QDataStream &dataStream, VTextManager &data) -> QDataStream &
|
||||||
{
|
{
|
||||||
QString message = QCoreApplication::tr("VTextManager compatibility error: actualClassVersion = %1 and "
|
QString message = QCoreApplication::tr("VTextManager compatibility error: actualClassVersion = %1 and "
|
||||||
"classVersion = %2")
|
"classVersion = %2")
|
||||||
.arg(actualClassVersion)
|
.arg(actualClassVersion).arg(VTextManager::classVersion);
|
||||||
.arg(VTextManager::classVersion);
|
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,8 +205,8 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
|
||||||
{
|
{
|
||||||
placeholders.insert(pl_customer, VAbstractValApplication::VApp()->GetCustomerName());
|
placeholders.insert(pl_customer, VAbstractValApplication::VApp()->GetCustomerName());
|
||||||
|
|
||||||
const QString birthDate =
|
const QString birthDate = locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(),
|
||||||
locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(), doc->GetLabelDateFormat());
|
doc->GetLabelDateFormat());
|
||||||
placeholders.insert(pl_birthDate, birthDate);
|
placeholders.insert(pl_birthDate, birthDate);
|
||||||
|
|
||||||
placeholders.insert(pl_email, VAbstractValApplication::VApp()->CustomerEmail());
|
placeholders.insert(pl_email, VAbstractValApplication::VApp()->CustomerEmail());
|
||||||
|
@ -258,8 +256,7 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
|
||||||
}
|
}
|
||||||
|
|
||||||
placeholders.insert(pl_mExt, VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Multisize
|
placeholders.insert(pl_mExt, VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Multisize
|
||||||
? QStringLiteral("vst")
|
? QStringLiteral("vst") : QStringLiteral("vit"));
|
||||||
: QStringLiteral("vit"));
|
|
||||||
|
|
||||||
const QMap<int, QString> materials = doc->GetPatternMaterials();
|
const QMap<int, QString> materials = doc->GetPatternMaterials();
|
||||||
for (int i = 0; i < userMaterialPlaceholdersQuantity; ++i)
|
for (int i = 0; i < userMaterialPlaceholdersQuantity; ++i)
|
||||||
|
@ -307,12 +304,9 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
|
||||||
catch (qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Failed to prepare final measurement placeholder. Parser error at "
|
const QString errorMsg = QObject::tr("Failed to prepare final measurement placeholder. Parser error at "
|
||||||
"line %1: %2.")
|
"line %1: %2.").arg(i+1).arg(e.GetMsg());
|
||||||
.arg(i + 1)
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
.arg(e.GetMsg());
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
|
||||||
? throw VException(errorMsg)
|
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -327,14 +321,11 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
|
||||||
placeholders.insert(pl_pName, QString());
|
placeholders.insert(pl_pName, QString());
|
||||||
placeholders.insert(pl_pQuantity, QString());
|
placeholders.insert(pl_pQuantity, QString());
|
||||||
placeholders.insert(pl_wOnFold, QString());
|
placeholders.insert(pl_wOnFold, QString());
|
||||||
|
placeholders.insert(pl_mFabric, QObject::tr("Fabric"));
|
||||||
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
|
placeholders.insert(pl_mLining, QObject::tr("Lining"));
|
||||||
|
placeholders.insert(pl_mInterfacing, QObject::tr("Interfacing"));
|
||||||
placeholders.insert(pl_mFabric, phTr->translate("Placeholder", "Fabric"));
|
placeholders.insert(pl_mInterlining, QObject::tr("Interlining"));
|
||||||
placeholders.insert(pl_mLining, phTr->translate("Placeholder", "Lining"));
|
placeholders.insert(pl_wCut, QObject::tr("Cut"));
|
||||||
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;
|
return placeholders;
|
||||||
}
|
}
|
||||||
|
@ -354,8 +345,7 @@ void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &
|
||||||
|
|
||||||
if (data.IsOnFold())
|
if (data.IsOnFold())
|
||||||
{
|
{
|
||||||
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
|
placeholders[pl_wOnFold] = QObject::tr("on fold");
|
||||||
placeholders[pl_wOnFold] = phTr->translate("Placeholder", "on fold");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VContainer completeData = *pattern;
|
VContainer completeData = *pattern;
|
||||||
|
@ -365,30 +355,28 @@ void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const QString formula = pieceArea_ + data.GetAreaShortName();
|
const QString formula = pieceArea_ + data.GetAreaShartName();
|
||||||
const qreal result = cal->EvalFormula(completeData.DataVariables(), formula);
|
const qreal result = cal->EvalFormula(completeData.DataVariables(), formula);
|
||||||
placeholders[pl_currentArea] = QString::number(result);
|
placeholders[pl_currentArea] = QString::number(result);
|
||||||
}
|
}
|
||||||
catch (qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Failed to prepare full piece area placeholder. %2.").arg(e.GetMsg());
|
const QString errorMsg = QObject::tr("Failed to prepare full piece area placeholder. %2.").arg(e.GetMsg());
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
? throw VException(errorMsg)
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const QString formula = pieceSeamLineArea_ + data.GetAreaShortName();
|
const QString formula = pieceSeamLineArea_ + data.GetAreaShartName();
|
||||||
const qreal result = cal->EvalFormula(completeData.DataVariables(), formula);
|
const qreal result = cal->EvalFormula(completeData.DataVariables(), formula);
|
||||||
placeholders[pl_currentSeamLineArea] = QString::number(result);
|
placeholders[pl_currentSeamLineArea] = QString::number(result);
|
||||||
}
|
}
|
||||||
catch (qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Failed to prepare piece seam line area placeholder. %2.").arg(e.GetMsg());
|
const QString errorMsg = QObject::tr("Failed to prepare piece seam line area placeholder. %2.").arg(e.GetMsg());
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
? throw VException(errorMsg)
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -401,9 +389,8 @@ auto ReplacePlaceholders(const QMap<QString, QString> &placeholders, QString lin
|
||||||
{
|
{
|
||||||
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()
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
? throw VException(errorMsg)
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -606,7 +593,8 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
|
||||||
fnt.setPixelSize(iFS + maxLine.m_iFontSize);
|
fnt.setPixelSize(iFS + maxLine.m_iFontSize);
|
||||||
QFontMetrics fm(fnt);
|
QFontMetrics fm(fnt);
|
||||||
lineLength = TextWidth(fm, maxLine.m_qsText);
|
lineLength = TextWidth(fm, maxLine.m_qsText);
|
||||||
} while (lineLength > fW && iFS > MIN_FONT_SIZE);
|
}
|
||||||
|
while (lineLength > fW && iFS > MIN_FONT_SIZE);
|
||||||
}
|
}
|
||||||
SetFontSize(iFS);
|
SetFontSize(iFS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,12 +33,9 @@
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QCursor>
|
#include <QCursor>
|
||||||
#include <QDesktopServices>
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QDirIterator>
|
#include <QDirIterator>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QGlobalStatic>
|
|
||||||
#include <QGraphicsItem>
|
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
#include <QLatin1Char>
|
#include <QLatin1Char>
|
||||||
|
@ -47,12 +44,15 @@
|
||||||
#include <QMessageLogger>
|
#include <QMessageLogger>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QPixmapCache>
|
|
||||||
#include <QPrinterInfo>
|
#include <QPrinterInfo>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QRgb>
|
#include <QRgb>
|
||||||
#include <QUrl>
|
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
|
#include <QPixmapCache>
|
||||||
|
#include <QGraphicsItem>
|
||||||
|
#include <QGlobalStatic>
|
||||||
|
#include <QDesktopServices>
|
||||||
|
#include <QUrl>
|
||||||
|
|
||||||
#include "vabstractapplication.h"
|
#include "vabstractapplication.h"
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
|
||||||
|
@ -65,79 +65,6 @@
|
||||||
#include "../vmisc/diagnostic.h"
|
#include "../vmisc/diagnostic.h"
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
#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
|
auto QPixmapFromCache(const QString &pixmapPath) -> QPixmap
|
||||||
{
|
{
|
||||||
|
@ -168,8 +95,27 @@ void SetItemOverrideCursor(QGraphicsItem *item, const QString &pixmapPath, int h
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto SupportedLocales() -> QStringList
|
auto SupportedLocales() -> QStringList
|
||||||
{
|
{
|
||||||
return QStringList{"uk_UA", "de_DE", "cs_CZ", "he_IL", "fr_FR", "it_IT", "nl_NL", "id_ID", "es_ES",
|
return QStringList
|
||||||
"fi_FI", "en_US", "en_CA", "en_IN", "ro_RO", "zh_CN", "pt_BR", "el_GR", "pl_PL"};
|
{
|
||||||
|
"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"
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -278,10 +224,12 @@ auto darkenPixmap(const QPixmap &pixmap) -> QPixmap
|
||||||
void ShowInGraphicalShell(const QString &filePath)
|
void ShowInGraphicalShell(const QString &filePath)
|
||||||
{
|
{
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
QStringList args{"-e", "tell application \"Finder\"",
|
QStringList args{
|
||||||
|
"-e", "tell application \"Finder\"",
|
||||||
"-e", "activate",
|
"-e", "activate",
|
||||||
"-e", "select POSIX file \""+filePath+"\"",
|
"-e", "select POSIX file \""+filePath+"\"",
|
||||||
"-e", "end tell"};
|
"-e", "end tell"
|
||||||
|
};
|
||||||
QProcess::startDetached(QStringLiteral("osascript"), args);
|
QProcess::startDetached(QStringLiteral("osascript"), args);
|
||||||
#elif defined(Q_OS_WIN)
|
#elif defined(Q_OS_WIN)
|
||||||
QProcess::startDetached(QStringLiteral("explorer"), QStringList{"/select", QDir::toNativeSeparators(filePath)});
|
QProcess::startDetached(QStringLiteral("explorer"), QStringList{"/select", QDir::toNativeSeparators(filePath)});
|
||||||
|
@ -290,8 +238,7 @@ void ShowInGraphicalShell(const QString &filePath)
|
||||||
QString command = QStringLiteral("dbus-send --reply-timeout=%1 --session --dest=org.freedesktop.FileManager1 "
|
QString command = QStringLiteral("dbus-send --reply-timeout=%1 --session --dest=org.freedesktop.FileManager1 "
|
||||||
"--type=method_call /org/freedesktop/FileManager1 "
|
"--type=method_call /org/freedesktop/FileManager1 "
|
||||||
"org.freedesktop.FileManager1.ShowItems array:string:\"%2\" string:\"\"")
|
"org.freedesktop.FileManager1.ShowItems array:string:\"%2\" string:\"\"")
|
||||||
.arg(timeout)
|
.arg(timeout).arg(QUrl::fromLocalFile(filePath).toString());
|
||||||
.arg(QUrl::fromLocalFile(filePath).toString());
|
|
||||||
|
|
||||||
// Sending message through dbus will highlighting file
|
// Sending message through dbus will highlighting file
|
||||||
QProcess dbus;
|
QProcess dbus;
|
||||||
|
@ -502,6 +449,7 @@ auto StringToPassmarkAngleType(const QString &value) -> PassmarkAngleType
|
||||||
return PassmarkAngleType::Straightforward;
|
return PassmarkAngleType::Straightforward;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto StrToUnits(const QString &unit) -> Unit
|
auto StrToUnits(const QString &unit) -> Unit
|
||||||
{
|
{
|
||||||
|
@ -551,7 +499,58 @@ auto UnitsToStr(const Unit &unit, const bool translate) -> QString
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void InitLanguages(QComboBox *combobox)
|
void InitLanguages(QComboBox *combobox)
|
||||||
{
|
{
|
||||||
InitLanguageList(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);
|
||||||
|
}
|
||||||
|
|
||||||
// set default translators and language checked
|
// set default translators and language checked
|
||||||
qint32 index = combobox->findData(VAbstractApplication::VApp()->Settings()->GetLocale());
|
qint32 index = combobox->findData(VAbstractApplication::VApp()->Settings()->GetLocale());
|
||||||
|
@ -561,21 +560,6 @@ 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 quint32 CustomSARecord::streamHeader = 0xEBFF7586; // CRC-32Q string "CustomSARecord"
|
||||||
const quint16 CustomSARecord::classVersion = 1;
|
const quint16 CustomSARecord::classVersion = 1;
|
||||||
|
|
||||||
|
@ -619,8 +603,7 @@ auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &
|
||||||
{
|
{
|
||||||
QString message = QCoreApplication::tr("CustomSARecord compatibility error: actualClassVersion = %1 and "
|
QString message = QCoreApplication::tr("CustomSARecord compatibility error: actualClassVersion = %1 and "
|
||||||
"classVersion = %2")
|
"classVersion = %2")
|
||||||
.arg(actualClassVersion)
|
.arg(actualClassVersion).arg(CustomSARecord::classVersion);
|
||||||
.arg(CustomSARecord::classVersion);
|
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -720,7 +703,8 @@ auto SplitFilePaths(const QString &path) -> QStringList
|
||||||
result.prepend(lastFileName);
|
result.prepend(lastFileName);
|
||||||
subPath = fileInfo.path();
|
subPath = fileInfo.path();
|
||||||
}
|
}
|
||||||
} while (not lastFileName.isEmpty());
|
}
|
||||||
|
while(not lastFileName.isEmpty());
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,14 +34,14 @@
|
||||||
# include <qt_windows.h>
|
# include <qt_windows.h>
|
||||||
#endif /*Q_OS_WIN*/
|
#endif /*Q_OS_WIN*/
|
||||||
|
|
||||||
#include <QLineF>
|
#include <qcompilerdetection.h>
|
||||||
#include <QMargins>
|
|
||||||
#include <QPrinter>
|
#include <QPrinter>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <Qt>
|
#include <Qt>
|
||||||
#include <csignal>
|
#include <csignal>
|
||||||
#include <qcompilerdetection.h>
|
#include <QMargins>
|
||||||
|
#include <QLineF>
|
||||||
|
|
||||||
#include "debugbreak.h"
|
#include "debugbreak.h"
|
||||||
#include "defglobal.h"
|
#include "defglobal.h"
|
||||||
|
@ -83,63 +83,15 @@ constexpr qreal maxCurveApproximationScale = 10.0;
|
||||||
constexpr int minLabelFontSize = 5;
|
constexpr int minLabelFontSize = 5;
|
||||||
constexpr int maxLabelFontSize = 100;
|
constexpr int maxLabelFontSize = 100;
|
||||||
|
|
||||||
enum class NodeDetail : qint8
|
enum class NodeDetail : qint8 { Contour, Modeling };
|
||||||
{
|
enum class SceneObject : qint8 { Point, Line, Spline, Arc, ElArc, SplinePath, Detail, Unknown };
|
||||||
Contour,
|
enum class MeasurementsType : qint8 { Multisize, Individual, Unknown};
|
||||||
Modeling
|
enum class Unit : qint8 { Mm = 0, Cm, Inch, Px, LAST_UNIT_DO_NOT_USE};
|
||||||
};
|
enum class Source : qint8 { FromGui, FromFile, FromTool };
|
||||||
enum class SceneObject : qint8
|
enum class NodeUsage : bool {NotInUse = false, InUse = true};
|
||||||
{
|
enum class SelectionType : bool {ByMousePress, ByMouseRelease};
|
||||||
Point,
|
enum class PageOrientation : bool {Portrait = true, Landscape = false};
|
||||||
Line,
|
enum class Draw : qint8 { Calculation, Modeling, Layout };
|
||||||
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
|
enum class PieceNodeAngle : quint8
|
||||||
{
|
{
|
||||||
|
@ -195,13 +147,7 @@ enum class PiecePathIncludeType : quint8
|
||||||
AsCustomSA = 1
|
AsCustomSA = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class PiecePathType : quint8
|
enum class PiecePathType : quint8 {PiecePath = 0, CustomSeamAllowance = 1, InternalPath = 2, Unknown = 3};
|
||||||
{
|
|
||||||
PiecePath = 0,
|
|
||||||
CustomSeamAllowance = 1,
|
|
||||||
InternalPath = 2,
|
|
||||||
Unknown = 3
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef int ToolVisHolderType;
|
typedef int ToolVisHolderType;
|
||||||
enum class Tool : ToolVisHolderType
|
enum class Tool : ToolVisHolderType
|
||||||
|
@ -333,37 +279,16 @@ enum class Layout : ToolVisHolderType
|
||||||
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
|
enum class VarType : qint8 { Measurement, MeasurementSeparator, Increment, IncrementSeparator, LineLength, CurveLength,
|
||||||
{
|
CurveCLength, LineAngle, CurveAngle, ArcRadius, PieceExternalArea, PieceSeamLineArea,
|
||||||
Measurement,
|
Unknown };
|
||||||
MeasurementSeparator,
|
|
||||||
Increment,
|
|
||||||
IncrementSeparator,
|
|
||||||
LineLength,
|
|
||||||
CurveLength,
|
|
||||||
CurveCLength,
|
|
||||||
LineAngle,
|
|
||||||
CurveAngle,
|
|
||||||
ArcRadius,
|
|
||||||
PieceExternalArea,
|
|
||||||
PieceSeamLineArea,
|
|
||||||
Unknown
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class IncrementType : qint8
|
enum class IncrementType : qint8 { Increment, Separator };
|
||||||
{
|
|
||||||
Increment,
|
|
||||||
Separator
|
|
||||||
};
|
|
||||||
|
|
||||||
auto IncrementTypeToString(IncrementType type) -> QString;
|
auto IncrementTypeToString(IncrementType type) -> QString;
|
||||||
auto StringToIncrementType(const QString &value) -> IncrementType;
|
auto StringToIncrementType(const QString &value) -> IncrementType;
|
||||||
|
|
||||||
enum class MeasurementType : qint8
|
enum class MeasurementType : qint8 { Measurement, Separator };
|
||||||
{
|
|
||||||
Measurement,
|
|
||||||
Separator
|
|
||||||
};
|
|
||||||
|
|
||||||
auto MeasurementTypeToString(MeasurementType type) -> QString;
|
auto MeasurementTypeToString(MeasurementType type) -> QString;
|
||||||
auto StringToMeasurementType(const QString &value) -> MeasurementType;
|
auto StringToMeasurementType(const QString &value) -> MeasurementType;
|
||||||
|
@ -405,7 +330,8 @@ enum class IMD : qint8 // Individual measurement dimension
|
||||||
#define SCASSERT(cond) \
|
#define SCASSERT(cond) \
|
||||||
if (!(cond)) \
|
if (!(cond)) \
|
||||||
{ \
|
{ \
|
||||||
qCritical("ASSERT: %s in %s (%s:%u)", #cond, Q_FUNC_INFO, __FILE__, __LINE__); \
|
qCritical("ASSERT: %s in %s (%s:%u)", \
|
||||||
|
#cond, Q_FUNC_INFO , __FILE__, __LINE__); \
|
||||||
debug_break(); \
|
debug_break(); \
|
||||||
abort(); \
|
abort(); \
|
||||||
}
|
}
|
||||||
|
@ -467,9 +393,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.
|
// 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.
|
// Feel free to add other versions if needed.
|
||||||
#define MACOS_LAYER_BACKING_AFFECTED \
|
#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, 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(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)))
|
|| (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT_VERSION < QT_VERSION_CHECK(6, 0, 1)) \
|
||||||
|
)
|
||||||
|
|
||||||
#if MACOS_LAYER_BACKING_AFFECTED
|
#if MACOS_LAYER_BACKING_AFFECTED
|
||||||
#include <QOperatingSystemVersion>
|
#include <QOperatingSystemVersion>
|
||||||
|
@ -515,18 +442,9 @@ Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel(double val, const Unit &unit) -> do
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> constexpr inline auto PixelToInch(T pix) -> T
|
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;}
|
||||||
return pix / PrintDPI;
|
template<typename T> constexpr inline auto PixelToCm(T pix) -> T {return PixelToInch(pix) * 2.54;}
|
||||||
}
|
|
||||||
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
|
Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel(double pix, const Unit &unit) -> double
|
||||||
|
@ -547,18 +465,9 @@ Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel(double pix, const Unit &unit) ->
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> constexpr inline auto Inch2ToPixel2(T val) -> T
|
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);}
|
||||||
return val * (PrintDPI * PrintDPI);
|
template<typename T> constexpr inline auto Cm2ToPixel2(T val) -> T {return Inch2ToPixel2(val * 0.15500031);}
|
||||||
}
|
|
||||||
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
|
Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel2(double val, const Unit &unit) -> double
|
||||||
|
@ -579,18 +488,9 @@ Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel2(double val, const Unit &unit) -> d
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> constexpr inline auto Pixel2ToInch2(T pix) -> T
|
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;}
|
||||||
return pix / (PrintDPI * PrintDPI);
|
template<typename T> constexpr inline auto Pixel2ToCm2(T pix) -> T { return Pixel2ToInch2(pix) / 0.15500031;}
|
||||||
}
|
|
||||||
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
|
Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel2(double pix, const Unit &unit) -> double
|
||||||
|
@ -687,8 +587,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.
|
* @brief UnitConvertor Converts the values of the given margin from given unit to the new unit.
|
||||||
* returns a new instand of QMarginsF.
|
* returns a new instand of QMarginsF.
|
||||||
*/
|
*/
|
||||||
Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(const QMarginsF &margins, const Unit &from, const Unit &to)
|
Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(const QMarginsF &margins, const Unit &from,
|
||||||
-> QMarginsF
|
const Unit &to) -> QMarginsF
|
||||||
{
|
{
|
||||||
const qreal left = UnitConvertor(margins.left(), from, to);
|
const qreal left = UnitConvertor(margins.left(), from, to);
|
||||||
const qreal top = UnitConvertor(margins.top(), from, to);
|
const qreal top = UnitConvertor(margins.top(), from, to);
|
||||||
|
@ -699,7 +599,6 @@ Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(const QMarginsF &margins, con
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitLanguages(QComboBox *combobox);
|
void InitLanguages(QComboBox *combobox);
|
||||||
void InitPieceLabelLanguages(QComboBox *combobox);
|
|
||||||
Q_REQUIRED_RESULT auto SupportedLocales() -> QStringList;
|
Q_REQUIRED_RESULT auto SupportedLocales() -> QStringList;
|
||||||
|
|
||||||
Q_REQUIRED_RESULT auto StrippedName(const QString &fullFileName) -> QString;
|
Q_REQUIRED_RESULT auto StrippedName(const QString &fullFileName) -> QString;
|
||||||
|
@ -743,8 +642,7 @@ struct CustomSARecord
|
||||||
endPoint(0),
|
endPoint(0),
|
||||||
reverse(false),
|
reverse(false),
|
||||||
includeType(PiecePathIncludeType::AsCustomSA)
|
includeType(PiecePathIncludeType::AsCustomSA)
|
||||||
{
|
{}
|
||||||
}
|
|
||||||
|
|
||||||
friend auto operator<<(QDataStream &out, const CustomSARecord &record) -> QDataStream &;
|
friend auto operator<<(QDataStream &out, const CustomSARecord &record) -> QDataStream &;
|
||||||
friend auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &;
|
friend auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &;
|
||||||
|
@ -774,9 +672,7 @@ Q_DECLARE_TYPEINFO(CustomSARecord, Q_MOVABLE_TYPE); // NOLINT
|
||||||
** this file shall be copyright (C) 2006-2008 by Adam Higerd.
|
** this file shall be copyright (C) 2006-2008 by Adam Higerd.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#define QXT_DECLARE_PRIVATE(PUB) \
|
#define QXT_DECLARE_PRIVATE(PUB) friend class PUB##Private; QxtPrivateInterface<PUB, PUB##Private> qxt_d;
|
||||||
friend class PUB##Private; \
|
|
||||||
QxtPrivateInterface<PUB, PUB##Private> qxt_d;
|
|
||||||
#define QXT_DECLARE_PUBLIC(PUB) friend class PUB;
|
#define QXT_DECLARE_PUBLIC(PUB) friend class PUB;
|
||||||
#define QXT_INIT_PRIVATE(PUB) qxt_d.setPublic(this);
|
#define QXT_INIT_PRIVATE(PUB) qxt_d.setPublic(this);
|
||||||
#define QXT_D(PUB) PUB##Private& d = qxt_d()
|
#define QXT_D(PUB) PUB##Private& d = qxt_d()
|
||||||
|
@ -786,15 +682,18 @@ QT_WARNING_PUSH
|
||||||
QT_WARNING_DISABLE_GCC("-Wsuggest-final-types")
|
QT_WARNING_DISABLE_GCC("-Wsuggest-final-types")
|
||||||
QT_WARNING_DISABLE_GCC("-Wsuggest-final-methods")
|
QT_WARNING_DISABLE_GCC("-Wsuggest-final-methods")
|
||||||
|
|
||||||
template <typename PUB> class QxtPrivate
|
template <typename PUB>
|
||||||
|
class QxtPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QxtPrivate()
|
QxtPrivate(): qxt_p_ptr(nullptr)
|
||||||
: qxt_p_ptr(nullptr)
|
{}
|
||||||
|
virtual ~QxtPrivate()
|
||||||
|
{}
|
||||||
|
inline void QXT_setPublic(PUB* pub)
|
||||||
{
|
{
|
||||||
|
qxt_p_ptr = pub;
|
||||||
}
|
}
|
||||||
virtual ~QxtPrivate() {}
|
|
||||||
inline void QXT_setPublic(PUB *pub) { qxt_p_ptr = pub; }
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
inline auto qxt_p() -> PUB & { return *qxt_p_ptr; }
|
inline auto qxt_p() -> PUB & { return *qxt_p_ptr; }
|
||||||
|
@ -810,18 +709,22 @@ private:
|
||||||
// cppcheck-suppress unknownMacro
|
// cppcheck-suppress unknownMacro
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
|
|
||||||
template <typename PUB, typename PVT> class QxtPrivateInterface
|
template <typename PUB, typename PVT>
|
||||||
|
class QxtPrivateInterface
|
||||||
{
|
{
|
||||||
friend class QxtPrivate<PUB>;
|
friend class QxtPrivate<PUB>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QxtPrivateInterface()
|
QxtPrivateInterface() : pvt(new PVT)
|
||||||
: pvt(new PVT)
|
{}
|
||||||
|
~QxtPrivateInterface()
|
||||||
{
|
{
|
||||||
|
delete pvt;
|
||||||
}
|
}
|
||||||
~QxtPrivateInterface() { delete pvt; }
|
|
||||||
|
|
||||||
inline void setPublic(PUB *pub) { pvt->QXT_setPublic(pub); }
|
inline void setPublic(PUB* pub)
|
||||||
|
{
|
||||||
|
pvt->QXT_setPublic(pub);
|
||||||
|
}
|
||||||
inline auto operator()() -> PVT & { return *static_cast<PVT *>(pvt); }
|
inline auto operator()() -> PVT & { return *static_cast<PVT *>(pvt); }
|
||||||
inline auto operator()() const -> const 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); }
|
inline auto operator->() -> PVT * { return static_cast<PVT *>(pvt); }
|
||||||
|
|
|
@ -29,14 +29,12 @@
|
||||||
#include "customevents.h"
|
#include "customevents.h"
|
||||||
#include "vvalentinasettings.h"
|
#include "vvalentinasettings.h"
|
||||||
|
|
||||||
#include <QTranslator>
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VAbstractValApplication::VAbstractValApplication(int &argc, char **argv)
|
VAbstractValApplication::VAbstractValApplication(int &argc, char **argv)
|
||||||
: VAbstractApplication(argc, argv)
|
: VAbstractApplication(argc, argv)
|
||||||
{
|
{}
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VAbstractValApplication::toPixel(double val) const -> double
|
auto VAbstractValApplication::toPixel(double val) const -> double
|
||||||
|
@ -73,7 +71,6 @@ void VAbstractValApplication::OpenSettings()
|
||||||
auto VAbstractValApplication::ValentinaSettings() -> VValentinaSettings *
|
auto VAbstractValApplication::ValentinaSettings() -> VValentinaSettings *
|
||||||
{
|
{
|
||||||
SCASSERT(settings != nullptr)
|
SCASSERT(settings != nullptr)
|
||||||
|
|
||||||
return qobject_cast<VValentinaSettings *>(settings);
|
return qobject_cast<VValentinaSettings *>(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,29 +79,3 @@ 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);
|
|
||||||
}
|
|
||||||
|
|
|
@ -37,13 +37,12 @@ class VAbstractPattern;
|
||||||
class VMainGraphicsView;
|
class VMainGraphicsView;
|
||||||
class QGraphicsScene;
|
class QGraphicsScene;
|
||||||
class VValentinaSettings;
|
class VValentinaSettings;
|
||||||
class QTranslator;
|
|
||||||
|
|
||||||
class VAbstractValApplication : public VAbstractApplication
|
class VAbstractValApplication : public VAbstractApplication
|
||||||
{
|
{
|
||||||
Q_OBJECT // NOLINT
|
Q_OBJECT // NOLINT
|
||||||
|
public:
|
||||||
public : VAbstractValApplication(int &argc, char **argv);
|
VAbstractValApplication(int &argc, char **argv);
|
||||||
virtual ~VAbstractValApplication() =default;
|
virtual ~VAbstractValApplication() =default;
|
||||||
|
|
||||||
auto GetCustomerName() const -> QString;
|
auto GetCustomerName() const -> QString;
|
||||||
|
@ -126,8 +125,6 @@ class VAbstractValApplication : public VAbstractApplication
|
||||||
|
|
||||||
static auto VApp() -> VAbstractValApplication *;
|
static auto VApp() -> VAbstractValApplication *;
|
||||||
|
|
||||||
auto GetPlaceholderTranslator() -> QSharedPointer<QTranslator>;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QString m_customerName{};
|
QString m_customerName{};
|
||||||
QDate m_customerBirthDate{};
|
QDate m_customerBirthDate{};
|
||||||
|
|
|
@ -29,17 +29,16 @@
|
||||||
#include "vcommonsettings.h"
|
#include "vcommonsettings.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QColor>
|
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFont>
|
|
||||||
#include <QGlobalStatic>
|
|
||||||
#include <QLocale>
|
#include <QLocale>
|
||||||
#include <QMarginsF>
|
|
||||||
#include <QMessageLogger>
|
#include <QMessageLogger>
|
||||||
#include <QStringLiteral>
|
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
|
#include <QFont>
|
||||||
|
#include <QGlobalStatic>
|
||||||
|
#include <QMarginsF>
|
||||||
|
#include <QColor>
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||||
#include "vtextcodec.h"
|
#include "vtextcodec.h"
|
||||||
|
@ -47,9 +46,9 @@
|
||||||
#include <QTextCodec>
|
#include <QTextCodec>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "compatibility.h"
|
|
||||||
#include "def.h"
|
#include "def.h"
|
||||||
#include "defglobal.h"
|
#include "defglobal.h"
|
||||||
|
#include "compatibility.h"
|
||||||
#include "literals.h"
|
#include "literals.h"
|
||||||
|
|
||||||
const int VCommonSettings::defaultScrollingDuration = 300;
|
const int VCommonSettings::defaultScrollingDuration = 300;
|
||||||
|
@ -72,102 +71,66 @@ const qreal VCommonSettings::defaultScrollingAcceleration = 1.3;
|
||||||
const qreal VCommonSettings::scrollingAccelerationMin = 1.0;
|
const qreal VCommonSettings::scrollingAccelerationMin = 1.0;
|
||||||
const qreal VCommonSettings::scrollingAccelerationMax = 10.0;
|
const qreal VCommonSettings::scrollingAccelerationMax = 10.0;
|
||||||
|
|
||||||
const QString VCommonSettings::defaultPieceLabelLocale = QStringLiteral("default");
|
|
||||||
|
|
||||||
#ifndef QPRINTENGINE_H
|
#ifndef QPRINTENGINE_H
|
||||||
Q_DECLARE_METATYPE(QMarginsF) // NOLINT
|
Q_DECLARE_METATYPE(QMarginsF) // NOLINT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsIndividualMeasurements,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsIndividualMeasurements, (QLatin1String("paths/individual_measurements"))) // NOLINT
|
||||||
(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, 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, settingPathsPattern, (QLatin1String("paths/pattern"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsTemplates, (QLatin1String("paths/templates"))) // 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, settingPathsLabelTemplate, (QLatin1String("paths/labels"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsManualLayouts, (QLatin1String("paths/manualLayouts"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsManualLayouts, (QLatin1String("paths/manualLayouts"))) // NOLINT
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationOsSeparator,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationOsSeparator, (QLatin1String("configuration/osSeparator"))) // NOLINT
|
||||||
(QLatin1String("configuration/osSeparator"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveState, (QLatin1String("configuration/autosave/state"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveState,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveTime , (QLatin1String("configuration/autosave/time"))) // NOLINT
|
||||||
(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, settingConfigurationLocale, (QLatin1String("configuration/locale"))) // 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, settingPMSystemCode, (QLatin1String("configuration/pmscode"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationUnit, (QLatin1String("configuration/unit"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationUnit, (QLatin1String("configuration/unit"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmItemDeletion,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmItemDeletion, (QLatin1String("configuration/confirm_item_deletion"))) // NOLINT
|
||||||
(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, settingConfigurationConfirmFormatRewriting,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAskContinueIfLayoutStale, (QLatin1String("configuration/askContinueIfLayoutStale"))) // NOLINT
|
||||||
(QLatin1String("configuration/confirm_format_rewriting"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationToolBarStyle, (QLatin1String("configuration/tool_bar_style"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAskContinueIfLayoutStale,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationFreeCurveMode, (QLatin1String("configuration/freeCurveMode"))) // NOLINT
|
||||||
(QLatin1String("configuration/askContinueIfLayoutStale"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDoubleClickZoomFitBestCurrentPP, (QLatin1String("configuration/doubleClickZoomFitBestCurrentPP"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationToolBarStyle,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationInteractiveTools, (QLatin1String("configuration/interactiveTools"))) // NOLINT
|
||||||
(QLatin1String("configuration/tool_bar_style"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDontUseNativeDialog, (QLatin1String("configuration/dontUseNativeDialog"))) // 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, settingPatternUndo, (QLatin1String("pattern/undo"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForbidFlipping,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForbidFlipping, (QLatin1String("pattern/forbidFlipping"))) // NOLINT
|
||||||
(QLatin1String("pattern/forbidFlipping"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForceFlipping, (QLatin1String("pattern/forceFlipping"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForceFlipping,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternSewLineOnDrawing, (QLatin1String("pattern/sewLineOnDrawing"))) // NOLINT
|
||||||
(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, settingPatternHideMainPath, (QLatin1String("pattern/hideMainPath"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDoublePassmark, (QLatin1String("pattern/doublePassmark"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDoublePassmark, (QLatin1String("pattern/doublePassmark"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternDefaultSeamAllowance,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternDefaultSeamAllowance, (QLatin1String("pattern/defaultSeamAllowance"))) // NOLINT
|
||||||
(QLatin1String("pattern/defaultSeamAllowance"))) // NOLINT
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFont, (QLatin1String("pattern/labelFont"))) // 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, settingPatternLineWidth, (QLatin1String("pattern/lineWidth"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternCurveApproximationScale,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternCurveApproximationScale, (QLatin1String("pattern/curveApproximationScale"))) // NOLINT
|
||||||
(QLatin1String("pattern/curveApproximationScale"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowCurveDetails, (QLatin1String("pattern/showCurveDetails"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowCurveDetails,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternPieceShowMainPath, (QLatin1String("pattern/pieceShowMainPath"))) // NOLINT
|
||||||
(QLatin1String("pattern/showCurveDetails"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFontSize, (QLatin1String("pattern/labelFontSize"))) // 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, settingPatternHideLabels, (QLatin1String("pattern/hideLabels"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowAccuracyRadius,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowAccuracyRadius, (QLatin1String("pattern/showAccuracyRadius"))) // NOLINT
|
||||||
(QLatin1String("pattern/showAccuracyRadius"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUseOpenGLRender, (QLatin1String("pattern/useOpenGLRender"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUseOpenGLRender,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternGraphicalOutput, (QLatin1String("pattern/graphicalOutput"))) // NOLINT
|
||||||
(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, settingGeneralRestoreFileList, (QLatin1String("restoreFileList"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralGeometry, (QLatin1String("geometry"))) // 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, settingGeneralToolbarsState, (QLatin1String("toolbarsState"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDarkMode,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDarkMode, (QLatin1String("configuration/dark_mode"))) // NOLINT
|
||||||
(QLatin1String("configuration/dark_mode"))) // NOLINT
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPreferenceDialogSize, (QLatin1String("preferenceDialogSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPreferenceDialogSize, (QLatin1String("preferenceDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingToolSeamAllowanceDialogSize,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingToolSeamAllowanceDialogSize, (QLatin1String("toolSeamAllowanceDialogSize"))) // NOLINT
|
||||||
(QLatin1String("toolSeamAllowanceDialogSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingIncrementsDialogSize, (QLatin1String("toolIncrementsDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingIncrementsDialogSize,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFormulaWizardDialogSize, (QLatin1String("formulaWizardDialogSize"))) // NOLINT
|
||||||
(QLatin1String("toolIncrementsDialogSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFinalMeasurementsDialogSize, (QLatin1String("finalMeasurementsDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFormulaWizardDialogSize,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSettingsDialogSize, (QLatin1String("layoutSettingsDialogSize"))) // NOLINT
|
||||||
(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, settingDialogSplinePathSize, (QLatin1String("splinePathDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingAutomaticallyCheckUpdates,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingAutomaticallyCheckUpdates, (QLatin1String("automaticallyCheckUpdates"))) // NOLINT
|
||||||
(QLatin1String("automaticallyCheckUpdates"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLatestSkippedVersion, (QLatin1String("lastestSkippedVersion"))) // 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, settingDateOfLastRemind, (QLatin1String("dateOfLastRemind"))) // NOLINT
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVWithHeader, (QLatin1String("csv/withHeader"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVWithHeader, (QLatin1String("csv/withHeader"))) // NOLINT
|
||||||
|
@ -175,28 +138,21 @@ Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVCodec, (QLatin1String("csv/wi
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVSeparator, (QLatin1String("csv/withSeparator"))) // 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, settingLabelDateFormat, (QLatin1String("label/dateFormat"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserDateFormats,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserDateFormats, (QLatin1String("label/userDateFormats"))) // NOLINT
|
||||||
(QLatin1String("label/userDateFormats"))) // NOLINT
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelTimeFormat, (QLatin1String("label/timeFormat"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelTimeFormat, (QLatin1String("label/timeFormat"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserTimeFormats,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserTimeFormats, (QLatin1String("label/userTimeFormats"))) // NOLINT
|
||||||
(QLatin1String("label/userTimeFormats"))) // NOLINT
|
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingDuration, (QLatin1String("scrolling/duration"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingDuration, (QLatin1String("scrolling/duration"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingUpdateInterval,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingUpdateInterval, (QLatin1String("scrolling/updateInterval"))) // NOLINT
|
||||||
(QLatin1String("scrolling/updateInterval"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingSensorMouseScale, (QLatin1String("scrolling/sensorMouseScale"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingSensorMouseScale,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingWheelMouseScale, (QLatin1String("scrolling/wheelMouseScale"))) // NOLINT
|
||||||
(QLatin1String("scrolling/sensorMouseScale"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingAcceleration, (QLatin1String("scrolling/acceleration"))) // 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, settingTiledPDFOrientation, (QLatin1String("tiledPDF/orientation"))) // NOLINT
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingWatermarkEditorSize, (QLatin1String("watermarkEditorSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingWatermarkEditorSize, (QLatin1String("watermarkEditorSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingWatermarkCustomColors,
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingWatermarkCustomColors, (QLatin1String("watermarkCustomColors"))) // NOLINT
|
||||||
(QLatin1String("watermarkCustomColors"))) // NOLINT
|
|
||||||
|
|
||||||
// Reading settings file is very expensive, cache curve approximation to speed up getting value
|
// Reading settings file is very expensive, cache curve approximation to speed up getting value
|
||||||
qreal curveApproximationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
qreal curveApproximationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
|
@ -328,17 +284,15 @@ auto PrepareStandardFiles(const QString ¤tPath, const QString &standardPat
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VCommonSettings::VCommonSettings(Format format, Scope scope, const QString &organization, const QString &application,
|
VCommonSettings::VCommonSettings(Format format, Scope scope, const QString &organization,
|
||||||
QObject *parent)
|
const QString &application, QObject *parent)
|
||||||
:QSettings(format, scope, organization, application, parent)
|
:QSettings(format, scope, organization, application, parent)
|
||||||
{
|
{}
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VCommonSettings::VCommonSettings(const QString &fileName, QSettings::Format format, QObject *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
|
auto VCommonSettings::SharePath(const QString &shareItem) -> QString
|
||||||
|
@ -627,18 +581,6 @@ void VCommonSettings::SetLocale(const QString &value)
|
||||||
*localeCached = 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
|
auto VCommonSettings::GetPMSystemCode() const -> QString
|
||||||
{
|
{
|
||||||
|
@ -654,8 +596,8 @@ void VCommonSettings::SetPMSystemCode(const QString &value)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::GetUnit() const -> QString
|
auto VCommonSettings::GetUnit() const -> QString
|
||||||
{
|
{
|
||||||
return value(*settingConfigurationUnit, QLocale().measurementSystem() == QLocale::MetricSystem ? unitCM : unitINCH)
|
return value(*settingConfigurationUnit,
|
||||||
.toString();
|
QLocale().measurementSystem() == QLocale::MetricSystem ? unitCM : unitINCH).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -724,6 +666,7 @@ void VCommonSettings::SetDarkMode(const bool &value)
|
||||||
setValue(*settingConfigurationDarkMode, value);
|
setValue(*settingConfigurationDarkMode, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::IsFreeCurveMode() const -> bool
|
auto VCommonSettings::IsFreeCurveMode() const -> bool
|
||||||
{
|
{
|
||||||
|
@ -1159,7 +1102,8 @@ auto VCommonSettings::GetDefaultSeamAllowance() -> double
|
||||||
if (not ok)
|
if (not ok)
|
||||||
{
|
{
|
||||||
qDebug()<< "Could not convert value"<<value(*settingPatternDefaultSeamAllowance, 0)
|
qDebug()<< "Could not convert value"<<value(*settingPatternDefaultSeamAllowance, 0)
|
||||||
<< "to real. Return default value for default seam allowance is " << defaultValue << QChar('.');
|
<< "to real. Return default value for default seam allowance is "
|
||||||
|
<< defaultValue << QChar('.');
|
||||||
val = defaultValue;
|
val = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1244,8 +1188,8 @@ void VCommonSettings::SetShowAccuracyRadius(bool value)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::GetLabelDateFormat() const -> QString
|
auto VCommonSettings::GetLabelDateFormat() const -> QString
|
||||||
{
|
{
|
||||||
const QString format =
|
const QString format = value(*settingLabelDateFormat,
|
||||||
value(*settingLabelDateFormat, ConstFirst<QString>(VCommonSettings::PredefinedDateFormats())).toString();
|
ConstFirst<QString> (VCommonSettings::PredefinedDateFormats())).toString();
|
||||||
const QStringList allFormats = VCommonSettings::PredefinedDateFormats() + GetUserDefinedDateFormats();
|
const QStringList allFormats = VCommonSettings::PredefinedDateFormats() + GetUserDefinedDateFormats();
|
||||||
|
|
||||||
return allFormats.contains(format) ? format : ConstFirst<QString> (VCommonSettings::PredefinedDateFormats());
|
return allFormats.contains(format) ? format : ConstFirst<QString> (VCommonSettings::PredefinedDateFormats());
|
||||||
|
@ -1260,7 +1204,9 @@ void VCommonSettings::SetLabelDateFormat(const QString &format)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::PredefinedDateFormats() -> QStringList
|
auto VCommonSettings::PredefinedDateFormats() -> QStringList
|
||||||
{
|
{
|
||||||
return QStringList{"MM-dd-yyyy",
|
return QStringList
|
||||||
|
{
|
||||||
|
"MM-dd-yyyy",
|
||||||
"d/M/yy",
|
"d/M/yy",
|
||||||
"ddddMMMM dd, yyyy",
|
"ddddMMMM dd, yyyy",
|
||||||
"dd/MM/yy",
|
"dd/MM/yy",
|
||||||
|
@ -1279,7 +1225,8 @@ auto VCommonSettings::PredefinedDateFormats() -> QStringList
|
||||||
"yyyy-MM-dd",
|
"yyyy-MM-dd",
|
||||||
"MM/yy",
|
"MM/yy",
|
||||||
"MMM dd",
|
"MMM dd",
|
||||||
"MMMM"};
|
"MMMM"
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1297,8 +1244,8 @@ void VCommonSettings::SetUserDefinedDateFormats(const QStringList &formats)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::GetLabelTimeFormat() const -> QString
|
auto VCommonSettings::GetLabelTimeFormat() const -> QString
|
||||||
{
|
{
|
||||||
const QString format =
|
const QString format = value(*settingLabelTimeFormat,
|
||||||
value(*settingLabelTimeFormat, ConstFirst<QString>(VCommonSettings::PredefinedTimeFormats())).toString();
|
ConstFirst<QString> (VCommonSettings::PredefinedTimeFormats())).toString();
|
||||||
const QStringList allFormats = VCommonSettings::PredefinedTimeFormats() + GetUserDefinedTimeFormats();
|
const QStringList allFormats = VCommonSettings::PredefinedTimeFormats() + GetUserDefinedTimeFormats();
|
||||||
|
|
||||||
return allFormats.contains(format) ? format : ConstFirst<QString> (VCommonSettings::PredefinedTimeFormats());
|
return allFormats.contains(format) ? format : ConstFirst<QString> (VCommonSettings::PredefinedTimeFormats());
|
||||||
|
@ -1313,7 +1260,13 @@ void VCommonSettings::SetLabelTimeFormat(const QString &format)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::PredefinedTimeFormats() -> QStringList
|
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"
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1559,8 +1512,8 @@ void VCommonSettings::SetGraphicalOutput(const bool &value)
|
||||||
auto VCommonSettings::GetTiledPDFMargins(const Unit &unit) const -> QMarginsF
|
auto VCommonSettings::GetTiledPDFMargins(const Unit &unit) const -> QMarginsF
|
||||||
{
|
{
|
||||||
// default value is 10mm. We save the margins in mm in the setting.
|
// 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,
|
return UnitConvertor(
|
||||||
unit);
|
ValueOrDef<QMarginsF>(*this, *settingTiledPDFMargins, QMarginsF(10, 10, 10, 10)), Unit::Mm, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -38,16 +38,17 @@
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
|
||||||
#include "../vlayout/vlayoutdef.h"
|
|
||||||
#include "../vmisc/def.h"
|
#include "../vmisc/def.h"
|
||||||
|
#include "../vlayout/vlayoutdef.h"
|
||||||
|
|
||||||
class QMarginsF;
|
class QMarginsF;
|
||||||
|
|
||||||
class VCommonSettings : public QSettings
|
class VCommonSettings : public QSettings
|
||||||
{
|
{
|
||||||
Q_OBJECT // NOLINT
|
Q_OBJECT // NOLINT
|
||||||
public : VCommonSettings(Format format, Scope scope, const QString &organization,
|
public:
|
||||||
const QString &application = QString(), QObject *parent = nullptr);
|
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(const QString &fileName, Format format, QObject *parent = nullptr);
|
||||||
~VCommonSettings() override =default;
|
~VCommonSettings() override =default;
|
||||||
|
|
||||||
|
@ -99,10 +100,6 @@ class VCommonSettings : public QSettings
|
||||||
auto GetLocale() const -> QString;
|
auto GetLocale() const -> QString;
|
||||||
void SetLocale(const QString &value);
|
void SetLocale(const QString &value);
|
||||||
|
|
||||||
static const QString defaultPieceLabelLocale;
|
|
||||||
auto GetPieceLabelLocale() const -> QString;
|
|
||||||
void SetPieceLabelLocale(const QString &value);
|
|
||||||
|
|
||||||
auto GetPMSystemCode() const -> QString;
|
auto GetPMSystemCode() const -> QString;
|
||||||
void SetPMSystemCode(const QString &value);
|
void SetPMSystemCode(const QString &value);
|
||||||
|
|
||||||
|
@ -309,6 +306,7 @@ class VCommonSettings : public QSettings
|
||||||
void SetWatermarkCustomColors(QVector<QColor> colors);
|
void SetWatermarkCustomColors(QVector<QColor> colors);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static auto GetCachedValue(const QSettings &settings, T &cache, const QString &setting, T defValue, T valueMin,
|
static auto GetCachedValue(const QSettings &settings, T &cache, const QString &setting, T defValue, T valueMin,
|
||||||
T valueMax) -> T;
|
T valueMax) -> T;
|
||||||
|
@ -361,8 +359,8 @@ inline auto VCommonSettings::ValueOrDef(const QSettings &settings, const QString
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline auto VCommonSettings::ValueOrDef<Cases>(const QSettings &settings, const QString &setting, const Cases &defValue)
|
inline auto VCommonSettings::ValueOrDef<Cases>(const QSettings &settings, const QString &setting,
|
||||||
-> Cases
|
const Cases &defValue) -> Cases
|
||||||
{
|
{
|
||||||
const QVariant val = settings.value(setting, QVariant::fromValue(static_cast<int>(defValue)));
|
const QVariant val = settings.value(setting, QVariant::fromValue(static_cast<int>(defValue)));
|
||||||
const int g = val.canConvert<int>() ? val.toInt() : static_cast<int>(defValue);
|
const int g = val.canConvert<int>() ? val.toInt() : static_cast<int>(defValue);
|
||||||
|
|
|
@ -178,13 +178,13 @@ void VPieceLabelData::SetOnFold(bool onFold)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VPieceLabelData::GetAreaShortName() const -> QString
|
auto VPieceLabelData::GetAreaShartName() const -> QString
|
||||||
{
|
{
|
||||||
return d->m_areaShortName;
|
return d->m_areaShortName;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VPieceLabelData::SetAreaShortName(const QString &val)
|
void VPieceLabelData::SetAreaShartName(const QString &val)
|
||||||
{
|
{
|
||||||
d->m_areaShortName = val;
|
d->m_areaShortName = val;
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,8 +81,8 @@ public:
|
||||||
auto IsOnFold() const -> bool;
|
auto IsOnFold() const -> bool;
|
||||||
void SetOnFold(bool onFold);
|
void SetOnFold(bool onFold);
|
||||||
|
|
||||||
auto GetAreaShortName() const -> QString;
|
auto GetAreaShartName() const -> QString;
|
||||||
void SetAreaShortName(const QString &val);
|
void SetAreaShartName(const QString &val);
|
||||||
|
|
||||||
auto GetLabelTemplate() const -> QVector<VLabelTemplateLine>;
|
auto GetLabelTemplate() const -> QVector<VLabelTemplateLine>;
|
||||||
void SetLabelTemplate(const QVector<VLabelTemplateLine> &lines);
|
void SetLabelTemplate(const QVector<VLabelTemplateLine> &lines);
|
||||||
|
|
|
@ -28,26 +28,26 @@
|
||||||
|
|
||||||
#include "vcontainer.h"
|
#include "vcontainer.h"
|
||||||
|
|
||||||
#include <QLoggingCategory>
|
#include <climits>
|
||||||
#include <QUuid>
|
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
#include <climits>
|
#include <QUuid>
|
||||||
|
#include <QLoggingCategory>
|
||||||
|
|
||||||
#include "../ifc/exception/vexception.h"
|
#include "../ifc/exception/vexception.h"
|
||||||
#include "../vgeometry/vabstractcubicbezierpath.h"
|
#include "../vgeometry/vabstractcubicbezierpath.h"
|
||||||
#include "../vgeometry/vabstractcurve.h"
|
#include "../vgeometry/vabstractcurve.h"
|
||||||
#include "../vgeometry/varc.h"
|
|
||||||
#include "../vgeometry/vellipticalarc.h"
|
|
||||||
#include "../vgeometry/vgeometrydef.h"
|
#include "../vgeometry/vgeometrydef.h"
|
||||||
#include "../vgeometry/vgobject.h"
|
#include "../vgeometry/vgobject.h"
|
||||||
#include "../vgeometry/vpointf.h"
|
#include "../vgeometry/vpointf.h"
|
||||||
#include "../vgeometry/vspline.h"
|
#include "../vgeometry/vspline.h"
|
||||||
|
#include "../vgeometry/varc.h"
|
||||||
|
#include "../vgeometry/vellipticalarc.h"
|
||||||
#include "../vmisc/literals.h"
|
#include "../vmisc/literals.h"
|
||||||
#include "variables/varcradius.h"
|
#include "variables/varcradius.h"
|
||||||
#include "variables/vcurveangle.h"
|
#include "variables/vcurveangle.h"
|
||||||
#include "variables/vcurveclength.h"
|
|
||||||
#include "variables/vcurvelength.h"
|
#include "variables/vcurvelength.h"
|
||||||
|
#include "variables/vcurveclength.h"
|
||||||
#include "variables/vincrement.h"
|
#include "variables/vincrement.h"
|
||||||
#include "variables/vlineangle.h"
|
#include "variables/vlineangle.h"
|
||||||
#include "variables/vlinelength.h"
|
#include "variables/vlinelength.h"
|
||||||
|
@ -119,9 +119,9 @@ auto VContainer::operator=(const VContainer &data) -> VContainer &
|
||||||
|
|
||||||
#ifdef Q_COMPILER_RVALUE_REFS
|
#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 &
|
auto VContainer::operator=(VContainer &&data) Q_DECL_NOTHROW->VContainer &
|
||||||
|
@ -144,8 +144,7 @@ VContainer::VContainer(const VContainer &data)
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VContainer::~VContainer()
|
VContainer::~VContainer()
|
||||||
{
|
{}
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VContainer::UniqueNamespace() -> QString
|
auto VContainer::UniqueNamespace() -> QString
|
||||||
|
@ -154,7 +153,8 @@ auto VContainer::UniqueNamespace() -> QString
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
candidate = QUuid::createUuid().toString();
|
candidate = QUuid::createUuid().toString();
|
||||||
} while (_id.contains(candidate));
|
}
|
||||||
|
while(_id.contains(candidate));
|
||||||
|
|
||||||
return candidate;
|
return candidate;
|
||||||
}
|
}
|
||||||
|
@ -204,9 +204,11 @@ auto VContainer::GetPiece(quint32 id) const -> VPiece
|
||||||
{
|
{
|
||||||
return d->pieces->value(id);
|
return d->pieces->value(id);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
throw VExceptionBadId(tr("Can't find object"), id);
|
throw VExceptionBadId(tr("Can't find object"), id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VContainer::GetPiecePath(quint32 id) const -> VPiecePath
|
auto VContainer::GetPiecePath(quint32 id) const -> VPiecePath
|
||||||
|
@ -390,9 +392,15 @@ void VContainer::ClearForFullParse()
|
||||||
d->pieces->clear();
|
d->pieces->clear();
|
||||||
d->piecePaths->clear();
|
d->piecePaths->clear();
|
||||||
Q_STATIC_ASSERT_X(static_cast<int>(VarType::Unknown) == 12, "Check that you used all types");
|
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,
|
ClearVariables(QVector<VarType>{VarType::Increment,
|
||||||
VarType::LineLength, VarType::CurveLength, VarType::CurveCLength,
|
VarType::IncrementSeparator,
|
||||||
VarType::ArcRadius, VarType::CurveAngle, VarType::PieceExternalArea,
|
VarType::LineAngle,
|
||||||
|
VarType::LineLength,
|
||||||
|
VarType::CurveLength,
|
||||||
|
VarType::CurveCLength,
|
||||||
|
VarType::ArcRadius,
|
||||||
|
VarType::CurveAngle,
|
||||||
|
VarType::PieceExternalArea,
|
||||||
VarType::PieceSeamLineArea});
|
VarType::PieceSeamLineArea});
|
||||||
ClearGObjects();
|
ClearGObjects();
|
||||||
ClearUniqueNames();
|
ClearUniqueNames();
|
||||||
|
@ -487,8 +495,9 @@ void VContainer::AddArc(const QSharedPointer<VAbstractCurve> &arc, const quint32
|
||||||
void VContainer::AddCurve(const QSharedPointer<VAbstractCurve> &curve, const quint32 &id, quint32 parentId)
|
void VContainer::AddCurve(const QSharedPointer<VAbstractCurve> &curve, const quint32 &id, quint32 parentId)
|
||||||
{
|
{
|
||||||
const GOType curveType = curve->getType();
|
const GOType curveType = curve->getType();
|
||||||
if (curveType != GOType::Spline && curveType != GOType::SplinePath && curveType != GOType::CubicBezier &&
|
if (curveType != GOType::Spline && curveType != GOType::SplinePath &&
|
||||||
curveType != GOType::CubicBezierPath && curveType != GOType::Arc && curveType != GOType::EllipticalArc)
|
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)));
|
throw VException(tr("Can't create a curve with type '%1'").arg(static_cast<int>(curveType)));
|
||||||
}
|
}
|
||||||
|
|
|
@ -573,7 +573,7 @@ auto VPiece::MissingPlaceLabels(const VPiece &det) const -> QVector<quint32>
|
||||||
void VPiece::SetPieceLabelData(const VPieceLabelData &data)
|
void VPiece::SetPieceLabelData(const VPieceLabelData &data)
|
||||||
{
|
{
|
||||||
d->m_ppData = data;
|
d->m_ppData = data;
|
||||||
d->m_ppData.SetAreaShortName(VPieceArea::PieceShortName(*this));
|
d->m_ppData.SetAreaShartName(VPieceArea::PieceShortName(*this));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -27,28 +27,28 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "dialogeditlabel.h"
|
#include "dialogeditlabel.h"
|
||||||
#include "../vmisc/vabstractapplication.h"
|
|
||||||
#include "ui_dialogeditlabel.h"
|
#include "ui_dialogeditlabel.h"
|
||||||
|
#include "../vmisc/vabstractapplication.h"
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
||||||
#include "../vmisc/backport/qoverload.h"
|
#include "../vmisc/backport/qoverload.h"
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
||||||
#include "../ifc/exception/vexception.h"
|
|
||||||
#include "../ifc/xml/vabstractpattern.h"
|
|
||||||
#include "../ifc/xml/vlabeltemplateconverter.h"
|
|
||||||
#include "../tools/dialogtool.h"
|
|
||||||
#include "../vformat/vlabeltemplate.h"
|
#include "../vformat/vlabeltemplate.h"
|
||||||
#include "../vpatterndb/calculator.h"
|
#include "../ifc/xml/vlabeltemplateconverter.h"
|
||||||
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
|
#include "../ifc/xml/vabstractpattern.h"
|
||||||
#include "../vpatterndb/variables/vmeasurement.h"
|
#include "../ifc/exception/vexception.h"
|
||||||
#include "../vpatterndb/variables/vpiecearea.h"
|
|
||||||
#include "../vpatterndb/vcontainer.h"
|
#include "../vpatterndb/vcontainer.h"
|
||||||
#include "../vpatterndb/vpiece.h"
|
#include "../vpatterndb/vpiece.h"
|
||||||
|
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
|
||||||
|
#include "../vpatterndb/calculator.h"
|
||||||
|
#include "../vpatterndb/variables/vmeasurement.h"
|
||||||
|
#include "../vpatterndb/variables/vpiecearea.h"
|
||||||
|
#include "../tools/dialogtool.h"
|
||||||
|
|
||||||
#include <QDate>
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QMessageBox>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QMessageBox>
|
#include <QDate>
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
DialogEditLabel::DialogEditLabel(const VAbstractPattern *doc, const VContainer *data, QWidget *parent)
|
DialogEditLabel::DialogEditLabel(const VAbstractPattern *doc, const VContainer *data, QWidget *parent)
|
||||||
|
@ -77,8 +77,7 @@ DialogEditLabel::DialogEditLabel(const VAbstractPattern *doc, const VContainer *
|
||||||
connect(ui->toolButtonImportLabel, &QToolButton::clicked, this, &DialogEditLabel::ImportTemplate);
|
connect(ui->toolButtonImportLabel, &QToolButton::clicked, this, &DialogEditLabel::ImportTemplate);
|
||||||
connect(ui->spinBoxFontSize, QOverload<int>::of(&QSpinBox::valueChanged), this,
|
connect(ui->spinBoxFontSize, QOverload<int>::of(&QSpinBox::valueChanged), this,
|
||||||
&DialogEditLabel::SaveAdditionalFontSize);
|
&DialogEditLabel::SaveAdditionalFontSize);
|
||||||
connect(ui->toolButtonTop, &QToolButton::clicked, this,
|
connect(ui->toolButtonTop, &QToolButton::clicked, this, [this](){DialogTool::MoveListRowTop(ui->listWidgetEdit);});
|
||||||
[this]() { DialogTool::MoveListRowTop(ui->listWidgetEdit); });
|
|
||||||
connect(ui->toolButtonUp, &QToolButton::clicked, this, [this](){DialogTool::MoveListRowUp(ui->listWidgetEdit);});
|
connect(ui->toolButtonUp, &QToolButton::clicked, this, [this](){DialogTool::MoveListRowUp(ui->listWidgetEdit);});
|
||||||
connect(ui->toolButtonDown, &QToolButton::clicked, this,
|
connect(ui->toolButtonDown, &QToolButton::clicked, this,
|
||||||
[this](){DialogTool::MoveListRowDown(ui->listWidgetEdit);});
|
[this](){DialogTool::MoveListRowDown(ui->listWidgetEdit);});
|
||||||
|
@ -280,8 +279,7 @@ void DialogEditLabel::NewTemplate()
|
||||||
{
|
{
|
||||||
if (ui->listWidgetEdit->count() > 0)
|
if (ui->listWidgetEdit->count() > 0)
|
||||||
{
|
{
|
||||||
const QMessageBox::StandardButton answer =
|
const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Create new template"),
|
||||||
QMessageBox::question(this, tr("Create new template"),
|
|
||||||
tr("Creating new template will overwrite the current, do "
|
tr("Creating new template will overwrite the current, do "
|
||||||
"you want to continue?"),
|
"you want to continue?"),
|
||||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||||
|
@ -342,8 +340,7 @@ void DialogEditLabel::ImportTemplate()
|
||||||
{
|
{
|
||||||
if (ui->listWidgetEdit->count() > 0)
|
if (ui->listWidgetEdit->count() > 0)
|
||||||
{
|
{
|
||||||
const QMessageBox::StandardButton answer =
|
const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Import template"),
|
||||||
QMessageBox::question(this, tr("Import template"),
|
|
||||||
tr("Import template will overwrite the current, do "
|
tr("Import template will overwrite the current, do "
|
||||||
"you want to continue?"),
|
"you want to continue?"),
|
||||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||||
|
@ -521,22 +518,22 @@ void DialogEditLabel::InitPlaceholders()
|
||||||
|
|
||||||
const QString pUnits = UnitsToStr(VAbstractValApplication::VApp()->patternUnits(), true);
|
const QString pUnits = UnitsToStr(VAbstractValApplication::VApp()->patternUnits(), true);
|
||||||
m_placeholders.insert(pl_pUnits, qMakePair(tr("Pattern units"), pUnits));
|
m_placeholders.insert(pl_pUnits, qMakePair(tr("Pattern units"), pUnits));
|
||||||
m_placeholders.insert(
|
m_placeholders.insert(pl_mSizeUnits, qMakePair(tr("Size units"),
|
||||||
pl_mSizeUnits,
|
UnitsToStr(VAbstractValApplication::VApp()->DimensionSizeUnits(),
|
||||||
qMakePair(tr("Size units"), UnitsToStr(VAbstractValApplication::VApp()->DimensionSizeUnits(), true)));
|
true)));
|
||||||
m_placeholders.insert(pl_areaUnits, qMakePair(tr("Area units"), pUnits + QStringLiteral("²")));
|
m_placeholders.insert(pl_areaUnits, qMakePair(tr("Area units"), pUnits + QStringLiteral("²")));
|
||||||
|
|
||||||
if (VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Individual)
|
if (VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Individual)
|
||||||
{
|
{
|
||||||
m_placeholders.insert(pl_customer,
|
m_placeholders.insert(pl_customer, qMakePair(tr("Customer name"),
|
||||||
qMakePair(tr("Customer name"), VAbstractValApplication::VApp()->GetCustomerName()));
|
VAbstractValApplication::VApp()->GetCustomerName()));
|
||||||
|
|
||||||
const QString birthDate =
|
const QString birthDate = locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(),
|
||||||
locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(), m_doc->GetLabelDateFormat());
|
m_doc->GetLabelDateFormat());
|
||||||
m_placeholders.insert(pl_birthDate, qMakePair(tr("Customer birth date"), birthDate));
|
m_placeholders.insert(pl_birthDate, qMakePair(tr("Customer birth date"), birthDate));
|
||||||
|
|
||||||
m_placeholders.insert(pl_email,
|
m_placeholders.insert(pl_email, qMakePair(tr("Customer email"),
|
||||||
qMakePair(tr("Customer email"), VAbstractValApplication::VApp()->CustomerEmail()));
|
VAbstractValApplication::VApp()->CustomerEmail()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -574,35 +571,35 @@ void DialogEditLabel::InitPlaceholders()
|
||||||
|
|
||||||
{
|
{
|
||||||
QString label = VAbstractValApplication::VApp()->GetDimensionHeightLabel();
|
QString label = VAbstractValApplication::VApp()->GetDimensionHeightLabel();
|
||||||
m_placeholders.insert(pl_heightLabel,
|
m_placeholders.insert(pl_heightLabel, qMakePair(tr("Height label", "dimension"),
|
||||||
qMakePair(tr("Height label", "dimension"), not label.isEmpty() ? label : heightValue));
|
not label.isEmpty() ? label : heightValue));
|
||||||
m_placeholders.insert(
|
m_placeholders.insert(pl_dimensionX, qMakePair(tr("Dimension X label", "dimension"),
|
||||||
pl_dimensionX, qMakePair(tr("Dimension X label", "dimension"), not label.isEmpty() ? label : heightValue));
|
not label.isEmpty() ? label : heightValue));
|
||||||
|
|
||||||
label = VAbstractValApplication::VApp()->GetDimensionSizeLabel();
|
label = VAbstractValApplication::VApp()->GetDimensionSizeLabel();
|
||||||
m_placeholders.insert(pl_sizeLabel,
|
m_placeholders.insert(pl_sizeLabel, qMakePair(tr("Size label", "dimension"),
|
||||||
qMakePair(tr("Size label", "dimension"), not label.isEmpty() ? label : sizeValue));
|
not label.isEmpty() ? label : sizeValue));
|
||||||
m_placeholders.insert(pl_dimensionY,
|
m_placeholders.insert(pl_dimensionY, qMakePair(tr("Dimension Y label", "dimension"),
|
||||||
qMakePair(tr("Dimension Y label", "dimension"), not label.isEmpty() ? label : sizeValue));
|
not label.isEmpty() ? label : sizeValue));
|
||||||
|
|
||||||
label = VAbstractValApplication::VApp()->GetDimensionHipLabel();
|
label = VAbstractValApplication::VApp()->GetDimensionHipLabel();
|
||||||
m_placeholders.insert(pl_hipLabel,
|
m_placeholders.insert(pl_hipLabel, qMakePair(tr("Hip label", "dimension"),
|
||||||
qMakePair(tr("Hip label", "dimension"), not label.isEmpty() ? label : hipValue));
|
not label.isEmpty() ? label : hipValue));
|
||||||
m_placeholders.insert(pl_dimensionZ,
|
m_placeholders.insert(pl_dimensionZ, qMakePair(tr("Dimension Z label", "dimension"),
|
||||||
qMakePair(tr("Dimension Z label", "dimension"), not label.isEmpty() ? label : hipValue));
|
not label.isEmpty() ? label : hipValue));
|
||||||
|
|
||||||
label = VAbstractValApplication::VApp()->GetDimensionWaistLabel();
|
label = VAbstractValApplication::VApp()->GetDimensionWaistLabel();
|
||||||
m_placeholders.insert(pl_waistLabel,
|
m_placeholders.insert(pl_waistLabel, qMakePair(tr("Waist label", "dimension"),
|
||||||
qMakePair(tr("Waist label", "dimension"), not label.isEmpty() ? label : waistValue));
|
not label.isEmpty() ? label : waistValue));
|
||||||
m_placeholders.insert(
|
m_placeholders.insert(pl_dimensionW, qMakePair(tr("Dimension W label", "dimension"),
|
||||||
pl_dimensionW, qMakePair(tr("Dimension W label", "dimension"), not label.isEmpty() ? label : waistValue));
|
not label.isEmpty() ? label : waistValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_placeholders.insert(
|
|
||||||
pl_mExt, qMakePair(tr("Measurments extension"),
|
m_placeholders.insert(pl_mExt,
|
||||||
|
qMakePair(tr("Measurments extension"),
|
||||||
VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Multisize
|
VAbstractValApplication::VApp()->GetMeasurementsType() == MeasurementsType::Multisize
|
||||||
? QStringLiteral("vst")
|
? QStringLiteral("vst") : QStringLiteral("vit")));
|
||||||
: QStringLiteral("vit")));
|
|
||||||
|
|
||||||
const QString userMaterialStr = tr("User material");
|
const QString userMaterialStr = tr("User material");
|
||||||
const QMap<int, QString> materials = m_doc->GetPatternMaterials();
|
const QMap<int, QString> materials = m_doc->GetPatternMaterials();
|
||||||
|
@ -654,24 +651,19 @@ void DialogEditLabel::InitPlaceholders()
|
||||||
QScopedPointer<Calculator> cal(new Calculator());
|
QScopedPointer<Calculator> cal(new Calculator());
|
||||||
const qreal result = cal->EvalFormula(completeData.DataVariables(), m.formula);
|
const qreal result = cal->EvalFormula(completeData.DataVariables(), m.formula);
|
||||||
|
|
||||||
m_placeholders.insert(pl_finalMeasurement + m.name,
|
m_placeholders.insert(pl_finalMeasurement + m.name, qMakePair(tr("Final measurement: %1").arg(m.name),
|
||||||
qMakePair(tr("Final measurement: %1").arg(m.name), QString::number(result)));
|
QString::number(result)));
|
||||||
}
|
}
|
||||||
catch (qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Failed to prepare final measurement placeholder. Parser error at "
|
const QString errorMsg = QObject::tr("Failed to prepare final measurement placeholder. Parser error at "
|
||||||
"line %1: %2.")
|
"line %1: %2.").arg(i+1).arg(e.GetMsg());
|
||||||
.arg(i + 1)
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
.arg(e.GetMsg());
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
|
||||||
? throw VException(errorMsg)
|
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
|
|
||||||
|
|
||||||
// Piece tags
|
// Piece tags
|
||||||
m_placeholders.insert(pl_pLetter, qMakePair(tr("Piece letter"), QString()));
|
m_placeholders.insert(pl_pLetter, qMakePair(tr("Piece letter"), QString()));
|
||||||
m_placeholders.insert(pl_pAnnotation, qMakePair(tr("Piece annotation"), QString()));
|
m_placeholders.insert(pl_pAnnotation, qMakePair(tr("Piece annotation"), QString()));
|
||||||
|
@ -681,13 +673,11 @@ void DialogEditLabel::InitPlaceholders()
|
||||||
m_placeholders.insert(pl_pFoldPosition, qMakePair(tr("Piece fold position"), QString()));
|
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_pName, qMakePair(tr("Piece name"), QString()));
|
||||||
m_placeholders.insert(pl_pQuantity, qMakePair(tr("Quantity"), QString()));
|
m_placeholders.insert(pl_pQuantity, qMakePair(tr("Quantity"), QString()));
|
||||||
m_placeholders.insert(pl_mFabric, qMakePair(tr("Material: Fabric"), phTr->translate("Placeholder", "Fabric")));
|
m_placeholders.insert(pl_mFabric, qMakePair(tr("Material: Fabric"), tr("Fabric")));
|
||||||
m_placeholders.insert(pl_mLining, qMakePair(tr("Material: Lining"), phTr->translate("Placeholder", "Lining")));
|
m_placeholders.insert(pl_mLining, qMakePair(tr("Material: Lining"), tr("Lining")));
|
||||||
m_placeholders.insert(pl_mInterfacing,
|
m_placeholders.insert(pl_mInterfacing, qMakePair(tr("Material: Interfacing"), tr("Interfacing")));
|
||||||
qMakePair(tr("Material: Interfacing"), phTr->translate("Placeholder", "Interfacing")));
|
m_placeholders.insert(pl_mInterlining, qMakePair(tr("Material: Interlining"), tr("Interlining")));
|
||||||
m_placeholders.insert(pl_mInterlining,
|
m_placeholders.insert(pl_wCut, qMakePair(tr("Word: Cut"), tr("Cut")));
|
||||||
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
|
m_placeholders.insert(pl_wOnFold, qMakePair(tr("Word: on fold"), QString()));// By default should be empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -700,9 +690,8 @@ auto DialogEditLabel::ReplacePlaceholders(QString line) const -> QString
|
||||||
{
|
{
|
||||||
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()
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
? throw VException(errorMsg)
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -797,8 +786,7 @@ void DialogEditLabel::SetPiece(const VPiece &piece)
|
||||||
m_placeholders[pl_pQuantity].second = QString::number(pieceData.GetQuantity());
|
m_placeholders[pl_pQuantity].second = QString::number(pieceData.GetQuantity());
|
||||||
if (pieceData.IsOnFold())
|
if (pieceData.IsOnFold())
|
||||||
{
|
{
|
||||||
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
|
m_placeholders[pl_wOnFold].second = tr("on fold");
|
||||||
m_placeholders[pl_wOnFold].second = phTr->translate("Placeholder", "on fold");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VContainer completeData = m_doc->GetCompleteData();
|
VContainer completeData = m_doc->GetCompleteData();
|
||||||
|
@ -815,9 +803,8 @@ void DialogEditLabel::SetPiece(const VPiece &piece)
|
||||||
catch (qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Failed to prepare full piece area placeholder. %2.").arg(e.GetMsg());
|
const QString errorMsg = QObject::tr("Failed to prepare full piece area placeholder. %2.").arg(e.GetMsg());
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
? throw VException(errorMsg)
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -829,9 +816,8 @@ void DialogEditLabel::SetPiece(const VPiece &piece)
|
||||||
catch (qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Failed to prepare piece seam line area placeholder. %2.").arg(e.GetMsg());
|
const QString errorMsg = QObject::tr("Failed to prepare piece seam line area placeholder. %2.").arg(e.GetMsg());
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
? throw VException(errorMsg)
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,7 @@
|
||||||
#include "nodeDetails/vtoolplacelabel.h"
|
#include "nodeDetails/vtoolplacelabel.h"
|
||||||
|
|
||||||
#include <QFuture>
|
#include <QFuture>
|
||||||
|
#include <QtConcurrent/QtConcurrentRun>
|
||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
#include <QGraphicsView>
|
#include <QGraphicsView>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
|
@ -77,7 +78,6 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
#include <QtConcurrent/QtConcurrentRun>
|
|
||||||
#include <QtMath>
|
#include <QtMath>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
@ -118,7 +118,8 @@ const QString VToolSeamAllowance::AttrPiecePriority = QStringLiteral("priority")
|
||||||
namespace
|
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.SetCenterPin(mappedPins.value(itemData.CenterPin(), NULL_ID));
|
||||||
itemData.SetTopLeftPin(mappedPins.value(itemData.TopLeftPin(), NULL_ID));
|
itemData.SetTopLeftPin(mappedPins.value(itemData.TopLeftPin(), NULL_ID));
|
||||||
|
@ -127,7 +128,8 @@ template <typename T> auto FixLabelPins(T itemData, const QMap<quint32, quint32>
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
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.SetCenterPin(mappedPins.value(itemData.CenterPin(), NULL_ID));
|
||||||
itemData.SetTopPin(mappedPins.value(itemData.TopPin(), NULL_ID));
|
itemData.SetTopPin(mappedPins.value(itemData.TopPin(), NULL_ID));
|
||||||
|
@ -188,7 +190,9 @@ void UpdateLabelItem(VTextGraphicsItem *labelItem, QPointF pos, qreal labelAngle
|
||||||
} // 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 *
|
VContainer *data) -> VToolSeamAllowance *
|
||||||
{
|
{
|
||||||
SCASSERT(not dialog.isNull());
|
SCASSERT(not dialog.isNull());
|
||||||
|
@ -218,9 +222,8 @@ auto VToolSeamAllowance::Create(const QPointer<DialogTool> &dialog, VMainGraphic
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Piece '%1'. Unable to load default piece label template.\n%2\n%3")
|
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());
|
.arg(initData.detail.GetName(), e.ErrorMessage(), e.DetailedInformation());
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
? throw VException(errorMsg)
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,8 +288,9 @@ auto VToolSeamAllowance::Create(VToolSeamAllowanceInitData &initData) -> VToolSe
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::Duplicate(const QPointer<DialogTool> &dialog, VMainGraphicsScene *scene, VAbstractPattern *doc)
|
auto VToolSeamAllowance::Duplicate(const QPointer<DialogTool> &dialog,
|
||||||
-> VToolSeamAllowance *
|
VMainGraphicsScene *scene,
|
||||||
|
VAbstractPattern *doc) -> VToolSeamAllowance *
|
||||||
{
|
{
|
||||||
SCASSERT(not dialog.isNull());
|
SCASSERT(not dialog.isNull());
|
||||||
const QPointer<DialogDuplicateDetail> dialogTool = qobject_cast<DialogDuplicateDetail*>(dialog);
|
const QPointer<DialogDuplicateDetail> dialogTool = qobject_cast<DialogDuplicateDetail*>(dialog);
|
||||||
|
@ -323,8 +327,8 @@ auto VToolSeamAllowance::Duplicate(VToolSeamAllowanceInitData &initData) -> VToo
|
||||||
|
|
||||||
QMap<quint32, quint32> replacements;
|
QMap<quint32, quint32> replacements;
|
||||||
dupDetail.GetPath().SetNodes(DuplicateNodes(initData.detail.GetPath(), initData, replacements));
|
dupDetail.GetPath().SetNodes(DuplicateNodes(initData.detail.GetPath(), initData, replacements));
|
||||||
dupDetail.SetCustomSARecords(
|
dupDetail.SetCustomSARecords(DuplicateCustomSARecords(initData.detail.GetCustomSARecords(), initData,
|
||||||
DuplicateCustomSARecords(initData.detail.GetCustomSARecords(), initData, replacements));
|
replacements));
|
||||||
dupDetail.SetInternalPaths(DuplicateInternalPaths(initData.detail.GetInternalPaths(), initData));
|
dupDetail.SetInternalPaths(DuplicateInternalPaths(initData.detail.GetInternalPaths(), initData));
|
||||||
dupDetail.SetPlaceLabels(DuplicatePlaceLabels(initData.detail.GetPlaceLabels(), initData));
|
dupDetail.SetPlaceLabels(DuplicatePlaceLabels(initData.detail.GetPlaceLabels(), initData));
|
||||||
dupDetail.SetUUID(QUuid::createUuid());
|
dupDetail.SetUUID(QUuid::createUuid());
|
||||||
|
@ -645,10 +649,7 @@ void VToolSeamAllowance::ReinitInternals(const VPiece &detail, VMainGraphicsScen
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::getTagName() const -> QString
|
auto VToolSeamAllowance::getTagName() const -> QString { return VAbstractPattern::TagDetail; }
|
||||||
{
|
|
||||||
return VAbstractPattern::TagDetail;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::ShowVisualization(bool show)
|
void VToolSeamAllowance::ShowVisualization(bool show)
|
||||||
|
@ -755,8 +756,7 @@ void VToolSeamAllowance::Highlight(quint32 id)
|
||||||
*/
|
*/
|
||||||
void VToolSeamAllowance::UpdateDetailLabel()
|
void VToolSeamAllowance::UpdateDetailLabel()
|
||||||
{
|
{
|
||||||
VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
||||||
detail.SetPieceLabelData(detail.GetPieceLabelData()); // Refresh translation
|
|
||||||
const VPieceLabelData& labelData = detail.GetPieceLabelData();
|
const VPieceLabelData& labelData = detail.GetPieceLabelData();
|
||||||
const QVector<quint32> &pins = detail.GetPins();
|
const QVector<quint32> &pins = detail.GetPins();
|
||||||
|
|
||||||
|
@ -841,10 +841,10 @@ void VToolSeamAllowance::UpdateGrainline()
|
||||||
|
|
||||||
if (m_geometryIsReady && not IsGrainlinePositionValid())
|
if (m_geometryIsReady && not IsGrainlinePositionValid())
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Piece '%1'. Grainline is not valid.").arg(detail.GetName());
|
const QString errorMsg = QObject::tr("Piece '%1'. Grainline is not valid.")
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
.arg(detail.GetName());
|
||||||
? throw VException(errorMsg)
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -909,6 +909,7 @@ void VToolSeamAllowance::SaveRotationDetail(qreal dRot)
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(rotateCommand);
|
VAbstractApplication::VApp()->getUndoStack()->push(rotateCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief SaveMovePattern saves the pattern label position
|
* @brief SaveMovePattern saves the pattern label position
|
||||||
|
@ -963,6 +964,7 @@ void VToolSeamAllowance::SaveRotationPattern(qreal dRot)
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(rotateCommand);
|
VAbstractApplication::VApp()->getUndoStack()->push(rotateCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::SaveMoveGrainline(const QPointF& ptPos)
|
void VToolSeamAllowance::SaveMoveGrainline(const QPointF& ptPos)
|
||||||
{
|
{
|
||||||
|
@ -1080,8 +1082,8 @@ void VToolSeamAllowance::AddToFile()
|
||||||
AddPins(doc, domElement, piece.GetPins());
|
AddPins(doc, domElement, piece.GetPins());
|
||||||
AddPlaceLabels(doc, domElement, piece.GetPlaceLabels());
|
AddPlaceLabels(doc, domElement, piece.GetPlaceLabels());
|
||||||
|
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(
|
VAbstractApplication::VApp()->getUndoStack()->push(new AddPiece(domElement, doc, VAbstractTool::data,
|
||||||
new AddPiece(domElement, doc, VAbstractTool::data, m_sceneDetails, m_drawName));
|
m_sceneDetails, m_drawName));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1093,7 +1095,8 @@ void VToolSeamAllowance::RefreshDataInFile()
|
||||||
// Refresh only parts that we possibly need to update
|
// Refresh only parts that we possibly need to update
|
||||||
{
|
{
|
||||||
// TODO. Delete if minimal supported version is 0.4.0
|
// 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'));
|
const uint version = VAbstractPattern::GetParametrUInt(domElement, AttrVersion, QChar('1'));
|
||||||
if (version == 1)
|
if (version == 1)
|
||||||
|
@ -1130,8 +1133,8 @@ auto VToolSeamAllowance::itemChange(QGraphicsItem::GraphicsItemChange change, co
|
||||||
// value - this is new position.
|
// value - this is new position.
|
||||||
const QPointF newPos = value.toPointF();
|
const QPointF newPos = value.toPointF();
|
||||||
|
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(
|
VAbstractApplication::VApp()->getUndoStack()->push(new MovePiece(doc, newPos.x(), newPos.y(), m_id,
|
||||||
new MovePiece(doc, newPos.x(), newPos.y(), m_id, scene()));
|
scene()));
|
||||||
|
|
||||||
const QList<QGraphicsView *> viewList = scene()->views();
|
const QList<QGraphicsView *> viewList = scene()->views();
|
||||||
if (not viewList.isEmpty())
|
if (not viewList.isEmpty())
|
||||||
|
@ -1184,8 +1187,7 @@ void VToolSeamAllowance::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||||
|
|
||||||
if (selectionType == SelectionType::ByMouseRelease)
|
if (selectionType == SelectionType::ByMouseRelease)
|
||||||
{
|
{
|
||||||
event
|
event->accept();// Special for not selectable item first need to call standard mousePressEvent then accept event
|
||||||
->accept(); // Special for not selectable item first need to call standard mousePressEvent then accept event
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1456,16 +1458,15 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
|
||||||
if (detail.IsSeamAllowance())
|
if (detail.IsSeamAllowance())
|
||||||
{
|
{
|
||||||
futureSeamAllowance = QtConcurrent::run([this, detail](){return detail.SeamAllowancePoints(getData());});
|
futureSeamAllowance = QtConcurrent::run([this, detail](){return detail.SeamAllowancePoints(getData());});
|
||||||
futureSeamAllowanceValid =
|
futureSeamAllowanceValid = QtConcurrent::run([this, detail](){return detail.IsSeamAllowanceValid(getData());});
|
||||||
QtConcurrent::run([this, detail]() { return detail.IsSeamAllowanceValid(getData()); });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this->setPos(detail.GetMx(), detail.GetMy());
|
this->setPos(detail.GetMx(), detail.GetMy());
|
||||||
|
|
||||||
QPainterPath path;
|
QPainterPath path;
|
||||||
|
|
||||||
if (VAbstractApplication::VApp()->Settings()->IsPieceShowMainPath() || not detail.IsHideMainPath() ||
|
if (VAbstractApplication::VApp()->Settings()->IsPieceShowMainPath() || not detail.IsHideMainPath()
|
||||||
not detail.IsSeamAllowance() || detail.IsSeamAllowanceBuiltIn())
|
|| not detail.IsSeamAllowance() || detail.IsSeamAllowanceBuiltIn())
|
||||||
{
|
{
|
||||||
m_mainPath = QPainterPath();
|
m_mainPath = QPainterPath();
|
||||||
m_seamAllowance->setBrush(QBrush(Qt::Dense7Pattern));
|
m_seamAllowance->setBrush(QBrush(Qt::Dense7Pattern));
|
||||||
|
@ -1487,10 +1488,10 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
|
||||||
{
|
{
|
||||||
if (not futureSeamAllowanceValid.result())
|
if (not futureSeamAllowanceValid.result())
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Piece '%1'. Seam allowance is not valid.").arg(detail.GetName());
|
const QString errorMsg = QObject::tr("Piece '%1'. Seam allowance is not valid.")
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
.arg(detail.GetName());
|
||||||
? throw VException(errorMsg)
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
path.addPath(detail.SeamAllowancePath(futureSeamAllowance.result()));
|
path.addPath(detail.SeamAllowancePath(futureSeamAllowance.result()));
|
||||||
path.setFillRule(Qt::OddEvenFill);
|
path.setFillRule(Qt::OddEvenFill);
|
||||||
|
@ -1507,8 +1508,7 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
|
||||||
|
|
||||||
if (VAbstractApplication::VApp()->IsAppInGUIMode())
|
if (VAbstractApplication::VApp()->IsAppInGUIMode())
|
||||||
{
|
{
|
||||||
QTimer::singleShot(V_MSECONDS(100), Qt::CoarseTimer, this,
|
QTimer::singleShot(V_MSECONDS(100), Qt::CoarseTimer, this, [this, updateChildren]()
|
||||||
[this, updateChildren]()
|
|
||||||
{
|
{
|
||||||
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false);
|
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false);
|
||||||
UpdateDetailLabel();
|
UpdateDetailLabel();
|
||||||
|
@ -1583,8 +1583,8 @@ void VToolSeamAllowance::SaveDialogChange(const QString &undoText)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::ShowOptions()
|
void VToolSeamAllowance::ShowOptions()
|
||||||
{
|
{
|
||||||
QPointer<DialogSeamAllowance> dialog =
|
QPointer<DialogSeamAllowance> dialog = new DialogSeamAllowance(getData(), doc, m_id,
|
||||||
new DialogSeamAllowance(getData(), doc, m_id, VAbstractValApplication::VApp()->getMainWindow());
|
VAbstractValApplication::VApp()->getMainWindow());
|
||||||
dialog->EnableApply(true);
|
dialog->EnableApply(true);
|
||||||
m_dialog = dialog;
|
m_dialog = dialog;
|
||||||
m_dialog->setModal(true);
|
m_dialog->setModal(true);
|
||||||
|
@ -1605,15 +1605,17 @@ void VToolSeamAllowance::ToggleInLayout(bool checked)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::ToggleForbidFlipping(bool checked)
|
void VToolSeamAllowance::ToggleForbidFlipping(bool checked)
|
||||||
{
|
{
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(new TogglePieceForceForbidFlipping(
|
VAbstractApplication::VApp()->getUndoStack()->push(
|
||||||
m_id, checked, ForceForbidFlippingType::ForbidFlipping, &(VAbstractTool::data), doc));
|
new TogglePieceForceForbidFlipping(m_id, checked, ForceForbidFlippingType::ForbidFlipping,
|
||||||
|
&(VAbstractTool::data), doc));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::ToggleForceFlipping(bool checked)
|
void VToolSeamAllowance::ToggleForceFlipping(bool checked)
|
||||||
{
|
{
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(new TogglePieceForceForbidFlipping(
|
VAbstractApplication::VApp()->getUndoStack()->push(
|
||||||
m_id, checked, ForceForbidFlippingType::ForceFlipping, &(VAbstractTool::data), doc));
|
new TogglePieceForceForbidFlipping(m_id, checked, ForceForbidFlippingType::ForceFlipping,
|
||||||
|
&(VAbstractTool::data), doc));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1764,17 +1766,19 @@ void VToolSeamAllowance::ResetPieceLabelTemplate()
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Piece '%1'. Unable to load default piece label template.\n%2\n%3")
|
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());
|
.arg(newDet.GetName(), e.ErrorMessage(), e.DetailedInformation());
|
||||||
VAbstractApplication::VApp()->IsPedantic()
|
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
||||||
? throw VException(errorMsg)
|
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData, const QVector<quint32> &pins,
|
auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
|
||||||
qreal &rotationAngle, qreal &labelWidth, qreal &labelHeight, QPointF &pos)
|
const QVector<quint32> &pins,
|
||||||
-> VPieceItem::MoveTypes
|
qreal &rotationAngle,
|
||||||
|
qreal &labelWidth,
|
||||||
|
qreal &labelHeight,
|
||||||
|
QPointF &pos) -> VPieceItem::MoveTypes
|
||||||
{
|
{
|
||||||
|
|
||||||
VPieceItem::MoveTypes restrictions = VPieceItem::AllModifications;
|
VPieceItem::MoveTypes restrictions = VPieceItem::AllModifications;
|
||||||
|
@ -1797,16 +1801,16 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData, c
|
||||||
const quint32 topLeftPin = labelData.TopLeftPin();
|
const quint32 topLeftPin = labelData.TopLeftPin();
|
||||||
const quint32 bottomRightPin = labelData.BottomRightPin();
|
const quint32 bottomRightPin = labelData.BottomRightPin();
|
||||||
|
|
||||||
if (topLeftPin != NULL_ID && pins.contains(topLeftPin) && bottomRightPin != NULL_ID &&
|
if (topLeftPin != NULL_ID && pins.contains(topLeftPin) && bottomRightPin != NULL_ID
|
||||||
pins.contains(bottomRightPin))
|
&& pins.contains(bottomRightPin))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const auto topLeftPinPoint = VAbstractTool::data.GeometricObject<VPointF>(topLeftPin);
|
const auto topLeftPinPoint = VAbstractTool::data.GeometricObject<VPointF>(topLeftPin);
|
||||||
const auto bottomRightPinPoint = VAbstractTool::data.GeometricObject<VPointF>(bottomRightPin);
|
const auto bottomRightPinPoint = VAbstractTool::data.GeometricObject<VPointF>(bottomRightPin);
|
||||||
|
|
||||||
const QRectF labelRect =
|
const QRectF labelRect = QRectF(static_cast<QPointF>(*topLeftPinPoint),
|
||||||
QRectF(static_cast<QPointF>(*topLeftPinPoint), static_cast<QPointF>(*bottomRightPinPoint));
|
static_cast<QPointF>(*bottomRightPinPoint));
|
||||||
labelWidth = FromPixel(qAbs(labelRect.width()), *VDataTool::data.GetPatternUnit());
|
labelWidth = FromPixel(qAbs(labelRect.width()), *VDataTool::data.GetPatternUnit());
|
||||||
labelHeight = FromPixel(qAbs(labelRect.height()), *VDataTool::data.GetPatternUnit());
|
labelHeight = FromPixel(qAbs(labelRect.height()), *VDataTool::data.GetPatternUnit());
|
||||||
|
|
||||||
|
@ -1873,8 +1877,11 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData, c
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom, const QVector<quint32> &pins, qreal &length,
|
auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
|
||||||
qreal &rotationAngle, QPointF &pos) -> VPieceItem::MoveTypes
|
const QVector<quint32> &pins,
|
||||||
|
qreal &length,
|
||||||
|
qreal &rotationAngle,
|
||||||
|
QPointF &pos) -> VPieceItem::MoveTypes
|
||||||
{
|
{
|
||||||
const quint32 topPin = geom.TopPin();
|
const quint32 topPin = geom.TopPin();
|
||||||
const quint32 bottomPin = geom.BottomPin();
|
const quint32 bottomPin = geom.BottomPin();
|
||||||
|
@ -1938,8 +1945,8 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom, const
|
||||||
const auto centerPinPoint = VAbstractTool::data.GeometricObject<VPointF>(centerPin);
|
const auto centerPinPoint = VAbstractTool::data.GeometricObject<VPointF>(centerPin);
|
||||||
|
|
||||||
const qreal cLength = ToPixel(length, *VDataTool::data.GetPatternUnit());
|
const qreal cLength = ToPixel(length, *VDataTool::data.GetPatternUnit());
|
||||||
QLineF grainline(centerPinPoint->x(), centerPinPoint->y(), centerPinPoint->x() + cLength / 2.0,
|
QLineF grainline(centerPinPoint->x(), centerPinPoint->y(),
|
||||||
centerPinPoint->y());
|
centerPinPoint->x() + cLength / 2.0, centerPinPoint->y());
|
||||||
|
|
||||||
grainline.setAngle(rotationAngle);
|
grainline.setAngle(rotationAngle);
|
||||||
grainline = QLineF(grainline.p2(), grainline.p1());
|
grainline = QLineF(grainline.p2(), grainline.p1());
|
||||||
|
@ -2007,8 +2014,8 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc
|
||||||
connect(tool, &VNodePoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem, Qt::UniqueConnection);
|
connect(tool, &VNodePoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem, Qt::UniqueConnection);
|
||||||
connect(tool, &VNodePoint::TogglePassmarkAngleType, parent,
|
connect(tool, &VNodePoint::TogglePassmarkAngleType, parent,
|
||||||
&VToolSeamAllowance::TogglePassmarkAngleType, Qt::UniqueConnection);
|
&VToolSeamAllowance::TogglePassmarkAngleType, Qt::UniqueConnection);
|
||||||
connect(tool, &VNodePoint::TogglePassmarkLineType, parent, &VToolSeamAllowance::TogglePassmarkLineType,
|
connect(tool, &VNodePoint::TogglePassmarkLineType, parent,
|
||||||
Qt::UniqueConnection);
|
&VToolSeamAllowance::TogglePassmarkLineType, Qt::UniqueConnection);
|
||||||
connect(tool, &VNodePoint::ResetPieceLabelTemplate, parent,
|
connect(tool, &VNodePoint::ResetPieceLabelTemplate, parent,
|
||||||
&VToolSeamAllowance::ResetPieceLabelTemplate, Qt::UniqueConnection);
|
&VToolSeamAllowance::ResetPieceLabelTemplate, Qt::UniqueConnection);
|
||||||
tool->setParentItem(parent);
|
tool->setParentItem(parent);
|
||||||
|
@ -2107,8 +2114,8 @@ auto VToolSeamAllowance::PrepareLabelData(const VPatternLabelData &labelData, co
|
||||||
|
|
||||||
qreal labelWidth = 0;
|
qreal labelWidth = 0;
|
||||||
qreal labelHeight = 0;
|
qreal labelHeight = 0;
|
||||||
const VTextGraphicsItem::MoveTypes type =
|
const VTextGraphicsItem::MoveTypes type = FindLabelGeometry(labelData, pins, labelAngle, labelWidth, labelHeight,
|
||||||
FindLabelGeometry(labelData, pins, labelAngle, labelWidth, labelHeight, pos);
|
pos);
|
||||||
if (type & VGrainlineItem::Error)
|
if (type & VGrainlineItem::Error)
|
||||||
{
|
{
|
||||||
labelItem->hide();
|
labelItem->hide();
|
||||||
|
@ -2175,8 +2182,8 @@ void VToolSeamAllowance::AddPointRecords(VAbstractPattern *doc, QDomElement &dom
|
||||||
QDomElement pinsElement = doc->createElement(tag);
|
QDomElement pinsElement = doc->createElement(tag);
|
||||||
for (auto record : records)
|
for (auto record : records)
|
||||||
{
|
{
|
||||||
pinsElement.appendChild(
|
pinsElement.appendChild(doc->CreateElementWithText(VToolSeamAllowance::TagRecord,
|
||||||
doc->CreateElementWithText(VToolSeamAllowance::TagRecord, QString().setNum(record)));
|
QString().setNum(record)));
|
||||||
}
|
}
|
||||||
domElement.appendChild(pinsElement);
|
domElement.appendChild(pinsElement);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue