+
+ // the virtual functions which may/must be overridden in the derived class
+ // -----------------------------------------------------------------------
+
+ // This is the very first function called for a newly created wxApp object,
+ // it is used by the library to do the global initialization. If, for some
+ // reason, you must override it (instead of just overriding OnInit(), as
+ // usual, for app-specific initializations), do not forget to call the base
+ // class version!
+ virtual bool Initialize(int& argc, wxChar **argv);
+
+ // This gives wxCocoa a chance to call OnInit() with a memory pool in place
+ virtual bool CallOnInit() { return OnInit(); }
+
+ // Called before OnRun(), this is a good place to do initialization -- if
+ // anything fails, return false from here to prevent the program from
+ // continuing. The command line is normally parsed here, call the base
+ // class OnInit() to do it.
+ virtual bool OnInit();
+
+ // this is here only temporary hopefully (FIXME)
+ virtual bool OnInitGui() { return true; }
+
+ // This is the replacement for the normal main(): all program work should
+ // be done here. When OnRun() returns, the programs starts shutting down.
+ virtual int OnRun() = 0;
+
+ // This is only called if OnInit() returned true so it's a good place to do
+ // any cleanup matching the initializations done there.
+ virtual int OnExit();
+
+ // This is the very last function called on wxApp object before it is
+ // destroyed. If you override it (instead of overriding OnExit() as usual)
+ // do not forget to call the base class version!
+ virtual void CleanUp();
+
+ // Called when a fatal exception occurs, this function should take care not
+ // to do anything which might provoke a nested exception! It may be
+ // overridden if you wish to react somehow in non-default way (core dump
+ // under Unix, application crash under Windows) to fatal program errors,
+ // however extreme care should be taken if you don't want this function to
+ // crash.
+ virtual void OnFatalException() { }
+
+#if wxUSE_EXCEPTIONS
+ // function called if an uncaught exception is caught inside the main
+ // event loop: it may return true to continue running the event loop or
+ // false to stop it (in the latter case it may rethrow the exception as
+ // well)
+ virtual bool OnExceptionInMainLoop();
+
+ // Called when an unhandled C++ exception occurs inside OnRun(): note that
+ // the exception type is lost by now, so if you really want to handle the
+ // exception you should override OnRun() and put a try/catch around
+ // MainLoop() call there
+ virtual void OnUnhandledException() { }
+#endif // wxUSE_EXCEPTIONS
+
+ // Called from wxExit() function, should terminate the application a.s.a.p.
+ virtual void Exit();
+
+
+ // application info: name, description, vendor
+ // -------------------------------------------
+
+ // NB: all these should be set by the application itself, there are no
+ // reasonable default except for the application name which is taken to
+ // be argv[0]
+
+ // set/get the application name
+ wxString GetAppName() const
+ {
+ return m_appName.empty() ? m_className : m_appName;
+ }
+ void SetAppName(const wxString& name) { m_appName = name; }
+
+ // set/get the app class name
+ wxString GetClassName() const { return m_className; }
+ void SetClassName(const wxString& name) { m_className = name; }
+
+ // set/get the vendor name
+ const wxString& GetVendorName() const { return m_vendorName; }
+ void SetVendorName(const wxString& name) { m_vendorName = name; }
+
+
+ // cmd line parsing stuff
+ // ----------------------
+
+ // all of these methods may be overridden in the derived class to
+ // customize the command line parsing (by default only a few standard
+ // options are handled)
+ //
+ // you also need to call wxApp::OnInit() from YourApp::OnInit() for all
+ // this to work
+
+#if wxUSE_CMDLINE_PARSER
+ // this one is called from OnInit() to add all supported options
+ // to the given parser (don't forget to call the base class version if you
+ // override it!)
+ virtual void OnInitCmdLine(wxCmdLineParser& parser);
+
+ // called after successfully parsing the command line, return true
+ // to continue and false to exit (don't forget to call the base class
+ // version if you override it!)
+ virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
+
+ // called if "--help" option was specified, return true to continue
+ // and false to exit
+ virtual bool OnCmdLineHelp(wxCmdLineParser& parser);
+
+ // called if incorrect command line options were given, return
+ // false to abort and true to continue
+ virtual bool OnCmdLineError(wxCmdLineParser& parser);
+#endif // wxUSE_CMDLINE_PARSER
+
+
+ // miscellaneous customization functions
+ // -------------------------------------
+
+ // create the app traits object to which we delegate for everything which
+ // either should be configurable by the user (then he can change the
+ // default behaviour simply by overriding CreateTraits() and returning his
+ // own traits object) or which is GUI/console dependent as then wxAppTraits
+ // allows us to abstract the differences behind the common façade
+ wxAppTraits *GetTraits();
+
+ // the functions below shouldn't be used now that we have wxAppTraits
+#if WXWIN_COMPATIBILITY_2_4