From: Vadim Zeitlin Date: Mon, 12 Mar 2007 01:46:14 +0000 (+0000) Subject: added wxAppTraits::SetLocale() and call it during wxApp initialization in all ports... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d774f9161c7f63060fbdfdcbcd3d60bf2fa65262 added wxAppTraits::SetLocale() and call it during wxApp initialization in all ports, not just wxGTK git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44773 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/changes.txt b/docs/changes.txt index e6b69a5b93..5884794624 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -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: diff --git a/include/wx/apptrait.h b/include/wx/apptrait.h index 1513596cc7..c2ad503e72 100644 --- a/include/wx/apptrait.h +++ b/include/wx/apptrait.h @@ -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 diff --git a/include/wx/unix/apptrait.h b/include/wx/unix/apptrait.h index 67e903bdaa..4a59ace1f6 100644 --- a/include/wx/unix/apptrait.h +++ b/include/wx/unix/apptrait.h @@ -41,6 +41,7 @@ public: virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const; #ifdef __WXGTK__ + virtual void SetLocale(); virtual wxString GetDesktopEnvironment() const; #endif diff --git a/src/common/appbase.cpp b/src/common/appbase.cpp index cb97afa9ef..296d1cc6c8 100644 --- a/src/common/appbase.cpp +++ b/src/common/appbase.cpp @@ -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) diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 2c9bb645f1..406729696f 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -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 diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp index 698225a0be..c50a21629c 100644 --- a/src/gtk/utilsgtk.cpp +++ b/src/gtk/utilsgtk.cpp @@ -329,6 +329,11 @@ static wxString GetSM() // wxGUIAppTraits //----------------------------------------------------------------------------- +void wxGUIAppTraits::SetLocale() +{ + gtk_set_locale(); +} + #ifdef __WXDEBUG__ #if wxUSE_STACKWALKER