Commit Graph

13 Commits

Author SHA1 Message Date
Václav Slavík
5d2b2b3d7a Don’t assert on weird custom number formatting settings
On OS X at least, the user is free to customize numbers formatting rules
and use more than one character for separators. Don’t assert in such
cases (the rules are untrusted input), but instead fall back to
something reasonable, as is already done if we can’t retrieve the rules.
2016-05-30 18:20:59 +02:00
Vadim Zeitlin
419480cf22 Fix several problems with number formatting in wxNumberFormatter.
We shouldn't add thousands separators nor remove trailing zeros for the
numbers in scientific format.

Also avoid "-0" as output.

See #15625.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75560 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-01-05 21:10:52 +00:00
Stefan Csomor
5c475284a2 use common bottleneck
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74240 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-06-15 14:45:17 +00:00
Vadim Zeitlin
a05cbc20e3 Fix bug in wxNumberFormatter::ToString() for negative numbers.
Don't include the possible leading sign in the span of digits to be grouped as
this gave nonsensical strings such as "-,123" when adding thousands separators
to "123".

Closes #14526.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-07-29 22:08:37 +00:00
Vadim Zeitlin
7451fe7b69 Always include locale.h to get LC_ALL declaration.
For some reason locale.h was only included in !wxUSE_STD_STRING case but we
actually always need it as we use LC_ALL in this file and at least in Sun CC
build it wasn't included from anywhere else so include it from here to fix the
build.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-27 21:10:40 +00:00
Dimitri Schoolwerth
fa5d9d2006 Fixed wxUSE_STD_STRING==0 compilation.
With at least MSVC9 numformatter.cpp wouldn't compile because of unknown identifiers related to locales. Include <locale.h> in case wxUSE_STD_STRING is set to 0.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67572 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-22 10:43:47 +00:00
Dimitri Schoolwerth
88def1632e Compilation fixes for wxUSE_LOCALE and wxUSE_XLOCALE set to 0.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67393 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-04 22:07:42 +00:00
Dimitri Schoolwerth
80fdcdb90e No changes, synchronised source names that appear commented at the top of files with the actual path to the files.
Fixed commented names (path, filename, and extension) of files in include/ and src/. Prepended the names in src/ with "src/" everywhere, while starting those in include/wx/ with "wx/".

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-20 00:14:35 +00:00
Vadim Zeitlin
d8d9844b29 Further improve caching of locale-specific data in wxNumberFormatter.
Also update the cached data if setlocale() was called explicitly instead of
using wxLocale to change the locale because at least under Unix systems
calling setlocale() changes the result of wxLocale::GetInfo() and so the
result returned by wxNumberFormatter::GetDecimalSeparator() and
GetThousandsSeparatorIfUsed() could be inconsistent with the locale being
really used.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-20 15:06:09 +00:00
Vadim Zeitlin
a7d696f13d Include more information in assert in wxNumberFormatter.
Show more information in the assert failure message to try to understand why
is the unit test failing on the buildbot.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-19 23:47:16 +00:00
Vadim Zeitlin
0d30c79b44 Update cached values in wxNumberFormatter when locale changes.
Caching the decimal and thousands separators in wxNumberFormatter is a useful
performance optimization, however it can give wrong results if the locale
changed since the cached values were initialized. So remember the locale used
for the initialization and redo it if it changed. This should still be almost
as fast as the previous version but now also correct (still not MT-safe
though).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66713 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-19 10:48:10 +00:00
Vadim Zeitlin
f2a5052baa Add support for long long to wxNumberFormatter.
It seems to make sense to allow using it for formatting and parsing long long
values as well as it can be done trivially using almost the same code as for
long.

It would be nice to support long double in a similar way but we don't wrap
C99 strtold() right now so it wouldn't be as simple, leave it for later.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66712 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-19 10:47:57 +00:00
Vadim Zeitlin
6686fbad16 Add wxNumberFormatter class helping to deal with thousands separators.
wxNumberFormatter formats and parses numbers with thousands separators.

Add the class itself as well as documentation and the unit test for it.

See #12166.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-19 10:47:40 +00:00