Skip to content
Snippets Groups Projects
Commit 24c932f8 authored by Victor Poughon's avatar Victor Poughon
Browse files

ENH: Show trailing dot for GUI floats

parent 3debd708
No related branches found
No related tags found
2 merge requests!621Release 7.0 (master),!123New custom widgets for Float and Int parameters
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <sstream> #include <sstream>
#include <limits> #include <limits>
#include <locale>
#include <QAction> #include <QAction>
namespace otb namespace otb
...@@ -179,13 +180,24 @@ QString QtWidgetDoubleSpinBox::textFromValue(double value) const ...@@ -179,13 +180,24 @@ QString QtWidgetDoubleSpinBox::textFromValue(double value) const
// which leads to ugly trailing zeros for small values (e.g 1.50000) // which leads to ugly trailing zeros for small values (e.g 1.50000)
// We use std::ostringstream because QString::arg formatting support is too limited // We use std::ostringstream because QString::arg formatting support is too limited
std::ostringstream oss; std::ostringstream oss;
oss.imbue(std::locale("")); // use system's locale for formatting
// Set precision to the number of decimal digits that can be represented without change. // Set precision to the number of decimal digits that can be represented without change.
// Use float precision because OTB parameter is float // Use float precision because OTB parameter is float
// For IEEE float it's 6. // For IEEE float it's 6.
oss.precision(std::numeric_limits<float>::digits10); oss.precision(std::numeric_limits<float>::digits10);
oss << value; oss << value;
// Add a trailing dot if the number is integer,
// so that int and float parameters are more visually different.
// For now this is done for all locales, even though not all locales use this
// convention for formatting decimals...
const char dot = std::use_facet<std::numpunct<char>>(std::locale("")).decimal_point();
if (oss.str().find(dot) == std::string::npos)
{
oss << dot;
}
return QString::fromStdString(oss.str()); return QString::fromStdString(oss.str());
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment