]> git.saurik.com Git - wxWidgets.git/commitdiff
Move G_FILENAME_ENCODING to wxGTK
authorMichael Wetherell <mike.wetherell@ntlworld.com>
Wed, 13 Apr 2005 20:05:57 +0000 (20:05 +0000)
committerMichael Wetherell <mike.wetherell@ntlworld.com>
Wed, 13 Apr 2005 20:05:57 +0000 (20:05 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/app.h
include/wx/gtk1/app.h
include/wx/strconv.h
src/common/strconv.cpp
src/gtk/app.cpp
src/gtk1/app.cpp

index d80afdb2fdb915797fbe75e3cbe99b9055c6b3c4..82ee2dd180fe934d76b5978b85686b22d166f0d5 100644 (file)
@@ -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__
index d80afdb2fdb915797fbe75e3cbe99b9055c6b3c4..82ee2dd180fe934d76b5978b85686b22d166f0d5 100644 (file)
@@ -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__
index 58b9d754483103800c6d417302cc9ed018f71edd..6919583e8d52b8ec09776340a70fc4afd75840b8 100644 (file)
@@ -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;
index 69fc4a81261a3e72b5671500b340f453fcc2dc71..88e49338d756679cd9696d859e6afdd8f4bd3064 100644 (file)
@@ -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
index dbe83542dc3e0aff07d0cc5960b7df556d4690f5..c9f166377f5dc95300caf10205f7233323d08b04 100644 (file)
@@ -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();
index dbe83542dc3e0aff07d0cc5960b7df556d4690f5..c9f166377f5dc95300caf10205f7233323d08b04 100644 (file)
@@ -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();