]> git.saurik.com Git - wxWidgets.git/commitdiff
wxFileConfig in Unicode fixes
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 23 Feb 2003 19:01:29 +0000 (19:01 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 23 Feb 2003 19:01:29 +0000 (19:01 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19289 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/fileconf.h
src/common/fileconf.cpp

index b0e0b0b9177e806f4f123e2eaca1cabc8e8540c6..f836f08c8f1de8425326f7675b0fecbd610c6e20 100644 (file)
@@ -120,11 +120,13 @@ public:
                const wxString& vendorName = wxT(""),
                const wxString& localFilename = wxT(""),
                const wxString& globalFilename = wxT(""),
-               long style = wxCONFIG_USE_LOCAL_FILE);
+               long style = wxCONFIG_USE_LOCAL_FILE,
+               wxMBConv& conv = wxConvUTF8);
 
 #if wxUSE_STREAMS
     // ctor that takes an input stream.
-  wxFileConfig(wxInputStream &inStream);
+  wxFileConfig(wxInputStream &inStream,
+               wxMBConv& conv = wxConvUTF8);
 #endif // wxUSE_STREAMS
 
     // dtor will save unsaved data
@@ -207,6 +209,8 @@ private:
   wxFileConfigGroup *m_pRootGroup,      // the top (unnamed) group
                     *m_pCurrentGroup;   // the current group
 
+  wxMBConv   &m_conv;
+        
 #ifdef __UNIX__
   int m_umask;                    // the umask to use for file creation
 #endif // __UNIX__
index 0b884e942f863fa81c4968743d7508f453110586..16b17cadfc3896d0b9e8a0608a645cf008cf2981 100644 (file)
@@ -389,11 +389,7 @@ void wxFileConfig::Init()
     {
         wxTextFile fileGlobal(m_strGlobalFile);
 
-#if defined(__WXGTK20__) && wxUSE_UNICODE
-        if ( fileGlobal.Open( wxConvUTF8 ) )
-#else
-        if ( fileGlobal.Open() )
-#endif
+        if ( fileGlobal.Open(m_conv/*ignored in ANSI build*/) )
         {
             Parse(fileGlobal, FALSE /* global */);
             SetRootPath();
@@ -408,11 +404,7 @@ void wxFileConfig::Init()
     if ( !m_strLocalFile.IsEmpty() && wxFile::Exists(m_strLocalFile) )
     {
         wxTextFile fileLocal(m_strLocalFile);
-#if defined(__WXGTK20__) && wxUSE_UNICODE
-        if ( fileLocal.Open( wxConvUTF8 ) )
-#else
-        if ( fileLocal.Open() )
-#endif
+        if ( fileLocal.Open(m_conv/*ignored in ANSI build*/) )
         {
             Parse(fileLocal, TRUE /* local */);
             SetRootPath();
@@ -427,11 +419,12 @@ void wxFileConfig::Init()
 // constructor supports creation of wxFileConfig objects of any type
 wxFileConfig::wxFileConfig(const wxString& appName, const wxString& vendorName,
                            const wxString& strLocal, const wxString& strGlobal,
-                           long style)
+                           long style, wxMBConv& conv)
             : wxConfigBase(::GetAppName(appName), vendorName,
                            strLocal, strGlobal,
                            style),
-              m_strLocalFile(strLocal), m_strGlobalFile(strGlobal)
+              m_strLocalFile(strLocal), m_strGlobalFile(strGlobal),
+              m_conv(conv)
 {
     // Make up names for files if empty
     if ( m_strLocalFile.IsEmpty() && (style & wxCONFIG_USE_LOCAL_FILE) )
@@ -474,7 +467,8 @@ wxFileConfig::wxFileConfig(const wxString& appName, const wxString& vendorName,
 
 #if wxUSE_STREAMS
 
-wxFileConfig::wxFileConfig(wxInputStream &inStream)
+wxFileConfig::wxFileConfig(wxInputStream &inStream, wxMBConv& conv)
+        : m_conv(conv)
 {
     // always local_file when this constructor is called (?)
     SetStyle(GetStyle() | wxCONFIG_USE_LOCAL_FILE);
@@ -961,12 +955,7 @@ bool wxFileConfig::Flush(bool /* bCurrentOnly */)
   {
     wxString line = p->Text();
     line += wxTextFile::GetEOL();
-#if wxUSE_UNICODE
-    wxCharBuffer buf = wxConvLocal.cWX2MB( line );
-    if ( !file.Write( (const char*)buf, strlen( (const char*) buf ) ) )
-#else
-    if ( !file.Write( line.c_str(), line.Len() ) )
-#endif
+    if ( !file.Write(line, m_conv) )
     {
       wxLogError(_("can't write user configuration file."));
       return FALSE;