mirror of
https://gitlab.com/smart-pattern/valentina.git
synced 2024-09-18 23:04:03 +02:00
Compare commits
7 commits
7b2707a528
...
867348fb8e
Author | SHA1 | Date | |
---|---|---|---|
867348fb8e | |||
3d1dc32b73 | |||
e71497a280 | |||
f69eaafe86 | |||
e2815f39ed | |||
7320c1c5df | |||
3ce8e6e5a7 |
|
@ -1,5 +1,5 @@
|
||||||
[main]
|
[main]
|
||||||
host = https://app.transifex.com/
|
host = https://www.transifex.com
|
||||||
lang_map = es: es_ES, id: id_ID, uk: uk_UA, cs: cs_CZ, nl: nl_NL, fi: fi_FI
|
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,6 +27,7 @@
|
||||||
- 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,6 +34,10 @@ qbs resolve -d ../../build_translations modules.i18n.update:true moduleProviders
|
||||||
qbs -d ../../build_translations -f ../valentina.qbs -p 'Translations' modules.i18n.update:true moduleProviders.Qt.qmakeFilePaths:$HOME/Qt6.5/6.5.0/gcc_64/bin/qmake
|
qbs -d ../../build_translations -f ../valentina.qbs -p '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,11 +27,12 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "preferencesconfigurationpage.h"
|
#include "preferencesconfigurationpage.h"
|
||||||
#include "ui_preferencesconfigurationpage.h"
|
|
||||||
#include "../../core/vapplication.h"
|
#include "../../core/vapplication.h"
|
||||||
#include "../vpatterndb/pmsystems.h"
|
|
||||||
#include "../vmisc/vvalentinasettings.h"
|
|
||||||
#include "../vmisc/literals.h"
|
#include "../vmisc/literals.h"
|
||||||
|
#include "../vmisc/vvalentinasettings.h"
|
||||||
|
#include "../vpatterndb/pmsystems.h"
|
||||||
|
#include "def.h"
|
||||||
|
#include "ui_preferencesconfigurationpage.h"
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
|
#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)
|
||||||
|
@ -43,8 +44,8 @@
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
|
PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
|
||||||
: QWidget(parent),
|
: QWidget(parent),
|
||||||
ui(new Ui::PreferencesConfigurationPage)
|
ui(new Ui::PreferencesConfigurationPage)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
RetranslateUi();
|
RetranslateUi();
|
||||||
|
@ -55,10 +56,12 @@ 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, [this]()
|
connect(ui->langCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), 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());
|
||||||
|
@ -71,10 +74,8 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
|
||||||
ui->unitCombo->setCurrentIndex(indexUnit);
|
ui->unitCombo->setCurrentIndex(indexUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
connect(ui->unitCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
|
connect(ui->unitCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
|
||||||
{
|
[this]() { m_unitChanged = true; });
|
||||||
m_unitChanged = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
//----------------------- Label language
|
//----------------------- Label language
|
||||||
SetLabelComboBox(VApplication::LabelLanguages());
|
SetLabelComboBox(VApplication::LabelLanguages());
|
||||||
|
@ -84,24 +85,23 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
|
||||||
{
|
{
|
||||||
ui->labelCombo->setCurrentIndex(index);
|
ui->labelCombo->setCurrentIndex(index);
|
||||||
}
|
}
|
||||||
connect(ui->labelCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]()
|
connect(ui->labelCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), 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, [this]()
|
connect(ui->systemCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
|
||||||
{
|
[this]()
|
||||||
m_systemChanged = true;
|
{
|
||||||
QString text = VAbstractApplication::VApp()->TrVars()
|
m_systemChanged = true;
|
||||||
->PMSystemAuthor(ui->systemCombo->currentData().toString());
|
QString text =
|
||||||
ui->systemAuthorValueLabel->setText(text);
|
VAbstractApplication::VApp()->TrVars()->PMSystemAuthor(ui->systemCombo->currentData().toString());
|
||||||
ui->systemAuthorValueLabel->setToolTip(text);
|
ui->systemAuthorValueLabel->setText(text);
|
||||||
|
ui->systemAuthorValueLabel->setToolTip(text);
|
||||||
|
|
||||||
text = VAbstractApplication::VApp()->TrVars()->PMSystemBook(ui->systemCombo->currentData().toString());
|
text = VAbstractApplication::VApp()->TrVars()->PMSystemBook(ui->systemCombo->currentData().toString());
|
||||||
ui->systemBookValueLabel->setPlainText(text);
|
ui->systemBookValueLabel->setPlainText(text);
|
||||||
});
|
});
|
||||||
|
|
||||||
// set default pattern making system
|
// set default pattern making system
|
||||||
index = ui->systemCombo->findData(VAbstractValApplication::VApp()->ValentinaSettings()->GetPMSystemCode());
|
index = ui->systemCombo->findData(VAbstractValApplication::VApp()->ValentinaSettings()->GetPMSystemCode());
|
||||||
|
@ -111,14 +111,15 @@ 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();
|
||||||
|
|
||||||
settings->SetConfirmItemDelete(true);
|
settings->SetConfirmItemDelete(true);
|
||||||
settings->SetConfirmFormatRewriting(true);
|
settings->SetConfirmFormatRewriting(true);
|
||||||
settings->SetAskContinueIfLayoutStale(true);
|
settings->SetAskContinueIfLayoutStale(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings();
|
VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings();
|
||||||
|
|
||||||
|
@ -181,7 +182,7 @@ auto PreferencesConfigurationPage::Apply() -> QStringList
|
||||||
QTimer *autoSaveTimer = VApplication::VApp()->getAutoSaveTimer();
|
QTimer *autoSaveTimer = VApplication::VApp()->getAutoSaveTimer();
|
||||||
SCASSERT(autoSaveTimer)
|
SCASSERT(autoSaveTimer)
|
||||||
|
|
||||||
ui->autoSaveCheck->isChecked() ? autoSaveTimer->start(ui->autoTime->value()*60000) : autoSaveTimer->stop();
|
ui->autoSaveCheck->isChecked() ? autoSaveTimer->start(ui->autoTime->value() * 60000) : autoSaveTimer->stop();
|
||||||
|
|
||||||
settings->SetOsSeparator(ui->osOptionCheck->isChecked());
|
settings->SetOsSeparator(ui->osOptionCheck->isChecked());
|
||||||
settings->SetToolBarStyle(ui->toolBarStyleCheck->isChecked());
|
settings->SetToolBarStyle(ui->toolBarStyleCheck->isChecked());
|
||||||
|
@ -206,6 +207,13 @@ 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());
|
||||||
|
@ -285,21 +293,30 @@ void PreferencesConfigurationPage::RetranslateUi()
|
||||||
ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(LocaleDecimalPoint(QLocale())));
|
ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(LocaleDecimalPoint(QLocale())));
|
||||||
|
|
||||||
{
|
{
|
||||||
ui->unitCombo->blockSignals(true);
|
ui->unitCombo->blockSignals(true);
|
||||||
const auto unit = qvariant_cast<QString>(ui->unitCombo->currentData());
|
const auto unit = qvariant_cast<QString>(ui->unitCombo->currentData());
|
||||||
ui->unitCombo->clear();
|
ui->unitCombo->clear();
|
||||||
InitUnits();
|
InitUnits();
|
||||||
ui->unitCombo->setCurrentIndex(ui->unitCombo->findData(unit));
|
ui->unitCombo->setCurrentIndex(ui->unitCombo->findData(unit));
|
||||||
ui->unitCombo->blockSignals(false);
|
ui->unitCombo->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const auto code = qvariant_cast<QString>(ui->systemCombo->currentData());
|
const auto code = qvariant_cast<QString>(ui->systemCombo->currentData());
|
||||||
ui->systemCombo->blockSignals(true);
|
ui->systemCombo->blockSignals(true);
|
||||||
ui->systemCombo->clear();
|
ui->systemCombo->clear();
|
||||||
InitPMSystems(ui->systemCombo);
|
InitPMSystems(ui->systemCombo);
|
||||||
ui->systemCombo->setCurrentIndex(-1);
|
ui->systemCombo->setCurrentIndex(-1);
|
||||||
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,29 +31,29 @@
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
#include "../vmisc/defglobal.h"
|
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
class PreferencesConfigurationPage;
|
class PreferencesConfigurationPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
class PreferencesConfigurationPage : public QWidget
|
class PreferencesConfigurationPage : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT // NOLINT
|
Q_OBJECT // NOLINT
|
||||||
|
|
||||||
public:
|
public : explicit PreferencesConfigurationPage(QWidget *parent = nullptr);
|
||||||
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>867</height>
|
<height>898</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
@ -104,13 +104,20 @@
|
||||||
<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="1" column="1">
|
<item row="2" 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>
|
||||||
|
@ -120,26 +127,29 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="3" 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="0">
|
<item row="3" column="1">
|
||||||
|
<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="2" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QComboBox" name="unitCombo"/>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QComboBox" name="labelCombo"/>
|
<widget class="QComboBox" name="labelCombo"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBoxPieceLbelLanguage"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -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 "../vpatterndb/floatItemData/vpiecelabeldata.h"
|
|
||||||
#include "../vmisc/vabstractvalapplication.h"
|
#include "../vmisc/vabstractvalapplication.h"
|
||||||
|
#include "../vpatterndb/floatItemData/vpiecelabeldata.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"
|
||||||
|
@ -55,7 +55,7 @@ const quint16 TextLine::classVersion = 1;
|
||||||
|
|
||||||
// Friend functions
|
// Friend functions
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto operator<<(QDataStream &dataStream, const TextLine &data) -> QDataStream&
|
auto operator<<(QDataStream &dataStream, const TextLine &data) -> QDataStream &
|
||||||
{
|
{
|
||||||
dataStream << TextLine::streamHeader << TextLine::classVersion;
|
dataStream << TextLine::streamHeader << TextLine::classVersion;
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ auto operator<<(QDataStream &dataStream, const TextLine &data) -> QDataStream&
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream&
|
auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream &
|
||||||
{
|
{
|
||||||
quint32 actualStreamHeader = 0;
|
quint32 actualStreamHeader = 0;
|
||||||
dataStream >> actualStreamHeader;
|
dataStream >> actualStreamHeader;
|
||||||
|
@ -81,8 +81,8 @@ auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream&
|
||||||
{
|
{
|
||||||
QString message = QCoreApplication::tr("TextLine prefix mismatch error: actualStreamHeader = 0x%1 and "
|
QString message = QCoreApplication::tr("TextLine prefix mismatch error: actualStreamHeader = 0x%1 and "
|
||||||
"streamHeader = 0x%2")
|
"streamHeader = 0x%2")
|
||||||
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
|
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
|
||||||
.arg(TextLine::streamHeader, 8, 0x10, QChar('0'));
|
.arg(TextLine::streamHeader, 8, 0x10, QChar('0'));
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +93,8 @@ 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(TextLine::classVersion);
|
.arg(actualClassVersion)
|
||||||
|
.arg(TextLine::classVersion);
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,10 +104,10 @@ auto operator>>(QDataStream &dataStream, TextLine &data) -> QDataStream&
|
||||||
dataStream >> data.m_italic;
|
dataStream >> data.m_italic;
|
||||||
dataStream >> data.m_eAlign;
|
dataStream >> data.m_eAlign;
|
||||||
|
|
||||||
// if (actualClassVersion >= 2)
|
// if (actualClassVersion >= 2)
|
||||||
// {
|
// {
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
return dataStream;
|
return dataStream;
|
||||||
}
|
}
|
||||||
|
@ -121,7 +122,7 @@ Q_GLOBAL_STATIC(QVector<TextLine>, m_patternLabelLines) // NOLINT
|
||||||
|
|
||||||
// Friend functions
|
// Friend functions
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto operator<<(QDataStream &dataStream, const VTextManager &data) -> QDataStream&
|
auto operator<<(QDataStream &dataStream, const VTextManager &data) -> QDataStream &
|
||||||
{
|
{
|
||||||
dataStream << VTextManager::streamHeader << VTextManager::classVersion;
|
dataStream << VTextManager::streamHeader << VTextManager::classVersion;
|
||||||
|
|
||||||
|
@ -135,7 +136,7 @@ auto operator<<(QDataStream &dataStream, const VTextManager &data) -> QDataStrea
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto operator>>(QDataStream &dataStream, VTextManager &data) -> QDataStream&
|
auto operator>>(QDataStream &dataStream, VTextManager &data) -> QDataStream &
|
||||||
{
|
{
|
||||||
quint32 actualStreamHeader = 0;
|
quint32 actualStreamHeader = 0;
|
||||||
dataStream >> actualStreamHeader;
|
dataStream >> actualStreamHeader;
|
||||||
|
@ -144,8 +145,8 @@ auto operator>>(QDataStream &dataStream, VTextManager &data) -> QDataStream&
|
||||||
{
|
{
|
||||||
QString message = QCoreApplication::tr("VTextManager prefix mismatch error: actualStreamHeader = 0x%1 and "
|
QString message = QCoreApplication::tr("VTextManager prefix mismatch error: actualStreamHeader = 0x%1 and "
|
||||||
"streamHeader = 0x%2")
|
"streamHeader = 0x%2")
|
||||||
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
|
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
|
||||||
.arg(VTextManager::streamHeader, 8, 0x10, QChar('0'));
|
.arg(VTextManager::streamHeader, 8, 0x10, QChar('0'));
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,17 +157,18 @@ 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(VTextManager::classVersion);
|
.arg(actualClassVersion)
|
||||||
|
.arg(VTextManager::classVersion);
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
dataStream >> data.m_font;
|
dataStream >> data.m_font;
|
||||||
dataStream >> data.m_liLines;
|
dataStream >> data.m_liLines;
|
||||||
|
|
||||||
// if (actualClassVersion >= 2)
|
// if (actualClassVersion >= 2)
|
||||||
// {
|
// {
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
return dataStream;
|
return dataStream;
|
||||||
}
|
}
|
||||||
|
@ -205,8 +207,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 = locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(),
|
const QString birthDate =
|
||||||
doc->GetLabelDateFormat());
|
locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(), 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());
|
||||||
|
@ -256,7 +258,8 @@ 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("vit"));
|
? QStringLiteral("vst")
|
||||||
|
: 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)
|
||||||
|
@ -273,7 +276,7 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const QMap<QString, QSharedPointer<VMeasurement> > measurements = data->DataMeasurements();
|
const QMap<QString, QSharedPointer<VMeasurement>> measurements = data->DataMeasurements();
|
||||||
auto i = measurements.constBegin();
|
auto i = measurements.constBegin();
|
||||||
while (i != measurements.constEnd())
|
while (i != measurements.constEnd())
|
||||||
{
|
{
|
||||||
|
@ -290,7 +293,7 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
|
||||||
placeholders.insert(pl_currentArea, QString());
|
placeholders.insert(pl_currentArea, QString());
|
||||||
placeholders.insert(pl_currentSeamLineArea, QString());
|
placeholders.insert(pl_currentSeamLineArea, QString());
|
||||||
|
|
||||||
for (int i=0; i < measurements.size(); ++i)
|
for (int i = 0; i < measurements.size(); ++i)
|
||||||
{
|
{
|
||||||
const VFinalMeasurement &m = measurements.at(i);
|
const VFinalMeasurement &m = measurements.at(i);
|
||||||
|
|
||||||
|
@ -304,9 +307,12 @@ 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.").arg(i+1).arg(e.GetMsg());
|
"line %1: %2.")
|
||||||
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
.arg(i + 1)
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
.arg(e.GetMsg());
|
||||||
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -321,17 +327,20 @@ auto PreparePlaceholders(const VAbstractPattern *doc, const VContainer *data) ->
|
||||||
placeholders.insert(pl_pName, QString());
|
placeholders.insert(pl_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"));
|
|
||||||
placeholders.insert(pl_mLining, QObject::tr("Lining"));
|
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
|
||||||
placeholders.insert(pl_mInterfacing, QObject::tr("Interfacing"));
|
|
||||||
placeholders.insert(pl_mInterlining, QObject::tr("Interlining"));
|
placeholders.insert(pl_mFabric, phTr->translate("Placeholder", "Fabric"));
|
||||||
placeholders.insert(pl_wCut, QObject::tr("Cut"));
|
placeholders.insert(pl_mLining, phTr->translate("Placeholder", "Lining"));
|
||||||
|
placeholders.insert(pl_mInterfacing, phTr->translate("Placeholder", "Interfacing"));
|
||||||
|
placeholders.insert(pl_mInterlining, phTr->translate("Placeholder", "Interlining"));
|
||||||
|
placeholders.insert(pl_wCut, phTr->translate("Placeholder", "Cut"));
|
||||||
|
|
||||||
return placeholders;
|
return placeholders;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &name, const VPieceLabelData& data,
|
void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &name, const VPieceLabelData &data,
|
||||||
const VContainer *pattern)
|
const VContainer *pattern)
|
||||||
{
|
{
|
||||||
placeholders[pl_pLetter] = data.GetLetter();
|
placeholders[pl_pLetter] = data.GetLetter();
|
||||||
|
@ -345,7 +354,8 @@ void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &
|
||||||
|
|
||||||
if (data.IsOnFold())
|
if (data.IsOnFold())
|
||||||
{
|
{
|
||||||
placeholders[pl_wOnFold] = QObject::tr("on fold");
|
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
|
||||||
|
placeholders[pl_wOnFold] = phTr->translate("Placeholder", "on fold");
|
||||||
}
|
}
|
||||||
|
|
||||||
VContainer completeData = *pattern;
|
VContainer completeData = *pattern;
|
||||||
|
@ -355,28 +365,30 @@ void InitPiecePlaceholders(QMap<QString, QString> &placeholders, const QString &
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const QString formula = pieceArea_ + data.GetAreaShartName();
|
const QString formula = pieceArea_ + data.GetAreaShortName();
|
||||||
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() ? throw VException(errorMsg) :
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const QString formula = pieceSeamLineArea_ + data.GetAreaShartName();
|
const QString formula = pieceSeamLineArea_ + data.GetAreaShortName();
|
||||||
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() ? throw VException(errorMsg) :
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -387,10 +399,11 @@ auto ReplacePlaceholders(const QMap<QString, QString> &placeholders, QString lin
|
||||||
|
|
||||||
auto TestDimension = [per, placeholders, line](const QString &placeholder, const QString &errorMsg)
|
auto TestDimension = [per, placeholders, line](const QString &placeholder, const QString &errorMsg)
|
||||||
{
|
{
|
||||||
if (line.contains(per+placeholder+per) && placeholders.value(placeholder) == QChar('0'))
|
if (line.contains(per + placeholder + per) && placeholders.value(placeholder) == QChar('0'))
|
||||||
{
|
{
|
||||||
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -407,7 +420,7 @@ auto ReplacePlaceholders(const QMap<QString, QString> &placeholders, QString lin
|
||||||
auto i = placeholders.constBegin();
|
auto i = placeholders.constBegin();
|
||||||
while (i != placeholders.constEnd())
|
while (i != placeholders.constEnd())
|
||||||
{
|
{
|
||||||
line.replace(per+i.key()+per, i.value());
|
line.replace(per + i.key() + per, i.value());
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
return line;
|
return line;
|
||||||
|
@ -435,7 +448,7 @@ auto PrepareLines(const QVector<VLabelTemplateLine> &lines) -> QVector<TextLine>
|
||||||
|
|
||||||
return textLines;
|
return textLines;
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
|
@ -452,7 +465,7 @@ auto VTextManager::GetSpacing() const -> int
|
||||||
* @brief SetFont set the text base font
|
* @brief SetFont set the text base font
|
||||||
* @param font text base font
|
* @param font text base font
|
||||||
*/
|
*/
|
||||||
void VTextManager::SetFont(const QFont& font)
|
void VTextManager::SetFont(const QFont &font)
|
||||||
{
|
{
|
||||||
m_font = font;
|
m_font = font;
|
||||||
}
|
}
|
||||||
|
@ -462,7 +475,7 @@ void VTextManager::SetFont(const QFont& font)
|
||||||
* @brief GetFont returns the text base font
|
* @brief GetFont returns the text base font
|
||||||
* @return text base font
|
* @return text base font
|
||||||
*/
|
*/
|
||||||
auto VTextManager::GetFont() const -> const QFont&
|
auto VTextManager::GetFont() const -> const QFont &
|
||||||
{
|
{
|
||||||
return m_font;
|
return m_font;
|
||||||
}
|
}
|
||||||
|
@ -505,7 +518,7 @@ auto VTextManager::GetSourceLinesCount() const -> vsizetype
|
||||||
* @param i index of the requested line
|
* @param i index of the requested line
|
||||||
* @return reference to the requested TextLine object
|
* @return reference to the requested TextLine object
|
||||||
*/
|
*/
|
||||||
auto VTextManager::GetSourceLine(vsizetype i) const -> const TextLine&
|
auto VTextManager::GetSourceLine(vsizetype i) const -> const TextLine &
|
||||||
{
|
{
|
||||||
Q_ASSERT(i >= 0);
|
Q_ASSERT(i >= 0);
|
||||||
Q_ASSERT(i < m_liLines.count());
|
Q_ASSERT(i < m_liLines.count());
|
||||||
|
@ -518,7 +531,7 @@ auto VTextManager::MaxLineWidth(int width) const -> int
|
||||||
int maxWidth = 0;
|
int maxWidth = 0;
|
||||||
for (int i = 0; i < m_liLines.count(); ++i)
|
for (int i = 0; i < m_liLines.count(); ++i)
|
||||||
{
|
{
|
||||||
const TextLine& tl = m_liLines.at(i);
|
const TextLine &tl = m_liLines.at(i);
|
||||||
|
|
||||||
QFont fnt = m_font;
|
QFont fnt = m_font;
|
||||||
fnt.setPixelSize(fnt.pixelSize() + tl.m_iFontSize);
|
fnt.setPixelSize(fnt.pixelSize() + tl.m_iFontSize);
|
||||||
|
@ -551,8 +564,8 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
|
||||||
{
|
{
|
||||||
int iFS = 0;
|
int iFS = 0;
|
||||||
if (GetSourceLinesCount() > 0)
|
if (GetSourceLinesCount() > 0)
|
||||||
{//division by zero
|
{ // division by zero
|
||||||
iFS = 3*qFloor(fH/static_cast<int>(GetSourceLinesCount()))/4;
|
iFS = 3 * qFloor(fH / static_cast<int>(GetSourceLinesCount())) / 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iFS < MIN_FONT_SIZE)
|
if (iFS < MIN_FONT_SIZE)
|
||||||
|
@ -567,7 +580,7 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
|
||||||
QFont fnt;
|
QFont fnt;
|
||||||
for (vsizetype i = 0; i < GetSourceLinesCount(); ++i)
|
for (vsizetype i = 0; i < GetSourceLinesCount(); ++i)
|
||||||
{
|
{
|
||||||
const TextLine& tl = GetSourceLine(i);
|
const TextLine &tl = GetSourceLine(i);
|
||||||
fnt = m_font;
|
fnt = m_font;
|
||||||
fnt.setPixelSize(iFS + tl.m_iFontSize);
|
fnt.setPixelSize(iFS + tl.m_iFontSize);
|
||||||
fnt.setBold(tl.m_bold);
|
fnt.setBold(tl.m_bold);
|
||||||
|
@ -593,8 +606,7 @@ 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);
|
||||||
}
|
}
|
||||||
|
@ -605,17 +617,17 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
|
||||||
* @param qsName detail name
|
* @param qsName detail name
|
||||||
* @param data reference to the detail data
|
* @param data reference to the detail data
|
||||||
*/
|
*/
|
||||||
void VTextManager::Update(const QString& qsName, const VPieceLabelData& data, const VContainer *pattern)
|
void VTextManager::Update(const QString &qsName, const VPieceLabelData &data, const VContainer *pattern)
|
||||||
{
|
{
|
||||||
m_liLines.clear();
|
m_liLines.clear();
|
||||||
|
|
||||||
QMap<QString, QString> placeholders =
|
QMap<QString, QString> placeholders =
|
||||||
PreparePlaceholders(VAbstractValApplication::VApp()->getCurrentDocument(), pattern);
|
PreparePlaceholders(VAbstractValApplication::VApp()->getCurrentDocument(), pattern);
|
||||||
InitPiecePlaceholders(placeholders, qsName, data, pattern);
|
InitPiecePlaceholders(placeholders, qsName, data, pattern);
|
||||||
|
|
||||||
QVector<VLabelTemplateLine> lines = data.GetLabelTemplate();
|
QVector<VLabelTemplateLine> lines = data.GetLabelTemplate();
|
||||||
|
|
||||||
for (auto & line : lines)
|
for (auto &line : lines)
|
||||||
{
|
{
|
||||||
line.line = ReplacePlaceholders(placeholders, line.line);
|
line.line = ReplacePlaceholders(placeholders, line.line);
|
||||||
}
|
}
|
||||||
|
@ -642,7 +654,7 @@ void VTextManager::Update(VAbstractPattern *pDoc, const VContainer *pattern)
|
||||||
|
|
||||||
const QMap<QString, QString> placeholders = PreparePlaceholders(pDoc, pattern);
|
const QMap<QString, QString> placeholders = PreparePlaceholders(pDoc, pattern);
|
||||||
|
|
||||||
for (auto & line : lines)
|
for (auto &line : lines)
|
||||||
{
|
{
|
||||||
line.line = ReplacePlaceholders(placeholders, line.line);
|
line.line = ReplacePlaceholders(placeholders, line.line);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,9 +33,12 @@
|
||||||
#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>
|
||||||
|
@ -44,19 +47,16 @@
|
||||||
#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 <QtDebug>
|
|
||||||
#include <QPixmapCache>
|
|
||||||
#include <QGraphicsItem>
|
|
||||||
#include <QGlobalStatic>
|
|
||||||
#include <QDesktopServices>
|
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
#include <QtDebug>
|
||||||
|
|
||||||
#include "vabstractapplication.h"
|
#include "vabstractapplication.h"
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
|
||||||
# include "vdatastreamenum.h"
|
#include "vdatastreamenum.h"
|
||||||
#endif
|
#endif
|
||||||
#include "../ifc/exception/vexception.h"
|
#include "../ifc/exception/vexception.h"
|
||||||
#include "literals.h"
|
#include "literals.h"
|
||||||
|
@ -65,6 +65,79 @@
|
||||||
#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
|
||||||
{
|
{
|
||||||
|
@ -95,27 +168,8 @@ void SetItemOverrideCursor(QGraphicsItem *item, const QString &pixmapPath, int h
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto SupportedLocales() -> QStringList
|
auto SupportedLocales() -> QStringList
|
||||||
{
|
{
|
||||||
return QStringList
|
return QStringList{"uk_UA", "de_DE", "cs_CZ", "he_IL", "fr_FR", "it_IT", "nl_NL", "id_ID", "es_ES",
|
||||||
{
|
"fi_FI", "en_US", "en_CA", "en_IN", "ro_RO", "zh_CN", "pt_BR", "el_GR", "pl_PL"};
|
||||||
"uk_UA",
|
|
||||||
"de_DE",
|
|
||||||
"cs_CZ",
|
|
||||||
"he_IL",
|
|
||||||
"fr_FR",
|
|
||||||
"it_IT",
|
|
||||||
"nl_NL",
|
|
||||||
"id_ID",
|
|
||||||
"es_ES",
|
|
||||||
"fi_FI",
|
|
||||||
"en_US",
|
|
||||||
"en_CA",
|
|
||||||
"en_IN",
|
|
||||||
"ro_RO",
|
|
||||||
"zh_CN",
|
|
||||||
"pt_BR",
|
|
||||||
"el_GR",
|
|
||||||
"pl_PL"
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -224,12 +278,10 @@ auto darkenPixmap(const QPixmap &pixmap) -> QPixmap
|
||||||
void ShowInGraphicalShell(const QString &filePath)
|
void ShowInGraphicalShell(const QString &filePath)
|
||||||
{
|
{
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
QStringList args{
|
QStringList args{"-e", "tell application \"Finder\"",
|
||||||
"-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)});
|
||||||
|
@ -238,7 +290,8 @@ 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(QUrl::fromLocalFile(filePath).toString());
|
.arg(timeout)
|
||||||
|
.arg(QUrl::fromLocalFile(filePath).toString());
|
||||||
|
|
||||||
// Sending message through dbus will highlighting file
|
// Sending message through dbus will highlighting file
|
||||||
QProcess dbus;
|
QProcess dbus;
|
||||||
|
@ -321,17 +374,17 @@ void MacosEnableLayerBacking()
|
||||||
#endif // MACOS_LAYER_BACKING_AFFECTED
|
#endif // MACOS_LAYER_BACKING_AFFECTED
|
||||||
#endif // Q_OS_MAC
|
#endif // Q_OS_MAC
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strTMark, (QLatin1String("tMark"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strTMark, (QLatin1String("tMark"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strVMark, (QLatin1String("vMark"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strVMark, (QLatin1String("vMark"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strVMark2, (QLatin1String("vMark2"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strVMark2, (QLatin1String("vMark2"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strUMark, (QLatin1String("uMark"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strUMark, (QLatin1String("uMark"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strBoxMark, (QLatin1String("boxMark"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strBoxMark, (QLatin1String("boxMark"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strCheckMark, (QLatin1String("checkMark"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, strCheckMark, (QLatin1String("checkMark"))) // NOLINT
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto PassmarkLineTypeToString(PassmarkLineType type) -> QString
|
auto PassmarkLineTypeToString(PassmarkLineType type) -> QString
|
||||||
{
|
{
|
||||||
switch(type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case PassmarkLineType::OneLine:
|
case PassmarkLineType::OneLine:
|
||||||
return strOne;
|
return strOne;
|
||||||
|
@ -364,7 +417,7 @@ auto StringToPassmarkLineType(const QString &value) -> PassmarkLineType
|
||||||
const QStringList values{strOne, strTwo, strThree, *strTMark, *strVMark,
|
const QStringList values{strOne, strTwo, strThree, *strTMark, *strVMark,
|
||||||
*strVMark2, *strUMark, *strBoxMark, *strCheckMark};
|
*strVMark2, *strUMark, *strBoxMark, *strCheckMark};
|
||||||
|
|
||||||
switch(values.indexOf(value))
|
switch (values.indexOf(value))
|
||||||
{
|
{
|
||||||
case 0: // strOne
|
case 0: // strOne
|
||||||
return PassmarkLineType::OneLine;
|
return PassmarkLineType::OneLine;
|
||||||
|
@ -393,7 +446,7 @@ auto StringToPassmarkLineType(const QString &value) -> PassmarkLineType
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto PassmarkAngleTypeToString(PassmarkAngleType type) -> QString
|
auto PassmarkAngleTypeToString(PassmarkAngleType type) -> QString
|
||||||
{
|
{
|
||||||
switch(type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case PassmarkAngleType::Straightforward:
|
case PassmarkAngleType::Straightforward:
|
||||||
return strStraightforward;
|
return strStraightforward;
|
||||||
|
@ -425,7 +478,7 @@ auto StringToPassmarkAngleType(const QString &value) -> PassmarkAngleType
|
||||||
strStraightforward, strBisector, strIntersection, strIntersectionOnlyLeft,
|
strStraightforward, strBisector, strIntersection, strIntersectionOnlyLeft,
|
||||||
strIntersectionOnlyRight, strIntersection2, strIntersection2OnlyLeft, strIntersection2OnlyRight};
|
strIntersectionOnlyRight, strIntersection2, strIntersection2OnlyLeft, strIntersection2OnlyRight};
|
||||||
|
|
||||||
switch(values.indexOf(value))
|
switch (values.indexOf(value))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return PassmarkAngleType::Straightforward;
|
return PassmarkAngleType::Straightforward;
|
||||||
|
@ -449,20 +502,19 @@ auto StringToPassmarkAngleType(const QString &value) -> PassmarkAngleType
|
||||||
return PassmarkAngleType::Straightforward;
|
return PassmarkAngleType::Straightforward;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto StrToUnits(const QString &unit) -> Unit
|
auto StrToUnits(const QString &unit) -> Unit
|
||||||
{
|
{
|
||||||
const QStringList units{unitMM, unitCM, unitINCH, unitPX};
|
const QStringList units{unitMM, unitCM, unitINCH, unitPX};
|
||||||
switch (units.indexOf(unit))
|
switch (units.indexOf(unit))
|
||||||
{
|
{
|
||||||
case 0:// mm
|
case 0: // mm
|
||||||
return Unit::Mm;
|
return Unit::Mm;
|
||||||
case 2:// inch
|
case 2: // inch
|
||||||
return Unit::Inch;
|
return Unit::Inch;
|
||||||
case 3:// px
|
case 3: // px
|
||||||
return Unit::Px;
|
return Unit::Px;
|
||||||
case 1:// cm
|
case 1: // cm
|
||||||
default:
|
default:
|
||||||
return Unit::Cm;
|
return Unit::Cm;
|
||||||
}
|
}
|
||||||
|
@ -499,58 +551,7 @@ auto UnitsToStr(const Unit &unit, const bool translate) -> QString
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void InitLanguages(QComboBox *combobox)
|
void InitLanguages(QComboBox *combobox)
|
||||||
{
|
{
|
||||||
SCASSERT(combobox != nullptr)
|
InitLanguageList(combobox);
|
||||||
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());
|
||||||
|
@ -560,6 +561,21 @@ void InitLanguages(QComboBox *combobox)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void InitPieceLabelLanguages(QComboBox *combobox)
|
||||||
|
{
|
||||||
|
InitLanguageList(combobox);
|
||||||
|
|
||||||
|
combobox->addItem(QApplication::translate("InitPieceLabelLanguages", "Default"),
|
||||||
|
VCommonSettings::defaultPieceLabelLocale);
|
||||||
|
|
||||||
|
qint32 index = combobox->findData(VAbstractApplication::VApp()->Settings()->GetPieceLabelLocale());
|
||||||
|
if (index != -1)
|
||||||
|
{
|
||||||
|
combobox->setCurrentIndex(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const quint32 CustomSARecord::streamHeader = 0xEBFF7586; // CRC-32Q string "CustomSARecord"
|
const quint32 CustomSARecord::streamHeader = 0xEBFF7586; // CRC-32Q string "CustomSARecord"
|
||||||
const quint16 CustomSARecord::classVersion = 1;
|
const quint16 CustomSARecord::classVersion = 1;
|
||||||
|
|
||||||
|
@ -591,8 +607,8 @@ auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &
|
||||||
{
|
{
|
||||||
QString message = QCoreApplication::tr("CustomSARecord prefix mismatch error: actualStreamHeader = 0x%1 "
|
QString message = QCoreApplication::tr("CustomSARecord prefix mismatch error: actualStreamHeader = 0x%1 "
|
||||||
"and streamHeader = 0x%2")
|
"and streamHeader = 0x%2")
|
||||||
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
|
.arg(actualStreamHeader, 8, 0x10, QChar('0'))
|
||||||
.arg(CustomSARecord::streamHeader, 8, 0x10, QChar('0'));
|
.arg(CustomSARecord::streamHeader, 8, 0x10, QChar('0'));
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -603,7 +619,8 @@ 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(CustomSARecord::classVersion);
|
.arg(actualClassVersion)
|
||||||
|
.arg(CustomSARecord::classVersion);
|
||||||
throw VException(message);
|
throw VException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -613,10 +630,10 @@ auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &
|
||||||
in >> record.reverse;
|
in >> record.reverse;
|
||||||
in >> record.includeType;
|
in >> record.includeType;
|
||||||
|
|
||||||
// if (actualClassVersion >= 2)
|
// if (actualClassVersion >= 2)
|
||||||
// {
|
// {
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
|
@ -624,7 +641,7 @@ auto operator>>(QDataStream &in, CustomSARecord &record) -> QDataStream &
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto IncrementTypeToString(IncrementType type) -> QString
|
auto IncrementTypeToString(IncrementType type) -> QString
|
||||||
{
|
{
|
||||||
switch(type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case IncrementType::Increment:
|
case IncrementType::Increment:
|
||||||
return strTypeIncrement;
|
return strTypeIncrement;
|
||||||
|
@ -640,9 +657,9 @@ auto IncrementTypeToString(IncrementType type) -> QString
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto StringToIncrementType(const QString &value) -> IncrementType
|
auto StringToIncrementType(const QString &value) -> IncrementType
|
||||||
{
|
{
|
||||||
const QStringList values { strTypeIncrement, strTypeSeparator };
|
const QStringList values{strTypeIncrement, strTypeSeparator};
|
||||||
|
|
||||||
switch(values.indexOf(value))
|
switch (values.indexOf(value))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return IncrementType::Increment;
|
return IncrementType::Increment;
|
||||||
|
@ -657,7 +674,7 @@ auto StringToIncrementType(const QString &value) -> IncrementType
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto MeasurementTypeToString(MeasurementType type) -> QString
|
auto MeasurementTypeToString(MeasurementType type) -> QString
|
||||||
{
|
{
|
||||||
switch(type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case MeasurementType::Measurement:
|
case MeasurementType::Measurement:
|
||||||
return strTypeMeasurement;
|
return strTypeMeasurement;
|
||||||
|
@ -673,9 +690,9 @@ auto MeasurementTypeToString(MeasurementType type) -> QString
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto StringToMeasurementType(const QString &value) -> MeasurementType
|
auto StringToMeasurementType(const QString &value) -> MeasurementType
|
||||||
{
|
{
|
||||||
const QStringList values { strTypeMeasurement, strTypeSeparator };
|
const QStringList values{strTypeMeasurement, strTypeSeparator};
|
||||||
|
|
||||||
switch(values.indexOf(value))
|
switch (values.indexOf(value))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return MeasurementType::Measurement;
|
return MeasurementType::Measurement;
|
||||||
|
@ -703,8 +720,7 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,17 +31,17 @@
|
||||||
|
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
# include <qt_windows.h>
|
#include <qt_windows.h>
|
||||||
#endif /*Q_OS_WIN*/
|
#endif /*Q_OS_WIN*/
|
||||||
|
|
||||||
#include <qcompilerdetection.h>
|
#include <QLineF>
|
||||||
|
#include <QMargins>
|
||||||
#include <QPrinter>
|
#include <QPrinter>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <Qt>
|
#include <Qt>
|
||||||
#include <csignal>
|
#include <csignal>
|
||||||
#include <QMargins>
|
#include <qcompilerdetection.h>
|
||||||
#include <QLineF>
|
|
||||||
|
|
||||||
#include "debugbreak.h"
|
#include "debugbreak.h"
|
||||||
#include "defglobal.h"
|
#include "defglobal.h"
|
||||||
|
@ -56,16 +56,16 @@ template <class T> class QSharedPointer;
|
||||||
// Backport of relaxed constexpr
|
// Backport of relaxed constexpr
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
||||||
#if defined Q_COMPILER_CONSTEXPR
|
#if defined Q_COMPILER_CONSTEXPR
|
||||||
# if defined(__cpp_constexpr) && __cpp_constexpr-0 >= 201304
|
#if defined(__cpp_constexpr) && __cpp_constexpr - 0 >= 201304
|
||||||
# define Q_DECL_RELAXED_CONSTEXPR constexpr
|
#define Q_DECL_RELAXED_CONSTEXPR constexpr
|
||||||
# define Q_RELAXED_CONSTEXPR constexpr
|
#define Q_RELAXED_CONSTEXPR constexpr
|
||||||
# else
|
|
||||||
# define Q_DECL_RELAXED_CONSTEXPR
|
|
||||||
# define Q_RELAXED_CONSTEXPR const
|
|
||||||
# endif
|
|
||||||
#else
|
#else
|
||||||
# define Q_DECL_RELAXED_CONSTEXPR
|
#define Q_DECL_RELAXED_CONSTEXPR
|
||||||
# define Q_RELAXED_CONSTEXPR const
|
#define Q_RELAXED_CONSTEXPR const
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define Q_DECL_RELAXED_CONSTEXPR
|
||||||
|
#define Q_RELAXED_CONSTEXPR const
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -83,15 +83,63 @@ 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 { Contour, Modeling };
|
enum class NodeDetail : qint8
|
||||||
enum class SceneObject : qint8 { Point, Line, Spline, Arc, ElArc, SplinePath, Detail, Unknown };
|
{
|
||||||
enum class MeasurementsType : qint8 { Multisize, Individual, Unknown};
|
Contour,
|
||||||
enum class Unit : qint8 { Mm = 0, Cm, Inch, Px, LAST_UNIT_DO_NOT_USE};
|
Modeling
|
||||||
enum class Source : qint8 { FromGui, FromFile, FromTool };
|
};
|
||||||
enum class NodeUsage : bool {NotInUse = false, InUse = true};
|
enum class SceneObject : qint8
|
||||||
enum class SelectionType : bool {ByMousePress, ByMouseRelease};
|
{
|
||||||
enum class PageOrientation : bool {Portrait = true, Landscape = false};
|
Point,
|
||||||
enum class Draw : qint8 { Calculation, Modeling, Layout };
|
Line,
|
||||||
|
Spline,
|
||||||
|
Arc,
|
||||||
|
ElArc,
|
||||||
|
SplinePath,
|
||||||
|
Detail,
|
||||||
|
Unknown
|
||||||
|
};
|
||||||
|
enum class MeasurementsType : qint8
|
||||||
|
{
|
||||||
|
Multisize,
|
||||||
|
Individual,
|
||||||
|
Unknown
|
||||||
|
};
|
||||||
|
enum class Unit : qint8
|
||||||
|
{
|
||||||
|
Mm = 0,
|
||||||
|
Cm,
|
||||||
|
Inch,
|
||||||
|
Px,
|
||||||
|
LAST_UNIT_DO_NOT_USE
|
||||||
|
};
|
||||||
|
enum class Source : qint8
|
||||||
|
{
|
||||||
|
FromGui,
|
||||||
|
FromFile,
|
||||||
|
FromTool
|
||||||
|
};
|
||||||
|
enum class NodeUsage : bool
|
||||||
|
{
|
||||||
|
NotInUse = false,
|
||||||
|
InUse = true
|
||||||
|
};
|
||||||
|
enum class SelectionType : bool
|
||||||
|
{
|
||||||
|
ByMousePress,
|
||||||
|
ByMouseRelease
|
||||||
|
};
|
||||||
|
enum class PageOrientation : bool
|
||||||
|
{
|
||||||
|
Portrait = true,
|
||||||
|
Landscape = false
|
||||||
|
};
|
||||||
|
enum class Draw : qint8
|
||||||
|
{
|
||||||
|
Calculation,
|
||||||
|
Modeling,
|
||||||
|
Layout
|
||||||
|
};
|
||||||
|
|
||||||
enum class PieceNodeAngle : quint8
|
enum class PieceNodeAngle : quint8
|
||||||
{
|
{
|
||||||
|
@ -147,7 +195,13 @@ enum class PiecePathIncludeType : quint8
|
||||||
AsCustomSA = 1
|
AsCustomSA = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class PiecePathType : quint8 {PiecePath = 0, CustomSeamAllowance = 1, InternalPath = 2, Unknown = 3};
|
enum class PiecePathType : quint8
|
||||||
|
{
|
||||||
|
PiecePath = 0,
|
||||||
|
CustomSeamAllowance = 1,
|
||||||
|
InternalPath = 2,
|
||||||
|
Unknown = 3
|
||||||
|
};
|
||||||
|
|
||||||
typedef int ToolVisHolderType;
|
typedef int ToolVisHolderType;
|
||||||
enum class Tool : ToolVisHolderType
|
enum class Tool : ToolVisHolderType
|
||||||
|
@ -211,7 +265,7 @@ enum class Tool : ToolVisHolderType
|
||||||
BackgroundImageControls,
|
BackgroundImageControls,
|
||||||
BackgroundPixmapImage,
|
BackgroundPixmapImage,
|
||||||
BackgroundSVGImage,
|
BackgroundSVGImage,
|
||||||
LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used
|
LAST_ONE_DO_NOT_USE // add new stuffs above this, this constant must be last and never used
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class Vis : ToolVisHolderType
|
enum class Vis : ToolVisHolderType
|
||||||
|
@ -270,30 +324,51 @@ enum class Vis : ToolVisHolderType
|
||||||
PieceItem,
|
PieceItem,
|
||||||
TextGraphicsItem,
|
TextGraphicsItem,
|
||||||
ScenePoint,
|
ScenePoint,
|
||||||
LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used
|
LAST_ONE_DO_NOT_USE // add new stuffs above this, this constant must be last and never used
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class Layout : ToolVisHolderType
|
enum class Layout : ToolVisHolderType
|
||||||
{
|
{
|
||||||
GrainlineItem = static_cast<ToolVisHolderType>(Vis::LAST_ONE_DO_NOT_USE),
|
GrainlineItem = static_cast<ToolVisHolderType>(Vis::LAST_ONE_DO_NOT_USE),
|
||||||
LAST_ONE_DO_NOT_USE //add new stuffs above this, this constant must be last and never used
|
LAST_ONE_DO_NOT_USE // add new stuffs above this, this constant must be last and never used
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class VarType : qint8 { Measurement, MeasurementSeparator, Increment, IncrementSeparator, LineLength, CurveLength,
|
enum class VarType : qint8
|
||||||
CurveCLength, LineAngle, CurveAngle, ArcRadius, PieceExternalArea, PieceSeamLineArea,
|
{
|
||||||
Unknown };
|
Measurement,
|
||||||
|
MeasurementSeparator,
|
||||||
|
Increment,
|
||||||
|
IncrementSeparator,
|
||||||
|
LineLength,
|
||||||
|
CurveLength,
|
||||||
|
CurveCLength,
|
||||||
|
LineAngle,
|
||||||
|
CurveAngle,
|
||||||
|
ArcRadius,
|
||||||
|
PieceExternalArea,
|
||||||
|
PieceSeamLineArea,
|
||||||
|
Unknown
|
||||||
|
};
|
||||||
|
|
||||||
enum class IncrementType : qint8 { Increment, Separator };
|
enum class IncrementType : qint8
|
||||||
|
{
|
||||||
|
Increment,
|
||||||
|
Separator
|
||||||
|
};
|
||||||
|
|
||||||
auto IncrementTypeToString(IncrementType type) -> QString;
|
auto IncrementTypeToString(IncrementType type) -> QString;
|
||||||
auto StringToIncrementType(const QString &value) -> IncrementType;
|
auto StringToIncrementType(const QString &value) -> IncrementType;
|
||||||
|
|
||||||
enum class MeasurementType : qint8 { Measurement, Separator };
|
enum class MeasurementType : qint8
|
||||||
|
{
|
||||||
|
Measurement,
|
||||||
|
Separator
|
||||||
|
};
|
||||||
|
|
||||||
auto MeasurementTypeToString(MeasurementType type) -> QString;
|
auto MeasurementTypeToString(MeasurementType type) -> QString;
|
||||||
auto StringToMeasurementType(const QString &value) -> MeasurementType;
|
auto StringToMeasurementType(const QString &value) -> MeasurementType;
|
||||||
|
|
||||||
enum class IMD: qint8 // Individual measurement dimension
|
enum class IMD : qint8 // Individual measurement dimension
|
||||||
{
|
{
|
||||||
N, // None
|
N, // None
|
||||||
X, // height
|
X, // height
|
||||||
|
@ -327,47 +402,46 @@ enum class IMD: qint8 // Individual measurement dimension
|
||||||
*/
|
*/
|
||||||
#ifndef V_NO_ASSERT
|
#ifndef V_NO_ASSERT
|
||||||
|
|
||||||
#define SCASSERT(cond) \
|
#define SCASSERT(cond) \
|
||||||
if (!(cond)) \
|
if (!(cond)) \
|
||||||
{ \
|
{ \
|
||||||
qCritical("ASSERT: %s in %s (%s:%u)", \
|
qCritical("ASSERT: %s in %s (%s:%u)", #cond, Q_FUNC_INFO, __FILE__, __LINE__); \
|
||||||
#cond, Q_FUNC_INFO , __FILE__, __LINE__); \
|
debug_break(); \
|
||||||
debug_break(); \
|
abort(); \
|
||||||
abort(); \
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#else // define but disable this function if debugging is not set
|
#else // define but disable this function if debugging is not set
|
||||||
#define SCASSERT(cond) qt_noop();
|
#define SCASSERT(cond) qt_noop();
|
||||||
#endif /* V_NO_ASSERT */
|
#endif /* V_NO_ASSERT */
|
||||||
|
|
||||||
#ifndef __has_cpp_attribute
|
#ifndef __has_cpp_attribute
|
||||||
# define __has_cpp_attribute(x) 0
|
#define __has_cpp_attribute(x) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
||||||
|
|
||||||
#ifndef QT_HAS_CPP_ATTRIBUTE
|
#ifndef QT_HAS_CPP_ATTRIBUTE
|
||||||
#ifdef __has_cpp_attribute
|
#ifdef __has_cpp_attribute
|
||||||
# define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
|
#define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
|
||||||
#else
|
#else
|
||||||
# define QT_HAS_CPP_ATTRIBUTE(x) 0
|
#define QT_HAS_CPP_ATTRIBUTE(x) 0
|
||||||
#endif
|
#endif
|
||||||
#endif // QT_HAS_CPP_ATTRIBUTE
|
#endif // QT_HAS_CPP_ATTRIBUTE
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
|
#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[clang::fallthrough]]
|
#define Q_FALLTHROUGH() [[clang::fallthrough]]
|
||||||
#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
|
#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[gnu::fallthrough]]
|
#define Q_FALLTHROUGH() [[gnu::fallthrough]]
|
||||||
#elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
|
#elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[fallthrough]]
|
#define Q_FALLTHROUGH() [[fallthrough]]
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef Q_FALLTHROUGH
|
#ifndef Q_FALLTHROUGH
|
||||||
# if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
|
#if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
|
||||||
# define Q_FALLTHROUGH() __attribute__((fallthrough))
|
#define Q_FALLTHROUGH() __attribute__((fallthrough))
|
||||||
# else
|
#else
|
||||||
# define Q_FALLTHROUGH() (void)0
|
#define Q_FALLTHROUGH() (void)0
|
||||||
#endif
|
#endif
|
||||||
#endif // defined(__cplusplus)
|
#endif // defined(__cplusplus)
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
|
||||||
|
@ -392,11 +466,10 @@ void InitHighDpiScaling(int argc, char *argv[]);
|
||||||
|
|
||||||
// We'll assume that it will be fixed in 5.12.11, 5.15.3, and 6.0.1.
|
// 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>
|
||||||
|
@ -408,7 +481,7 @@ void MacosEnableLayerBacking();
|
||||||
const int userMaterialPlaceholdersQuantity = 20;
|
const int userMaterialPlaceholdersQuantity = 20;
|
||||||
|
|
||||||
auto QPixmapFromCache(const QString &pixmapPath) -> QPixmap;
|
auto QPixmapFromCache(const QString &pixmapPath) -> QPixmap;
|
||||||
void SetItemOverrideCursor(QGraphicsItem *item, const QString & pixmapPath, int hotX = -1, int hotY = -1);
|
void SetItemOverrideCursor(QGraphicsItem *item, const QString &pixmapPath, int hotX = -1, int hotY = -1);
|
||||||
|
|
||||||
template <typename T> constexpr inline auto MmToPixel(T val) noexcept -> T
|
template <typename T> constexpr inline auto MmToPixel(T val) noexcept -> T
|
||||||
{
|
{
|
||||||
|
@ -442,9 +515,18 @@ Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel(double val, const Unit &unit) -> do
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T> constexpr inline auto PixelToInch(T pix) -> T {return pix / PrintDPI;}
|
template <typename T> constexpr inline auto PixelToInch(T pix) -> T
|
||||||
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;}
|
return pix / PrintDPI;
|
||||||
|
}
|
||||||
|
template <typename T> constexpr inline auto PixelToMm(T pix) -> T
|
||||||
|
{
|
||||||
|
return PixelToInch(pix) * 25.4;
|
||||||
|
}
|
||||||
|
template <typename T> constexpr inline auto PixelToCm(T pix) -> T
|
||||||
|
{
|
||||||
|
return PixelToInch(pix) * 2.54;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel(double pix, const Unit &unit) -> double
|
Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel(double pix, const Unit &unit) -> double
|
||||||
|
@ -465,48 +547,66 @@ Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel(double pix, const Unit &unit) ->
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T> constexpr inline auto Inch2ToPixel2(T val) -> T {return val * (PrintDPI * PrintDPI);}
|
template <typename T> constexpr inline auto Inch2ToPixel2(T val) -> T
|
||||||
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);}
|
return val * (PrintDPI * PrintDPI);
|
||||||
|
}
|
||||||
|
template <typename T> constexpr inline auto Mm2ToPixel2(T val) -> T
|
||||||
|
{
|
||||||
|
return Inch2ToPixel2(val * 0.001550031);
|
||||||
|
}
|
||||||
|
template <typename T> constexpr inline auto Cm2ToPixel2(T val) -> T
|
||||||
|
{
|
||||||
|
return Inch2ToPixel2(val * 0.15500031);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel2(double val, const Unit &unit) -> double
|
Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel2(double val, const Unit &unit) -> double
|
||||||
{
|
{
|
||||||
switch (unit)
|
switch (unit)
|
||||||
{
|
{
|
||||||
case Unit::Mm:
|
case Unit::Mm:
|
||||||
return Mm2ToPixel2(val);
|
return Mm2ToPixel2(val);
|
||||||
case Unit::Cm:
|
case Unit::Cm:
|
||||||
return Cm2ToPixel2(val);
|
return Cm2ToPixel2(val);
|
||||||
case Unit::Inch:
|
case Unit::Inch:
|
||||||
return Inch2ToPixel2(val);
|
return Inch2ToPixel2(val);
|
||||||
case Unit::Px:
|
case Unit::Px:
|
||||||
return val;
|
return val;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T> constexpr inline auto Pixel2ToInch2(T pix) -> T { return pix / (PrintDPI * PrintDPI);}
|
template <typename T> constexpr inline auto Pixel2ToInch2(T pix) -> T
|
||||||
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;}
|
return pix / (PrintDPI * PrintDPI);
|
||||||
|
}
|
||||||
|
template <typename T> constexpr inline auto Pixel2ToMm2(T pix) -> T
|
||||||
|
{
|
||||||
|
return Pixel2ToInch2(pix) / 0.001550031;
|
||||||
|
}
|
||||||
|
template <typename T> constexpr inline auto Pixel2ToCm2(T pix) -> T
|
||||||
|
{
|
||||||
|
return Pixel2ToInch2(pix) / 0.15500031;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel2(double pix, const Unit &unit) -> double
|
Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel2(double pix, const Unit &unit) -> double
|
||||||
{
|
{
|
||||||
switch (unit)
|
switch (unit)
|
||||||
{
|
{
|
||||||
case Unit::Mm:
|
case Unit::Mm:
|
||||||
return Pixel2ToMm2(pix);
|
return Pixel2ToMm2(pix);
|
||||||
case Unit::Cm:
|
case Unit::Cm:
|
||||||
return Pixel2ToCm2(pix);
|
return Pixel2ToCm2(pix);
|
||||||
case Unit::Inch:
|
case Unit::Inch:
|
||||||
return Pixel2ToInch2(pix);
|
return Pixel2ToInch2(pix);
|
||||||
case Unit::Px:
|
case Unit::Px:
|
||||||
return pix;
|
return pix;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -587,8 +687,8 @@ Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(qreal value, const Unit &from
|
||||||
* @brief UnitConvertor Converts the values of the given margin from given unit to the new unit.
|
* @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,
|
Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(const QMarginsF &margins, const Unit &from, const Unit &to)
|
||||||
const Unit &to) -> QMarginsF
|
-> 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);
|
||||||
|
@ -599,6 +699,7 @@ 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;
|
||||||
|
@ -617,11 +718,11 @@ void ShowInGraphicalShell(const QString &filePath);
|
||||||
Q_REQUIRED_RESULT Q_DECL_RELAXED_CONSTEXPR static inline auto VFuzzyComparePossibleNulls(double p1, double p2) -> bool;
|
Q_REQUIRED_RESULT Q_DECL_RELAXED_CONSTEXPR static inline auto VFuzzyComparePossibleNulls(double p1, double p2) -> bool;
|
||||||
Q_DECL_RELAXED_CONSTEXPR static inline auto VFuzzyComparePossibleNulls(double p1, double p2) -> bool
|
Q_DECL_RELAXED_CONSTEXPR static inline auto VFuzzyComparePossibleNulls(double p1, double p2) -> bool
|
||||||
{
|
{
|
||||||
if(qFuzzyIsNull(p1))
|
if (qFuzzyIsNull(p1))
|
||||||
{
|
{
|
||||||
return qFuzzyIsNull(p2);
|
return qFuzzyIsNull(p2);
|
||||||
}
|
}
|
||||||
else if(qFuzzyIsNull(p2))
|
else if (qFuzzyIsNull(p2))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -637,12 +738,13 @@ Q_DECL_RELAXED_CONSTEXPR static inline auto VFuzzyComparePossibleNulls(double p1
|
||||||
struct CustomSARecord
|
struct CustomSARecord
|
||||||
{
|
{
|
||||||
CustomSARecord()
|
CustomSARecord()
|
||||||
: startPoint(0),
|
: startPoint(0),
|
||||||
path(0),
|
path(0),
|
||||||
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 &;
|
||||||
|
@ -672,28 +774,27 @@ 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) friend class PUB##Private; QxtPrivateInterface<PUB, PUB##Private> qxt_d;
|
#define QXT_DECLARE_PRIVATE(PUB) \
|
||||||
|
friend class PUB##Private; \
|
||||||
|
QxtPrivateInterface<PUB, PUB##Private> qxt_d;
|
||||||
#define QXT_DECLARE_PUBLIC(PUB) friend class PUB;
|
#define QXT_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()
|
||||||
#define QXT_P(PUB) PUB& p = qxt_p()
|
#define QXT_P(PUB) PUB &p = qxt_p()
|
||||||
|
|
||||||
QT_WARNING_PUSH
|
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>
|
template <typename PUB> class QxtPrivate
|
||||||
class QxtPrivate
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QxtPrivate(): qxt_p_ptr(nullptr)
|
QxtPrivate()
|
||||||
{}
|
: 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; }
|
||||||
|
@ -703,28 +804,24 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY_MOVE(QxtPrivate) // NOLINT
|
Q_DISABLE_COPY_MOVE(QxtPrivate) // NOLINT
|
||||||
PUB* qxt_p_ptr;
|
PUB *qxt_p_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
// cppcheck-suppress unknownMacro
|
// cppcheck-suppress unknownMacro
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
|
|
||||||
template <typename PUB, typename PVT>
|
template <typename PUB, typename PVT> class QxtPrivateInterface
|
||||||
class QxtPrivateInterface
|
|
||||||
{
|
{
|
||||||
friend class QxtPrivate<PUB>;
|
friend class QxtPrivate<PUB>;
|
||||||
public:
|
|
||||||
QxtPrivateInterface() : pvt(new PVT)
|
|
||||||
{}
|
|
||||||
~QxtPrivateInterface()
|
|
||||||
{
|
|
||||||
delete pvt;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void setPublic(PUB* pub)
|
public:
|
||||||
|
QxtPrivateInterface()
|
||||||
|
: pvt(new PVT)
|
||||||
{
|
{
|
||||||
pvt->QXT_setPublic(pub);
|
|
||||||
}
|
}
|
||||||
|
~QxtPrivateInterface() { delete pvt; }
|
||||||
|
|
||||||
|
inline void setPublic(PUB *pub) { pvt->QXT_setPublic(pub); }
|
||||||
inline auto operator()() -> PVT & { return *static_cast<PVT *>(pvt); }
|
inline auto operator()() -> 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); }
|
||||||
|
@ -732,7 +829,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY_MOVE(QxtPrivateInterface) // NOLINT
|
Q_DISABLE_COPY_MOVE(QxtPrivateInterface) // NOLINT
|
||||||
QxtPrivate<PUB>* pvt;
|
QxtPrivate<PUB> *pvt;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DEF_H
|
#endif // DEF_H
|
||||||
|
|
|
@ -29,12 +29,14 @@
|
||||||
#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
|
||||||
|
@ -71,11 +73,38 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VAbstractValApplication::VApp() -> VAbstractValApplication *
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,34 +32,35 @@
|
||||||
|
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
|
|
||||||
class VAbstractValApplication;// use in define
|
class VAbstractValApplication; // use in define
|
||||||
class VAbstractPattern;
|
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:
|
|
||||||
VAbstractValApplication(int &argc, char **argv);
|
public : VAbstractValApplication(int &argc, char **argv);
|
||||||
virtual ~VAbstractValApplication() =default;
|
virtual ~VAbstractValApplication() = default;
|
||||||
|
|
||||||
auto GetCustomerName() const -> QString;
|
auto GetCustomerName() const -> QString;
|
||||||
void SetCustomerName(const QString &name);
|
void SetCustomerName(const QString &name);
|
||||||
|
|
||||||
auto GetCustomerBirthDate() const -> QDate;
|
auto GetCustomerBirthDate() const -> QDate;
|
||||||
void SetCustomerBirthDate(const QDate &date);
|
void SetCustomerBirthDate(const QDate &date);
|
||||||
|
|
||||||
auto CustomerEmail() const -> QString;
|
auto CustomerEmail() const -> QString;
|
||||||
void SetCustomerEmail(const QString &email);
|
void SetCustomerEmail(const QString &email);
|
||||||
|
|
||||||
auto patternUnits() const -> Unit;
|
auto patternUnits() const -> Unit;
|
||||||
auto patternUnitsP() const -> const Unit *;
|
auto patternUnitsP() const -> const Unit *;
|
||||||
void SetPatternUnits(const Unit &patternUnit);
|
void SetPatternUnits(const Unit &patternUnit);
|
||||||
|
|
||||||
auto GetMeasurementsType() const -> MeasurementsType;
|
auto GetMeasurementsType() const -> MeasurementsType;
|
||||||
void SetMeasurementsType(const MeasurementsType &patternType);
|
void SetMeasurementsType(const MeasurementsType &patternType);
|
||||||
|
|
||||||
auto MeasurementsUnits() const -> Unit;
|
auto MeasurementsUnits() const -> Unit;
|
||||||
void SetMeasurementsUnits(const Unit &measurementsUnits);
|
void SetMeasurementsUnits(const Unit &measurementsUnits);
|
||||||
|
@ -70,26 +71,26 @@ public:
|
||||||
auto toPixel(double val) const -> double;
|
auto toPixel(double val) const -> double;
|
||||||
auto fromPixel(double pix) const -> double;
|
auto fromPixel(double pix) const -> double;
|
||||||
|
|
||||||
void setCurrentDocument(VAbstractPattern *doc);
|
void setCurrentDocument(VAbstractPattern *doc);
|
||||||
auto getCurrentDocument() const -> VAbstractPattern *;
|
auto getCurrentDocument() const -> VAbstractPattern *;
|
||||||
|
|
||||||
auto getSceneView() const -> VMainGraphicsView *;
|
auto getSceneView() const -> VMainGraphicsView *;
|
||||||
void setSceneView(VMainGraphicsView *value);
|
void setSceneView(VMainGraphicsView *value);
|
||||||
|
|
||||||
auto getCurrentScene() const -> QGraphicsScene *;
|
auto getCurrentScene() const -> QGraphicsScene *;
|
||||||
void setCurrentScene(QGraphicsScene **value);
|
void setCurrentScene(QGraphicsScene **value);
|
||||||
|
|
||||||
auto getMainWindow() const -> QWidget *;
|
auto getMainWindow() const -> QWidget *;
|
||||||
void setMainWindow(QWidget *value);
|
void setMainWindow(QWidget *value);
|
||||||
|
|
||||||
auto GetPatternPath() const -> QString;
|
auto GetPatternPath() const -> QString;
|
||||||
void SetPatternPath(const QString &value);
|
void SetPatternPath(const QString &value);
|
||||||
|
|
||||||
auto GetUserMaterials() const -> QMap<int, QString>;
|
auto GetUserMaterials() const -> QMap<int, QString>;
|
||||||
void SetUserMaterials(const QMap<int, QString> &userMaterials);
|
void SetUserMaterials(const QMap<int, QString> &userMaterials);
|
||||||
|
|
||||||
auto GetDrawMode() const -> const Draw &;
|
auto GetDrawMode() const -> const Draw &;
|
||||||
void SetDrawMode(const Draw &value);
|
void SetDrawMode(const Draw &value);
|
||||||
|
|
||||||
auto getOpeningPattern() const -> bool;
|
auto getOpeningPattern() const -> bool;
|
||||||
void setOpeningPattern();
|
void setOpeningPattern();
|
||||||
|
@ -97,47 +98,49 @@ public:
|
||||||
void PostWarningMessage(const QString &message, QtMsgType severity) const;
|
void PostWarningMessage(const QString &message, QtMsgType severity) const;
|
||||||
|
|
||||||
auto GetDimensionHeight() const -> qreal;
|
auto GetDimensionHeight() const -> qreal;
|
||||||
void SetDimensionHeight(qreal dimensionHeight);
|
void SetDimensionHeight(qreal dimensionHeight);
|
||||||
|
|
||||||
auto GetDimensionSize() const -> qreal;
|
auto GetDimensionSize() const -> qreal;
|
||||||
void SetDimensionSize(qreal dimensionSize);
|
void SetDimensionSize(qreal dimensionSize);
|
||||||
|
|
||||||
auto GetDimensionHip() const -> qreal;
|
auto GetDimensionHip() const -> qreal;
|
||||||
void SetDimensionHip(qreal dimensionHip);
|
void SetDimensionHip(qreal dimensionHip);
|
||||||
|
|
||||||
auto GetDimensionWaist() const -> qreal;
|
auto GetDimensionWaist() const -> qreal;
|
||||||
void SetDimensionWaist(qreal dimensionWaist);
|
void SetDimensionWaist(qreal dimensionWaist);
|
||||||
|
|
||||||
auto GetDimensionHeightLabel() const -> QString;
|
auto GetDimensionHeightLabel() const -> QString;
|
||||||
void SetDimensionHeightLabel(const QString &label);
|
void SetDimensionHeightLabel(const QString &label);
|
||||||
|
|
||||||
auto GetDimensionSizeLabel() const -> QString;
|
auto GetDimensionSizeLabel() const -> QString;
|
||||||
void SetDimensionSizeLabel(const QString &label);
|
void SetDimensionSizeLabel(const QString &label);
|
||||||
|
|
||||||
auto GetDimensionHipLabel() const -> QString;
|
auto GetDimensionHipLabel() const -> QString;
|
||||||
void SetDimensionHipLabel(const QString &label);
|
void SetDimensionHipLabel(const QString &label);
|
||||||
|
|
||||||
auto GetDimensionWaistLabel() const -> QString;
|
auto GetDimensionWaistLabel() const -> QString;
|
||||||
void SetDimensionWaistLabel(const QString &label);
|
void SetDimensionWaistLabel(const QString &label);
|
||||||
|
|
||||||
virtual void OpenSettings() override;
|
virtual void OpenSettings() override;
|
||||||
auto ValentinaSettings() -> VValentinaSettings *;
|
auto ValentinaSettings() -> VValentinaSettings *;
|
||||||
|
|
||||||
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{};
|
||||||
QString m_customerEmail{};
|
QString m_customerEmail{};
|
||||||
|
|
||||||
Unit m_patternUnits{Unit::Cm};
|
Unit m_patternUnits{Unit::Cm};
|
||||||
MeasurementsType m_measurementsType{MeasurementsType::Unknown};
|
MeasurementsType m_measurementsType{MeasurementsType::Unknown};
|
||||||
Unit m_measurementsUnits{Unit::Cm};
|
Unit m_measurementsUnits{Unit::Cm};
|
||||||
VAbstractPattern *m_doc{nullptr};
|
VAbstractPattern *m_doc{nullptr};
|
||||||
VMainGraphicsView *m_sceneView{nullptr};
|
VMainGraphicsView *m_sceneView{nullptr};
|
||||||
QGraphicsScene **m_currentScene{nullptr};
|
QGraphicsScene **m_currentScene{nullptr};
|
||||||
QString m_patternFilePath{};
|
QString m_patternFilePath{};
|
||||||
QMap<int, QString> m_userMaterials{};
|
QMap<int, QString> m_userMaterials{};
|
||||||
|
|
||||||
qreal m_dimensionHeight{0};
|
qreal m_dimensionHeight{0};
|
||||||
qreal m_dimensionSize{0};
|
qreal m_dimensionSize{0};
|
||||||
|
|
|
@ -29,16 +29,17 @@
|
||||||
#include "vcommonsettings.h"
|
#include "vcommonsettings.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QColor>
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QLocale>
|
|
||||||
#include <QMessageLogger>
|
|
||||||
#include <QVariant>
|
|
||||||
#include <QtDebug>
|
|
||||||
#include <QFont>
|
#include <QFont>
|
||||||
#include <QGlobalStatic>
|
#include <QGlobalStatic>
|
||||||
|
#include <QLocale>
|
||||||
#include <QMarginsF>
|
#include <QMarginsF>
|
||||||
#include <QColor>
|
#include <QMessageLogger>
|
||||||
|
#include <QStringLiteral>
|
||||||
|
#include <QVariant>
|
||||||
|
#include <QtDebug>
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||||
#include "vtextcodec.h"
|
#include "vtextcodec.h"
|
||||||
|
@ -46,9 +47,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;
|
||||||
|
@ -71,100 +72,143 @@ 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, (QLatin1String("paths/individual_measurements"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsIndividualMeasurements,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsMultisizeMeasurements, (QLatin1String("paths/standard_measurements"))) // NOLINT
|
(QLatin1String("paths/individual_measurements"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsPattern, (QLatin1String("paths/pattern"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsMultisizeMeasurements,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsTemplates, (QLatin1String("paths/templates"))) // NOLINT
|
(QLatin1String("paths/standard_measurements"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLabelTemplate, (QLatin1String("paths/labels"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsPattern, (QLatin1String("paths/pattern"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsTemplates, (QLatin1String("paths/templates"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLabelTemplate, (QLatin1String("paths/labels"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsManualLayouts, (QLatin1String("paths/manualLayouts"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsManualLayouts, (QLatin1String("paths/manualLayouts"))) // NOLINT
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationOsSeparator, (QLatin1String("configuration/osSeparator"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationOsSeparator,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveState, (QLatin1String("configuration/autosave/state"))) // NOLINT
|
(QLatin1String("configuration/osSeparator"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveTime , (QLatin1String("configuration/autosave/time"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveState,
|
||||||
|
(QLatin1String("configuration/autosave/state"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAutosaveTime,
|
||||||
|
(QLatin1String("configuration/autosave/time"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationLocale, (QLatin1String("configuration/locale"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationLocale, (QLatin1String("configuration/locale"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPMSystemCode, (QLatin1String("configuration/pmscode"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationPieceLabelLocale, // NOLINT
|
||||||
|
(QLatin1String("configuration/pieceLabelLocale")))
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPMSystemCode, (QLatin1String("configuration/pmscode"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationUnit, (QLatin1String("configuration/unit"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationUnit, (QLatin1String("configuration/unit"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmItemDeletion, (QLatin1String("configuration/confirm_item_deletion"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmItemDeletion,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmFormatRewriting, (QLatin1String("configuration/confirm_format_rewriting"))) // NOLINT
|
(QLatin1String("configuration/confirm_item_deletion"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAskContinueIfLayoutStale, (QLatin1String("configuration/askContinueIfLayoutStale"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationConfirmFormatRewriting,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationToolBarStyle, (QLatin1String("configuration/tool_bar_style"))) // NOLINT
|
(QLatin1String("configuration/confirm_format_rewriting"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationFreeCurveMode, (QLatin1String("configuration/freeCurveMode"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationAskContinueIfLayoutStale,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDoubleClickZoomFitBestCurrentPP, (QLatin1String("configuration/doubleClickZoomFitBestCurrentPP"))) // NOLINT
|
(QLatin1String("configuration/askContinueIfLayoutStale"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationInteractiveTools, (QLatin1String("configuration/interactiveTools"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationToolBarStyle,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDontUseNativeDialog, (QLatin1String("configuration/dontUseNativeDialog"))) // NOLINT
|
(QLatin1String("configuration/tool_bar_style"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationFreeCurveMode,
|
||||||
|
(QLatin1String("configuration/freeCurveMode"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDoubleClickZoomFitBestCurrentPP,
|
||||||
|
(QLatin1String("configuration/doubleClickZoomFitBestCurrentPP"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationInteractiveTools,
|
||||||
|
(QLatin1String("configuration/interactiveTools"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDontUseNativeDialog,
|
||||||
|
(QLatin1String("configuration/dontUseNativeDialog"))) // NOLINT
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUndo, (QLatin1String("pattern/undo"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUndo, (QLatin1String("pattern/undo"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForbidFlipping, (QLatin1String("pattern/forbidFlipping"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForbidFlipping,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForceFlipping, (QLatin1String("pattern/forceFlipping"))) // NOLINT
|
(QLatin1String("pattern/forbidFlipping"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternSewLineOnDrawing, (QLatin1String("pattern/sewLineOnDrawing"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternForceFlipping,
|
||||||
|
(QLatin1String("pattern/forceFlipping"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternSewLineOnDrawing,
|
||||||
|
(QLatin1String("pattern/sewLineOnDrawing"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternHideMainPath, (QLatin1String("pattern/hideMainPath"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, 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, (QLatin1String("pattern/defaultSeamAllowance"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternDefaultSeamAllowance,
|
||||||
|
(QLatin1String("pattern/defaultSeamAllowance"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFont, (QLatin1String("pattern/labelFont"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, 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, (QLatin1String("pattern/curveApproximationScale"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternCurveApproximationScale,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowCurveDetails, (QLatin1String("pattern/showCurveDetails"))) // NOLINT
|
(QLatin1String("pattern/curveApproximationScale"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternPieceShowMainPath, (QLatin1String("pattern/pieceShowMainPath"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowCurveDetails,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFontSize, (QLatin1String("pattern/labelFontSize"))) // NOLINT
|
(QLatin1String("pattern/showCurveDetails"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternPieceShowMainPath,
|
||||||
|
(QLatin1String("pattern/pieceShowMainPath"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFontSize,
|
||||||
|
(QLatin1String("pattern/labelFontSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternHideLabels, (QLatin1String("pattern/hideLabels"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternHideLabels, (QLatin1String("pattern/hideLabels"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowAccuracyRadius, (QLatin1String("pattern/showAccuracyRadius"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowAccuracyRadius,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUseOpenGLRender, (QLatin1String("pattern/useOpenGLRender"))) // NOLINT
|
(QLatin1String("pattern/showAccuracyRadius"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternGraphicalOutput, (QLatin1String("pattern/graphicalOutput"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternUseOpenGLRender,
|
||||||
|
(QLatin1String("pattern/useOpenGLRender"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternGraphicalOutput,
|
||||||
|
(QLatin1String("pattern/graphicalOutput"))) // NOLINT
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRecentFileList, (QLatin1String("recentFileList"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRecentFileList, (QLatin1String("recentFileList"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRestoreFileList, (QLatin1String("restoreFileList"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, 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, (QLatin1String("configuration/dark_mode"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDarkMode,
|
||||||
|
(QLatin1String("configuration/dark_mode"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPreferenceDialogSize, (QLatin1String("preferenceDialogSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPreferenceDialogSize, (QLatin1String("preferenceDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingToolSeamAllowanceDialogSize, (QLatin1String("toolSeamAllowanceDialogSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingToolSeamAllowanceDialogSize,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingIncrementsDialogSize, (QLatin1String("toolIncrementsDialogSize"))) // NOLINT
|
(QLatin1String("toolSeamAllowanceDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFormulaWizardDialogSize, (QLatin1String("formulaWizardDialogSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingIncrementsDialogSize,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFinalMeasurementsDialogSize, (QLatin1String("finalMeasurementsDialogSize"))) // NOLINT
|
(QLatin1String("toolIncrementsDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSettingsDialogSize, (QLatin1String("layoutSettingsDialogSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFormulaWizardDialogSize,
|
||||||
|
(QLatin1String("formulaWizardDialogSize"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingFinalMeasurementsDialogSize,
|
||||||
|
(QLatin1String("finalMeasurementsDialogSize"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSettingsDialogSize,
|
||||||
|
(QLatin1String("layoutSettingsDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDialogSplinePathSize, (QLatin1String("splinePathDialogSize"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDialogSplinePathSize, (QLatin1String("splinePathDialogSize"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingAutomaticallyCheckUpdates, (QLatin1String("automaticallyCheckUpdates"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingAutomaticallyCheckUpdates,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLatestSkippedVersion, (QLatin1String("lastestSkippedVersion"))) // NOLINT
|
(QLatin1String("automaticallyCheckUpdates"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLatestSkippedVersion,
|
||||||
|
(QLatin1String("lastestSkippedVersion"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDateOfLastRemind, (QLatin1String("dateOfLastRemind"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, 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
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVCodec, (QLatin1String("csv/withCodec"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVCodec, (QLatin1String("csv/withCodec"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingCSVSeparator, (QLatin1String("csv/withSeparator"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, 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, (QLatin1String("label/userDateFormats"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserDateFormats,
|
||||||
|
(QLatin1String("label/userDateFormats"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelTimeFormat, (QLatin1String("label/timeFormat"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelTimeFormat, (QLatin1String("label/timeFormat"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserTimeFormats, (QLatin1String("label/userTimeFormats"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserTimeFormats,
|
||||||
|
(QLatin1String("label/userTimeFormats"))) // NOLINT
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingDuration, (QLatin1String("scrolling/duration"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingDuration, (QLatin1String("scrolling/duration"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingUpdateInterval, (QLatin1String("scrolling/updateInterval"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingUpdateInterval,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingSensorMouseScale, (QLatin1String("scrolling/sensorMouseScale"))) // NOLINT
|
(QLatin1String("scrolling/updateInterval"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingWheelMouseScale, (QLatin1String("scrolling/wheelMouseScale"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingSensorMouseScale,
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingAcceleration, (QLatin1String("scrolling/acceleration"))) // NOLINT
|
(QLatin1String("scrolling/sensorMouseScale"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingWheelMouseScale,
|
||||||
|
(QLatin1String("scrolling/wheelMouseScale"))) // NOLINT
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingScrollingAcceleration,
|
||||||
|
(QLatin1String("scrolling/acceleration"))) // NOLINT
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingTiledPDFMargins, (QLatin1String("tiledPDF/margins"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingTiledPDFMargins, (QLatin1String("tiledPDF/margins"))) // NOLINT
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingTiledPDFOrientation, (QLatin1String("tiledPDF/orientation"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, 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, (QLatin1String("watermarkCustomColors"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingWatermarkCustomColors,
|
||||||
|
(QLatin1String("watermarkCustomColors"))) // NOLINT
|
||||||
|
|
||||||
// Reading settings file is very expensive, cache curve approximation to speed up getting value
|
// 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)
|
||||||
Q_GLOBAL_STATIC(QString, localeCached) // NOLINT
|
Q_GLOBAL_STATIC(QString, localeCached) // NOLINT
|
||||||
qreal lineWidthCached = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
qreal lineWidthCached = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
int labelFontSizeCached = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
int labelFontSizeCached = 0; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
int pieceShowMainPath = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
int pieceShowMainPath = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
int scrollingDurationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
int scrollingDurationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
int scrollingUpdateIntervalCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
int scrollingUpdateIntervalCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
qreal scrollingSensorMouseScaleCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
qreal scrollingSensorMouseScaleCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
qreal scrollingWheelMouseScaleCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
qreal scrollingWheelMouseScaleCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
qreal scrollingAccelerationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
qreal scrollingAccelerationCached = -1; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto ClearFormats(const QStringList &predefinedFormats, QStringList formats) -> QStringList
|
auto ClearFormats(const QStringList &predefinedFormats, QStringList formats) -> QStringList
|
||||||
|
@ -175,7 +219,7 @@ auto ClearFormats(const QStringList &predefinedFormats, QStringList formats) ->
|
||||||
}
|
}
|
||||||
return formats;
|
return formats;
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, commonIniFilename, (QLatin1String("common"))) // NOLINT
|
Q_GLOBAL_STATIC_WITH_ARGS(const QString, commonIniFilename, (QLatin1String("common"))) // NOLINT
|
||||||
|
|
||||||
|
@ -272,7 +316,7 @@ auto PrepareStandardFiles(const QString ¤tPath, const QString &standardPat
|
||||||
QDir currentPathDir(currentPath);
|
QDir currentPathDir(currentPath);
|
||||||
if ((currentPath == defPath || not currentPathDir.exists()) && standardPathDir.exists())
|
if ((currentPath == defPath || not currentPathDir.exists()) && standardPathDir.exists())
|
||||||
{
|
{
|
||||||
const QDir localdata (defPath);
|
const QDir localdata(defPath);
|
||||||
if (localdata.mkpath(QChar('.')))
|
if (localdata.mkpath(QChar('.')))
|
||||||
{
|
{
|
||||||
SymlinkCopyDirRecursive(standardPath, defPath, false);
|
SymlinkCopyDirRecursive(standardPath, defPath, false);
|
||||||
|
@ -281,18 +325,20 @@ auto PrepareStandardFiles(const QString ¤tPath, const QString &standardPat
|
||||||
}
|
}
|
||||||
return currentPath;
|
return currentPath;
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VCommonSettings::VCommonSettings(Format format, Scope scope, const QString &organization,
|
VCommonSettings::VCommonSettings(Format format, Scope scope, const QString &organization, const QString &application,
|
||||||
const QString &application, QObject *parent)
|
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
|
||||||
|
@ -357,7 +403,7 @@ auto VCommonSettings::LabelTemplatesPath() -> QString
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::PrepareStandardTemplates(const QString & currentPath) -> QString
|
auto VCommonSettings::PrepareStandardTemplates(const QString ¤tPath) -> QString
|
||||||
{
|
{
|
||||||
return PrepareStandardFiles(currentPath, StandardTemplatesPath(), GetDefPathTemplate());
|
return PrepareStandardFiles(currentPath, StandardTemplatesPath(), GetDefPathTemplate());
|
||||||
}
|
}
|
||||||
|
@ -542,8 +588,8 @@ auto VCommonSettings::GetAutosaveTime() const -> int
|
||||||
int val = value(*settingConfigurationAutosaveTime, 1).toInt(&ok);
|
int val = value(*settingConfigurationAutosaveTime, 1).toInt(&ok);
|
||||||
if (not ok)
|
if (not ok)
|
||||||
{
|
{
|
||||||
qDebug()<<"Could not convert value"<<value(*settingConfigurationAutosaveTime, 1)
|
qDebug() << "Could not convert value" << value(*settingConfigurationAutosaveTime, 1)
|
||||||
<<"to int. Return default value for autosave time"<<1<<"minutes.";
|
<< "to int. Return default value for autosave time" << 1 << "minutes.";
|
||||||
val = 1;
|
val = 1;
|
||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
|
@ -581,6 +627,18 @@ 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
|
||||||
{
|
{
|
||||||
|
@ -596,8 +654,8 @@ void VCommonSettings::SetPMSystemCode(const QString &value)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::GetUnit() const -> QString
|
auto VCommonSettings::GetUnit() const -> QString
|
||||||
{
|
{
|
||||||
return value(*settingConfigurationUnit,
|
return value(*settingConfigurationUnit, QLocale().measurementSystem() == QLocale::MetricSystem ? unitCM : unitINCH)
|
||||||
QLocale().measurementSystem() == QLocale::MetricSystem ? unitCM : unitINCH).toString();
|
.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -666,7 +724,6 @@ void VCommonSettings::SetDarkMode(const bool &value)
|
||||||
setValue(*settingConfigurationDarkMode, value);
|
setValue(*settingConfigurationDarkMode, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::IsFreeCurveMode() const -> bool
|
auto VCommonSettings::IsFreeCurveMode() const -> bool
|
||||||
{
|
{
|
||||||
|
@ -710,8 +767,8 @@ auto VCommonSettings::GetUndoCount() const -> int
|
||||||
int val = value(*settingPatternUndo, 0).toInt(&ok);
|
int val = value(*settingPatternUndo, 0).toInt(&ok);
|
||||||
if (not ok)
|
if (not ok)
|
||||||
{
|
{
|
||||||
qDebug()<<"Could not convert value"<<value(*settingPatternUndo, 0)
|
qDebug() << "Could not convert value" << value(*settingPatternUndo, 0)
|
||||||
<<"to int. Return default value for undo counts 0 (no limit).";
|
<< "to int. Return default value for undo counts 0 (no limit).";
|
||||||
val = 0;
|
val = 0;
|
||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
|
@ -789,7 +846,7 @@ auto VCommonSettings::GetPreferenceDialogSize() const -> QSize
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VCommonSettings::SetPreferenceDialogSize(const QSize& sz)
|
void VCommonSettings::SetPreferenceDialogSize(const QSize &sz)
|
||||||
{
|
{
|
||||||
setValue(*settingPreferenceDialogSize, sz);
|
setValue(*settingPreferenceDialogSize, sz);
|
||||||
}
|
}
|
||||||
|
@ -1025,7 +1082,7 @@ auto VCommonSettings::GetDefCSVCodec() -> int
|
||||||
void VCommonSettings::SetCSVSeparator(const QChar &separator)
|
void VCommonSettings::SetCSVSeparator(const QChar &separator)
|
||||||
{
|
{
|
||||||
QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename);
|
QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename);
|
||||||
switch(separator.toLatin1())
|
switch (separator.toLatin1())
|
||||||
{
|
{
|
||||||
case '\t':
|
case '\t':
|
||||||
settings.setValue(*settingCSVSeparator, 0);
|
settings.setValue(*settingCSVSeparator, 0);
|
||||||
|
@ -1047,7 +1104,7 @@ auto VCommonSettings::GetCSVSeparator() const -> QChar
|
||||||
{
|
{
|
||||||
QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename);
|
QSettings settings(this->format(), this->scope(), this->organizationName(), *commonIniFilename);
|
||||||
const quint8 separator = static_cast<quint8>(settings.value(*settingCSVSeparator, 3).toUInt());
|
const quint8 separator = static_cast<quint8>(settings.value(*settingCSVSeparator, 3).toUInt());
|
||||||
switch(separator)
|
switch (separator)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return QChar('\t');
|
return QChar('\t');
|
||||||
|
@ -1101,9 +1158,8 @@ auto VCommonSettings::GetDefaultSeamAllowance() -> double
|
||||||
double val = value(*settingPatternDefaultSeamAllowance, -1).toDouble(&ok);
|
double val = value(*settingPatternDefaultSeamAllowance, -1).toDouble(&ok);
|
||||||
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 "
|
<< "to real. Return default value for default seam allowance is " << defaultValue << QChar('.');
|
||||||
<< defaultValue << QChar('.');
|
|
||||||
val = defaultValue;
|
val = defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1188,11 +1244,11 @@ void VCommonSettings::SetShowAccuracyRadius(bool value)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::GetLabelDateFormat() const -> QString
|
auto VCommonSettings::GetLabelDateFormat() const -> QString
|
||||||
{
|
{
|
||||||
const QString format = value(*settingLabelDateFormat,
|
const QString format =
|
||||||
ConstFirst<QString> (VCommonSettings::PredefinedDateFormats())).toString();
|
value(*settingLabelDateFormat, 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());
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1204,29 +1260,26 @@ void VCommonSettings::SetLabelDateFormat(const QString &format)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::PredefinedDateFormats() -> QStringList
|
auto VCommonSettings::PredefinedDateFormats() -> QStringList
|
||||||
{
|
{
|
||||||
return QStringList
|
return QStringList{"MM-dd-yyyy",
|
||||||
{
|
"d/M/yy",
|
||||||
"MM-dd-yyyy",
|
"ddddMMMM dd, yyyy",
|
||||||
"d/M/yy",
|
"dd/MM/yy",
|
||||||
"ddddMMMM dd, yyyy",
|
"dd/MM/yyyy",
|
||||||
"dd/MM/yy",
|
"MMM d, yy",
|
||||||
"dd/MM/yyyy",
|
"MMM d, yyyy",
|
||||||
"MMM d, yy",
|
"d. MMM. yyyy",
|
||||||
"MMM d, yyyy",
|
"MMMM d, yyyy",
|
||||||
"d. MMM. yyyy",
|
"d. MMMM yyyy",
|
||||||
"MMMM d, yyyy",
|
"ddd, MMM d, yy",
|
||||||
"d. MMMM yyyy",
|
"ddd dd/MMM yy",
|
||||||
"ddd, MMM d, yy",
|
"ddd, MMMM d, yyyy",
|
||||||
"ddd dd/MMM yy",
|
"ddddMMMM d, yyyy",
|
||||||
"ddd, MMMM d, yyyy",
|
"MM-dd",
|
||||||
"ddddMMMM d, yyyy",
|
"yy-MM-dd",
|
||||||
"MM-dd",
|
"yyyy-MM-dd",
|
||||||
"yy-MM-dd",
|
"MM/yy",
|
||||||
"yyyy-MM-dd",
|
"MMM dd",
|
||||||
"MM/yy",
|
"MMMM"};
|
||||||
"MMM dd",
|
|
||||||
"MMMM"
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1244,11 +1297,11 @@ void VCommonSettings::SetUserDefinedDateFormats(const QStringList &formats)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::GetLabelTimeFormat() const -> QString
|
auto VCommonSettings::GetLabelTimeFormat() const -> QString
|
||||||
{
|
{
|
||||||
const QString format = value(*settingLabelTimeFormat,
|
const QString format =
|
||||||
ConstFirst<QString> (VCommonSettings::PredefinedTimeFormats())).toString();
|
value(*settingLabelTimeFormat, 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());
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1260,13 +1313,7 @@ void VCommonSettings::SetLabelTimeFormat(const QString &format)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::PredefinedTimeFormats() -> QStringList
|
auto VCommonSettings::PredefinedTimeFormats() -> QStringList
|
||||||
{
|
{
|
||||||
return QStringList
|
return QStringList{"hh:mm:ss", "hh:mm:ss AP", "hh:mm", "hh:mm AP"};
|
||||||
{
|
|
||||||
"hh:mm:ss",
|
|
||||||
"hh:mm:ss AP",
|
|
||||||
"hh:mm",
|
|
||||||
"hh:mm AP"
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1383,7 +1430,7 @@ auto VCommonSettings::WidthMainLine() const -> qreal
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCommonSettings::WidthHairLine() const -> qreal
|
auto VCommonSettings::WidthHairLine() const -> qreal
|
||||||
{
|
{
|
||||||
return WidthMainLine()/3.0;
|
return WidthMainLine() / 3.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1512,8 +1559,8 @@ void VCommonSettings::SetGraphicalOutput(const bool &value)
|
||||||
auto VCommonSettings::GetTiledPDFMargins(const Unit &unit) const -> QMarginsF
|
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(
|
return UnitConvertor(ValueOrDef<QMarginsF>(*this, *settingTiledPDFMargins, QMarginsF(10, 10, 10, 10)), Unit::Mm,
|
||||||
ValueOrDef<QMarginsF>(*this, *settingTiledPDFMargins, QMarginsF(10, 10, 10, 10)), Unit::Mm, unit);
|
unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1539,7 +1586,7 @@ auto VCommonSettings::GetTiledPDFOrientation() const -> PageOrientation
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VCommonSettings::SetTiledPDFOrientation(PageOrientation value)
|
void VCommonSettings::SetTiledPDFOrientation(PageOrientation value)
|
||||||
{
|
{
|
||||||
setValue(*settingTiledPDFOrientation, static_cast<bool> (value));
|
setValue(*settingTiledPDFOrientation, static_cast<bool>(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -38,19 +38,18 @@
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
|
||||||
#include "../vmisc/def.h"
|
|
||||||
#include "../vlayout/vlayoutdef.h"
|
#include "../vlayout/vlayoutdef.h"
|
||||||
|
#include "../vmisc/def.h"
|
||||||
|
|
||||||
class QMarginsF;
|
class QMarginsF;
|
||||||
|
|
||||||
class VCommonSettings : public QSettings
|
class VCommonSettings : public QSettings
|
||||||
{
|
{
|
||||||
Q_OBJECT // NOLINT
|
Q_OBJECT // NOLINT
|
||||||
public:
|
public : VCommonSettings(Format format, Scope scope, const QString &organization,
|
||||||
VCommonSettings(Format format, Scope scope, const QString &organization, const QString &application = QString(),
|
const QString &application = QString(), QObject *parent = nullptr);
|
||||||
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;
|
||||||
|
|
||||||
static auto SharePath(const QString &shareItem) -> QString;
|
static auto SharePath(const QString &shareItem) -> QString;
|
||||||
static auto MultisizeTablesPath() -> QString;
|
static auto MultisizeTablesPath() -> QString;
|
||||||
|
@ -100,6 +99,10 @@ public:
|
||||||
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);
|
||||||
|
|
||||||
|
@ -146,25 +149,25 @@ public:
|
||||||
void SetToolbarsState(const QByteArray &value);
|
void SetToolbarsState(const QByteArray &value);
|
||||||
|
|
||||||
auto GetPreferenceDialogSize() const -> QSize;
|
auto GetPreferenceDialogSize() const -> QSize;
|
||||||
void SetPreferenceDialogSize(const QSize& sz);
|
void SetPreferenceDialogSize(const QSize &sz);
|
||||||
|
|
||||||
auto GetToolSeamAllowanceDialogSize() const -> QSize;
|
auto GetToolSeamAllowanceDialogSize() const -> QSize;
|
||||||
void SetToolSeamAllowanceDialogSize(const QSize& sz);
|
void SetToolSeamAllowanceDialogSize(const QSize &sz);
|
||||||
|
|
||||||
auto GetFormulaWizardDialogSize() const -> QSize;
|
auto GetFormulaWizardDialogSize() const -> QSize;
|
||||||
void SetFormulaWizardDialogSize(const QSize& sz);
|
void SetFormulaWizardDialogSize(const QSize &sz);
|
||||||
|
|
||||||
auto GetIncrementsDialogSize() const -> QSize;
|
auto GetIncrementsDialogSize() const -> QSize;
|
||||||
void SetIncrementsDialogSize(const QSize& sz);
|
void SetIncrementsDialogSize(const QSize &sz);
|
||||||
|
|
||||||
auto GetFinalMeasurementsDialogSize() const -> QSize;
|
auto GetFinalMeasurementsDialogSize() const -> QSize;
|
||||||
void SetFinalMeasurementsDialogSize(const QSize& sz);
|
void SetFinalMeasurementsDialogSize(const QSize &sz);
|
||||||
|
|
||||||
auto GetLayoutSettingsDialogSize() const -> QSize;
|
auto GetLayoutSettingsDialogSize() const -> QSize;
|
||||||
void SetLayoutSettingsDialogSize(const QSize& sz);
|
void SetLayoutSettingsDialogSize(const QSize &sz);
|
||||||
|
|
||||||
auto GetDialogSplinePathSize() const -> QSize;
|
auto GetDialogSplinePathSize() const -> QSize;
|
||||||
void SetDialogSplinePathSize(const QSize& sz);
|
void SetDialogSplinePathSize(const QSize &sz);
|
||||||
|
|
||||||
auto IsAutomaticallyCheckUpdates() const -> bool;
|
auto IsAutomaticallyCheckUpdates() const -> bool;
|
||||||
void SetAutomaticallyCheckUpdates(bool value);
|
void SetAutomaticallyCheckUpdates(bool value);
|
||||||
|
@ -300,13 +303,12 @@ public:
|
||||||
void SetGraphicalOutput(const bool &value);
|
void SetGraphicalOutput(const bool &value);
|
||||||
|
|
||||||
auto GetWatermarkEditorSize() const -> QSize;
|
auto GetWatermarkEditorSize() const -> QSize;
|
||||||
void SetWatermarkEditorSize(const QSize& sz);
|
void SetWatermarkEditorSize(const QSize &sz);
|
||||||
|
|
||||||
auto GetWatermarkCustomColors() const -> QVector<QColor>;
|
auto GetWatermarkCustomColors() const -> QVector<QColor>;
|
||||||
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;
|
||||||
|
@ -337,7 +339,7 @@ inline auto VCommonSettings::MaximalLineWidth() -> qreal
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template<typename T>
|
template <typename T>
|
||||||
auto VCommonSettings::GetCachedValue(const QSettings &settings, T &cache, const QString &setting, T defValue,
|
auto VCommonSettings::GetCachedValue(const QSettings &settings, T &cache, const QString &setting, T defValue,
|
||||||
T valueMin, T valueMax) -> T
|
T valueMin, T valueMax) -> T
|
||||||
{
|
{
|
||||||
|
@ -359,8 +361,8 @@ inline auto VCommonSettings::ValueOrDef(const QSettings &settings, const QString
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline auto VCommonSettings::ValueOrDef<Cases>(const QSettings &settings, const QString &setting,
|
inline auto VCommonSettings::ValueOrDef<Cases>(const QSettings &settings, const QString &setting, const Cases &defValue)
|
||||||
const Cases &defValue) -> Cases
|
-> 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::GetAreaShartName() const -> QString
|
auto VPieceLabelData::GetAreaShortName() const -> QString
|
||||||
{
|
{
|
||||||
return d->m_areaShortName;
|
return d->m_areaShortName;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VPieceLabelData::SetAreaShartName(const QString &val)
|
void VPieceLabelData::SetAreaShortName(const QString &val)
|
||||||
{
|
{
|
||||||
d->m_areaShortName = val;
|
d->m_areaShortName = val;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,9 +80,9 @@ public:
|
||||||
|
|
||||||
auto IsOnFold() const -> bool;
|
auto IsOnFold() const -> bool;
|
||||||
void SetOnFold(bool onFold);
|
void SetOnFold(bool onFold);
|
||||||
|
|
||||||
auto GetAreaShartName() const -> QString;
|
auto GetAreaShortName() const -> QString;
|
||||||
void SetAreaShartName(const QString &val);
|
void SetAreaShortName(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 <climits>
|
#include <QLoggingCategory>
|
||||||
|
#include <QUuid>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
#include <QUuid>
|
#include <climits>
|
||||||
#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/vcurvelength.h"
|
|
||||||
#include "variables/vcurveclength.h"
|
#include "variables/vcurveclength.h"
|
||||||
|
#include "variables/vcurvelength.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"
|
||||||
|
@ -72,7 +72,7 @@ QMap<QString, quint32> VContainer::copyCounter = QMap<QString, quint32>();
|
||||||
* @brief VContainer create empty container
|
* @brief VContainer create empty container
|
||||||
*/
|
*/
|
||||||
VContainer::VContainer(const VTranslateVars *trVars, const Unit *patternUnit, const QString &nspace)
|
VContainer::VContainer(const VTranslateVars *trVars, const Unit *patternUnit, const QString &nspace)
|
||||||
:d(new VContainerData(trVars, patternUnit, nspace))
|
: d(new VContainerData(trVars, patternUnit, nspace))
|
||||||
{
|
{
|
||||||
if (nspace.isEmpty())
|
if (nspace.isEmpty())
|
||||||
{
|
{
|
||||||
|
@ -108,7 +108,7 @@ VContainer::VContainer(const VTranslateVars *trVars, const Unit *patternUnit, co
|
||||||
*/
|
*/
|
||||||
auto VContainer::operator=(const VContainer &data) -> VContainer &
|
auto VContainer::operator=(const VContainer &data) -> VContainer &
|
||||||
{
|
{
|
||||||
if ( &data == this )
|
if (&data == this)
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -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
|
VContainer::VContainer(VContainer &&data) Q_DECL_NOTHROW : d(std::move(data.d))
|
||||||
:d(std::move(data.d))
|
{
|
||||||
{}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VContainer::operator=(VContainer &&data) Q_DECL_NOTHROW->VContainer &
|
auto VContainer::operator=(VContainer &&data) Q_DECL_NOTHROW->VContainer &
|
||||||
|
@ -137,14 +137,15 @@ auto VContainer::operator=(VContainer &&data) Q_DECL_NOTHROW->VContainer &
|
||||||
* @param data container
|
* @param data container
|
||||||
*/
|
*/
|
||||||
VContainer::VContainer(const VContainer &data)
|
VContainer::VContainer(const VContainer &data)
|
||||||
:d(data.d)
|
: d(data.d)
|
||||||
{
|
{
|
||||||
++copyCounter[d->nspace];
|
++copyCounter[d->nspace];
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VContainer::~VContainer()
|
VContainer::~VContainer()
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VContainer::UniqueNamespace() -> QString
|
auto VContainer::UniqueNamespace() -> QString
|
||||||
|
@ -153,8 +154,7 @@ 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,10 +204,8 @@ 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -330,12 +328,12 @@ auto VContainer::getId() const -> quint32
|
||||||
*/
|
*/
|
||||||
auto VContainer::getNextId() const -> quint32
|
auto VContainer::getNextId() const -> quint32
|
||||||
{
|
{
|
||||||
//TODO. Current count of ids are very big and allow us save time before someone will reach its max value.
|
// TODO. Current count of ids are very big and allow us save time before someone will reach its max value.
|
||||||
//Better way, of cource, is to seek free ids inside the set of values and reuse them.
|
// Better way, of cource, is to seek free ids inside the set of values and reuse them.
|
||||||
//But for now better to keep it as it is now.
|
// But for now better to keep it as it is now.
|
||||||
if (_id.value(d->nspace) == UINT_MAX)
|
if (_id.value(d->nspace) == UINT_MAX)
|
||||||
{
|
{
|
||||||
qCritical()<<(tr("Number of free id exhausted."));
|
qCritical() << (tr("Number of free id exhausted."));
|
||||||
}
|
}
|
||||||
_id[d->nspace]++;
|
_id[d->nspace]++;
|
||||||
return _id.value(d->nspace);
|
return _id.value(d->nspace);
|
||||||
|
@ -348,7 +346,7 @@ void VContainer::UpdateId(quint32 newId, const QString &nspace)
|
||||||
{
|
{
|
||||||
if (newId > _id.value(nspace))
|
if (newId > _id.value(nspace))
|
||||||
{
|
{
|
||||||
_id[nspace] = newId;
|
_id[nspace] = newId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -392,15 +390,9 @@ 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,
|
ClearVariables(QVector<VarType>{VarType::Increment, VarType::IncrementSeparator, VarType::LineAngle,
|
||||||
VarType::IncrementSeparator,
|
VarType::LineLength, VarType::CurveLength, VarType::CurveCLength,
|
||||||
VarType::LineAngle,
|
VarType::ArcRadius, VarType::CurveAngle, VarType::PieceExternalArea,
|
||||||
VarType::LineLength,
|
|
||||||
VarType::CurveLength,
|
|
||||||
VarType::CurveCLength,
|
|
||||||
VarType::ArcRadius,
|
|
||||||
VarType::CurveAngle,
|
|
||||||
VarType::PieceExternalArea,
|
|
||||||
VarType::PieceSeamLineArea});
|
VarType::PieceSeamLineArea});
|
||||||
ClearGObjects();
|
ClearGObjects();
|
||||||
ClearUniqueNames();
|
ClearUniqueNames();
|
||||||
|
@ -439,7 +431,7 @@ void VContainer::ClearVariables(const QVector<VarType> &types)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
QHash<QString, QSharedPointer<VInternalVariable> >::iterator i;
|
QHash<QString, QSharedPointer<VInternalVariable>>::iterator i;
|
||||||
for (i = d->variables.begin(); i != d->variables.end();)
|
for (i = d->variables.begin(); i != d->variables.end();)
|
||||||
{
|
{
|
||||||
if (types.contains(i.value()->GetType()))
|
if (types.contains(i.value()->GetType()))
|
||||||
|
@ -495,9 +487,8 @@ void VContainer::AddArc(const QSharedPointer<VAbstractCurve> &arc, const quint32
|
||||||
void VContainer::AddCurve(const QSharedPointer<VAbstractCurve> &curve, const quint32 &id, quint32 parentId)
|
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 &&
|
if (curveType != GOType::Spline && curveType != GOType::SplinePath && curveType != GOType::CubicBezier &&
|
||||||
curveType != GOType::CubicBezier && curveType != GOType::CubicBezierPath &&
|
curveType != GOType::CubicBezierPath && curveType != GOType::Arc && curveType != GOType::EllipticalArc)
|
||||||
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)));
|
||||||
}
|
}
|
||||||
|
@ -595,8 +586,8 @@ auto VContainer::DataMeasurements() const -> const QMap<QString, QSharedPointer<
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VContainer::DataMeasurementsWithSeparators() const -> const QMap<QString, QSharedPointer<VMeasurement>>
|
auto VContainer::DataMeasurementsWithSeparators() const -> const QMap<QString, QSharedPointer<VMeasurement>>
|
||||||
{
|
{
|
||||||
QMap<QString, QSharedPointer<VMeasurement> > measurements = DataVar<VMeasurement>(VarType::Measurement);
|
QMap<QString, QSharedPointer<VMeasurement>> measurements = DataVar<VMeasurement>(VarType::Measurement);
|
||||||
QMap<QString, QSharedPointer<VMeasurement> > separators = DataVar<VMeasurement>(VarType::MeasurementSeparator);
|
QMap<QString, QSharedPointer<VMeasurement>> separators = DataVar<VMeasurement>(VarType::MeasurementSeparator);
|
||||||
|
|
||||||
Insert(measurements, separators);
|
Insert(measurements, separators);
|
||||||
|
|
||||||
|
@ -612,8 +603,8 @@ auto VContainer::DataIncrements() const -> const QMap<QString, QSharedPointer<VI
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VContainer::DataIncrementsWithSeparators() const -> const QMap<QString, QSharedPointer<VIncrement>>
|
auto VContainer::DataIncrementsWithSeparators() const -> const QMap<QString, QSharedPointer<VIncrement>>
|
||||||
{
|
{
|
||||||
QMap<QString, QSharedPointer<VIncrement> > increments = DataVar<VIncrement>(VarType::Increment);
|
QMap<QString, QSharedPointer<VIncrement>> increments = DataVar<VIncrement>(VarType::Increment);
|
||||||
QMap<QString, QSharedPointer<VIncrement> > separators = DataVar<VIncrement>(VarType::IncrementSeparator);
|
QMap<QString, QSharedPointer<VIncrement>> separators = DataVar<VIncrement>(VarType::IncrementSeparator);
|
||||||
|
|
||||||
Insert(increments, separators);
|
Insert(increments, separators);
|
||||||
|
|
||||||
|
@ -659,8 +650,8 @@ auto VContainer::DataAnglesCurves() const -> const QMap<QString, QSharedPointer<
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VContainer::DataPieceArea() const -> const QMap<QString, QSharedPointer<VPieceArea>>
|
auto VContainer::DataPieceArea() const -> const QMap<QString, QSharedPointer<VPieceArea>>
|
||||||
{
|
{
|
||||||
QMap<QString, QSharedPointer<VPieceArea> > externalAreas = DataVar<VPieceArea>(VarType::PieceExternalArea);
|
QMap<QString, QSharedPointer<VPieceArea>> externalAreas = DataVar<VPieceArea>(VarType::PieceExternalArea);
|
||||||
QMap<QString, QSharedPointer<VPieceArea> > seamLineAreas = DataVar<VPieceArea>(VarType::PieceSeamLineArea);
|
QMap<QString, QSharedPointer<VPieceArea>> seamLineAreas = DataVar<VPieceArea>(VarType::PieceSeamLineArea);
|
||||||
|
|
||||||
Insert(externalAreas, seamLineAreas);
|
Insert(externalAreas, seamLineAreas);
|
||||||
|
|
||||||
|
@ -722,9 +713,9 @@ auto VContainer::GetTrVars() const -> const VTranslateVars *
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <typename T> auto VContainer::DataVar(const VarType &type) const -> const QMap<QString, QSharedPointer<T>>
|
template <typename T> auto VContainer::DataVar(const VarType &type) const -> const QMap<QString, QSharedPointer<T>>
|
||||||
{
|
{
|
||||||
QMap<QString, QSharedPointer<T> > map;
|
QMap<QString, QSharedPointer<T>> map;
|
||||||
//Sorting QHash by id
|
// Sorting QHash by id
|
||||||
QHash<QString, QSharedPointer<VInternalVariable> >::const_iterator i;
|
QHash<QString, QSharedPointer<VInternalVariable>>::const_iterator i;
|
||||||
for (i = d->variables.constBegin(); i != d->variables.constEnd(); ++i)
|
for (i = d->variables.constBegin(); i != d->variables.constEnd(); ++i)
|
||||||
{
|
{
|
||||||
if (i.value()->GetType() == type)
|
if (i.value()->GetType() == type)
|
||||||
|
|
|
@ -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.SetAreaShartName(VPieceArea::PieceShortName(*this));
|
d->m_ppData.SetAreaShortName(VPieceArea::PieceShortName(*this));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -27,36 +27,36 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "dialogeditlabel.h"
|
#include "dialogeditlabel.h"
|
||||||
#include "ui_dialogeditlabel.h"
|
|
||||||
#include "../vmisc/vabstractapplication.h"
|
#include "../vmisc/vabstractapplication.h"
|
||||||
|
#include "ui_dialogeditlabel.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 "../vformat/vlabeltemplate.h"
|
|
||||||
#include "../ifc/xml/vlabeltemplateconverter.h"
|
|
||||||
#include "../ifc/xml/vabstractpattern.h"
|
|
||||||
#include "../ifc/exception/vexception.h"
|
#include "../ifc/exception/vexception.h"
|
||||||
#include "../vpatterndb/vcontainer.h"
|
#include "../ifc/xml/vabstractpattern.h"
|
||||||
#include "../vpatterndb/vpiece.h"
|
#include "../ifc/xml/vlabeltemplateconverter.h"
|
||||||
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
|
#include "../tools/dialogtool.h"
|
||||||
|
#include "../vformat/vlabeltemplate.h"
|
||||||
#include "../vpatterndb/calculator.h"
|
#include "../vpatterndb/calculator.h"
|
||||||
|
#include "../vpatterndb/floatItemData/vpiecelabeldata.h"
|
||||||
#include "../vpatterndb/variables/vmeasurement.h"
|
#include "../vpatterndb/variables/vmeasurement.h"
|
||||||
#include "../vpatterndb/variables/vpiecearea.h"
|
#include "../vpatterndb/variables/vpiecearea.h"
|
||||||
#include "../tools/dialogtool.h"
|
#include "../vpatterndb/vcontainer.h"
|
||||||
|
#include "../vpatterndb/vpiece.h"
|
||||||
|
|
||||||
|
#include <QDate>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QDate>
|
#include <QMessageBox>
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
DialogEditLabel::DialogEditLabel(const VAbstractPattern *doc, const VContainer *data, QWidget *parent)
|
DialogEditLabel::DialogEditLabel(const VAbstractPattern *doc, const VContainer *data, QWidget *parent)
|
||||||
: QDialog(parent),
|
: QDialog(parent),
|
||||||
ui(new Ui::DialogEditLabel),
|
ui(new Ui::DialogEditLabel),
|
||||||
m_placeholdersMenu(new QMenu(this)),
|
m_placeholdersMenu(new QMenu(this)),
|
||||||
m_doc(doc),
|
m_doc(doc),
|
||||||
m_data(data)
|
m_data(data)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
@ -77,12 +77,13 @@ 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, [this](){DialogTool::MoveListRowTop(ui->listWidgetEdit);});
|
connect(ui->toolButtonTop, &QToolButton::clicked, this,
|
||||||
connect(ui->toolButtonUp, &QToolButton::clicked, this, [this](){DialogTool::MoveListRowUp(ui->listWidgetEdit);});
|
[this]() { DialogTool::MoveListRowTop(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); });
|
||||||
connect(ui->toolButtonBottom, &QToolButton::clicked, this,
|
connect(ui->toolButtonBottom, &QToolButton::clicked, this,
|
||||||
[this](){DialogTool::MoveListRowBottom(ui->listWidgetEdit);});
|
[this]() { DialogTool::MoveListRowBottom(ui->listWidgetEdit); });
|
||||||
|
|
||||||
InitPlaceholders();
|
InitPlaceholders();
|
||||||
InitPlaceholdersMenu();
|
InitPlaceholdersMenu();
|
||||||
|
@ -279,10 +280,11 @@ void DialogEditLabel::NewTemplate()
|
||||||
{
|
{
|
||||||
if (ui->listWidgetEdit->count() > 0)
|
if (ui->listWidgetEdit->count() > 0)
|
||||||
{
|
{
|
||||||
const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Create new template"),
|
const QMessageBox::StandardButton answer =
|
||||||
tr("Creating new template will overwrite the current, do "
|
QMessageBox::question(this, tr("Create new template"),
|
||||||
"you want to continue?"),
|
tr("Creating new template will overwrite the current, do "
|
||||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
"you want to continue?"),
|
||||||
|
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||||
if (answer == QMessageBox::No)
|
if (answer == QMessageBox::No)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -300,7 +302,7 @@ void DialogEditLabel::ExportTemplate()
|
||||||
{
|
{
|
||||||
QString filters(tr("Label template") + QLatin1String("(*.xml)"));
|
QString filters(tr("Label template") + QLatin1String("(*.xml)"));
|
||||||
const QString path =
|
const QString path =
|
||||||
VCommonSettings::PrepareLabelTemplates(VAbstractApplication::VApp()->Settings()->GetPathLabelTemplate());
|
VCommonSettings::PrepareLabelTemplates(VAbstractApplication::VApp()->Settings()->GetPathLabelTemplate());
|
||||||
|
|
||||||
QString fileName = QFileDialog::getSaveFileName(this, tr("Export label template"),
|
QString fileName = QFileDialog::getSaveFileName(this, tr("Export label template"),
|
||||||
path + QLatin1String("/") + tr("template") + QLatin1String(".xml"),
|
path + QLatin1String("/") + tr("template") + QLatin1String(".xml"),
|
||||||
|
@ -311,7 +313,7 @@ void DialogEditLabel::ExportTemplate()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFileInfo f( fileName );
|
QFileInfo f(fileName);
|
||||||
if (f.suffix().isEmpty() && f.suffix() != QLatin1String("xml"))
|
if (f.suffix().isEmpty() && f.suffix() != QLatin1String("xml"))
|
||||||
{
|
{
|
||||||
fileName += QLatin1String(".xml");
|
fileName += QLatin1String(".xml");
|
||||||
|
@ -340,10 +342,11 @@ void DialogEditLabel::ImportTemplate()
|
||||||
{
|
{
|
||||||
if (ui->listWidgetEdit->count() > 0)
|
if (ui->listWidgetEdit->count() > 0)
|
||||||
{
|
{
|
||||||
const QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Import template"),
|
const QMessageBox::StandardButton answer =
|
||||||
tr("Import template will overwrite the current, do "
|
QMessageBox::question(this, tr("Import template"),
|
||||||
"you want to continue?"),
|
tr("Import template will overwrite the current, do "
|
||||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
"you want to continue?"),
|
||||||
|
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||||
if (answer == QMessageBox::No)
|
if (answer == QMessageBox::No)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -351,9 +354,9 @@ void DialogEditLabel::ImportTemplate()
|
||||||
}
|
}
|
||||||
|
|
||||||
QString filter(tr("Label template") + QLatin1String(" (*.xml)"));
|
QString filter(tr("Label template") + QLatin1String(" (*.xml)"));
|
||||||
//Use standard path to label templates
|
// Use standard path to label templates
|
||||||
const QString path =
|
const QString path =
|
||||||
VCommonSettings::PrepareLabelTemplates(VAbstractApplication::VApp()->Settings()->GetPathLabelTemplate());
|
VCommonSettings::PrepareLabelTemplates(VAbstractApplication::VApp()->Settings()->GetPathLabelTemplate());
|
||||||
const QString fileName = QFileDialog::getOpenFileName(this, tr("Import template"), path, filter, nullptr,
|
const QString fileName = QFileDialog::getOpenFileName(this, tr("Import template"), path, filter, nullptr,
|
||||||
VAbstractApplication::VApp()->NativeFileDialog());
|
VAbstractApplication::VApp()->NativeFileDialog());
|
||||||
if (fileName.isEmpty())
|
if (fileName.isEmpty())
|
||||||
|
@ -453,7 +456,7 @@ void DialogEditLabel::SetupControls()
|
||||||
ui->toolButtonDown->setEnabled(true);
|
ui->toolButtonDown->setEnabled(true);
|
||||||
ui->toolButtonBottom->setEnabled(true);
|
ui->toolButtonBottom->setEnabled(true);
|
||||||
}
|
}
|
||||||
else if (ui->listWidgetEdit->currentRow() == ui->listWidgetEdit->count()-1)
|
else if (ui->listWidgetEdit->currentRow() == ui->listWidgetEdit->count() - 1)
|
||||||
{
|
{
|
||||||
ui->toolButtonTop->setEnabled(true);
|
ui->toolButtonTop->setEnabled(true);
|
||||||
ui->toolButtonUp->setEnabled(true);
|
ui->toolButtonUp->setEnabled(true);
|
||||||
|
@ -518,22 +521,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(pl_mSizeUnits, qMakePair(tr("Size units"),
|
m_placeholders.insert(
|
||||||
UnitsToStr(VAbstractValApplication::VApp()->DimensionSizeUnits(),
|
pl_mSizeUnits,
|
||||||
true)));
|
qMakePair(tr("Size units"), UnitsToStr(VAbstractValApplication::VApp()->DimensionSizeUnits(), 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, qMakePair(tr("Customer name"),
|
m_placeholders.insert(pl_customer,
|
||||||
VAbstractValApplication::VApp()->GetCustomerName()));
|
qMakePair(tr("Customer name"), VAbstractValApplication::VApp()->GetCustomerName()));
|
||||||
|
|
||||||
const QString birthDate = locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(),
|
const QString birthDate =
|
||||||
m_doc->GetLabelDateFormat());
|
locale.toString(VAbstractValApplication::VApp()->GetCustomerBirthDate(), 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, qMakePair(tr("Customer email"),
|
m_placeholders.insert(pl_email,
|
||||||
VAbstractValApplication::VApp()->CustomerEmail()));
|
qMakePair(tr("Customer email"), VAbstractValApplication::VApp()->CustomerEmail()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -571,41 +574,41 @@ void DialogEditLabel::InitPlaceholders()
|
||||||
|
|
||||||
{
|
{
|
||||||
QString label = VAbstractValApplication::VApp()->GetDimensionHeightLabel();
|
QString label = VAbstractValApplication::VApp()->GetDimensionHeightLabel();
|
||||||
m_placeholders.insert(pl_heightLabel, qMakePair(tr("Height label", "dimension"),
|
m_placeholders.insert(pl_heightLabel,
|
||||||
not label.isEmpty() ? label : heightValue));
|
qMakePair(tr("Height label", "dimension"), not label.isEmpty() ? label : heightValue));
|
||||||
m_placeholders.insert(pl_dimensionX, qMakePair(tr("Dimension X label", "dimension"),
|
m_placeholders.insert(
|
||||||
not label.isEmpty() ? label : heightValue));
|
pl_dimensionX, qMakePair(tr("Dimension X label", "dimension"), not label.isEmpty() ? label : heightValue));
|
||||||
|
|
||||||
label = VAbstractValApplication::VApp()->GetDimensionSizeLabel();
|
label = VAbstractValApplication::VApp()->GetDimensionSizeLabel();
|
||||||
m_placeholders.insert(pl_sizeLabel, qMakePair(tr("Size label", "dimension"),
|
m_placeholders.insert(pl_sizeLabel,
|
||||||
not label.isEmpty() ? label : sizeValue));
|
qMakePair(tr("Size label", "dimension"), not label.isEmpty() ? label : sizeValue));
|
||||||
m_placeholders.insert(pl_dimensionY, qMakePair(tr("Dimension Y label", "dimension"),
|
m_placeholders.insert(pl_dimensionY,
|
||||||
not label.isEmpty() ? label : sizeValue));
|
qMakePair(tr("Dimension Y label", "dimension"), not label.isEmpty() ? label : sizeValue));
|
||||||
|
|
||||||
label = VAbstractValApplication::VApp()->GetDimensionHipLabel();
|
label = VAbstractValApplication::VApp()->GetDimensionHipLabel();
|
||||||
m_placeholders.insert(pl_hipLabel, qMakePair(tr("Hip label", "dimension"),
|
m_placeholders.insert(pl_hipLabel,
|
||||||
not label.isEmpty() ? label : hipValue));
|
qMakePair(tr("Hip label", "dimension"), not label.isEmpty() ? label : hipValue));
|
||||||
m_placeholders.insert(pl_dimensionZ, qMakePair(tr("Dimension Z label", "dimension"),
|
m_placeholders.insert(pl_dimensionZ,
|
||||||
not label.isEmpty() ? label : hipValue));
|
qMakePair(tr("Dimension Z label", "dimension"), not label.isEmpty() ? label : hipValue));
|
||||||
|
|
||||||
label = VAbstractValApplication::VApp()->GetDimensionWaistLabel();
|
label = VAbstractValApplication::VApp()->GetDimensionWaistLabel();
|
||||||
m_placeholders.insert(pl_waistLabel, qMakePair(tr("Waist label", "dimension"),
|
m_placeholders.insert(pl_waistLabel,
|
||||||
not label.isEmpty() ? label : waistValue));
|
qMakePair(tr("Waist label", "dimension"), not label.isEmpty() ? label : waistValue));
|
||||||
m_placeholders.insert(pl_dimensionW, qMakePair(tr("Dimension W label", "dimension"),
|
m_placeholders.insert(
|
||||||
not label.isEmpty() ? label : waistValue));
|
pl_dimensionW, qMakePair(tr("Dimension W label", "dimension"), not label.isEmpty() ? label : waistValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_placeholders.insert(
|
||||||
m_placeholders.insert(pl_mExt,
|
pl_mExt, qMakePair(tr("Measurments extension"),
|
||||||
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();
|
||||||
for (int i = 0; i < userMaterialPlaceholdersQuantity; ++i)
|
for (int i = 0; i < userMaterialPlaceholdersQuantity; ++i)
|
||||||
{
|
{
|
||||||
const QString number = QString::number(i+1);
|
const QString number = QString::number(i + 1);
|
||||||
QString materialDescription;
|
QString materialDescription;
|
||||||
|
|
||||||
QString value;
|
QString value;
|
||||||
|
@ -623,7 +626,7 @@ void DialogEditLabel::InitPlaceholders()
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const QMap<QString, QSharedPointer<VMeasurement> > measurements = m_data->DataMeasurements();
|
const QMap<QString, QSharedPointer<VMeasurement>> measurements = m_data->DataMeasurements();
|
||||||
auto i = measurements.constBegin();
|
auto i = measurements.constBegin();
|
||||||
while (i != measurements.constEnd())
|
while (i != measurements.constEnd())
|
||||||
{
|
{
|
||||||
|
@ -642,7 +645,7 @@ void DialogEditLabel::InitPlaceholders()
|
||||||
m_placeholders.insert(pl_currentArea, qMakePair(tr("Piece full area"), QString()));
|
m_placeholders.insert(pl_currentArea, qMakePair(tr("Piece full area"), QString()));
|
||||||
m_placeholders.insert(pl_currentSeamLineArea, qMakePair(tr("Piece seam line area"), QString()));
|
m_placeholders.insert(pl_currentSeamLineArea, qMakePair(tr("Piece seam line area"), QString()));
|
||||||
|
|
||||||
for (int i=0; i < measurements.size(); ++i)
|
for (int i = 0; i < measurements.size(); ++i)
|
||||||
{
|
{
|
||||||
const VFinalMeasurement &m = measurements.at(i);
|
const VFinalMeasurement &m = measurements.at(i);
|
||||||
|
|
||||||
|
@ -651,19 +654,24 @@ 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, qMakePair(tr("Final measurement: %1").arg(m.name),
|
m_placeholders.insert(pl_finalMeasurement + m.name,
|
||||||
QString::number(result)));
|
qMakePair(tr("Final measurement: %1").arg(m.name), 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.").arg(i+1).arg(e.GetMsg());
|
"line %1: %2.")
|
||||||
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
.arg(i + 1)
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
.arg(e.GetMsg());
|
||||||
|
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()));
|
||||||
|
@ -673,12 +681,14 @@ 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"), tr("Fabric")));
|
m_placeholders.insert(pl_mFabric, qMakePair(tr("Material: Fabric"), phTr->translate("Placeholder", "Fabric")));
|
||||||
m_placeholders.insert(pl_mLining, qMakePair(tr("Material: Lining"), tr("Lining")));
|
m_placeholders.insert(pl_mLining, qMakePair(tr("Material: Lining"), phTr->translate("Placeholder", "Lining")));
|
||||||
m_placeholders.insert(pl_mInterfacing, qMakePair(tr("Material: Interfacing"), tr("Interfacing")));
|
m_placeholders.insert(pl_mInterfacing,
|
||||||
m_placeholders.insert(pl_mInterlining, qMakePair(tr("Material: Interlining"), tr("Interlining")));
|
qMakePair(tr("Material: Interfacing"), phTr->translate("Placeholder", "Interfacing")));
|
||||||
m_placeholders.insert(pl_wCut, qMakePair(tr("Word: Cut"), tr("Cut")));
|
m_placeholders.insert(pl_mInterlining,
|
||||||
m_placeholders.insert(pl_wOnFold, qMakePair(tr("Word: on fold"), QString()));// By default should be empty
|
qMakePair(tr("Material: Interlining"), phTr->translate("Placeholder", "Interlining")));
|
||||||
|
m_placeholders.insert(pl_wCut, qMakePair(tr("Word: Cut"), phTr->translate("Placeholder", "Cut")));
|
||||||
|
m_placeholders.insert(pl_wOnFold, qMakePair(tr("Word: on fold"), QString())); // By default should be empty
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -688,10 +698,11 @@ auto DialogEditLabel::ReplacePlaceholders(QString line) const -> QString
|
||||||
|
|
||||||
auto TestDimension = [per, this, line](const QString &placeholder, const QString &errorMsg)
|
auto TestDimension = [per, this, line](const QString &placeholder, const QString &errorMsg)
|
||||||
{
|
{
|
||||||
if (line.contains(per+placeholder+per) && m_placeholders.value(placeholder).second == QChar('0'))
|
if (line.contains(per + placeholder + per) && m_placeholders.value(placeholder).second == QChar('0'))
|
||||||
{
|
{
|
||||||
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -708,7 +719,7 @@ auto DialogEditLabel::ReplacePlaceholders(QString line) const -> QString
|
||||||
auto i = m_placeholders.constBegin();
|
auto i = m_placeholders.constBegin();
|
||||||
while (i != m_placeholders.constEnd())
|
while (i != m_placeholders.constEnd())
|
||||||
{
|
{
|
||||||
line.replace(per+i.key()+per, i.value().second);
|
line.replace(per + i.key() + per, i.value().second);
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
return line;
|
return line;
|
||||||
|
@ -720,7 +731,7 @@ auto DialogEditLabel::GetTemplate() const -> QVector<VLabelTemplateLine>
|
||||||
QVector<VLabelTemplateLine> lines;
|
QVector<VLabelTemplateLine> lines;
|
||||||
lines.reserve(ui->listWidgetEdit->count());
|
lines.reserve(ui->listWidgetEdit->count());
|
||||||
|
|
||||||
for (int i=0; i<ui->listWidgetEdit->count(); ++i)
|
for (int i = 0; i < ui->listWidgetEdit->count(); ++i)
|
||||||
{
|
{
|
||||||
const QListWidgetItem *lineItem = ui->listWidgetEdit->item(i);
|
const QListWidgetItem *lineItem = ui->listWidgetEdit->item(i);
|
||||||
if (lineItem)
|
if (lineItem)
|
||||||
|
@ -775,7 +786,7 @@ void DialogEditLabel::SetTemplate(const QVector<VLabelTemplateLine> &lines)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogEditLabel::SetPiece(const VPiece &piece)
|
void DialogEditLabel::SetPiece(const VPiece &piece)
|
||||||
{
|
{
|
||||||
const VPieceLabelData& pieceData = piece.GetPieceLabelData();
|
const VPieceLabelData &pieceData = piece.GetPieceLabelData();
|
||||||
m_placeholders[pl_pLetter].second = pieceData.GetLetter();
|
m_placeholders[pl_pLetter].second = pieceData.GetLetter();
|
||||||
m_placeholders[pl_pAnnotation].second = pieceData.GetAnnotation();
|
m_placeholders[pl_pAnnotation].second = pieceData.GetAnnotation();
|
||||||
m_placeholders[pl_pOrientation].second = pieceData.GetOrientation();
|
m_placeholders[pl_pOrientation].second = pieceData.GetOrientation();
|
||||||
|
@ -786,7 +797,8 @@ void DialogEditLabel::SetPiece(const VPiece &piece)
|
||||||
m_placeholders[pl_pQuantity].second = QString::number(pieceData.GetQuantity());
|
m_placeholders[pl_pQuantity].second = QString::number(pieceData.GetQuantity());
|
||||||
if (pieceData.IsOnFold())
|
if (pieceData.IsOnFold())
|
||||||
{
|
{
|
||||||
m_placeholders[pl_wOnFold].second = tr("on fold");
|
QSharedPointer<QTranslator> phTr = VAbstractValApplication::VApp()->GetPlaceholderTranslator();
|
||||||
|
m_placeholders[pl_wOnFold].second = phTr->translate("Placeholder", "on fold");
|
||||||
}
|
}
|
||||||
|
|
||||||
VContainer completeData = m_doc->GetCompleteData();
|
VContainer completeData = m_doc->GetCompleteData();
|
||||||
|
@ -803,8 +815,9 @@ 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() ? throw VException(errorMsg) :
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -816,8 +829,9 @@ 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() ? throw VException(errorMsg) :
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,6 @@
|
||||||
#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>
|
||||||
|
@ -78,6 +77,7 @@
|
||||||
#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>
|
||||||
|
@ -96,30 +96,29 @@ using namespace bpstd::literals::chrono_literals;
|
||||||
// Current version of seam allowance tag need for backward compatibility
|
// Current version of seam allowance tag need for backward compatibility
|
||||||
const quint8 VToolSeamAllowance::pieceVersion = 2;
|
const quint8 VToolSeamAllowance::pieceVersion = 2;
|
||||||
|
|
||||||
const QString VToolSeamAllowance::TagCSA = QStringLiteral("csa"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::TagCSA = QStringLiteral("csa"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::TagRecord = QStringLiteral("record"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::TagRecord = QStringLiteral("record"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::TagIPaths = QStringLiteral("iPaths"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::TagIPaths = QStringLiteral("iPaths"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::TagPins = QStringLiteral("pins"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::TagPins = QStringLiteral("pins"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::TagPlaceLabels = QStringLiteral("placeLabels"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::TagPlaceLabels = QStringLiteral("placeLabels"); // NOLINT(cert-err58-cpp)
|
||||||
|
|
||||||
const QString VToolSeamAllowance::AttrSeamAllowance = QStringLiteral("seamAllowance"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrSeamAllowance = QStringLiteral("seamAllowance"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrHideMainPath = QStringLiteral("hideMainPath"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrHideMainPath = QStringLiteral("hideMainPath"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrSeamAllowanceBuiltIn = // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrSeamAllowanceBuiltIn = // NOLINT(cert-err58-cpp)
|
||||||
QStringLiteral("seamAllowanceBuiltIn");
|
QStringLiteral("seamAllowanceBuiltIn");
|
||||||
const QString VToolSeamAllowance::AttrUnited = QStringLiteral("united"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrUnited = QStringLiteral("united"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrFont = QStringLiteral("fontSize"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrFont = QStringLiteral("fontSize"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrTopLeftPin = QStringLiteral("topLeftPin"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrTopLeftPin = QStringLiteral("topLeftPin"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrBottomRightPin = QStringLiteral("bottomRightPin"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrBottomRightPin = QStringLiteral("bottomRightPin"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrCenterPin = QStringLiteral("centerPin"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrCenterPin = QStringLiteral("centerPin"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrTopPin = QStringLiteral("topPin"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrTopPin = QStringLiteral("topPin"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrBottomPin = QStringLiteral("bottomPin"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrBottomPin = QStringLiteral("bottomPin"); // NOLINT(cert-err58-cpp)
|
||||||
const QString VToolSeamAllowance::AttrPiecePriority = QStringLiteral("priority"); // NOLINT(cert-err58-cpp)
|
const QString VToolSeamAllowance::AttrPiecePriority = QStringLiteral("priority"); // NOLINT(cert-err58-cpp)
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <typename T>
|
template <typename T> auto FixLabelPins(T itemData, const QMap<quint32, quint32> &mappedPins) -> 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));
|
||||||
|
@ -128,8 +127,7 @@ auto FixLabelPins(T itemData, const QMap<quint32, quint32> &mappedPins) -> T
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
template <typename T>
|
template <typename T> auto FixGrainlinePins(T itemData, const QMap<quint32, quint32> &mappedPins) -> 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));
|
||||||
|
@ -141,7 +139,7 @@ auto FixGrainlinePins(T itemData, const QMap<quint32, quint32> &mappedPins) -> T
|
||||||
auto DuplicatePins(const QVector<quint32> &pins, const VToolSeamAllowanceInitData &initData) -> QMap<quint32, quint32>
|
auto DuplicatePins(const QVector<quint32> &pins, const VToolSeamAllowanceInitData &initData) -> QMap<quint32, quint32>
|
||||||
{
|
{
|
||||||
QMap<quint32, quint32> newPins;
|
QMap<quint32, quint32> newPins;
|
||||||
for(auto p : pins)
|
for (auto p : pins)
|
||||||
{
|
{
|
||||||
QSharedPointer<VPointF> pin = initData.data->GeometricObject<VPointF>(p);
|
QSharedPointer<VPointF> pin = initData.data->GeometricObject<VPointF>(p);
|
||||||
|
|
||||||
|
@ -187,16 +185,14 @@ void UpdateLabelItem(VTextGraphicsItem *labelItem, QPointF pos, qreal labelAngle
|
||||||
labelItem->Update();
|
labelItem->Update();
|
||||||
labelItem->GetTextLines() > 0 ? labelItem->show() : labelItem->hide();
|
labelItem->GetTextLines() > 0 ? labelItem->show() : labelItem->hide();
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::Create(const QPointer<DialogTool> &dialog,
|
auto VToolSeamAllowance::Create(const QPointer<DialogTool> &dialog, VMainGraphicsScene *scene, VAbstractPattern *doc,
|
||||||
VMainGraphicsScene *scene,
|
|
||||||
VAbstractPattern *doc,
|
|
||||||
VContainer *data) -> VToolSeamAllowance *
|
VContainer *data) -> VToolSeamAllowance *
|
||||||
{
|
{
|
||||||
SCASSERT(not dialog.isNull());
|
SCASSERT(not dialog.isNull());
|
||||||
const QPointer<DialogSeamAllowance> dialogTool = qobject_cast<DialogSeamAllowance*>(dialog);
|
const QPointer<DialogSeamAllowance> dialogTool = qobject_cast<DialogSeamAllowance *>(dialog);
|
||||||
SCASSERT(not dialogTool.isNull())
|
SCASSERT(not dialogTool.isNull())
|
||||||
|
|
||||||
VToolSeamAllowanceInitData initData;
|
VToolSeamAllowanceInitData initData;
|
||||||
|
@ -222,8 +218,9 @@ auto VToolSeamAllowance::Create(const QPointer<DialogTool> &dialog,
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Piece '%1'. Unable to load default piece label template.\n%2\n%3")
|
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() ? throw VException(errorMsg) :
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,18 +279,17 @@ auto VToolSeamAllowance::Create(VToolSeamAllowanceInitData &initData) -> VToolSe
|
||||||
VMainGraphicsView::NewSceneRect(initData.scene, VAbstractValApplication::VApp()->getSceneView(), piece);
|
VMainGraphicsView::NewSceneRect(initData.scene, VAbstractValApplication::VApp()->getSceneView(), piece);
|
||||||
VAbstractPattern::AddTool(initData.id, piece);
|
VAbstractPattern::AddTool(initData.id, piece);
|
||||||
}
|
}
|
||||||
//Very important to delete it. Only this tool need this special variable.
|
// Very important to delete it. Only this tool need this special variable.
|
||||||
initData.data->RemoveVariable(currentSeamAllowance);
|
initData.data->RemoveVariable(currentSeamAllowance);
|
||||||
return piece;
|
return piece;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::Duplicate(const QPointer<DialogTool> &dialog,
|
auto VToolSeamAllowance::Duplicate(const QPointer<DialogTool> &dialog, VMainGraphicsScene *scene, VAbstractPattern *doc)
|
||||||
VMainGraphicsScene *scene,
|
-> VToolSeamAllowance *
|
||||||
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);
|
||||||
SCASSERT(not dialogTool.isNull())
|
SCASSERT(not dialogTool.isNull())
|
||||||
|
|
||||||
VToolSeamAllowanceInitData initData;
|
VToolSeamAllowanceInitData initData;
|
||||||
|
@ -327,8 +323,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(DuplicateCustomSARecords(initData.detail.GetCustomSARecords(), initData,
|
dupDetail.SetCustomSARecords(
|
||||||
replacements));
|
DuplicateCustomSARecords(initData.detail.GetCustomSARecords(), initData, 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());
|
||||||
|
@ -350,10 +346,10 @@ void VToolSeamAllowance::RemoveWithConfirm(bool ask)
|
||||||
{
|
{
|
||||||
DeleteToolWithConfirm(ask);
|
DeleteToolWithConfirm(ask);
|
||||||
}
|
}
|
||||||
catch(const VExceptionToolWasDeleted &e)
|
catch (const VExceptionToolWasDeleted &e)
|
||||||
{
|
{
|
||||||
Q_UNUSED(e);
|
Q_UNUSED(e);
|
||||||
return;//Leave this method immediately!!!
|
return; // Leave this method immediately!!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -391,7 +387,7 @@ void VToolSeamAllowance::InsertNodes(const QVector<VPieceNode> &nodes, quint32 p
|
||||||
newDet.GetPath().Append(node);
|
newDet.GetPath().Append(node);
|
||||||
|
|
||||||
// Seam allowance tool already initializated and can't init the node
|
// Seam allowance tool already initializated and can't init the node
|
||||||
auto *saTool = qobject_cast<VToolSeamAllowance*>(VAbstractPattern::getTool(pieceId));
|
auto *saTool = qobject_cast<VToolSeamAllowance *>(VAbstractPattern::getTool(pieceId));
|
||||||
SCASSERT(saTool != nullptr);
|
SCASSERT(saTool != nullptr);
|
||||||
|
|
||||||
InitNode(node, scene, saTool);
|
InitNode(node, scene, saTool);
|
||||||
|
@ -409,28 +405,28 @@ void VToolSeamAllowance::AddAttributes(VAbstractPattern *doc, QDomElement &domEl
|
||||||
doc->SetAttribute(domElement, VDomDocument::AttrId, id);
|
doc->SetAttribute(domElement, VDomDocument::AttrId, id);
|
||||||
doc->SetAttribute(domElement, AttrName, piece.GetName());
|
doc->SetAttribute(domElement, AttrName, piece.GetName());
|
||||||
doc->SetAttributeOrRemoveIf<QString>(domElement, AttrShortName, piece.GetShortName(),
|
doc->SetAttributeOrRemoveIf<QString>(domElement, AttrShortName, piece.GetShortName(),
|
||||||
[](const QString &name) noexcept {return name.isEmpty();});
|
[](const QString &name) noexcept { return name.isEmpty(); });
|
||||||
doc->SetAttribute(domElement, AttrUUID, piece.GetUUID().toString());
|
doc->SetAttribute(domElement, AttrUUID, piece.GetUUID().toString());
|
||||||
doc->SetAttributeOrRemoveIf<QString>(domElement, AttrGradationLabel, piece.GetGradationLabel(),
|
doc->SetAttributeOrRemoveIf<QString>(domElement, AttrGradationLabel, piece.GetGradationLabel(),
|
||||||
[](const QString &label) noexcept {return label.isEmpty();});
|
[](const QString &label) noexcept { return label.isEmpty(); });
|
||||||
doc->SetAttribute(domElement, AttrVersion, QString().setNum(pieceVersion));
|
doc->SetAttribute(domElement, AttrVersion, QString().setNum(pieceVersion));
|
||||||
doc->SetAttribute(domElement, AttrMx, VAbstractValApplication::VApp()->fromPixel(piece.GetMx()));
|
doc->SetAttribute(domElement, AttrMx, VAbstractValApplication::VApp()->fromPixel(piece.GetMx()));
|
||||||
doc->SetAttribute(domElement, AttrMy, VAbstractValApplication::VApp()->fromPixel(piece.GetMy()));
|
doc->SetAttribute(domElement, AttrMy, VAbstractValApplication::VApp()->fromPixel(piece.GetMy()));
|
||||||
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrInLayout, piece.IsInLayout(),
|
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrInLayout, piece.IsInLayout(),
|
||||||
[](bool inLayout) noexcept {return inLayout;});
|
[](bool inLayout) noexcept { return inLayout; });
|
||||||
doc->SetAttribute(domElement, AttrForbidFlipping, piece.IsForbidFlipping());
|
doc->SetAttribute(domElement, AttrForbidFlipping, piece.IsForbidFlipping());
|
||||||
doc->SetAttribute(domElement, AttrForceFlipping, piece.IsForceFlipping());
|
doc->SetAttribute(domElement, AttrForceFlipping, piece.IsForceFlipping());
|
||||||
doc->SetAttribute(domElement, AttrSewLineOnDrawing, piece.IsSewLineOnDrawing());
|
doc->SetAttribute(domElement, AttrSewLineOnDrawing, piece.IsSewLineOnDrawing());
|
||||||
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrSeamAllowance, piece.IsSeamAllowance(),
|
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrSeamAllowance, piece.IsSeamAllowance(),
|
||||||
[](bool seamAllowance) noexcept {return not seamAllowance;});
|
[](bool seamAllowance) noexcept { return not seamAllowance; });
|
||||||
doc->SetAttribute(domElement, AttrHideMainPath, piece.IsHideMainPath());
|
doc->SetAttribute(domElement, AttrHideMainPath, piece.IsHideMainPath());
|
||||||
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrSeamAllowanceBuiltIn, piece.IsSeamAllowanceBuiltIn(),
|
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrSeamAllowanceBuiltIn, piece.IsSeamAllowanceBuiltIn(),
|
||||||
[](bool builtin) noexcept {return not builtin;});
|
[](bool builtin) noexcept { return not builtin; });
|
||||||
doc->SetAttribute(domElement, AttrWidth, piece.GetFormulaSAWidth());
|
doc->SetAttribute(domElement, AttrWidth, piece.GetFormulaSAWidth());
|
||||||
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrUnited, piece.IsUnited(),
|
doc->SetAttributeOrRemoveIf<bool>(domElement, AttrUnited, piece.IsUnited(),
|
||||||
[](bool united) noexcept {return not united;});
|
[](bool united) noexcept { return not united; });
|
||||||
doc->SetAttributeOrRemoveIf<uint>(domElement, AttrPiecePriority, piece.GetPriority(),
|
doc->SetAttributeOrRemoveIf<uint>(domElement, AttrPiecePriority, piece.GetPriority(),
|
||||||
[](uint priority) noexcept {return priority == 0;});
|
[](uint priority) noexcept { return priority == 0; });
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -495,7 +491,7 @@ void VToolSeamAllowance::AddPlaceLabels(VAbstractPattern *doc, QDomElement &domE
|
||||||
void VToolSeamAllowance::AddPatternPieceData(VAbstractPattern *doc, QDomElement &domElement, const VPiece &piece)
|
void VToolSeamAllowance::AddPatternPieceData(VAbstractPattern *doc, QDomElement &domElement, const VPiece &piece)
|
||||||
{
|
{
|
||||||
QDomElement domData = doc->createElement(VAbstractPattern::TagData);
|
QDomElement domData = doc->createElement(VAbstractPattern::TagData);
|
||||||
const VPieceLabelData& data = piece.GetPieceLabelData();
|
const VPieceLabelData &data = piece.GetPieceLabelData();
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrLetter, data.GetLetter());
|
doc->SetAttribute(domData, VAbstractPattern::AttrLetter, data.GetLetter());
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrAnnotation, data.GetAnnotation());
|
doc->SetAttribute(domData, VAbstractPattern::AttrAnnotation, data.GetAnnotation());
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrOrientation, data.GetOrientation());
|
doc->SetAttribute(domData, VAbstractPattern::AttrOrientation, data.GetOrientation());
|
||||||
|
@ -512,11 +508,11 @@ void VToolSeamAllowance::AddPatternPieceData(VAbstractPattern *doc, QDomElement
|
||||||
doc->SetAttribute(domData, AttrFont, data.GetFontSize());
|
doc->SetAttribute(domData, AttrFont, data.GetFontSize());
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, data.GetRotation());
|
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, data.GetRotation());
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, data.CenterPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, data.CenterPin(),
|
||||||
[](quint32 pin) noexcept {return pin == NULL_ID;});
|
[](quint32 pin) noexcept { return pin == NULL_ID; });
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopLeftPin, data.TopLeftPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopLeftPin, data.TopLeftPin(),
|
||||||
[](quint32 leftPin) noexcept {return leftPin == NULL_ID;});
|
[](quint32 leftPin) noexcept { return leftPin == NULL_ID; });
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomRightPin, data.BottomRightPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomRightPin, data.BottomRightPin(),
|
||||||
[](quint32 rightPin) noexcept {return rightPin == NULL_ID;});
|
[](quint32 rightPin) noexcept { return rightPin == NULL_ID; });
|
||||||
doc->SetLabelTemplate(domData, data.GetLabelTemplate());
|
doc->SetLabelTemplate(domData, data.GetLabelTemplate());
|
||||||
|
|
||||||
domElement.appendChild(domData);
|
domElement.appendChild(domData);
|
||||||
|
@ -526,7 +522,7 @@ void VToolSeamAllowance::AddPatternPieceData(VAbstractPattern *doc, QDomElement
|
||||||
void VToolSeamAllowance::AddPatternInfo(VAbstractPattern *doc, QDomElement &domElement, const VPiece &piece)
|
void VToolSeamAllowance::AddPatternInfo(VAbstractPattern *doc, QDomElement &domElement, const VPiece &piece)
|
||||||
{
|
{
|
||||||
QDomElement domData = doc->createElement(VAbstractPattern::TagPatternInfo);
|
QDomElement domData = doc->createElement(VAbstractPattern::TagPatternInfo);
|
||||||
const VPatternLabelData& geom = piece.GetPatternLabelData();
|
const VPatternLabelData &geom = piece.GetPatternLabelData();
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrVisible, geom.IsVisible());
|
doc->SetAttribute(domData, VAbstractPattern::AttrVisible, geom.IsVisible());
|
||||||
doc->SetAttribute(domData, AttrMx, geom.GetPos().x());
|
doc->SetAttribute(domData, AttrMx, geom.GetPos().x());
|
||||||
doc->SetAttribute(domData, AttrMy, geom.GetPos().y());
|
doc->SetAttribute(domData, AttrMy, geom.GetPos().y());
|
||||||
|
@ -535,11 +531,11 @@ void VToolSeamAllowance::AddPatternInfo(VAbstractPattern *doc, QDomElement &domE
|
||||||
doc->SetAttribute(domData, AttrFont, geom.GetFontSize());
|
doc->SetAttribute(domData, AttrFont, geom.GetFontSize());
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, geom.GetRotation());
|
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, geom.GetRotation());
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, geom.CenterPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, geom.CenterPin(),
|
||||||
[](quint32 pin) noexcept {return pin <= NULL_ID;});
|
[](quint32 pin) noexcept { return pin <= NULL_ID; });
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopLeftPin, geom.TopLeftPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopLeftPin, geom.TopLeftPin(),
|
||||||
[](quint32 pin) noexcept {return pin <= NULL_ID;});
|
[](quint32 pin) noexcept { return pin <= NULL_ID; });
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomRightPin, geom.BottomRightPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomRightPin, geom.BottomRightPin(),
|
||||||
[](quint32 pin) noexcept {return pin <= NULL_ID;});
|
[](quint32 pin) noexcept { return pin <= NULL_ID; });
|
||||||
|
|
||||||
domElement.appendChild(domData);
|
domElement.appendChild(domData);
|
||||||
}
|
}
|
||||||
|
@ -549,7 +545,7 @@ void VToolSeamAllowance::AddGrainline(VAbstractPattern *doc, QDomElement &domEle
|
||||||
{
|
{
|
||||||
// grainline
|
// grainline
|
||||||
QDomElement domData = doc->createElement(VAbstractPattern::TagGrainline);
|
QDomElement domData = doc->createElement(VAbstractPattern::TagGrainline);
|
||||||
const VGrainlineData& glGeom = piece.GetGrainlineGeometry();
|
const VGrainlineData &glGeom = piece.GetGrainlineGeometry();
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrVisible, glGeom.IsVisible());
|
doc->SetAttribute(domData, VAbstractPattern::AttrVisible, glGeom.IsVisible());
|
||||||
doc->SetAttribute(domData, AttrMx, glGeom.GetPos().x());
|
doc->SetAttribute(domData, AttrMx, glGeom.GetPos().x());
|
||||||
doc->SetAttribute(domData, AttrMy, glGeom.GetPos().y());
|
doc->SetAttribute(domData, AttrMy, glGeom.GetPos().y());
|
||||||
|
@ -557,11 +553,11 @@ void VToolSeamAllowance::AddGrainline(VAbstractPattern *doc, QDomElement &domEle
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, glGeom.GetRotation());
|
doc->SetAttribute(domData, VAbstractPattern::AttrRotation, glGeom.GetRotation());
|
||||||
doc->SetAttribute(domData, VAbstractPattern::AttrArrows, static_cast<int>(glGeom.GetArrowType()));
|
doc->SetAttribute(domData, VAbstractPattern::AttrArrows, static_cast<int>(glGeom.GetArrowType()));
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, glGeom.CenterPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrCenterPin, glGeom.CenterPin(),
|
||||||
[](quint32 pin) noexcept {return pin <= NULL_ID;});
|
[](quint32 pin) noexcept { return pin <= NULL_ID; });
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopPin, glGeom.TopPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrTopPin, glGeom.TopPin(),
|
||||||
[](quint32 pin) noexcept {return pin <= NULL_ID;});
|
[](quint32 pin) noexcept { return pin <= NULL_ID; });
|
||||||
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomPin, glGeom.BottomPin(),
|
doc->SetAttributeOrRemoveIf<quint32>(domData, AttrBottomPin, glGeom.BottomPin(),
|
||||||
[](quint32 pin) noexcept {return pin <= NULL_ID;});
|
[](quint32 pin) noexcept { return pin <= NULL_ID; });
|
||||||
|
|
||||||
domElement.appendChild(domData);
|
domElement.appendChild(domData);
|
||||||
}
|
}
|
||||||
|
@ -649,7 +645,10 @@ void VToolSeamAllowance::ReinitInternals(const VPiece &detail, VMainGraphicsScen
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::getTagName() const -> QString { return VAbstractPattern::TagDetail; }
|
auto VToolSeamAllowance::getTagName() const -> QString
|
||||||
|
{
|
||||||
|
return VAbstractPattern::TagDetail;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::ShowVisualization(bool show)
|
void VToolSeamAllowance::ShowVisualization(bool show)
|
||||||
|
@ -667,7 +666,7 @@ void VToolSeamAllowance::GroupVisibility(quint32 object, bool visible)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::FullUpdateFromFile()
|
void VToolSeamAllowance::FullUpdateFromFile()
|
||||||
{
|
{
|
||||||
const bool updateChildren = false;// Chilren have their own signals. Avoid double refresh.
|
const bool updateChildren = false; // Chilren have their own signals. Avoid double refresh.
|
||||||
RefreshGeometry(updateChildren);
|
RefreshGeometry(updateChildren);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -756,8 +755,9 @@ void VToolSeamAllowance::Highlight(quint32 id)
|
||||||
*/
|
*/
|
||||||
void VToolSeamAllowance::UpdateDetailLabel()
|
void VToolSeamAllowance::UpdateDetailLabel()
|
||||||
{
|
{
|
||||||
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
||||||
const VPieceLabelData& labelData = detail.GetPieceLabelData();
|
detail.SetPieceLabelData(detail.GetPieceLabelData()); // Refresh translation
|
||||||
|
const VPieceLabelData &labelData = detail.GetPieceLabelData();
|
||||||
const QVector<quint32> &pins = detail.GetPins();
|
const QVector<quint32> &pins = detail.GetPins();
|
||||||
|
|
||||||
if (labelData.IsVisible())
|
if (labelData.IsVisible())
|
||||||
|
@ -784,7 +784,7 @@ void VToolSeamAllowance::UpdateDetailLabel()
|
||||||
void VToolSeamAllowance::UpdatePatternInfo()
|
void VToolSeamAllowance::UpdatePatternInfo()
|
||||||
{
|
{
|
||||||
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
||||||
const VPatternLabelData& geom = detail.GetPatternLabelData();
|
const VPatternLabelData &geom = detail.GetPatternLabelData();
|
||||||
const QVector<quint32> &pins = detail.GetPins();
|
const QVector<quint32> &pins = detail.GetPins();
|
||||||
|
|
||||||
if (geom.IsVisible())
|
if (geom.IsVisible())
|
||||||
|
@ -818,7 +818,7 @@ void VToolSeamAllowance::UpdatePassmarks()
|
||||||
void VToolSeamAllowance::UpdateGrainline()
|
void VToolSeamAllowance::UpdateGrainline()
|
||||||
{
|
{
|
||||||
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
||||||
const VGrainlineData& geom = detail.GetGrainlineGeometry();
|
const VGrainlineData &geom = detail.GetGrainlineGeometry();
|
||||||
const QVector<quint32> &pins = detail.GetPins();
|
const QVector<quint32> &pins = detail.GetPins();
|
||||||
|
|
||||||
if (geom.IsVisible())
|
if (geom.IsVisible())
|
||||||
|
@ -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.")
|
const QString errorMsg = QObject::tr("Piece '%1'. Grainline is not valid.").arg(detail.GetName());
|
||||||
.arg(detail.GetName());
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
? throw VException(errorMsg)
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -857,7 +857,7 @@ void VToolSeamAllowance::UpdateGrainline()
|
||||||
/**
|
/**
|
||||||
* @brief SaveMoveDetail saves the move detail operation to the undo stack
|
* @brief SaveMoveDetail saves the move detail operation to the undo stack
|
||||||
*/
|
*/
|
||||||
void VToolSeamAllowance::SaveMoveDetail(const QPointF& ptPos)
|
void VToolSeamAllowance::SaveMoveDetail(const QPointF &ptPos)
|
||||||
{
|
{
|
||||||
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
|
@ -909,7 +909,6 @@ 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
|
||||||
|
@ -964,16 +963,15 @@ 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)
|
||||||
{
|
{
|
||||||
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
newDet.GetGrainlineGeometry().SetPos(ptPos);
|
newDet.GetGrainlineGeometry().SetPos(ptPos);
|
||||||
qDebug() << "******* new grainline pos" << ptPos;
|
qDebug() << "******* new grainline pos" << ptPos;
|
||||||
|
|
||||||
auto* moveCommand = new SavePieceOptions(oldDet, newDet, doc, m_id);
|
auto *moveCommand = new SavePieceOptions(oldDet, newDet, doc, m_id);
|
||||||
moveCommand->setText(tr("move grainline"));
|
moveCommand->setText(tr("move grainline"));
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(moveCommand);
|
VAbstractApplication::VApp()->getUndoStack()->push(moveCommand);
|
||||||
}
|
}
|
||||||
|
@ -988,13 +986,13 @@ void VToolSeamAllowance::SaveResizeGrainline(qreal dLength)
|
||||||
newDet.GetGrainlineGeometry().SetPos(m_grainLine->pos());
|
newDet.GetGrainlineGeometry().SetPos(m_grainLine->pos());
|
||||||
newDet.GetGrainlineGeometry().SetLength(QString().setNum(dLength));
|
newDet.GetGrainlineGeometry().SetLength(QString().setNum(dLength));
|
||||||
|
|
||||||
auto* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, m_id);
|
auto *resizeCommand = new SavePieceOptions(oldDet, newDet, doc, m_id);
|
||||||
resizeCommand->setText(tr("resize grainline"));
|
resizeCommand->setText(tr("resize grainline"));
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(resizeCommand);
|
VAbstractApplication::VApp()->getUndoStack()->push(resizeCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::SaveRotateGrainline(qreal dRot, const QPointF& ptPos)
|
void VToolSeamAllowance::SaveRotateGrainline(qreal dRot, const QPointF &ptPos)
|
||||||
{
|
{
|
||||||
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
|
@ -1076,14 +1074,14 @@ void VToolSeamAllowance::AddToFile()
|
||||||
|
|
||||||
// nodes
|
// nodes
|
||||||
AddNodes(doc, domElement, piece);
|
AddNodes(doc, domElement, piece);
|
||||||
//custom seam allowance
|
// custom seam allowance
|
||||||
AddCSARecords(doc, domElement, piece.GetCustomSARecords());
|
AddCSARecords(doc, domElement, piece.GetCustomSARecords());
|
||||||
AddInternalPaths(doc, domElement, piece.GetInternalPaths());
|
AddInternalPaths(doc, domElement, piece.GetInternalPaths());
|
||||||
AddPins(doc, domElement, piece.GetPins());
|
AddPins(doc, domElement, piece.GetPins());
|
||||||
AddPlaceLabels(doc, domElement, piece.GetPlaceLabels());
|
AddPlaceLabels(doc, domElement, piece.GetPlaceLabels());
|
||||||
|
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(new AddPiece(domElement, doc, VAbstractTool::data,
|
VAbstractApplication::VApp()->getUndoStack()->push(
|
||||||
m_sceneDetails, m_drawName));
|
new AddPiece(domElement, doc, VAbstractTool::data, m_sceneDetails, m_drawName));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1095,8 +1093,7 @@ void VToolSeamAllowance::RefreshDataInFile()
|
||||||
// Refresh only parts that we possibly need to update
|
// 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),
|
Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 4, 0), "Time to refactor the code.");
|
||||||
"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)
|
||||||
|
@ -1133,8 +1130,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(new MovePiece(doc, newPos.x(), newPos.y(), m_id,
|
VAbstractApplication::VApp()->getUndoStack()->push(
|
||||||
scene()));
|
new MovePiece(doc, newPos.x(), newPos.y(), m_id, scene()));
|
||||||
|
|
||||||
const QList<QGraphicsView *> viewList = scene()->views();
|
const QList<QGraphicsView *> viewList = scene()->views();
|
||||||
if (not viewList.isEmpty())
|
if (not viewList.isEmpty())
|
||||||
|
@ -1172,7 +1169,7 @@ void VToolSeamAllowance::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||||
QGraphicsPathItem::mousePressEvent(event);
|
QGraphicsPathItem::mousePressEvent(event);
|
||||||
|
|
||||||
// Somehow clicking on notselectable object do not clean previous selections.
|
// Somehow clicking on notselectable object do not clean previous selections.
|
||||||
if (not (flags() & ItemIsSelectable) && scene())
|
if (not(flags() & ItemIsSelectable) && scene())
|
||||||
{
|
{
|
||||||
scene()->clearSelection();
|
scene()->clearSelection();
|
||||||
}
|
}
|
||||||
|
@ -1187,7 +1184,8 @@ void VToolSeamAllowance::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||||
|
|
||||||
if (selectionType == SelectionType::ByMouseRelease)
|
if (selectionType == SelectionType::ByMouseRelease)
|
||||||
{
|
{
|
||||||
event->accept();// Special for not selectable item first need to call standard mousePressEvent then accept event
|
event
|
||||||
|
->accept(); // Special for not selectable item first need to call standard mousePressEvent then accept event
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1307,12 +1305,12 @@ void VToolSeamAllowance::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
|
||||||
{
|
{
|
||||||
DeleteFromMenu();
|
DeleteFromMenu();
|
||||||
}
|
}
|
||||||
catch(const VExceptionToolWasDeleted &e)
|
catch (const VExceptionToolWasDeleted &e)
|
||||||
{
|
{
|
||||||
Q_UNUSED(e);
|
Q_UNUSED(e);
|
||||||
return;//Leave this method immediately!!!
|
return; // Leave this method immediately!!!
|
||||||
}
|
}
|
||||||
//Leave this method immediately after call!!!
|
// Leave this method immediately after call!!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1339,14 +1337,14 @@ void VToolSeamAllowance::keyReleaseEvent(QKeyEvent *event)
|
||||||
}
|
}
|
||||||
DeleteToolWithConfirm(false);
|
DeleteToolWithConfirm(false);
|
||||||
}
|
}
|
||||||
catch(const VExceptionToolWasDeleted &e)
|
catch (const VExceptionToolWasDeleted &e)
|
||||||
{
|
{
|
||||||
Q_UNUSED(e);
|
Q_UNUSED(e);
|
||||||
if (not toolList.isEmpty())
|
if (not toolList.isEmpty())
|
||||||
{
|
{
|
||||||
VAbstractApplication::VApp()->getUndoStack()->endMacro();
|
VAbstractApplication::VApp()->getUndoStack()->endMacro();
|
||||||
}
|
}
|
||||||
return;//Leave this method immediately!!!
|
return; // Leave this method immediately!!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1354,7 +1352,7 @@ void VToolSeamAllowance::keyReleaseEvent(QKeyEvent *event)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QGraphicsPathItem::keyReleaseEvent ( event );
|
QGraphicsPathItem::keyReleaseEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1387,7 +1385,7 @@ VToolSeamAllowance::VToolSeamAllowance(const VToolSeamAllowanceInitData &initDat
|
||||||
VToolSeamAllowance::AllowHover(true);
|
VToolSeamAllowance::AllowHover(true);
|
||||||
|
|
||||||
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus
|
this->setFlag(QGraphicsItem::ItemIsFocusable, true); // For keyboard input focus
|
||||||
|
|
||||||
VToolSeamAllowance::ToolCreation(initData.typeCreation);
|
VToolSeamAllowance::ToolCreation(initData.typeCreation);
|
||||||
setAcceptHoverEvents(m_acceptHoverEvents);
|
setAcceptHoverEvents(m_acceptHoverEvents);
|
||||||
|
@ -1410,11 +1408,11 @@ void VToolSeamAllowance::UpdateExcludeState()
|
||||||
const VPieceNode &node = path.at(i);
|
const VPieceNode &node = path.at(i);
|
||||||
if (node.GetTypeTool() == Tool::NodePoint)
|
if (node.GetTypeTool() == Tool::NodePoint)
|
||||||
{
|
{
|
||||||
auto *tool = qobject_cast<VNodePoint*>(VAbstractPattern::getTool(node.GetId()));
|
auto *tool = qobject_cast<VNodePoint *>(VAbstractPattern::getTool(node.GetId()));
|
||||||
SCASSERT(tool != nullptr);
|
SCASSERT(tool != nullptr);
|
||||||
|
|
||||||
tool->SetExluded(node.IsExcluded());
|
tool->SetExluded(node.IsExcluded());
|
||||||
tool->setVisible(not node.IsExcluded());//Hide excluded point
|
tool->setVisible(not node.IsExcluded()); // Hide excluded point
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1429,12 +1427,12 @@ void VToolSeamAllowance::UpdateInternalPaths()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (auto *tool = qobject_cast<VToolPiecePath*>(VAbstractPattern::getTool(path)))
|
if (auto *tool = qobject_cast<VToolPiecePath *>(VAbstractPattern::getTool(path)))
|
||||||
{
|
{
|
||||||
tool->RefreshGeometry();
|
tool->RefreshGeometry();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(const VExceptionBadId &)
|
catch (const VExceptionBadId &)
|
||||||
{
|
{
|
||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
|
@ -1448,25 +1446,26 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
|
||||||
|
|
||||||
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
const VPiece detail = VAbstractTool::data.GetPiece(m_id);
|
||||||
|
|
||||||
QFuture<QPainterPath > futurePath = QtConcurrent::run([this, detail](){return detail.MainPathPath(getData());});
|
QFuture<QPainterPath> futurePath = QtConcurrent::run([this, detail]() { return detail.MainPathPath(getData()); });
|
||||||
QFuture<QPainterPath > futurePassmarks =
|
QFuture<QPainterPath> futurePassmarks =
|
||||||
QtConcurrent::run([this, detail](){return detail.PassmarksPath(getData());});
|
QtConcurrent::run([this, detail]() { return detail.PassmarksPath(getData()); });
|
||||||
|
|
||||||
QFuture<QVector<VLayoutPoint> > futureSeamAllowance;
|
QFuture<QVector<VLayoutPoint>> futureSeamAllowance;
|
||||||
QFuture<bool> futureSeamAllowanceValid;
|
QFuture<bool> futureSeamAllowanceValid;
|
||||||
|
|
||||||
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 = QtConcurrent::run([this, detail](){return detail.IsSeamAllowanceValid(getData());});
|
futureSeamAllowanceValid =
|
||||||
|
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));
|
||||||
|
@ -1488,10 +1487,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.")
|
const QString errorMsg = QObject::tr("Piece '%1'. Seam allowance is not valid.").arg(detail.GetName());
|
||||||
.arg(detail.GetName());
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) :
|
? 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);
|
||||||
|
@ -1508,19 +1507,20 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
|
||||||
|
|
||||||
if (VAbstractApplication::VApp()->IsAppInGUIMode())
|
if (VAbstractApplication::VApp()->IsAppInGUIMode())
|
||||||
{
|
{
|
||||||
QTimer::singleShot(V_MSECONDS(100), Qt::CoarseTimer, this, [this, updateChildren]()
|
QTimer::singleShot(V_MSECONDS(100), Qt::CoarseTimer, this,
|
||||||
{
|
[this, updateChildren]()
|
||||||
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false);
|
{
|
||||||
UpdateDetailLabel();
|
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false);
|
||||||
UpdatePatternInfo();
|
UpdateDetailLabel();
|
||||||
UpdateGrainline();
|
UpdatePatternInfo();
|
||||||
UpdateExcludeState();
|
UpdateGrainline();
|
||||||
if (updateChildren)
|
UpdateExcludeState();
|
||||||
{
|
if (updateChildren)
|
||||||
UpdateInternalPaths();
|
{
|
||||||
}
|
UpdateInternalPaths();
|
||||||
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
}
|
||||||
});
|
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1546,7 +1546,7 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren)
|
||||||
void VToolSeamAllowance::SaveDialogChange(const QString &undoText)
|
void VToolSeamAllowance::SaveDialogChange(const QString &undoText)
|
||||||
{
|
{
|
||||||
SCASSERT(not m_dialog.isNull());
|
SCASSERT(not m_dialog.isNull());
|
||||||
auto *dialogTool = qobject_cast<DialogSeamAllowance*>(m_dialog.data());
|
auto *dialogTool = qobject_cast<DialogSeamAllowance *>(m_dialog.data());
|
||||||
SCASSERT(dialogTool != nullptr);
|
SCASSERT(dialogTool != nullptr);
|
||||||
const VPiece newDet = dialogTool->GetPiece();
|
const VPiece newDet = dialogTool->GetPiece();
|
||||||
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
|
@ -1562,7 +1562,7 @@ void VToolSeamAllowance::SaveDialogChange(const QString &undoText)
|
||||||
|
|
||||||
if (groupChange)
|
if (groupChange)
|
||||||
{
|
{
|
||||||
VAbstractApplication::VApp()->getUndoStack()->beginMacro(undoText.isEmpty() ? saveCommand->text(): undoText);
|
VAbstractApplication::VApp()->getUndoStack()->beginMacro(undoText.isEmpty() ? saveCommand->text() : undoText);
|
||||||
|
|
||||||
for (auto command : undocommands)
|
for (auto command : undocommands)
|
||||||
{
|
{
|
||||||
|
@ -1583,8 +1583,8 @@ void VToolSeamAllowance::SaveDialogChange(const QString &undoText)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::ShowOptions()
|
void VToolSeamAllowance::ShowOptions()
|
||||||
{
|
{
|
||||||
QPointer<DialogSeamAllowance> dialog = new DialogSeamAllowance(getData(), doc, m_id,
|
QPointer<DialogSeamAllowance> dialog =
|
||||||
VAbstractValApplication::VApp()->getMainWindow());
|
new DialogSeamAllowance(getData(), doc, m_id, VAbstractValApplication::VApp()->getMainWindow());
|
||||||
dialog->EnableApply(true);
|
dialog->EnableApply(true);
|
||||||
m_dialog = dialog;
|
m_dialog = dialog;
|
||||||
m_dialog->setModal(true);
|
m_dialog->setModal(true);
|
||||||
|
@ -1605,17 +1605,15 @@ void VToolSeamAllowance::ToggleInLayout(bool checked)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::ToggleForbidFlipping(bool checked)
|
void VToolSeamAllowance::ToggleForbidFlipping(bool checked)
|
||||||
{
|
{
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(
|
VAbstractApplication::VApp()->getUndoStack()->push(new TogglePieceForceForbidFlipping(
|
||||||
new TogglePieceForceForbidFlipping(m_id, checked, ForceForbidFlippingType::ForbidFlipping,
|
m_id, checked, ForceForbidFlippingType::ForbidFlipping, &(VAbstractTool::data), doc));
|
||||||
&(VAbstractTool::data), doc));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VToolSeamAllowance::ToggleForceFlipping(bool checked)
|
void VToolSeamAllowance::ToggleForceFlipping(bool checked)
|
||||||
{
|
{
|
||||||
VAbstractApplication::VApp()->getUndoStack()->push(
|
VAbstractApplication::VApp()->getUndoStack()->push(new TogglePieceForceForbidFlipping(
|
||||||
new TogglePieceForceForbidFlipping(m_id, checked, ForceForbidFlippingType::ForceFlipping,
|
m_id, checked, ForceForbidFlippingType::ForceFlipping, &(VAbstractTool::data), doc));
|
||||||
&(VAbstractTool::data), doc));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1630,7 +1628,7 @@ void VToolSeamAllowance::ToggleExcludeState(quint32 id)
|
||||||
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
|
|
||||||
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
|
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
|
||||||
{
|
{
|
||||||
VPieceNode node = oldDet.GetPath().at(i);
|
VPieceNode node = oldDet.GetPath().at(i);
|
||||||
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
||||||
|
@ -1650,7 +1648,7 @@ void VToolSeamAllowance::ToggleTurnPointState(quint32 id)
|
||||||
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
|
|
||||||
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
|
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
|
||||||
{
|
{
|
||||||
VPieceNode node = oldDet.GetPath().at(i);
|
VPieceNode node = oldDet.GetPath().at(i);
|
||||||
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
||||||
|
@ -1670,7 +1668,7 @@ void VToolSeamAllowance::ToggleNodePointAngleType(quint32 id, PieceNodeAngle typ
|
||||||
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
|
|
||||||
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
|
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
|
||||||
{
|
{
|
||||||
VPieceNode node = oldDet.GetPath().at(i);
|
VPieceNode node = oldDet.GetPath().at(i);
|
||||||
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
||||||
|
@ -1690,7 +1688,7 @@ void VToolSeamAllowance::ToggleNodePointPassmark(quint32 id, bool toggle)
|
||||||
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
|
|
||||||
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
|
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
|
||||||
{
|
{
|
||||||
VPieceNode node = oldDet.GetPath().at(i);
|
VPieceNode node = oldDet.GetPath().at(i);
|
||||||
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
||||||
|
@ -1710,7 +1708,7 @@ void VToolSeamAllowance::TogglePassmarkAngleType(quint32 id, PassmarkAngleType t
|
||||||
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
|
|
||||||
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
|
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
|
||||||
{
|
{
|
||||||
VPieceNode node = oldDet.GetPath().at(i);
|
VPieceNode node = oldDet.GetPath().at(i);
|
||||||
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
||||||
|
@ -1730,7 +1728,7 @@ void VToolSeamAllowance::TogglePassmarkLineType(quint32 id, PassmarkLineType typ
|
||||||
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
VPiece newDet = oldDet;
|
VPiece newDet = oldDet;
|
||||||
|
|
||||||
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
|
for (int i = 0; i < oldDet.GetPath().CountNodes(); ++i)
|
||||||
{
|
{
|
||||||
VPieceNode node = oldDet.GetPath().at(i);
|
VPieceNode node = oldDet.GetPath().at(i);
|
||||||
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
||||||
|
@ -1766,19 +1764,17 @@ void VToolSeamAllowance::ResetPieceLabelTemplate()
|
||||||
{
|
{
|
||||||
const QString errorMsg = QObject::tr("Piece '%1'. Unable to load default piece label template.\n%2\n%3")
|
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() ? throw VException(errorMsg) :
|
VAbstractApplication::VApp()->IsPedantic()
|
||||||
qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
? throw VException(errorMsg)
|
||||||
|
: qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
|
auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData, const QVector<quint32> &pins,
|
||||||
const QVector<quint32> &pins,
|
qreal &rotationAngle, qreal &labelWidth, qreal &labelHeight, QPointF &pos)
|
||||||
qreal &rotationAngle,
|
-> VPieceItem::MoveTypes
|
||||||
qreal &labelWidth,
|
|
||||||
qreal &labelHeight,
|
|
||||||
QPointF &pos) -> VPieceItem::MoveTypes
|
|
||||||
{
|
{
|
||||||
|
|
||||||
VPieceItem::MoveTypes restrictions = VPieceItem::AllModifications;
|
VPieceItem::MoveTypes restrictions = VPieceItem::AllModifications;
|
||||||
|
@ -1786,13 +1782,13 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
|
||||||
{
|
{
|
||||||
if (not qmu::QmuTokenParser::IsSingle(labelData.GetRotation()))
|
if (not qmu::QmuTokenParser::IsSingle(labelData.GetRotation()))
|
||||||
{
|
{
|
||||||
restrictions &= ~ VPieceItem::IsRotatable;
|
restrictions &= ~VPieceItem::IsRotatable;
|
||||||
}
|
}
|
||||||
|
|
||||||
Calculator cal1;
|
Calculator cal1;
|
||||||
rotationAngle = cal1.EvalFormula(VAbstractTool::data.DataVariables(), labelData.GetRotation());
|
rotationAngle = cal1.EvalFormula(VAbstractTool::data.DataVariables(), labelData.GetRotation());
|
||||||
}
|
}
|
||||||
catch(qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
Q_UNUSED(e);
|
Q_UNUSED(e);
|
||||||
return VPieceItem::Error;
|
return VPieceItem::Error;
|
||||||
|
@ -1801,27 +1797,27 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
|
||||||
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 = QRectF(static_cast<QPointF>(*topLeftPinPoint),
|
const QRectF labelRect =
|
||||||
static_cast<QPointF>(*bottomRightPinPoint));
|
QRectF(static_cast<QPointF>(*topLeftPinPoint), 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());
|
||||||
|
|
||||||
pos = labelRect.topLeft();
|
pos = labelRect.topLeft();
|
||||||
|
|
||||||
restrictions &= ~ VPieceItem::IsMovable;
|
restrictions &= ~VPieceItem::IsMovable;
|
||||||
restrictions &= ~ VPieceItem::IsResizable;
|
restrictions &= ~VPieceItem::IsResizable;
|
||||||
|
|
||||||
return restrictions;
|
return restrictions;
|
||||||
}
|
}
|
||||||
catch(const VExceptionBadId &)
|
catch (const VExceptionBadId &)
|
||||||
{
|
{
|
||||||
// do nothing.
|
// do nothing.
|
||||||
}
|
}
|
||||||
|
@ -1841,10 +1837,10 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
|
||||||
|
|
||||||
if (not widthIsSingle || not heightIsSingle)
|
if (not widthIsSingle || not heightIsSingle)
|
||||||
{
|
{
|
||||||
restrictions &= ~ VPieceItem::IsResizable;
|
restrictions &= ~VPieceItem::IsResizable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
Q_UNUSED(e);
|
Q_UNUSED(e);
|
||||||
return VPieceItem::Error;
|
return VPieceItem::Error;
|
||||||
|
@ -1861,9 +1857,9 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
|
||||||
const qreal lHeight = ToPixel(labelHeight, *VDataTool::data.GetPatternUnit());
|
const qreal lHeight = ToPixel(labelHeight, *VDataTool::data.GetPatternUnit());
|
||||||
|
|
||||||
pos = static_cast<QPointF>(*centerPinPoint) - QRectF(0, 0, lWidth, lHeight).center();
|
pos = static_cast<QPointF>(*centerPinPoint) - QRectF(0, 0, lWidth, lHeight).center();
|
||||||
restrictions &= ~ VPieceItem::IsMovable;
|
restrictions &= ~VPieceItem::IsMovable;
|
||||||
}
|
}
|
||||||
catch(const VExceptionBadId &)
|
catch (const VExceptionBadId &)
|
||||||
{
|
{
|
||||||
pos = labelData.GetPos();
|
pos = labelData.GetPos();
|
||||||
}
|
}
|
||||||
|
@ -1877,11 +1873,8 @@ auto VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData &labelData,
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
|
auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom, const QVector<quint32> &pins, qreal &length,
|
||||||
const QVector<quint32> &pins,
|
qreal &rotationAngle, QPointF &pos) -> VPieceItem::MoveTypes
|
||||||
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();
|
||||||
|
@ -1906,7 +1899,7 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
|
||||||
|
|
||||||
return VPieceItem::NotMovable;
|
return VPieceItem::NotMovable;
|
||||||
}
|
}
|
||||||
catch(const VExceptionBadId &)
|
catch (const VExceptionBadId &)
|
||||||
{
|
{
|
||||||
// do nothing.
|
// do nothing.
|
||||||
}
|
}
|
||||||
|
@ -1917,7 +1910,7 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
|
||||||
{
|
{
|
||||||
if (not qmu::QmuTokenParser::IsSingle(geom.GetRotation()))
|
if (not qmu::QmuTokenParser::IsSingle(geom.GetRotation()))
|
||||||
{
|
{
|
||||||
restrictions &= ~ VPieceItem::IsRotatable;
|
restrictions &= ~VPieceItem::IsRotatable;
|
||||||
}
|
}
|
||||||
|
|
||||||
Calculator cal1;
|
Calculator cal1;
|
||||||
|
@ -1925,13 +1918,13 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
|
||||||
|
|
||||||
if (not qmu::QmuTokenParser::IsSingle(geom.GetLength()))
|
if (not qmu::QmuTokenParser::IsSingle(geom.GetLength()))
|
||||||
{
|
{
|
||||||
restrictions &= ~ VPieceItem::IsResizable;
|
restrictions &= ~VPieceItem::IsResizable;
|
||||||
}
|
}
|
||||||
|
|
||||||
Calculator cal2;
|
Calculator cal2;
|
||||||
length = cal2.EvalFormula(VAbstractTool::data.DataVariables(), geom.GetLength());
|
length = cal2.EvalFormula(VAbstractTool::data.DataVariables(), geom.GetLength());
|
||||||
}
|
}
|
||||||
catch(qmu::QmuParserError &e)
|
catch (qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
Q_UNUSED(e);
|
Q_UNUSED(e);
|
||||||
return VPieceItem::Error;
|
return VPieceItem::Error;
|
||||||
|
@ -1945,17 +1938,17 @@ auto VToolSeamAllowance::FindGrainlineGeometry(const VGrainlineData &geom,
|
||||||
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(),
|
QLineF grainline(centerPinPoint->x(), centerPinPoint->y(), centerPinPoint->x() + cLength / 2.0,
|
||||||
centerPinPoint->x() + cLength / 2.0, centerPinPoint->y());
|
centerPinPoint->y());
|
||||||
|
|
||||||
grainline.setAngle(rotationAngle);
|
grainline.setAngle(rotationAngle);
|
||||||
grainline = QLineF(grainline.p2(), grainline.p1());
|
grainline = QLineF(grainline.p2(), grainline.p1());
|
||||||
grainline.setLength(cLength);
|
grainline.setLength(cLength);
|
||||||
|
|
||||||
pos = grainline.p2();
|
pos = grainline.p2();
|
||||||
restrictions &= ~ VPieceItem::IsMovable;
|
restrictions &= ~VPieceItem::IsMovable;
|
||||||
}
|
}
|
||||||
catch(const VExceptionBadId &)
|
catch (const VExceptionBadId &)
|
||||||
{
|
{
|
||||||
pos = geom.GetPos();
|
pos = geom.GetPos();
|
||||||
}
|
}
|
||||||
|
@ -1990,7 +1983,7 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc
|
||||||
{
|
{
|
||||||
case (Tool::NodePoint):
|
case (Tool::NodePoint):
|
||||||
{
|
{
|
||||||
auto *tool = qobject_cast<VNodePoint*>(VAbstractPattern::getTool(node.GetId()));
|
auto *tool = qobject_cast<VNodePoint *>(VAbstractPattern::getTool(node.GetId()));
|
||||||
SCASSERT(tool != nullptr);
|
SCASSERT(tool != nullptr);
|
||||||
|
|
||||||
if (tool->parent() != parent)
|
if (tool->parent() != parent)
|
||||||
|
@ -2014,15 +2007,15 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc
|
||||||
connect(tool, &VNodePoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem, Qt::UniqueConnection);
|
connect(tool, &VNodePoint::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,
|
connect(tool, &VNodePoint::TogglePassmarkLineType, parent, &VToolSeamAllowance::TogglePassmarkLineType,
|
||||||
&VToolSeamAllowance::TogglePassmarkLineType, Qt::UniqueConnection);
|
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);
|
||||||
tool->SetParentType(ParentType::Item);
|
tool->SetParentType(ParentType::Item);
|
||||||
tool->SetExluded(node.IsExcluded());
|
tool->SetExluded(node.IsExcluded());
|
||||||
}
|
}
|
||||||
tool->setVisible(not node.IsExcluded());//Hide excluded point
|
tool->setVisible(not node.IsExcluded()); // Hide excluded point
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case (Tool::NodeArc):
|
case (Tool::NodeArc):
|
||||||
|
@ -2032,7 +2025,7 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc
|
||||||
// Do nothing
|
// Do nothing
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
qDebug()<<"Get wrong tool type. Ignore.";
|
qDebug() << "Get wrong tool type. Ignore.";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2053,7 +2046,7 @@ void VToolSeamAllowance::InitInternalPaths(const VPiece &detail)
|
||||||
const QVector<quint32> paths = detail.GetInternalPaths();
|
const QVector<quint32> paths = detail.GetInternalPaths();
|
||||||
for (auto path : paths)
|
for (auto path : paths)
|
||||||
{
|
{
|
||||||
auto *tool = qobject_cast<VToolPiecePath*>(VAbstractPattern::getTool(path));
|
auto *tool = qobject_cast<VToolPiecePath *>(VAbstractPattern::getTool(path));
|
||||||
SCASSERT(tool != nullptr);
|
SCASSERT(tool != nullptr);
|
||||||
|
|
||||||
if (tool->parent() != this)
|
if (tool->parent() != this)
|
||||||
|
@ -2114,8 +2107,8 @@ auto VToolSeamAllowance::PrepareLabelData(const VPatternLabelData &labelData, co
|
||||||
|
|
||||||
qreal labelWidth = 0;
|
qreal labelWidth = 0;
|
||||||
qreal labelHeight = 0;
|
qreal labelHeight = 0;
|
||||||
const VTextGraphicsItem::MoveTypes type = FindLabelGeometry(labelData, pins, labelAngle, labelWidth, labelHeight,
|
const VTextGraphicsItem::MoveTypes type =
|
||||||
pos);
|
FindLabelGeometry(labelData, pins, labelAngle, labelWidth, labelHeight, pos);
|
||||||
if (type & VGrainlineItem::Error)
|
if (type & VGrainlineItem::Error)
|
||||||
{
|
{
|
||||||
labelItem->hide();
|
labelItem->hide();
|
||||||
|
@ -2139,14 +2132,14 @@ auto VToolSeamAllowance::PrepareLabelData(const VPatternLabelData &labelData, co
|
||||||
auto VToolSeamAllowance::SelectedTools() const -> QList<VToolSeamAllowance *>
|
auto VToolSeamAllowance::SelectedTools() const -> QList<VToolSeamAllowance *>
|
||||||
{
|
{
|
||||||
QList<VToolSeamAllowance *> tools;
|
QList<VToolSeamAllowance *> tools;
|
||||||
if(m_sceneDetails)
|
if (m_sceneDetails)
|
||||||
{
|
{
|
||||||
const QList<QGraphicsItem *> list = m_sceneDetails->selectedItems();
|
const QList<QGraphicsItem *> list = m_sceneDetails->selectedItems();
|
||||||
|
|
||||||
if (not list.isEmpty())
|
if (not list.isEmpty())
|
||||||
{
|
{
|
||||||
tools.reserve(list.size());
|
tools.reserve(list.size());
|
||||||
for(auto *item : list)
|
for (auto *item : list)
|
||||||
{
|
{
|
||||||
auto *tool = qgraphicsitem_cast<VToolSeamAllowance *>(item);
|
auto *tool = qgraphicsitem_cast<VToolSeamAllowance *>(item);
|
||||||
if (tool != nullptr && tool->getId() != m_id)
|
if (tool != nullptr && tool->getId() != m_id)
|
||||||
|
@ -2182,8 +2175,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(doc->CreateElementWithText(VToolSeamAllowance::TagRecord,
|
pinsElement.appendChild(
|
||||||
QString().setNum(record)));
|
doc->CreateElementWithText(VToolSeamAllowance::TagRecord, QString().setNum(record)));
|
||||||
}
|
}
|
||||||
domElement.appendChild(pinsElement);
|
domElement.appendChild(pinsElement);
|
||||||
}
|
}
|
||||||
|
@ -2236,7 +2229,7 @@ auto VToolSeamAllowance::DuplicateNode(const VPieceNode &node, const VToolSeamAl
|
||||||
VNodeSplinePath::Create(initNodeData);
|
VNodeSplinePath::Create(initNodeData);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
qDebug()<<"May be wrong tool type!!! Ignoring."<<Q_FUNC_INFO;
|
qDebug() << "May be wrong tool type!!! Ignoring." << Q_FUNC_INFO;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return initNodeData.id;
|
return initNodeData.id;
|
||||||
|
@ -2278,7 +2271,7 @@ auto VToolSeamAllowance::DuplicateCustomSARecords(const QVector<CustomSARecord>
|
||||||
{
|
{
|
||||||
QVector<CustomSARecord> newRecords;
|
QVector<CustomSARecord> newRecords;
|
||||||
newRecords.reserve(records.size());
|
newRecords.reserve(records.size());
|
||||||
for(auto record : records)
|
for (auto record : records)
|
||||||
{
|
{
|
||||||
record.path = DuplicatePiecePath(record.path, initData);
|
record.path = DuplicatePiecePath(record.path, initData);
|
||||||
record.startPoint = replacements.value(record.startPoint, NULL_ID);
|
record.startPoint = replacements.value(record.startPoint, NULL_ID);
|
||||||
|
@ -2294,7 +2287,7 @@ auto VToolSeamAllowance::DuplicateInternalPaths(const QVector<quint32> &iPaths,
|
||||||
{
|
{
|
||||||
QVector<quint32> newPaths;
|
QVector<quint32> newPaths;
|
||||||
newPaths.reserve(iPaths.size());
|
newPaths.reserve(iPaths.size());
|
||||||
for(auto iPath : iPaths)
|
for (auto iPath : iPaths)
|
||||||
{
|
{
|
||||||
newPaths.append(DuplicatePiecePath(iPath, initData));
|
newPaths.append(DuplicatePiecePath(iPath, initData));
|
||||||
}
|
}
|
||||||
|
@ -2307,7 +2300,7 @@ auto VToolSeamAllowance::DuplicatePlaceLabels(const QVector<quint32> &placeLabel
|
||||||
{
|
{
|
||||||
QVector<quint32> newPlaceLabels;
|
QVector<quint32> newPlaceLabels;
|
||||||
newPlaceLabels.reserve(placeLabels.size());
|
newPlaceLabels.reserve(placeLabels.size());
|
||||||
for(auto placeLabel : placeLabels)
|
for (auto placeLabel : placeLabels)
|
||||||
{
|
{
|
||||||
QSharedPointer<VPlaceLabelItem> label = initData.data->GeometricObject<VPlaceLabelItem>(placeLabel);
|
QSharedPointer<VPlaceLabelItem> label = initData.data->GeometricObject<VPlaceLabelItem>(placeLabel);
|
||||||
auto *tool = qobject_cast<VAbstractNode *>(VAbstractPattern::getTool(placeLabel));
|
auto *tool = qobject_cast<VAbstractNode *>(VAbstractPattern::getTool(placeLabel));
|
||||||
|
@ -2341,7 +2334,7 @@ auto VToolSeamAllowance::DuplicateNodes(const VPiecePath &path, const VToolSeamA
|
||||||
{
|
{
|
||||||
QVector<VPieceNode> nodes;
|
QVector<VPieceNode> nodes;
|
||||||
nodes.reserve(path.CountNodes());
|
nodes.reserve(path.CountNodes());
|
||||||
for (int i = 0; i< path.CountNodes(); ++i)
|
for (int i = 0; i < path.CountNodes(); ++i)
|
||||||
{
|
{
|
||||||
VPieceNode nodeD = path.at(i);
|
VPieceNode nodeD = path.at(i);
|
||||||
const quint32 oldId = nodeD.GetId();
|
const quint32 oldId = nodeD.GetId();
|
||||||
|
|
Loading…
Reference in a new issue