]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appcmn.cpp
modifications to URL<->filename conversion: take wxFileName, rename
[wxWidgets.git] / src / common / appcmn.cpp
index 19ddb1965c59f9a25e24a2cbfa380ec716bdac97..8090d33ea5fb443b2d8c58d9714eb5a4823601d6 100644 (file)
@@ -32,6 +32,9 @@
     #include "wx/app.h"
     #include "wx/intl.h"
     #include "wx/list.h"
+    #if wxUSE_LOG
+        #include "wx/log.h"
+    #endif // wxUSE_LOG
     #if wxUSE_GUI
         #include "wx/msgdlg.h"
     #endif // wxUSE_GUI
@@ -112,19 +115,16 @@ wxAppBase::~wxAppBase()
 }
 
 #if wxUSE_GUI
+
 bool wxAppBase::OnInitGui()
 {
 #ifdef __WXUNIVERSAL__
     if ( !wxTheme::Get() && !wxTheme::CreateDefault() )
         return FALSE;
-    wxArtProvider *art = wxTheme::Get()->GetArtProvider();
-    if ( art )
-        wxArtProvider::PushProvider(art);
 #endif // __WXUNIVERSAL__
 
     return TRUE;
 }
-#endif // wxUSE_GUI
 
 int wxAppBase::OnRun()
 {
@@ -139,6 +139,8 @@ int wxAppBase::OnRun()
     return MainLoop();
 }
 
+#endif // wxUSE_GUI
+
 int wxAppBase::OnExit()
 {
 #if wxUSE_CONFIG
@@ -151,9 +153,49 @@ int wxAppBase::OnExit()
     delete wxTheme::Set(NULL);
 #endif // __WXUNIVERSAL__
 
+    // use Set(NULL) and not Get() to avoid creating a message output object on
+    // demand when we just want to delete it
+    delete wxMessageOutput::Set(NULL);
+
     return 0;
 }
 
+// ----------------------------------------------------------------------------
+// customization hooks
+// ----------------------------------------------------------------------------
+
+#if wxUSE_LOG
+
+wxLog *wxAppBase::CreateLogTarget()
+{
+#if wxUSE_GUI && wxUSE_LOGGUI && !defined(__WXMICROWIN__)
+    return new wxLogGui;
+#else // !GUI
+    return new wxLogStderr;
+#endif // wxUSE_GUI
+}
+
+#endif // wxUSE_LOG
+
+wxMessageOutput *wxAppBase::CreateMessageOutput()
+{
+    // The standard way of printing help on command line arguments (app --help)
+    // is (according to common practice):
+    //     - console apps: to stderr (on any platform)
+    //     - GUI apps: stderr on Unix platforms (!)
+    //                 message box under Windows and others
+#if wxUSE_GUI && !defined(__UNIX__)
+    // wxMessageOutputMessageBox doesn't work under Motif
+    #ifdef __WXMOTIF__
+        return new wxMessageOutputLog;
+    #else
+        return new wxMessageOutputMessageBox;
+    #endif
+#else // !wxUSE_GUI || __UNIX__
+    return new wxMessageOutputStderr;
+#endif
+}
+
 // ---------------------------------------------------------------------------
 // wxAppBase
 // ----------------------------------------------------------------------------
@@ -215,34 +257,12 @@ int wxAppBase::FilterEvent(wxEvent& WXUNUSED(event))
     return -1;
 }
 
-void wxAppBase::DoInit()
-{
-    if (wxMessageOutput::Get())
-        return;
-        
-    // NB: The standard way of printing help on command line arguments (app --help)
-    //     is (according to common practice):
-    //     - console apps: to stderr (on any platform)
-    //     - GUI apps: stderr on Unix platforms (!)
-    //                 message box under Windows and others
-#if wxUSE_GUI && !defined(__UNIX__)
-    #ifdef __WXMOTIF__
-    wxMessageOutput::Set(new wxMessageOutputLog);
-    #else
-    wxMessageOutput::Set(new wxMessageOutputMessageBox);
-    #endif
-#else
-    wxMessageOutput::Set(new wxMessageOutputStderr);
-#endif
-}
-
 // ----------------------------------------------------------------------------
 // cmd line parsing
 // ----------------------------------------------------------------------------
 
 bool wxAppBase::OnInit()
 {
-    DoInit();
 #if wxUSE_CMDLINE_PARSER
     wxCmdLineParser parser(argc, argv);
 
@@ -362,6 +382,8 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser)
             return FALSE;
         }
 
+        // Delete the defaultly created theme and set the new theme.
+        delete wxTheme::Get();
         wxTheme::Set(theme);
     }
 #endif // __WXUNIVERSAL__
@@ -423,8 +445,23 @@ bool wxAppBase::CheckBuildOptions(const wxBuildOptions& opts)
 
     if ( !(wxCMP(isDebug) && wxCMP(verMaj) && wxCMP(verMin)) )
     {
-        wxLogFatalError(_T("Mismatch between the program and library build ")
-                        _T("versions detected."));
+        wxString msg;
+        wxString libDebug, progDebug;
+
+        if (isDebug)
+            libDebug = wxT("debug");
+        else
+            libDebug = wxT("no debug");
+
+        if (opts.m_isDebug)
+            progDebug = wxT("debug");
+        else
+            progDebug = wxT("no debug");
+        
+        msg.Printf(_T("Mismatch between the program and library build versions detected.\nThe library used %d.%d (%s), and your program used %d.%d (%s)."),
+                   verMaj, verMin, libDebug.c_str(), opts.m_verMaj, opts.m_verMin, progDebug.c_str());
+        
+        wxLogFatalError(msg);
 
         // normally wxLogFatalError doesn't return
         return FALSE;
@@ -471,6 +508,17 @@ void wxTrap()
 #endif // Win/Unix
 }
 
+
+void wxAssert(int cond,
+                  const wxChar *szFile,
+                  int nLine,
+                  const wxChar *szCond,
+                  const wxChar *szMsg) 
+{
+   if ( !cond )
+          wxOnAssert(szFile, nLine, szCond, szMsg);
+}
+  
 // show the assert modal dialog
 static
 void ShowAssertDialog(const wxChar *szFile,