// or the XVisualInfo* for SGI.
GdkVisual *GetGdkVisual();
-#ifdef __WXGTK20__
- wxConvBrokenFileNames *m_convBrokenFileNames;
- wxMBConv *m_oldConvFileName;
-#endif
-
private:
// true if we're inside an assert modal dialog
#ifdef __WXDEBUG__
// or the XVisualInfo* for SGI.
GdkVisual *GetGdkVisual();
-#ifdef __WXGTK20__
- wxConvBrokenFileNames *m_convBrokenFileNames;
- wxMBConv *m_oldConvFileName;
-#endif
-
private:
// true if we're inside an assert modal dialog
#ifdef __WXDEBUG__
class WXDLLIMPEXP_BASE wxConvBrokenFileNames : public wxMBConv
{
public:
- wxConvBrokenFileNames();
+ wxConvBrokenFileNames(const wxChar *charset);
virtual ~wxConvBrokenFileNames() { delete m_conv; }
virtual size_t MB2WC(wchar_t *outputBuf, const char *psz, size_t outputSize) const;
// wxConvBrokenFileNames
// ----------------------------------------------------------------------------
-wxConvBrokenFileNames::wxConvBrokenFileNames()
+wxConvBrokenFileNames::wxConvBrokenFileNames(const wxChar *charset)
{
- // 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(_T("G_FILENAME_ENCODING")));
- encName.MakeUpper();
- if ( !encName.empty() && encName != _T("UTF-8") && encName != _T("UTF8") )
- {
- m_conv = new wxCSConv(encName);
- }
- else // no G_FILENAME_ENCODING
- {
-#if wxUSE_INTL
- if ( encName.empty() )
- encName = wxLocale::GetSystemEncodingName().Upper();
-#endif
-
- // (2) if a non default locale is set, assume that the user wants his
- // filenames in this locale too
- if ( !encName.empty() && encName != _T("UTF-8") && encName != _T("UTF8") )
- {
- wxSetEnv(_T("G_FILENAME_ENCODING"), encName);
- m_conv = new wxCSConv(encName);
- }
- else
- {
- // (3) finally use UTF-8 by default
- m_conv = new wxMBConvUTF8(wxMBConvUTF8::MAP_INVALID_UTF8_TO_OCTAL);
- }
- }
+ if ( !charset || wxStricmp(charset, _T("UTF-8")) == 0
+ || wxStricmp(charset, _T("UTF8")) == 0 )
+ m_conv = new wxMBConvUTF8(wxMBConvUTF8::MAP_INVALID_UTF8_TO_OCTAL);
+ else
+ m_conv = new wxCSConv(charset);
}
size_t
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
#ifdef __WXGTK20__
- m_convBrokenFileNames = new wxConvBrokenFileNames;
- m_oldConvFileName = wxConvFileName;
- wxConvFileName = m_convBrokenFileNames;
-#endif
+ // 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(_T("G_FILENAME_ENCODING")));
+ 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();
+ // (3) finally use UTF-8 by default
+ if (encName.empty() || encName == _T("US-ASCII"))
+ encName = _T("UTF-8");
+ wxSetEnv(_T("G_FILENAME_ENCODING"), encName);
+ }
+#else
+ if (encName.empty())
+ encName = _T("UTF-8");
+#endif // wxUSE_INTL
+ static wxConvBrokenFileNames fileconv(encName);
+ wxConvFileName = &fileconv;
+#endif // __WXGTK20__
#if wxUSE_UNICODE
// gtk_init() wants UTF-8, not wchar_t, so convert
void wxApp::CleanUp()
{
-#ifdef __WXGTK20__
- delete m_convBrokenFileNames;
- wxConvFileName = m_oldConvFileName;
-#endif
-
gdk_threads_leave();
wxAppBase::CleanUp();
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
#ifdef __WXGTK20__
- m_convBrokenFileNames = new wxConvBrokenFileNames;
- m_oldConvFileName = wxConvFileName;
- wxConvFileName = m_convBrokenFileNames;
-#endif
+ // 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(_T("G_FILENAME_ENCODING")));
+ 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();
+ // (3) finally use UTF-8 by default
+ if (encName.empty() || encName == _T("US-ASCII"))
+ encName = _T("UTF-8");
+ wxSetEnv(_T("G_FILENAME_ENCODING"), encName);
+ }
+#else
+ if (encName.empty())
+ encName = _T("UTF-8");
+#endif // wxUSE_INTL
+ static wxConvBrokenFileNames fileconv(encName);
+ wxConvFileName = &fileconv;
+#endif // __WXGTK20__
#if wxUSE_UNICODE
// gtk_init() wants UTF-8, not wchar_t, so convert
void wxApp::CleanUp()
{
-#ifdef __WXGTK20__
- delete m_convBrokenFileNames;
- wxConvFileName = m_oldConvFileName;
-#endif
-
gdk_threads_leave();
wxAppBase::CleanUp();