+#if wxUSE_THREADS
+ if (!g_thread_supported())
+ {
+ g_thread_init(NULL);
+ gdk_threads_init();
+ }
+#endif // wxUSE_THREADS
+
+ // gtk+ 2.0 supports Unicode through UTF-8 strings
+ wxConvCurrent = &wxConvUTF8;
+
+#ifdef __UNIX__
+ // decide which conversion to use for the file names
+
+ // (1) this variable exists for the sole purpose of specifying the encoding
+ // of the filenames for GTK+ programs, so use it if it is set
+ wxString encName(wxGetenv(wxT("G_FILENAME_ENCODING")));
+ encName = encName.BeforeFirst(wxT(','));
+ if (encName.CmpNoCase(wxT("@locale")) == 0)
+ encName.clear();
+ encName.MakeUpper();
+#if wxUSE_INTL
+ if (encName.empty())
+ {
+ // (2) if a non default locale is set, assume that the user wants his
+ // filenames in this locale too
+ encName = wxLocale::GetSystemEncodingName().Upper();
+
+ // But don't consider ASCII in this case.
+ if ( !encName.empty() )
+ {
+#if wxUSE_FONTMAP
+ wxFontEncoding enc = wxFontMapperBase::GetEncodingFromName(encName);
+ if ( enc == wxFONTENCODING_DEFAULT )
+#else // !wxUSE_FONTMAP
+ if ( encName == wxT("US-ASCII") )
+#endif // wxUSE_FONTMAP/!wxUSE_FONTMAP
+ {
+ // This means US-ASCII when returned from GetEncodingFromName().
+ encName.clear();
+ }
+ }
+
+ // (3) finally use UTF-8 by default
+ if ( encName.empty() )
+ encName = wxT("UTF-8");
+ wxSetEnv(wxT("G_FILENAME_ENCODING"), encName);
+ }
+#else
+ if (encName.empty())
+ encName = wxT("UTF-8");