]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied and extended patch 886524 (wxGridCellFloatEditor doesn't
authorStefan Neis <Stefan.Neis@t-online.de>
Sun, 8 Feb 2004 16:27:22 +0000 (16:27 +0000)
committerStefan Neis <Stefan.Neis@t-online.de>
Sun, 8 Feb 2004 16:27:22 +0000 (16:27 +0000)
                                   accept '.' and '-').

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/intl.cpp
src/generic/grid.cpp

index 43e74bf0819f1c24ebf7264c555dc8e33ec66fc5..97f504628169f587071ec06fed3ed002a82d5e4f 100644 (file)
@@ -2507,12 +2507,10 @@ bool wxLocale::AddCatalog(const wxChar *szDomain)
 // accessors for locale-dependent data
 // ----------------------------------------------------------------------------
 
-#if 0
-
 #ifdef __WXMSW__
 
 /* static */
-wxString wxLocale::GetInfo(wxLocaleInfo index)
+wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat)
 {
     wxString str;
     wxChar buffer[256];
@@ -2520,13 +2518,14 @@ wxString wxLocale::GetInfo(wxLocaleInfo index)
     buffer[0] = wxT('\0');
     switch (index)
     {
-        case wxSYS_DECIMAL_SEPARATOR:
+        case wxLOCALE_DECIMAL_POINT:
             count = ::GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, buffer, 256);
             if (!count)
                 str << ".";
             else
                 str << buffer;
             break;
+#if 0
         case wxSYS_LIST_SEPARATOR:
             count = ::GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLIST, buffer, 256);
             if (!count)
@@ -2541,6 +2540,7 @@ wxString wxLocale::GetInfo(wxLocaleInfo index)
             else
                 str << buffer;
             break;
+#endif
         default:
             wxFAIL_MSG("Unknown System String !");
     }
@@ -2550,15 +2550,38 @@ wxString wxLocale::GetInfo(wxLocaleInfo index)
 #else // !__WXMSW__
 
 /* static */
-wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory)
+wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat)
 {
-    return wxEmptyString;
-}
+    struct lconv *locale_info = localeconv();
+    switch (cat)
+    {
+        case wxLOCALE_CAT_NUMBER:
+            switch (index)
+            {
+                case wxLOCALE_THOUSANDS_SEP:
+                    return locale_info->thousands_sep;
+                case wxLOCALE_DECIMAL_POINT:
+                    return locale_info->decimal_point;
+                default:
+                    return wxEmptyString;
+            }
+        case wxLOCALE_CAT_MONEY:
+            switch (index)
+            {
+                case wxLOCALE_THOUSANDS_SEP:
+                    return locale_info->mon_thousands_sep;
+                case wxLOCALE_DECIMAL_POINT:
+                    return locale_info->mon_decimal_point;
+                default:
+                    return wxEmptyString;
+            }
+        default:
+            return wxEmptyString;
+    }
+}      
 
 #endif // __WXMSW__/!__WXMSW__
 
-#endif // 0
-
 // ----------------------------------------------------------------------------
 // global functions and variables
 // ----------------------------------------------------------------------------
index 60146166eb1d37227a8663b1f9cd92ba0ea1f30e..1ca6596040d4f483603d5e593e6d660f23d7ee98 100644 (file)
@@ -41,6 +41,7 @@
     #include "wx/checkbox.h"
     #include "wx/combobox.h"
     #include "wx/valtext.h"
+    #include "wx/intl.h"
 #endif
 
 #include "wx/textfile.h"
@@ -1067,7 +1068,8 @@ void wxGridCellFloatEditor::Reset()
 void wxGridCellFloatEditor::StartingKey(wxKeyEvent& event)
 {
     int keycode = event.GetKeyCode();
-        if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-' || keycode == '.'
+        if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-'
+            || keycode == wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER)[0]
             || keycode ==  WXK_NUMPAD0
             || keycode ==  WXK_NUMPAD1
             || keycode ==  WXK_NUMPAD2
@@ -1167,9 +1169,11 @@ bool wxGridCellFloatEditor::IsAcceptedKey(wxKeyEvent& event)
                 return TRUE;
 
             default:
-                // additionally accept 'e' as in '1e+6'
+                // additionally accept 'e' as in '1e+6', also '-', '+', and '.'
                 if ( (keycode < 128) &&
-                     (wxIsdigit(keycode) || tolower(keycode) == 'e') )
+                     (wxIsdigit(keycode) || tolower(keycode) == 'e' ||
+                      keycode == wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER)[0] || 
+                      keycode == '+' || keycode == '-') )
                     return TRUE;
         }
     }