]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/app.h
wxChoice derives from wxChoiceBase; renamed Append to DoAppend
[wxWidgets.git] / include / wx / app.h
index 489194ab3bd1f0d9708dce2519a27574f6e1c444..69f408ac5afdfeca04a89bd1b3298922726a9245 100644 (file)
@@ -108,6 +108,10 @@ 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.
@@ -124,7 +128,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
@@ -147,6 +151,8 @@ public:
         // Override: rarely.
     virtual void OnFatalException() { }
 
+    virtual bool ProcessIdle() = 0;
+
     // the worker functions - usually not used directly by the user code
     // -----------------------------------------------------------------
 
@@ -230,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
 
@@ -315,14 +323,29 @@ public:
     virtual void SetActive(bool isActive, wxWindow *lastFocus);
 #endif // wxUSE_GUI
 
+    // this method allows to filter all the events processed by the program, so
+    // you should try to return quickly from it to avoid slowing down the
+    // program to the crawl
+    //
+    // return value should be -1 to continue with the normal event processing,
+    // or TRUE or FALSE to stop further processing and pretend that the event
+    // had been already processed or won't be processed at all, respectively
+    virtual int FilterEvent(wxEvent& event);
+
     // debugging support
     // -----------------
 
     // this function is called when an assert failure occurs, the base class
     // version does the normal processing (i.e. shows the usual assert failure
     // dialog box)
+    //
+    // the arguments are the place where the assert occured, the text of the
+    // assert itself and the user-specified message
 #ifdef __WXDEBUG__
-    virtual void OnAssert(const wxChar *file, int line, const wxChar *msg);
+    virtual void OnAssert(const wxChar *file,
+                          int line,
+                          const wxChar *cond,
+                          const wxChar *msg);
 #endif // __WXDEBUG__
 
     // check that the wxBuildOptions object (constructed in the application
@@ -366,13 +389,21 @@ protected:
     wxString m_vendorName,      // vendor name (ACME Inc)
              m_appName,         // app name
              m_className;       // class name
-
+             
 #if wxUSE_GUI
     // 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 ?)
@@ -548,20 +579,14 @@ public:
     #define IMPLEMENT_WX_THEME_SUPPORT
 #endif
 
-// define the build options object for the application which is compared to the
-// one used for building the library on the program startup
-#define WX_DEFINE_BUILDOPTS()                            \
-    const wxBuildOptions& wxGetBuildOptions()            \
-    {                                                    \
-        static wxBuildOptions s_buildOptions;            \
-        return s_buildOptions;                           \
-    }
-
 // Use this macro if you want to define your own main() or WinMain() function
 // and call wxEntry() from there.
 #define IMPLEMENT_APP_NO_MAIN(appname)                   \
-    WX_DEFINE_BUILDOPTS()                                \
-    wxApp *wxCreateApp() { return new appname; }         \
+    wxApp *wxCreateApp()                                 \
+    {                                                    \
+        wxApp::CheckBuildOptions(wxBuildOptions());      \
+        return new appname;                              \
+    }                                                    \
     wxAppInitializer wxTheAppInitializer((wxAppInitializerFunction) wxCreateApp); \
     appname& wxGetApp() { return *(appname *)wxTheApp; }