From 845905d5881df6f550e801c76fef197d0ee68b50 Mon Sep 17 00:00:00 2001 From: Michael Wetherell Date: Wed, 13 Apr 2005 20:05:57 +0000 Subject: [PATCH] Move G_FILENAME_ENCODING to wxGTK git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/gtk/app.h | 5 ----- include/wx/gtk1/app.h | 5 ----- include/wx/strconv.h | 2 +- src/common/strconv.cpp | 37 ++++++------------------------------- src/gtk/app.cpp | 33 ++++++++++++++++++++++++--------- src/gtk1/app.cpp | 33 ++++++++++++++++++++++++--------- 6 files changed, 55 insertions(+), 60 deletions(-) diff --git a/include/wx/gtk/app.h b/include/wx/gtk/app.h index d80afdb2fd..82ee2dd180 100644 --- a/include/wx/gtk/app.h +++ b/include/wx/gtk/app.h @@ -69,11 +69,6 @@ public: // 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__ diff --git a/include/wx/gtk1/app.h b/include/wx/gtk1/app.h index d80afdb2fd..82ee2dd180 100644 --- a/include/wx/gtk1/app.h +++ b/include/wx/gtk1/app.h @@ -69,11 +69,6 @@ public: // 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__ diff --git a/include/wx/strconv.h b/include/wx/strconv.h index 58b9d75448..6919583e8d 100644 --- a/include/wx/strconv.h +++ b/include/wx/strconv.h @@ -98,7 +98,7 @@ public: 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; diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index 69fc4a8126..88e49338d7 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -363,38 +363,13 @@ size_t wxMBConvLibc::WC2MB(char *buf, const wchar_t *psz, size_t n) 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 diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index dbe83542dc..c9f166377f 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -607,10 +607,30 @@ bool wxApp::Initialize(int& argc, wxChar **argv) #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 @@ -686,11 +706,6 @@ bool wxApp::Initialize(int& argc, wxChar **argv) void wxApp::CleanUp() { -#ifdef __WXGTK20__ - delete m_convBrokenFileNames; - wxConvFileName = m_oldConvFileName; -#endif - gdk_threads_leave(); wxAppBase::CleanUp(); diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index dbe83542dc..c9f166377f 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -607,10 +607,30 @@ bool wxApp::Initialize(int& argc, wxChar **argv) #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 @@ -686,11 +706,6 @@ bool wxApp::Initialize(int& argc, wxChar **argv) void wxApp::CleanUp() { -#ifdef __WXGTK20__ - delete m_convBrokenFileNames; - wxConvFileName = m_oldConvFileName; -#endif - gdk_threads_leave(); wxAppBase::CleanUp(); -- 2.45.2