From 768a2b1f11b4367ae5cf2ccef0c5ceb54da95fa2 Mon Sep 17 00:00:00 2001 From: Aapo Date: Fri, 27 Nov 2020 17:43:38 +0200 Subject: [PATCH] [TD] Make tolerance labels use the same formatValue() conversion as dimension labels. Support MultiValueSchemas for tolerances, too. --- src/Mod/TechDraw/App/DrawViewDimension.cpp | 4 +++- src/Mod/TechDraw/Gui/QGIViewDimension.cpp | 16 ++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index 5f1a7b367a2c..c0969743a790 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -577,6 +577,7 @@ std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int //qUserString from Quantity includes units - prefix + R + nnn ft + suffix qMultiValueStr = formatPrefix + qGenPrefix + qUserString + formatSuffix; } + formattedValue = qMultiValueStr; } else if ((unitSystem == Base::UnitSystem::ImperialCivil) && angularMeasure) { QString dispMinute = QString::fromUtf8("\'"); @@ -591,6 +592,7 @@ std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int // prefix + 48*30'30" + suffix qMultiValueStr = formatPrefix + qGenPrefix + displaySub + formatSuffix; } + formattedValue = qMultiValueStr; } else { //handle single value schemes if (formatSpecifier.isEmpty()) { @@ -702,7 +704,7 @@ QStringList DrawViewDimension::getPrefixSuffixSpec(QString fSpec) QString formatSuffix; QString formatted; //find the %x.y tag in FormatSpec - QRegExp rxFormat(QString::fromUtf8("%[0-9]*\\.*[0-9]*[aefgAEFG]")); //printf double format spec + QRegExp rxFormat(QString::fromUtf8("%[+-]*[0-9]*\\.*[0-9]*[aefgAEFG]")); //printf double format spec QString match; int pos = 0; if ((pos = rxFormat.indexIn(fSpec, 0)) != -1) { diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index 420b91e928a6..f745c511d10a 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -357,14 +357,14 @@ void QGIDatumLabel::setTolString() QString overFormat; QString underFormat; - #if QT_VERSION >= 0x050000 - overFormat = QString::asprintf(qsFormatOver.toStdString().c_str(), overTol); - underFormat = QString::asprintf(qsFormatUnder.toStdString().c_str(), underTol); - #else - QString qs2; - overFormat = qs2.sprintf(qsFormatOver.toStdString().c_str(), overTol); - underFormat = qs2.sprintf(qsFormatUnder.toStdString().c_str(), underTol); - #endif + + if (dim->isMultiValueSchema()) { + overFormat = QString::fromUtf8(dim->formatValue(overTol, qsFormatOver, 0).c_str()); + underFormat = QString::fromUtf8(dim->formatValue(underTol, qsFormatUnder, 0).c_str()); + } else { + overFormat = QString::fromUtf8(dim->formatValue(overTol, qsFormatOver, 1).c_str()); + underFormat = QString::fromUtf8(dim->formatValue(underTol, qsFormatUnder, 1).c_str()); + } m_tolTextOver->setPlainText(overFormat + tolSuffix); m_tolTextUnder->setPlainText(underFormat + tolSuffix);