mirror of
https://gitlab.com/smart-pattern/valentina.git
synced 2024-09-19 23:34:04 +02:00
Compare commits
5 commits
15863fc0ad
...
24fc530899
Author | SHA1 | Date | |
---|---|---|---|
24fc530899 | |||
2f86684d24 | |||
b27ad3016e | |||
f3329fb130 | |||
5b80eb38db |
10
appveyor.yml
10
appveyor.yml
|
@ -620,7 +620,10 @@ for:
|
||||||
) 2>&1 | sed 's/^/CACHE: /' &
|
) 2>&1 | sed 's/^/CACHE: /' &
|
||||||
|
|
||||||
fi
|
fi
|
||||||
- pip3 install --user --upgrade pip dropbox py7zr 'urllib3<2.0' conan==1.63.0 requests
|
- mkdir ~/.venv
|
||||||
|
- python3 -m venv ~/.venv
|
||||||
|
- source ~/.venv/bin/activate
|
||||||
|
- pip3 install --upgrade pip dropbox py7zr 'urllib3<2.0' conan==1.63.0 requests
|
||||||
- export QTDIR=$(brew --prefix qt6)
|
- export QTDIR=$(brew --prefix qt6)
|
||||||
- export PATH="$PATH:`python3 -m site --user-base`/bin:$QTDIR/bin"
|
- export PATH="$PATH:`python3 -m site --user-base`/bin:$QTDIR/bin"
|
||||||
- echo $PATH
|
- echo $PATH
|
||||||
|
@ -821,8 +824,11 @@ for:
|
||||||
) 2>&1 | sed 's/^/CACHE: /' &
|
) 2>&1 | sed 's/^/CACHE: /' &
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
- mkdir ~/.venv
|
||||||
|
- python3 -m venv ~/.venv
|
||||||
|
- source ~/.venv/bin/activate
|
||||||
- sudo python3 -m pip install --upgrade pip
|
- sudo python3 -m pip install --upgrade pip
|
||||||
- pip3 install --user --upgrade pip dropbox py7zr 'urllib3<2.0' conan==1.63.0 requests
|
- pip3 install --upgrade pip dropbox py7zr 'urllib3<2.0' conan==1.63.0 requests
|
||||||
- export PATH="`brew --prefix qbs`/bin:$PATH"
|
- export PATH="`brew --prefix qbs`/bin:$PATH"
|
||||||
- echo $PATH
|
- echo $PATH
|
||||||
- clang --version
|
- clang --version
|
||||||
|
|
|
@ -87,7 +87,7 @@ auto main(int argc, char *argv[]) -> int
|
||||||
Q_INIT_RESOURCE(win_dark_theme); // NOLINT
|
Q_INIT_RESOURCE(win_dark_theme); // NOLINT
|
||||||
|
|
||||||
#ifdef CRASH_REPORTING
|
#ifdef CRASH_REPORTING
|
||||||
InitializeCrashpad(QStringLiteral(VER_PRODUCTNAME_STR).toLower());
|
InitializeCrashpad(QStringLiteral(VER_PRODUCTNAME_STR));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
|
|
|
@ -86,7 +86,7 @@ auto main(int argc, char *argv[]) -> int
|
||||||
Q_INIT_RESOURCE(win_dark_theme); // NOLINT
|
Q_INIT_RESOURCE(win_dark_theme); // NOLINT
|
||||||
|
|
||||||
#ifdef CRASH_REPORTING
|
#ifdef CRASH_REPORTING
|
||||||
InitializeCrashpad(QStringLiteral(VER_PRODUCTNAME_STR).toLower());
|
InitializeCrashpad(QStringLiteral(VER_PRODUCTNAME_STR));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
|
|
|
@ -94,7 +94,7 @@ auto main(int argc, char *argv[]) -> int
|
||||||
Q_INIT_RESOURCE(win_dark_theme); // NOLINT
|
Q_INIT_RESOURCE(win_dark_theme); // NOLINT
|
||||||
|
|
||||||
#ifdef CRASH_REPORTING
|
#ifdef CRASH_REPORTING
|
||||||
InitializeCrashpad(QStringLiteral(VER_PRODUCTNAME_STR).toLower());
|
InitializeCrashpad(QStringLiteral(VER_PRODUCTNAME_STR));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
|
|
|
@ -7890,7 +7890,7 @@ void MainWindow::PrintPatternMessage(QEvent *event)
|
||||||
ui->plainTextEditPatternMessages->appendPlainText(message);
|
ui->plainTextEditPatternMessages->appendPlainText(message);
|
||||||
if (not m_unreadPatternMessage.isNull())
|
if (not m_unreadPatternMessage.isNull())
|
||||||
{
|
{
|
||||||
m_unreadPatternMessage->setText(DialogWarningIcon() + tr("Pattern messages"));
|
m_unreadPatternMessage->setText(DialogWarningIcon(m_unreadPatternMessage) + tr("Pattern messages"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -165,7 +165,7 @@ auto GetExecutableDir() -> QString
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto InitializeCrashpad(const QString &appName) -> bool
|
auto InitializeCrashpad(const QString &appName) -> bool
|
||||||
{
|
{
|
||||||
QScopedPointer<VCommonSettings> const appSettings(AppSettings(appName));
|
QScopedPointer<VCommonSettings> const appSettings(AppSettings(appName.toLower()));
|
||||||
|
|
||||||
if (!appSettings->IsSendCrashReport())
|
if (!appSettings->IsSendCrashReport())
|
||||||
{
|
{
|
||||||
|
@ -231,7 +231,7 @@ auto InitializeCrashpad(const QString &appName) -> bool
|
||||||
QMap<std::string, std::string> annotations;
|
QMap<std::string, std::string> annotations;
|
||||||
annotations["format"] = "minidump"; // Required: Crashpad setting to save crash as a
|
annotations["format"] = "minidump"; // Required: Crashpad setting to save crash as a
|
||||||
annotations["database"] = dbName.toStdString(); // Required: BugSplat database
|
annotations["database"] = dbName.toStdString(); // Required: BugSplat database
|
||||||
annotations["product"] = appName.toStdString(); // Required: BugSplat appName
|
annotations["product"] = appName.toLower().toStdString(); // Required: BugSplat appName
|
||||||
annotations["version"] = AppCrashVersion().toStdString(); // Required: BugSplat appVersion
|
annotations["version"] = AppCrashVersion().toStdString(); // Required: BugSplat appVersion
|
||||||
|
|
||||||
QString clientID = appSettings->GetClientID();
|
QString clientID = appSettings->GetClientID();
|
||||||
|
|
|
@ -45,7 +45,7 @@ auto LogDirPath(const QString &appName) -> QString
|
||||||
{
|
{
|
||||||
const auto logs = QStringLiteral("Logs");
|
const auto logs = QStringLiteral("Logs");
|
||||||
|
|
||||||
QString logDirPath = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
|
QString const logDirPath = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
|
||||||
if (logDirPath.isEmpty())
|
if (logDirPath.isEmpty())
|
||||||
{
|
{
|
||||||
#if defined(Q_OS_WINDOWS)
|
#if defined(Q_OS_WINDOWS)
|
||||||
|
@ -55,7 +55,7 @@ auto LogDirPath(const QString &appName) -> QString
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#if defined(Q_OS_WINDOWS)
|
#if defined(Q_OS_WINDOWS)
|
||||||
auto path = QStringList{logDirPath, logs}.join(QDir::separator());
|
auto path = QStringList{logDirPath, VER_COMPANYNAME_STR, appName, logs}.join(QDir::separator());
|
||||||
#else
|
#else
|
||||||
auto path = QStringList{logDirPath, VER_COMPANYNAME_STR, logs, appName}.join(QDir::separator());
|
auto path = QStringList{logDirPath, VER_COMPANYNAME_STR, logs, appName}.join(QDir::separator());
|
||||||
#endif
|
#endif
|
||||||
|
@ -72,9 +72,12 @@ VCrashPaths::VCrashPaths(QString exeDir)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VCrashPaths::GetAttachmentPath(const QString &appName) -> QString
|
auto VCrashPaths::GetAttachmentPath(const QString &appName) -> QString
|
||||||
{
|
{
|
||||||
return QStringLiteral("%1/%2-pid%3.log")
|
QString path = QStringLiteral("%1/%2-pid%3.log")
|
||||||
.arg(LogDirPath(appName), appName.toLower())
|
.arg(LogDirPath(appName), appName.toLower())
|
||||||
.arg(QCoreApplication::applicationPid());
|
.arg(QCoreApplication::applicationPid());
|
||||||
|
path = QDir::toNativeSeparators(path);
|
||||||
|
qDebug() << "Crashpad attachment path:" << path;
|
||||||
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -56,6 +56,7 @@
|
||||||
#include <QPlainTextEdit>
|
#include <QPlainTextEdit>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
|
#include <QScreen>
|
||||||
#include <QTextCursor>
|
#include <QTextCursor>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <qnumeric.h>
|
#include <qnumeric.h>
|
||||||
|
@ -608,11 +609,20 @@ auto EachPointLabelIsUnique(QListWidget *listWidget) -> bool
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto DialogWarningIcon() -> QString
|
auto DialogWarningIcon(QWidget *w) -> QString
|
||||||
{
|
{
|
||||||
const QIcon icon = FromTheme(VThemeIcon::DialogWarning);
|
const QIcon icon = FromTheme(VThemeIcon::DialogWarning);
|
||||||
|
|
||||||
const QPixmap pixmap = icon.pixmap(QSize(16, 16));
|
qreal scaleFactor = 1;
|
||||||
|
if (w != nullptr)
|
||||||
|
{
|
||||||
|
if (QScreen *wScreen = w->screen())
|
||||||
|
{
|
||||||
|
scaleFactor = wScreen->devicePixelRatio();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const QPixmap pixmap = icon.pixmap(QSize(qRound(16 / scaleFactor), qRound(16 / scaleFactor)));
|
||||||
QByteArray byteArray;
|
QByteArray byteArray;
|
||||||
QBuffer buffer(&byteArray);
|
QBuffer buffer(&byteArray);
|
||||||
pixmap.save(&buffer, "PNG");
|
pixmap.save(&buffer, "PNG");
|
||||||
|
|
|
@ -92,7 +92,7 @@ auto DoublePoints(QListWidget *listWidget, const VContainer *data, QString &erro
|
||||||
auto DoubleCurves(QListWidget *listWidget, const VContainer *data, QString &error) -> bool;
|
auto DoubleCurves(QListWidget *listWidget, const VContainer *data, QString &error) -> bool;
|
||||||
auto EachPointLabelIsUnique(QListWidget *listWidget) -> bool;
|
auto EachPointLabelIsUnique(QListWidget *listWidget) -> bool;
|
||||||
auto InvalidSegment(QListWidget *listWidget, const VContainer *data, QString &error) -> bool;
|
auto InvalidSegment(QListWidget *listWidget, const VContainer *data, QString &error) -> bool;
|
||||||
auto DialogWarningIcon() -> QString;
|
auto DialogWarningIcon(QWidget* w) -> QString;
|
||||||
auto NodeFont(QFont font, bool nodeExcluded = false) -> QFont;
|
auto NodeFont(QFont font, bool nodeExcluded = false) -> QFont;
|
||||||
void CurrentCurveLength(vidtype curveId, VContainer *data);
|
void CurrentCurveLength(vidtype curveId, VContainer *data);
|
||||||
void SetTabStopDistance(QPlainTextEdit *edit, int tabWidthChar = 4);
|
void SetTabStopDistance(QPlainTextEdit *edit, int tabWidthChar = 4);
|
||||||
|
|
|
@ -1842,7 +1842,7 @@ auto DialogPiecePath::PathIsValid() const -> bool
|
||||||
{
|
{
|
||||||
if (CreatePath().PathPoints(data).count() < 2)
|
if (CreatePath().PathPoints(data).count() < 2)
|
||||||
{
|
{
|
||||||
ui->helpLabel->setText(DialogWarningIcon() + tr("You need more points!"));
|
ui->helpLabel->setText(DialogWarningIcon(ui->helpLabel) + tr("You need more points!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1850,8 +1850,8 @@ auto DialogPiecePath::PathIsValid() const -> bool
|
||||||
if (GetType() == PiecePathType::CustomSeamAllowance && FirstPointEqualLast(ui->listWidget, data, error))
|
if (GetType() == PiecePathType::CustomSeamAllowance && FirstPointEqualLast(ui->listWidget, data, error))
|
||||||
{
|
{
|
||||||
ui->helpLabel->setText(QStringLiteral("%1%2 %3").arg(
|
ui->helpLabel->setText(QStringLiteral("%1%2 %3").arg(
|
||||||
DialogWarningIcon(), tr("First point of <b>custom seam allowance</b> cannot be equal to the last point!"),
|
DialogWarningIcon(ui->helpLabel),
|
||||||
error));
|
tr("First point of <b>custom seam allowance</b> cannot be equal to the last point!"), error));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1859,41 +1859,42 @@ auto DialogPiecePath::PathIsValid() const -> bool
|
||||||
if (DoublePoints(ui->listWidget, data, error))
|
if (DoublePoints(ui->listWidget, data, error))
|
||||||
{
|
{
|
||||||
ui->helpLabel->setText(
|
ui->helpLabel->setText(
|
||||||
QStringLiteral("%1%2 %3").arg(DialogWarningIcon(), tr("You have double points!"), error));
|
QStringLiteral("%1%2 %3").arg(DialogWarningIcon(ui->helpLabel), tr("You have double points!"), error));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
error.clear();
|
error.clear();
|
||||||
if (DoubleCurves(ui->listWidget, data, error))
|
if (DoubleCurves(ui->listWidget, data, error))
|
||||||
{
|
{
|
||||||
ui->helpLabel->setText(
|
ui->helpLabel->setText(QStringLiteral("%1%2 %3").arg(DialogWarningIcon(ui->helpLabel),
|
||||||
QStringLiteral("%1%2 %3").arg(DialogWarningIcon(), tr("The same curve repeats twice!"), error));
|
tr("The same curve repeats twice!"), error));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetType() == PiecePathType::CustomSeamAllowance && not EachPointLabelIsUnique(ui->listWidget))
|
if (GetType() == PiecePathType::CustomSeamAllowance && not EachPointLabelIsUnique(ui->listWidget))
|
||||||
{
|
{
|
||||||
ui->helpLabel->setText(DialogWarningIcon() +
|
ui->helpLabel->setText(DialogWarningIcon(ui->helpLabel) +
|
||||||
tr("Each point in the <b>custom seam allowance</b> path must be unique!"));
|
tr("Each point in the <b>custom seam allowance</b> path must be unique!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (not m_showMode && ui->comboBoxPiece->count() <= 0)
|
if (not m_showMode && ui->comboBoxPiece->count() <= 0)
|
||||||
{
|
{
|
||||||
ui->helpLabel->setText(DialogWarningIcon() + tr("List of details is empty!"));
|
ui->helpLabel->setText(DialogWarningIcon(ui->helpLabel) + tr("List of details is empty!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (not m_showMode && ui->comboBoxPiece->currentIndex() == -1)
|
if (not m_showMode && ui->comboBoxPiece->currentIndex() == -1)
|
||||||
{
|
{
|
||||||
ui->helpLabel->setText(DialogWarningIcon() + tr("Please, select a detail to insert into!"));
|
ui->helpLabel->setText(DialogWarningIcon(ui->helpLabel) + tr("Please, select a detail to insert into!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
error.clear();
|
error.clear();
|
||||||
if (InvalidSegment(ui->listWidget, data, error))
|
if (InvalidSegment(ui->listWidget, data, error))
|
||||||
{
|
{
|
||||||
ui->helpLabel->setText(QStringLiteral("%1%2 %3").arg(DialogWarningIcon(), tr("Invalid segment!"), error));
|
ui->helpLabel->setText(
|
||||||
|
QStringLiteral("%1%2 %3").arg(DialogWarningIcon(ui->helpLabel), tr("Invalid segment!"), error));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3388,13 +3388,14 @@ auto DialogSeamAllowance::MainPathIsValid() const -> bool
|
||||||
{
|
{
|
||||||
if (CreatePiece().MainPathPoints(data).count() < 3)
|
if (CreatePiece().MainPathPoints(data).count() < 3)
|
||||||
{
|
{
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("You need more points!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) + tr("You need more points!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (not MainPathIsClockwise())
|
if (not MainPathIsClockwise())
|
||||||
{
|
{
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("You have to choose points in a clockwise direction!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) +
|
||||||
|
tr("You have to choose points in a clockwise direction!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3402,29 +3403,30 @@ auto DialogSeamAllowance::MainPathIsValid() const -> bool
|
||||||
if (FirstPointEqualLast(uiTabPaths->listWidgetMainPath, data, error))
|
if (FirstPointEqualLast(uiTabPaths->listWidgetMainPath, data, error))
|
||||||
{
|
{
|
||||||
uiTabPaths->helpLabel->setText(QStringLiteral("%1%2 %3").arg(
|
uiTabPaths->helpLabel->setText(QStringLiteral("%1%2 %3").arg(
|
||||||
DialogWarningIcon(), tr("First point cannot be equal to the last point!"), error));
|
DialogWarningIcon(uiTabPaths->helpLabel), tr("First point cannot be equal to the last point!"), error));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
error.clear();
|
error.clear();
|
||||||
if (DoublePoints(uiTabPaths->listWidgetMainPath, data, error))
|
if (DoublePoints(uiTabPaths->listWidgetMainPath, data, error))
|
||||||
{
|
{
|
||||||
uiTabPaths->helpLabel->setText(
|
uiTabPaths->helpLabel->setText(QStringLiteral("%1%2 %3").arg(DialogWarningIcon(uiTabPaths->helpLabel),
|
||||||
QStringLiteral("%1%2 %3").arg(DialogWarningIcon(), tr("You have double points!"), error));
|
tr("You have double points!"), error));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
error.clear();
|
error.clear();
|
||||||
if (DoubleCurves(uiTabPaths->listWidgetMainPath, data, error))
|
if (DoubleCurves(uiTabPaths->listWidgetMainPath, data, error))
|
||||||
{
|
{
|
||||||
uiTabPaths->helpLabel->setText(
|
uiTabPaths->helpLabel->setText(QStringLiteral("%1%2 %3").arg(DialogWarningIcon(uiTabPaths->helpLabel),
|
||||||
QStringLiteral("%1%2 %3").arg(DialogWarningIcon(), tr("The same curve repeats twice!"), error));
|
tr("The same curve repeats twice!"), error));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (not EachPointLabelIsUnique(uiTabPaths->listWidgetMainPath))
|
if (not EachPointLabelIsUnique(uiTabPaths->listWidgetMainPath))
|
||||||
{
|
{
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("Each point in the path must be unique!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) +
|
||||||
|
tr("Each point in the path must be unique!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3432,7 +3434,7 @@ auto DialogSeamAllowance::MainPathIsValid() const -> bool
|
||||||
if (InvalidSegment(uiTabPaths->listWidgetMainPath, data, error))
|
if (InvalidSegment(uiTabPaths->listWidgetMainPath, data, error))
|
||||||
{
|
{
|
||||||
uiTabPaths->helpLabel->setText(
|
uiTabPaths->helpLabel->setText(
|
||||||
QStringLiteral("%1%2 %3").arg(DialogWarningIcon(), tr("Invalid segment!"), error));
|
QStringLiteral("%1%2 %3").arg(DialogWarningIcon(uiTabPaths->helpLabel), tr("Invalid segment!"), error));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3456,14 +3458,15 @@ auto DialogSeamAllowance::MirrorLineIsValid() const -> bool
|
||||||
if (startPoint == NULL_ID && endPoint != NULL_ID)
|
if (startPoint == NULL_ID && endPoint != NULL_ID)
|
||||||
{
|
{
|
||||||
ChangeColor(uiTabPaths->labelMLStartPoint, errorColor);
|
ChangeColor(uiTabPaths->labelMLStartPoint, errorColor);
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("Invalid mirror line start point!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) +
|
||||||
|
tr("Invalid mirror line start point!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startPoint != NULL_ID && endPoint == NULL_ID)
|
if (startPoint != NULL_ID && endPoint == NULL_ID)
|
||||||
{
|
{
|
||||||
ChangeColor(uiTabPaths->labelMLEndPoint, errorColor);
|
ChangeColor(uiTabPaths->labelMLEndPoint, errorColor);
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("Invalid mirror line end point!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) + tr("Invalid mirror line end point!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3471,7 +3474,8 @@ auto DialogSeamAllowance::MirrorLineIsValid() const -> bool
|
||||||
{
|
{
|
||||||
ChangeColor(uiTabPaths->labelMLStartPoint, errorColor);
|
ChangeColor(uiTabPaths->labelMLStartPoint, errorColor);
|
||||||
ChangeColor(uiTabPaths->labelMLEndPoint, errorColor);
|
ChangeColor(uiTabPaths->labelMLEndPoint, errorColor);
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("Start and end mirror line points must be unique!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) +
|
||||||
|
tr("Start and end mirror line points must be unique!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3490,14 +3494,15 @@ auto DialogSeamAllowance::MirrorLineIsValid() const -> bool
|
||||||
if (!uniquePoints.contains(startPoint))
|
if (!uniquePoints.contains(startPoint))
|
||||||
{
|
{
|
||||||
ChangeColor(uiTabPaths->labelMLStartPoint, errorColor);
|
ChangeColor(uiTabPaths->labelMLStartPoint, errorColor);
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("Invalid mirror line start point!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) +
|
||||||
|
tr("Invalid mirror line start point!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!uniquePoints.contains(endPoint))
|
if (!uniquePoints.contains(endPoint))
|
||||||
{
|
{
|
||||||
ChangeColor(uiTabPaths->labelMLEndPoint, errorColor);
|
ChangeColor(uiTabPaths->labelMLEndPoint, errorColor);
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("Invalid mirror line end point!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) + tr("Invalid mirror line end point!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3505,7 +3510,8 @@ auto DialogSeamAllowance::MirrorLineIsValid() const -> bool
|
||||||
{
|
{
|
||||||
ChangeColor(uiTabPaths->labelMLStartPoint, errorColor);
|
ChangeColor(uiTabPaths->labelMLStartPoint, errorColor);
|
||||||
ChangeColor(uiTabPaths->labelMLEndPoint, errorColor);
|
ChangeColor(uiTabPaths->labelMLEndPoint, errorColor);
|
||||||
uiTabPaths->helpLabel->setText(DialogWarningIcon() + tr("Mirror points must be neighbors!"));
|
uiTabPaths->helpLabel->setText(DialogWarningIcon(uiTabPaths->helpLabel) +
|
||||||
|
tr("Mirror points must be neighbors!"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue