]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appcmn.cpp
refresh tree item after changing its icon so that the change is visible
[wxWidgets.git] / src / common / appcmn.cpp
index 146378d59fdc2a0abba2d481d6f419a3859d7a5a..516a0acf1029ef1ee4484e10168ec4633bd06223 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        common/appcmn.cpp
+// Name:        src/common/appcmn.cpp
 // Purpose:     wxAppConsole and wxAppBase methods common to all platforms
 // Author:      Vadim Zeitlin
 // Modified by:
 // Purpose:     wxAppConsole and wxAppBase methods common to all platforms
 // Author:      Vadim Zeitlin
 // Modified by:
 // headers
 // ---------------------------------------------------------------------------
 
 // headers
 // ---------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "appbase.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 #endif
 
 #ifndef WX_PRECOMP
 #endif
 
 #ifndef WX_PRECOMP
+    #include "wx/list.h"
     #include "wx/app.h"
     #include "wx/bitmap.h"
     #include "wx/intl.h"
     #include "wx/app.h"
     #include "wx/bitmap.h"
     #include "wx/intl.h"
-    #include "wx/list.h"
     #include "wx/log.h"
     #include "wx/msgdlg.h"
     #include "wx/log.h"
     #include "wx/msgdlg.h"
-    #include "wx/bitmap.h"
     #include "wx/confbase.h"
     #include "wx/confbase.h"
+    #include "wx/utils.h"
 #endif
 
 #include "wx/apptrait.h"
 #endif
 
 #include "wx/apptrait.h"
 #include "wx/evtloop.h"
 #include "wx/msgout.h"
 #include "wx/thread.h"
 #include "wx/evtloop.h"
 #include "wx/msgout.h"
 #include "wx/thread.h"
-#include "wx/utils.h"
 #include "wx/ptr_scpd.h"
 
 #if defined(__WXMSW__)
 #include "wx/ptr_scpd.h"
 
 #if defined(__WXMSW__)
-  #include  "wx/msw/private.h"  // includes windows.h for LOGFONT
+    #include  "wx/msw/private.h"  // includes windows.h for LOGFONT
 #endif
 
 #if wxUSE_FONTMAP
 #endif
 
 #if wxUSE_FONTMAP
 #include "wx/build.h"
 WX_CHECK_BUILD_OPTIONS("wxCore")
 
 #include "wx/build.h"
 WX_CHECK_BUILD_OPTIONS("wxCore")
 
+WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete;
 
 // ----------------------------------------------------------------------------
 // wxEventLoopPtr
 // ----------------------------------------------------------------------------
 
 // this defines wxEventLoopPtr
 
 // ----------------------------------------------------------------------------
 // wxEventLoopPtr
 // ----------------------------------------------------------------------------
 
 // this defines wxEventLoopPtr
-wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop);
+wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop)
 
 // ============================================================================
 // wxAppBase implementation
 
 // ============================================================================
 // wxAppBase implementation
@@ -81,9 +77,7 @@ wxAppBase::wxAppBase()
     m_useBestVisual = false;
     m_isActive = true;
 
     m_useBestVisual = false;
     m_isActive = true;
 
-#if wxUSE_EVTLOOP_IN_APP
     m_mainLoop = NULL;
     m_mainLoop = NULL;
-#endif // wxUSE_EVTLOOP_IN_APP
 
     // We don't want to exit the app if the user code shows a dialog from its
     // OnInit() -- but this is what would happen if we set m_exitOnFrameDelete
 
     // We don't want to exit the app if the user code shows a dialog from its
     // OnInit() -- but this is what would happen if we set m_exitOnFrameDelete
@@ -100,9 +94,9 @@ wxAppBase::wxAppBase()
     m_exitOnFrameDelete = Later;
 }
 
     m_exitOnFrameDelete = Later;
 }
 
