// 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.
//
// 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
// Override: rarely.
virtual void OnFatalException() { }
+ virtual bool ProcessIdle() = 0;
+
// the worker functions - usually not used directly by the user code
// -----------------------------------------------------------------
// 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
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
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 ?)
#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; }