]> git.saurik.com Git - wxWidgets.git/commitdiff
minor changes and bug corrections (interface unchanged)
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 3 Aug 1998 22:49:01 +0000 (22:49 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 3 Aug 1998 22:49:01 +0000 (22:49 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

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

index 26650fd4f5e9f166493f3d5ab921303beb202651..c48ee1c3674e07b559154d4888821f8edd850753 100644 (file)
@@ -88,13 +88,16 @@ public:
   // static functions
     // sets the config object, returns the previous pointer
   static wxConfigBase *Set(wxConfigBase *pConfig);
-    // get the config object, creates it on demand
+    // get the config object, creates it on demand unless DontCreateOnDemand
+    // was called
   static wxConfigBase *Get() { if ( !ms_pConfig ) Create(); return ms_pConfig; }
     // create a new config object: this function will create the "best"
     // implementation of wxConfig available for the current platform, see
     // comments near definition wxCONFIG_WIN32_NATIVE for details. It returns
     // the created object and also sets it as ms_pConfig.
   static wxConfigBase *Create();
+    // should Get() try to create a new log object if the current one is NULL?
+  static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; }
 
   // ctor & virtual dtor
     // environment variable expansion is on by default
@@ -211,6 +214,7 @@ private:
 
   // static variables
   static wxConfigBase *ms_pConfig;
+  static bool          ms_bAutoCreate;
 };
 
 // ----------------------------------------------------------------------------
@@ -228,4 +232,5 @@ private:
   #define wxConfig  wxFileConfig
 #endif
 
-#endif  //_wxCONFIG_H
\ No newline at end of file
+#endif  //_wxCONFIG_H
+
index e6277c84d9e9973b0b259c71086af61725fa12fc..db850ff128a7beae0223f1a446719e1a5998b518 100644 (file)
@@ -74,7 +74,8 @@ public:
   bool HasPendingMessages() const { return m_bHasMessages; }
 
   // only one sink is active at each moment
-    // get current log target
+    // get current log target, will call wxApp::CreateLogTarget() to create one
+    // if 
   static wxLog *GetActiveTarget();
     // change log target, pLogger = NULL disables logging,
     // returns the previous log target
@@ -90,6 +91,9 @@ public:
   void SetTimeStampFormat(const char *szTF) { m_szTimeFormat = szTF; }
     // trace mask (see wxTraceXXX constants for details)
   static void SetTraceMask(wxTraceMask ulMask) { ms_ulTraceMask = ulMask; }
+    // should GetActiveTarget() try to create a new log object if the current
+    // is NULL?
+  static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; }
 
   // accessors
     // gets the verbose status
@@ -119,8 +123,8 @@ protected:
 private:
   // static variables
   // ----------------
-  static wxLog      *ms_pLogger;       // currently active log sink
-  static bool        ms_bInitialized;  // any log targets created?
+  static wxLog      *ms_pLogger;      // currently active log sink
+  static bool        ms_bAutoCreate;  // automatically create new log targets?
   static wxTraceMask ms_ulTraceMask;  // controls wxLogTrace behaviour
 };
 
index 4447719209077a0cbde7c56621054434159bafe8..5b3de33e7206b3e5eef1fb19e86ff9a7903a672b 100644 (file)
@@ -39,7 +39,7 @@
 #include  <wx/config.h>
 
 // we must include (one of) these files for wxConfigBase::Create
-#if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE)
+#if defined(__WXMSW__) && defined(wxCONFIG_WIN32_NATIVE)
   #ifdef __WIN32__
     #include  <wx/msw/regconf.h>
   #else  //WIN16
@@ -56,7 +56,8 @@
 // global and class static variables
 // ----------------------------------------------------------------------------
 
-wxConfigBase *wxConfigBase::ms_pConfig = NULL;
+wxConfigBase *wxConfigBase::ms_pConfig     = NULL;
+bool          wxConfigBase::ms_bAutoCreate = TRUE;
 
 // ============================================================================
 // implementation
@@ -75,17 +76,21 @@ wxConfigBase *wxConfigBase::Set(wxConfigBase *pConfig)
 
 wxConfigBase *wxConfigBase::Create()
 {
-  return ms_pConfig =
-  #if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE)
-    #ifdef __WIN32__
-      new wxRegConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName());
-    #else  //WIN16
-      #error "Sorry, no wxIniConfig yet..."
-      //new wxIniConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName());
+  if ( ms_bAutoCreate && ms_pConfig == NULL ) {
+    ms_pConfig =
+    #if defined(__WXMSW__) && defined(wxCONFIG_WIN32_NATIVE)
+      #ifdef __WIN32__
+        new wxRegConfig(wxTheApp->GetVendorName() + '\\' 
+                        + wxTheApp->GetAppName());
+      #else  //WIN16
+        new wxIniConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName());
+      #endif
+    #else // either we're under Unix or wish to use files even under Windows
+      new wxFileConfig(wxTheApp->GetAppName());
     #endif
