]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxAppTraits::SetLocale() and call it during wxApp initialization in all ports...
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 12 Mar 2007 01:46:14 +0000 (01:46 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 12 Mar 2007 01:46:14 +0000 (01:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44773 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/apptrait.h
include/wx/unix/apptrait.h
src/common/appbase.cpp
src/gtk/app.cpp
src/gtk/utilsgtk.cpp

index e6b69a5b93945aca49ea683f6970153181bc996e..58847946242d8057a927436caac457cf988f7b74 100644 (file)
@@ -38,6 +38,7 @@ All:
 - Implemented background colour in wxRichTextCtrl.
 - Fixed crashes in helpview when opening a file.
 - Added wxMutex::LockTimeout() (Aleksandr Napylov)
+- Set locale to the default in all ports, not just wxGTK
 
 wxGTK:
 
index 1513596cc7114ee4cb2d8c8c709eef517cdd747d..c2ad503e726caf3df087aeec8b0abe5389c10b4c 100644 (file)
@@ -40,7 +40,7 @@ public:
     // needed since this class declares virtual members
     virtual ~wxAppTraitsBase() { }
 
-    // hooks for creating the global objects, may be overridden by the user
+    // hooks for working with the global objects, may be overridden by the user
     // ------------------------------------------------------------------------
 
 #if wxUSE_LOG
@@ -69,6 +69,13 @@ public:
     virtual wxStandardPathsBase& GetStandardPaths();
 #endif // wxUSE_STDPATHS
 
+#if wxUSE_INTL
+    // called during wxApp initialization to set the locale to correspond to
+    // the user default (i.e. system locale under Windows, LC_ALL under Unix)
+    virtual void SetLocale();
+#endif // wxUSE_INTL
+
+
     // functions abstracting differences between GUI and console modes
     // ------------------------------------------------------------------------
 
@@ -110,6 +117,10 @@ public:
     virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable() = 0;
 #endif
 
+
+    // functions returning port-specific information
+    // ------------------------------------------------------------------------
+
     // return information about the (native) toolkit currently used and its
     // runtime (not compile-time) version.
     // returns wxPORT_BASE for console applications and one of the remaining
index 67e903bdaa3f19f2f1f0fabeab90810e9add3757..4a59ace1f6776ed16dea45d9b83ebbfa8c3abb9c 100644 (file)
@@ -41,6 +41,7 @@ public:
     virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const;
 
 #ifdef __WXGTK__
+    virtual void SetLocale();
     virtual wxString GetDesktopEnvironment() const;
 #endif
 
index cb97afa9ef744831f23731d6c24dccc98db70783..296d1cc6c8251c1d4c7277383cc963e2528ba7aa 100644 (file)
@@ -146,6 +146,10 @@ wxAppConsole::~wxAppConsole()
 
 bool wxAppConsole::Initialize(int& argcOrig, wxChar **argvOrig)
 {
+#if wxUSE_INTL
+    GetTraits()->SetLocale();
+#endif // wxUSE_INTL
+
     // remember the command line arguments
     argc = argcOrig;
     argv = argvOrig;
@@ -156,7 +160,7 @@ bool wxAppConsole::Initialize(int& argcOrig, wxChar **argvOrig)
         // the application name is, by default, the name of its executable file
         wxFileName::SplitPath(argv[0], NULL, &m_appName, NULL);
     }
-#endif
+#endif // !__WXPALMOS__
 
     return true;
 }
@@ -503,6 +507,11 @@ GSocketGUIFunctionsTable* wxConsoleAppTraitsBase::GetSocketGUIFunctionsTable()
 // wxAppTraits
 // ----------------------------------------------------------------------------
 
+void wxAppTraitsBase::SetLocale()
+{
+    setlocale(LC_ALL, "");
+}
+
 #ifdef __WXDEBUG__
 
 bool wxAppTraitsBase::ShowAssertDialog(const wxString& msgOriginal)
index 2c9bb645f18c474c142dba282faf354428bd082c..406729696ff3da20f12764393457a41c31d50edb 100644 (file)
@@ -403,7 +403,8 @@ GdkVisual *wxApp::GetGdkVisual()
 
 bool wxApp::Initialize(int& argc, wxChar **argv)
 {
-    bool init_result;
+    if ( !wxAppBase::Initialize(argc, argv) )
+        return false;
 
 #if wxUSE_THREADS
     if (!g_thread_supported())
@@ -413,8 +414,6 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
     g_main_context_set_poll_func(NULL, wxapp_poll_func);
 #endif // wxUSE_THREADS
 
-    gtk_set_locale();
-
     // We should have the wxUSE_WCHAR_T test on the _outside_
 #if wxUSE_WCHAR_T
     // gtk+ 2.0 supports Unicode through UTF-8 strings
@@ -451,6 +450,9 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
     static wxConvBrokenFileNames fileconv(encName);
     wxConvFileName = &fileconv;
 
+
+    bool init_result;
+
 #if wxUSE_UNICODE
     // gtk_init() wants UTF-8, not wchar_t, so convert
     int i;
@@ -507,13 +509,6 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
     // we can not enter threads before gtk_init is done
     gdk_threads_enter();
 
-    if ( !wxAppBase::Initialize(argc, argv) )
-    {
-        gdk_threads_leave();
-
-        return false;
-    }
-
     wxSetDetectableAutoRepeat( true );
 
 #if wxUSE_INTL
index 698225a0beb75acad1a38317df6c00a6ce5dc1a3..c50a21629c6e7fe0f8c7b90e4da07358c7f87daa 100644 (file)
@@ -329,6 +329,11 @@ static wxString GetSM()
 // wxGUIAppTraits
 //-----------------------------------------------------------------------------
 
+void wxGUIAppTraits::SetLocale()
+{
+    gtk_set_locale();
+}
+
 #ifdef __WXDEBUG__
 
 #if wxUSE_STACKWALKER