Skip to content

Commit

Permalink
Increase precision of unit conversions
Browse files Browse the repository at this point in the history
Helper funtion for QString::number with default precision of 16.
  • Loading branch information
sjoelund authored and adeas31 committed Apr 23, 2020
1 parent 9d1034f commit 895904a
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 15 deletions.
8 changes: 3 additions & 5 deletions OMEdit/OMEditLIB/Component/ComponentProperties.cpp
Expand Up @@ -156,7 +156,7 @@ void Parameter::setValueWidget(QString value, bool defaultValue, QString fromUni
OMCInterface::convertUnits_res convertUnit = pOMCProxy->convertUnits(fromUnit, mpUnitComboBox->currentText());
if (convertUnit.unitsCompatible) {
realValue = Utilities::convertUnit(realValue, convertUnit.offset, convertUnit.scaleFactor);
value = QString::number(realValue);
value = StringHandler::number(realValue);
}
} else { // if expression
value = Utilities::arrayExpressionUnitConversion(MainWindow::instance()->getOMCProxy(), value, fromUnit, mpUnitComboBox->currentText());
Expand Down Expand Up @@ -1165,12 +1165,10 @@ void ComponentParameters::updateComponentParameters()
OMCInterface::convertUnits_res convertUnit = pOMCProxy->convertUnits(pParameter->getUnitComboBox()->currentText(), pParameter->getUnit());
if (convertUnit.unitsCompatible) {
componentModifierRealValue = Utilities::convertUnit(componentModifierRealValue, convertUnit.offset, convertUnit.scaleFactor);
componentModifierValue = QString::number(componentModifierRealValue);
componentModifierValue = StringHandler::number(componentModifierRealValue);
}
} else { // if expression
componentModifierValue = Utilities::arrayExpressionUnitConversion(pOMCProxy, componentModifierValue,
pParameter->getUnitComboBox()->currentText(),
pParameter->getUnit());
componentModifierValue = Utilities::arrayExpressionUnitConversion(pOMCProxy, componentModifierValue, pParameter->getUnitComboBox()->currentText(), pParameter->getUnit());
}
}
if (pParameter->isValueModified()) {
Expand Down
10 changes: 4 additions & 6 deletions OMEdit/OMEditLIB/Plotting/PlotWindowContainer.cpp
Expand Up @@ -557,20 +557,18 @@ void PlotWindowContainer::exportVariables()
data << QString::number(pPlotWindow->getPlot()->getPlotCurvesList().at(0)->mXAxisVector.at(i));
for (int j = 0; j < headers.size() - 1; ++j) {
PlotCurve *pPlotCurve = pPlotWindow->getPlot()->getPlotCurvesList().at(j);
OMCInterface::convertUnits_res convertUnit = MainWindow::instance()->getOMCProxy()->convertUnits(pPlotCurve->getDisplayUnit(),
pPlotCurve->getUnit());
OMCInterface::convertUnits_res convertUnit = MainWindow::instance()->getOMCProxy()->convertUnits(pPlotCurve->getDisplayUnit(), pPlotCurve->getUnit());
if (convertUnit.unitsCompatible) {
data << QString::number(Utilities::convertUnit(pPlotCurve->mYAxisVector.at(i), convertUnit.offset, convertUnit.scaleFactor));
data << StringHandler::number(Utilities::convertUnit(pPlotCurve->mYAxisVector.at(i), convertUnit.offset, convertUnit.scaleFactor));
} else {
data << QString::number(pPlotCurve->mYAxisVector.at(i));
data << StringHandler::number(pPlotCurve->mYAxisVector.at(i));
}
}
contents.append(data.join(",")).append("\n");
}
// create a file
if (MainWindow::instance()->getLibraryWidget()->saveFile(fileName, contents)) {
MessagesWidget::instance()->addGUIMessage(MessageItem(MessageItem::Modelica, tr("Exported variables in %1")
.arg(fileName), Helper::scriptingKind, Helper::notificationLevel));
MessagesWidget::instance()->addGUIMessage(MessageItem(MessageItem::Modelica, tr("Exported variables in %1").arg(fileName), Helper::scriptingKind, Helper::notificationLevel));
}
}

Expand Down
6 changes: 3 additions & 3 deletions OMEdit/OMEditLIB/Plotting/VariablesWidget.cpp
Expand Up @@ -340,7 +340,7 @@ QVariant VariablesTreeItem::getValue(QString fromUnit, QString toUnit)
qreal realValue = mValue.toDouble(&ok);
if (ok) {
realValue = Utilities::convertUnit(realValue, convertUnit.offset, convertUnit.scaleFactor);
value = QString::number(realValue);
value = StringHandler::number(realValue);
}
}
}
Expand Down Expand Up @@ -788,7 +788,7 @@ void VariablesTreeModel::insertVariablesItems(QString fileName, QString filePath
qreal realValue = variableData[4].toDouble(&ok);
if (ok) {
realValue = Utilities::convertUnit(realValue, convertUnit.offset, convertUnit.scaleFactor);
variableData[4] = QString::number(realValue);
variableData[4] = StringHandler::number(realValue);
}
}
} else { /* use unit as displayUnit */
Expand Down Expand Up @@ -2116,7 +2116,7 @@ void VariablesWidget::unitChanged(const QModelIndex &index)
qreal realValue = stringValue.toDouble(&ok);
if (ok) {
realValue = Utilities::convertUnit(realValue, convertUnit.offset, convertUnit.scaleFactor);
pVariablesTreeItem->setData(1, QString::number(realValue), Qt::EditRole);
pVariablesTreeItem->setData(1, StringHandler::number(realValue), Qt::EditRole);
}
/* update plots */
foreach (PlotCurve *pPlotCurve, pPlotWindow->getPlot()->getPlotCurvesList()) {
Expand Down
13 changes: 13 additions & 0 deletions OMEdit/OMEditLIB/Util/StringHandler.cpp
Expand Up @@ -1856,3 +1856,16 @@ QString StringHandler::insertClassAtPosition(QString parentClassText, QString ch
}
return classText;
}

/*!
* \brief StringHandler::number
* Helper for QString::number with default precision of 16 instead of 6.
* \param value
* \param format
* \param precision
* \return
*/
QString StringHandler::number(double value, char format, int precision)
{
return QString::number(value, format, precision);
}
1 change: 1 addition & 0 deletions OMEdit/OMEditLIB/Util/StringHandler.h
Expand Up @@ -164,6 +164,7 @@ class StringHandler : public QObject
static QString removeLeadingSpaces(QString contents);
static QString removeLine(QString text, QString lineToRemove);
static QString insertClassAtPosition(QString parentClassText, QString childClassText, int linePosition, int nestedLevel);
static QString number(double value, char format = 'g', int precision = 16);
protected:
static QString mLastOpenDir;
};
Expand Down
2 changes: 1 addition & 1 deletion OMEdit/OMEditLIB/Util/Utilities.cpp
Expand Up @@ -557,7 +557,7 @@ QString Utilities::arrayExpressionUnitConversion(OMCProxy *pOMCProxy, QString mo
}
if (convertUnit.unitsCompatible) {
modifierRealValueArrayElement = Utilities::convertUnit(modifierRealValueArrayElement, convertUnit.offset, convertUnit.scaleFactor);
modifierConvertedValuesArray.append(QString::number(modifierRealValueArrayElement));
modifierConvertedValuesArray.append(StringHandler::number(modifierRealValueArrayElement));
}
}
}
Expand Down

0 comments on commit 895904a

Please sign in to comment.