-bool wxAppBase::Initialize(int& argc, wxChar **argv)
+bool wxAppBase::Initialize(int& argcOrig, wxChar **argvOrig)
 {
 {
-    if ( !wxAppConsole::Initialize(argc, argv) )
+    if ( !wxAppConsole::Initialize(argcOrig, argvOrig) )
         return false;
 
 #if wxUSE_THREADS
         return false;
 
 #if wxUSE_THREADS
@@ -110,7 +104,6 @@ bool wxAppBase::Initialize(int& argc, wxChar **argv)
 #endif
 
     wxInitializeStockLists();
 #endif
 
     wxInitializeStockLists();
-    wxInitializeStockObjects();
 
     wxBitmap::InitStandardHandlers();
 
 
     wxBitmap::InitStandardHandlers();
 
@@ -143,7 +136,7 @@ void wxAppBase::CleanUp()
     // undo everything we did in Initialize() above
     wxBitmap::CleanUpHandlers();
 
     // undo everything we did in Initialize() above
     wxBitmap::CleanUpHandlers();
 
-    wxDeleteStockObjects();
+    wxStockGDI::DeleteAll();
 
     wxDeleteStockLists();
 
 
     wxDeleteStockLists();
 
@@ -184,7 +177,7 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser)
 #ifdef __WXUNIVERSAL__
         {
             wxCMD_LINE_OPTION,
 #ifdef __WXUNIVERSAL__
         {
             wxCMD_LINE_OPTION,
-            _T(""),
+            wxEmptyString,
             OPTION_THEME,
             gettext_noop("specify the theme to use"),
             wxCMD_LINE_VAL_STRING,
             OPTION_THEME,
             gettext_noop("specify the theme to use"),
             wxCMD_LINE_VAL_STRING,
@@ -198,7 +191,7 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser)
         //     and not mgl/app.cpp
         {
             wxCMD_LINE_OPTION,
         //     and not mgl/app.cpp
         {
             wxCMD_LINE_OPTION,
-            _T(""),
+            wxEmptyString,
             OPTION_MODE,
             gettext_noop("specify display mode to use (e.g. 640x480-16)"),
             wxCMD_LINE_VAL_STRING,
             OPTION_MODE,
             gettext_noop("specify display mode to use (e.g. 640x480-16)"),
             wxCMD_LINE_VAL_STRING,
@@ -209,9 +202,9 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser)
         // terminator
         {
             wxCMD_LINE_NONE,
         // terminator
         {
             wxCMD_LINE_NONE,
-            _T(""),
-            _T(""),
-            _T(""),
+            wxEmptyString,
+            wxEmptyString,
+            wxEmptyString,
             wxCMD_LINE_VAL_NONE,
             0x0
         }
             wxCMD_LINE_VAL_NONE,
             0x0
         }
@@ -266,51 +259,37 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser)
 
 int wxAppBase::MainLoop()
 {
 
 int wxAppBase::MainLoop()
 {
-#if wxUSE_EVTLOOP_IN_APP
     wxEventLoopTiedPtr mainLoop(&m_mainLoop, new wxEventLoop);
 
     return m_mainLoop->Run();
     wxEventLoopTiedPtr mainLoop(&m_mainLoop, new wxEventLoop);
 
     return m_mainLoop->Run();
-#else // !wxUSE_EVTLOOP_IN_APP
-    return 0;
-#endif // wxUSE_EVTLOOP_IN_APP/!wxUSE_EVTLOOP_IN_APP
 }
 
 void wxAppBase::ExitMainLoop()
 {
 }
 
 void wxAppBase::ExitMainLoop()
 {
-#if wxUSE_EVTLOOP_IN_APP
     // we should exit from the main event loop, not just any currently active
     // (e.g. modal dialog) event loop
     if ( m_mainLoop && m_mainLoop->IsRunning() )
     {
         m_mainLoop->Exit(0);
     }
     // we should exit from the main event loop, not just any currently active
     // (e.g. modal dialog) event loop
     if ( m_mainLoop && m_mainLoop->IsRunning() )
     {
         m_mainLoop->Exit(0);
     }
-#endif // wxUSE_EVTLOOP_IN_APP
 }
 
 bool wxAppBase::Pending()
 {
 }
 
 bool wxAppBase::Pending()
 {
-#if wxUSE_EVTLOOP_IN_APP
     // use the currently active message loop here, not m_mainLoop, because if
     // we're showing a modal dialog (with its own event loop) currently the
     // main event loop is not running anyhow
     wxEventLoop * const loop = wxEventLoop::GetActive();
 
     return loop && loop->Pending();
     // use the currently active message loop here, not m_mainLoop, because if
     // we're showing a modal dialog (with its own event loop) currently the
     // main event loop is not running anyhow
     wxEventLoop * const loop = wxEventLoop::GetActive();
 
     return loop && loop->Pending();
-#else // wxUSE_EVTLOOP_IN_APP
-    return false;
-#endif // wxUSE_EVTLOOP_IN_APP/!wxUSE_EVTLOOP_IN_APP
 }
 
 bool wxAppBase::Dispatch()
 {
 }
 
 bool wxAppBase::Dispatch()
 {
-#if wxUSE_EVTLOOP_IN_APP
     // see comment in Pending()
     wxEventLoop * const loop = wxEventLoop::GetActive();
 
     return loop && loop->Dispatch();
     // see comment in Pending()
     wxEventLoop * const loop = wxEventLoop::GetActive();
 
     return loop && loop->Dispatch();
-#else // wxUSE_EVTLOOP_IN_APP
-    return true;
-#endif // wxUSE_EVTLOOP_IN_APP/!wxUSE_EVTLOOP_IN_APP
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
@@ -376,6 +355,10 @@ void wxAppBase::SetActive(bool active, wxWindow * WXUNUSED(lastFocus))
     (void)ProcessEvent(event);
 }
 
     (void)ProcessEvent(event);
 }
 
+// ----------------------------------------------------------------------------
+// idle handling
+// ----------------------------------------------------------------------------
+
 void wxAppBase::DeletePendingObjects()
 {
     wxList::compatibility_iterator node = wxPendingDelete.GetFirst();
 void wxAppBase::DeletePendingObjects()
 {
     wxList::compatibility_iterator node = wxPendingDelete.GetFirst();
@@ -467,6 +450,24 @@ void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(event))
 
 }
 
 
 }
 
+// ----------------------------------------------------------------------------
+// exceptions support
+// ----------------------------------------------------------------------------
+
+#if wxUSE_EXCEPTIONS
+
+bool wxAppBase::OnExceptionInMainLoop()
+{
+    throw;
+
+    // some compilers are too stupid to know that we never return after throw
+#if defined(__DMC__) || (defined(_MSC_VER) && _MSC_VER < 1200)
+    return false;
+#endif
+}
+
+#endif // wxUSE_EXCEPTIONS
+
 // ----------------------------------------------------------------------------
 // wxGUIAppTraitsBase
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // wxGUIAppTraitsBase
 // ----------------------------------------------------------------------------
@@ -478,7 +479,7 @@ wxLog *wxGUIAppTraitsBase::CreateLogTarget()
 #if wxUSE_LOGGUI
     return new wxLogGui;
 #else
 #if wxUSE_LOGGUI
     return new wxLogGui;
 #else
-    // weust have something!
+    // we must have something!
     return new wxLogStderr;
 #endif
 }
     return new wxLogStderr;
 #endif
 }
