]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/app.h
Committed vcw files also
[wxWidgets.git] / include / wx / app.h
index 68eeec84efc90a26784e1ed22a68727a55e0eb70..4c9f5b8b9debbf6cc52756d140c5464af72a3b82 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef _WX_APP_H_BASE_
 #define _WX_APP_H_BASE_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "appbase.h"
 #endif
 
@@ -43,16 +43,15 @@ class WXDLLEXPORT wxCmdLineParser;
     #include "wx/window.h"  // for wxTopLevelWindows
 #endif // wxUSE_GUI
 
-#if wxUSE_LOG
-    #include "wx/log.h"
-#endif
-
 #if WXWIN_COMPATIBILITY_2_2
     #include "wx/icon.h"
 #endif
 
 #include "wx/build.h"
 
+class WXDLLEXPORT wxLog;
+class WXDLLEXPORT wxMessageOutput;
+
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
@@ -72,9 +71,9 @@ class WXDLLEXPORT wxDisplayModeInfo
 {
 public:
     wxDisplayModeInfo() : m_ok(FALSE) {}
-    wxDisplayModeInfo(unsigned width, unsigned height, unsigned depth) 
+    wxDisplayModeInfo(unsigned width, unsigned height, unsigned depth)
         : m_width(width), m_height(height), m_depth(depth), m_ok(TRUE) {}
-    
+
     unsigned GetWidth() const { return m_width; }
     unsigned GetHeight() const { return m_height; }
     unsigned GetDepth() const { return m_depth; }
@@ -93,7 +92,7 @@ private:
 class WXDLLEXPORT wxAppBase : public wxEvtHandler
 {
     DECLARE_NO_COPY_CLASS(wxAppBase)
-        
+
 public:
     wxAppBase();
     virtual ~wxAppBase();
@@ -108,10 +107,6 @@ public:
         // Override: always in GUI application, rarely in console ones.
     virtual bool OnInit();
 
-        // initializes wxMessageOutput; other responsibilities
-        // may be added later
-    virtual void DoInit();
-
 #if wxUSE_GUI
         // a platform-dependent version of OnInit(): the code here is likely to
         // depend on the toolkit. default version does nothing.
@@ -128,7 +123,7 @@ public:
         //
         // Override: rarely in GUI applications, always in console ones.
 #if wxUSE_GUI
-    virtual int OnRun() { return MainLoop(); };
+    virtual int OnRun();
 #else // !GUI
     virtual int OnRun() = 0;
 #endif // wxUSE_GUI
@@ -182,6 +177,13 @@ public:
         //          may result in calling the same event handler again), use
         //          with _extreme_ care or, better, don't use at all!
     virtual bool Yield(bool onlyIfNeeded = FALSE) = 0;
+
+        // this virtual function is called in the GUI mode when the application
+        // becomes idle and normally just sends wxIdleEvent to all interested
+        // parties
+        //
+        // it should return TRUE if more idle events are needed, FALSE if not
+    virtual bool ProcessIdle() = 0;
 #endif // wxUSE_GUI
 
     // application info: name, description, vendor
@@ -234,11 +236,13 @@ public:
 
         // control the exit behaviour: by default, the program will exit the
         // main loop (and so, usually, terminate) when the last top-level
-        // program window is deleted. Beware that if you disabel this (with
-        // SetExitOnFrameDelete(FALSE)), you'll have to call ExitMainLoop()
-        // explicitly from somewhere.
-    void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; }
-    bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; }
+        // program window is deleted. Beware that if you disable this behaviour
+        // (with SetExitOnFrameDelete(FALSE)), you'll have to call
+        // ExitMainLoop() explicitly from somewhere.
+    void SetExitOnFrameDelete(bool flag)
+        { m_exitOnFrameDelete = flag ? Yes : No; }
+    bool GetExitOnFrameDelete() const
+        { return m_exitOnFrameDelete == Yes; }
 
 #endif // wxUSE_GUI
 
@@ -278,22 +282,21 @@ public:
         // user-defined class (default implementation creates a wxLogGui
         // object) - this log object is used by default by all wxLogXXX()
         // functions.
-    virtual wxLog *CreateLogTarget()
-        #if wxUSE_GUI && wxUSE_LOGGUI && !defined(__WXMICROWIN__)
-            { return new wxLogGui; }
-        #else // !GUI
-            { return new wxLogStderr; }
-        #endif // wxUSE_GUI
+    virtual wxLog *CreateLogTarget();
 #endif // wxUSE_LOG
 
+        // similar to CreateLogTarget() but for the global wxMessageOutput
+        // object
+    virtual wxMessageOutput *CreateMessageOutput();
+
 #if wxUSE_GUI
 
-  #if WXWIN_COMPATIBILITY_2_2
+#if WXWIN_COMPATIBILITY_2_2
         // get the standard icon used by wxWin dialogs - this allows the user
         // to customize the standard dialogs. The 'which' parameter is one of
         // wxICON_XXX values
     virtual wxIcon GetStdIcon(int WXUNUSED(which)) const { return wxNullIcon; }
-  #endif
+#endif
 
         // Get display mode that is used use. This is only used in framebuffer wxWin ports
         // (such as wxMGL).
@@ -390,8 +393,16 @@ protected:
     // the main top level window - may be NULL
     wxWindow *m_topWindow;
 
-    // if TRUE, exit the main loop when the last top level window is deleted
-    bool m_exitOnFrameDelete;
+    // if Yes, exit the main loop when the last top level window is deleted, if
+    // No don't do it and if Later -- only do it once we reach our OnRun()
+    //
+    // the explanation for using this strange scheme is given in appcmn.cpp
+    enum
+    {
+        Later = -1,
+        No,
+        Yes
+    } m_exitOnFrameDelete;
 
     // TRUE if the apps whats to use the best visual on systems where
     // more than one are available (Sun, SGI, XFree86 4.0 ?)
@@ -528,13 +539,13 @@ public:
 
 #if !wxUSE_GUI || defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXPM__) || defined(__WXMGL__)
     #define IMPLEMENT_WXWIN_MAIN \
-        extern int wxEntry( int argc, char *argv[] ); \
-        int main(int argc, char *argv[]) { return wxEntry(argc, argv); }
+        extern int wxEntry( int argc, char **argv ); \
+        int main(int argc, char **argv) { return wxEntry(argc, argv); }
 #elif defined(__WXMAC__) && defined(__UNIX__)
     // wxMac seems to have a specific wxEntry prototype
     #define IMPLEMENT_WXWIN_MAIN \
-        extern int wxEntry( int argc, char *argv[], bool enterLoop = 1 ); \
-        int main(int argc, char *argv[]) { return wxEntry(argc, argv); }
+        extern int wxEntry( int argc, char **argv, bool enterLoop = TRUE ); \
+        int main(int argc, char **argv) { return wxEntry(argc, argv); }
 #elif defined(__WXMSW__) && defined(WXUSINGDLL)
     // NT defines APIENTRY, 3.x not
     #if !defined(WXAPIENTRY)