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
This commit is contained in:
Vadim Zeitlin 2007-03-12 01:46:14 +00:00
parent 69c928ef47
commit d774f9161c
6 changed files with 34 additions and 12 deletions

View 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:

View 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

View File

@ -41,6 +41,7 @@ public:
virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const;
#ifdef __WXGTK__
virtual void SetLocale();
virtual wxString GetDesktopEnvironment() const;
#endif

View 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)

View 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

View File

@ -329,6 +329,11 @@ static wxString GetSM()
// wxGUIAppTraits
//-----------------------------------------------------------------------------
void wxGUIAppTraits::SetLocale()
{
gtk_set_locale();
}
#ifdef __WXDEBUG__
#if wxUSE_STACKWALKER