@@ -580,18 +581,18 @@ void wxGUIAppTraitsBase::RemoveFromPendingDelete(wxObject *object)
 
 #if wxUSE_SOCKETS
 
 
 #if wxUSE_SOCKETS
 
-#if defined(__UNIX__) || defined(__DARWIN__) || defined(__OS2__)
-    #include "wx/unix/gsockunx.h"
-#elif defined(__WINDOWS__)
+#if defined(__WINDOWS__)
     #include "wx/msw/gsockmsw.h"
     #include "wx/msw/gsockmsw.h"
+#elif defined(__UNIX__) || defined(__DARWIN__) || defined(__OS2__)
+    #include "wx/unix/gsockunx.h"
 #elif defined(__WXMAC__)
 #elif defined(__WXMAC__)
-  #include <MacHeaders.c>
-  #define OTUNIXERRORS 1
-  #include <OpenTransport.h>
-  #include <OpenTransportProviders.h>
-  #include <OpenTptInternet.h>
+    #include <MacHeaders.c>
+    #define OTUNIXERRORS 1
+    #include <OpenTransport.h>
+    #include <OpenTransportProviders.h>
+    #include <OpenTptInternet.h>
 
 
-  #include "wx/mac/gsockmac.h"
+    #include "wx/mac/gsockmac.h"
 #else
     #error "Must include correct GSocket header here"
 #endif
 #else
     #error "Must include correct GSocket header here"
 #endif
@@ -609,4 +610,3 @@ GSocketGUIFunctionsTable* wxGUIAppTraitsBase::GetSocketGUIFunctionsTable()
 }
 
 #endif
 }
 
 #endif
-