-  #else // either we're under Unix or wish to use files even under Windows
-    new wxFileConfig(wxTheApp->GetAppName());
-  #endif
+  }
+
+  return ms_pConfig;
 }
 
 const char *wxConfigBase::Read(const char *szKey, const char *szDefault) const
index 46139022fd5012ee2946fd54a3115ca3474c3029..46ea7077a3bb7b3a9a28e8e0257f735397a8a6ac 100644 (file)
@@ -124,7 +124,7 @@ wxString wxFileConfig::GetLocalDir()
         strDir << szHome;
     #else   // Win16
       // Win16 has no idea about home, so use the current directory instead
-      strDir = ".\\"; 
+      strDir = ".\\";
     #endif  // WIN16/32
   #endif  // UNIX/Win
 
@@ -222,16 +222,13 @@ wxFileConfig::wxFileConfig(const wxString& strLocal, const wxString& strGlobal)
   // if the path is not absolute, prepend the standard directory to it
 
   if ( !strLocal.IsEmpty() && !wxIsPathSeparator(strLocal[0u]) )
-  {
-     m_strLocalFile = GetLocalDir();
-     m_strLocalFile << strLocal;
-  }
-  
+    m_strLocalFile = GetLocalDir();
+  m_strLocalFile << strLocal;
+
   if ( !strGlobal.IsEmpty() && !wxIsPathSeparator(strGlobal[0u]) )
-  {
-     m_strGlobalFile = GetGlobalDir();
-     m_strGlobalFile << strGlobal;
-  }
+    m_strGlobalFile = GetGlobalDir();
+  m_strGlobalFile << strGlobal;
+
   Init();
 }
 
@@ -671,9 +668,6 @@ bool wxFileConfig::DeleteAll()
 {
   CleanUp();
 
-  m_strLocalFile = m_strGlobalFile = "";
-  Init();
-
   const char *szFile = m_strLocalFile;
 
   if ( remove(szFile) == -1 )
@@ -683,6 +677,9 @@ bool wxFileConfig::DeleteAll()
   if ( remove(szFile) )
     wxLogSysError(_("can't delete system configuration file '%s'"), szFile);
 
+  m_strLocalFile = m_strGlobalFile = "";
+  Init();
+
   return TRUE;
 }
 
index 02a7ac365f0223e0925638258067606c81518757..ff0532eb05c6aa48f5ab8da36c4497e6d5a869e9 100644 (file)
@@ -216,19 +216,22 @@ wxLog::wxLog()
 
 wxLog *wxLog::GetActiveTarget()
 {
-  if ( !ms_bInitialized ) {
+  if ( ms_bAutoCreate && ms_pLogger == NULL ) {
     // prevent infinite recursion if someone calls wxLogXXX() from
     // wxApp::CreateLogTarget()
-    ms_bInitialized = TRUE;
-
-    #ifdef  WX_TEST_MINIMAL
-      ms_pLogger = new wxLogStderr;
-    #else
-      // ask the application to create a log target for us
-      ms_pLogger = wxTheApp->CreateLogTarget();
-    #endif
+    static bool s_bInGetActiveTarget = FALSE;
+    if ( !s_bInGetActiveTarget ) {
+      s_bInGetActiveTarget = TRUE;
+
+      #ifdef  WX_TEST_MINIMAL
+        ms_pLogger = new wxLogStderr;
+      #else
+        // ask the application to create a log target for us
+        ms_pLogger = wxTheApp->CreateLogTarget();
+      #endif
 
-    // do nothing if it fails - what can we do?
+      // do nothing if it fails - what can we do?
+    }
   }
 
   return ms_pLogger;
@@ -240,8 +243,6 @@ wxLog *wxLog::SetActiveTarget(wxLog *pLogger)
   if ( ms_pLogger != NULL )
     ms_pLogger->Flush();
 
-  ms_bInitialized = TRUE;
-
   wxLog *pOldLogger = ms_pLogger;
   ms_pLogger = pLogger;
   return pOldLogger;
@@ -705,7 +706,7 @@ wxLogWindow::~wxLogWindow()
 // static variables
 // ----------------------------------------------------------------------------
 wxLog      *wxLog::ms_pLogger      = NULL;
-bool        wxLog::ms_bInitialized = FALSE;
+bool        wxLog::ms_bAutoCreate  = TRUE;
 wxTraceMask wxLog::ms_ulTraceMask  = (wxTraceMask)0;
 
 // ----------------------------------------------------------------------------