]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/fileconf.cpp
make wxConvUTF8 available in wchar_t-less mode, too
[wxWidgets.git] / src / common / fileconf.cpp
index 46a5dc8e1d56b1880624ea5fcc9fb6cb1ebb0dbc..16b17cadfc3896d0b9e8a0608a645cf008cf2981 100644 (file)
@@ -343,7 +343,7 @@ wxString wxFileConfig::GetGlobalFileName(const wxChar *szFile)
 
 wxString wxFileConfig::GetLocalFileName(const wxChar *szFile)
 {
-#ifdef __VMS__ 
+#ifdef __VMS__
     // On VMS I saw the problem that the home directory was appended
     // twice for the configuration file. Does that also happen for
     // other platforms?
@@ -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) )
@@ -468,13 +461,14 @@ wxFileConfig::wxFileConfig(const wxString& appName, const wxString& vendorName,
     }
 
     SetUmask(-1);
-    
+
     Init();
 }
 
 #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);
@@ -564,7 +558,7 @@ void wxFileConfig::Parse(wxTextBuffer& buffer, bool bLocal)
   wxString strLine;
 
   size_t nLineCount = buffer.GetLineCount();
-  
+
   for ( size_t n = 0; n < nLineCount; n++ )
   {
     strLine = buffer[n];
@@ -873,7 +867,7 @@ bool wxFileConfig::DoWriteString(const wxString& key, const wxString& szValue)
 {
     wxConfigPathChanger     path(this, key);
     wxString                strName = path.Name();
-  
+
     wxLogTrace( _T("wxFileConfig"),
                 _T("  Writing String '%s' = '%s' to Group '%s'"),
                 strName.c_str(),
@@ -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;
@@ -1518,13 +1507,17 @@ wxFileConfigGroup *wxFileConfigGroup::AddSubgroup(const wxString& strName)
 
 bool wxFileConfigGroup::DeleteSubgroupByName(const wxChar *szName)
 {
-  return DeleteSubgroup(FindSubgroup(szName));
+    wxFileConfigGroup * const pGroup = FindSubgroup(szName);
+
+    return pGroup ? DeleteSubgroup(pGroup) : FALSE;
 }
 
 // Delete the subgroup and remove all references to it from
 // other data structures.
 bool wxFileConfigGroup::DeleteSubgroup(wxFileConfigGroup *pGroup)
 {
+    wxCHECK_MSG( pGroup, FALSE, _T("deleting non existing group?") );
+
     wxLogTrace( _T("wxFileConfig"),
                 _T("Deleting group '%s' from '%s'"),
                 pGroup->Name().c_str(),
@@ -1539,11 +1532,8 @@ bool wxFileConfigGroup::DeleteSubgroup(wxFileConfigGroup *pGroup)
                 _T("  text: '%s'"),
                 ((m_pLine) ? m_pLine->Text().c_str() : wxEmptyString) );
 
-    wxCHECK_MSG( pGroup != 0, FALSE, _T("deleting non existing group?") );
-
-        // delete all entries
-
-    size_t  nCount = pGroup->m_aEntries.Count();
+    // delete all entries
+    size_t nCount = pGroup->m_aEntries.Count();
 
     wxLogTrace(_T("wxFileConfig"),
                _T("Removing %lu Entries"),
@@ -1627,7 +1617,7 @@ bool wxFileConfigGroup::DeleteSubgroup(wxFileConfigGroup *pGroup)
             {
                 wxLogTrace( _T("wxFileConfig"),
                             _T("  ------- No previous group found -------") );
-                
+
                 wxASSERT_MSG( !pNewLast || m_pLine == 0,
                               _T("how comes it has the same line as we?") );