| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        app.h
 
- // Purpose:     interface of wxApp
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     @class wxAppConsole
 
-     This class is essential for writing console-only or hybrid apps without
 
-     having to define @c wxUSE_GUI=0.
 
-     It is used to:
 
-     @li set and get application-wide properties (see wxAppConsole::CreateTraits
 
-         and wxAppConsole::SetXXX functions)
 
-     @li implement the windowing system message or event loop: events in fact are
 
-         supported even in console-mode applications (see wxAppConsole::HandleEvent
 
-         and wxAppConsole::ProcessPendingEvents);
 
-     @li initiate application processing via wxApp::OnInit;
 
-     @li allow default processing of events not handled by other
 
-         objects in the application (see wxAppConsole::FilterEvent)
 
-     @li implement Apple-specific event handlers (see wxAppConsole::MacXXX functions)
 
-     You should use the macro wxIMPLEMENT_APP(appClass) in your application
 
-     implementation file to tell wxWidgets how to create an instance of your
 
-     application class.
 
-     Use wxDECLARE_APP(appClass) in a header file if you want the ::wxGetApp() function
 
-     (which returns a reference to your application object) to be visible to other
 
-     files.
 
-     @library{wxbase}
 
-     @category{appmanagement}
 
-     @see @ref overview_app, wxApp, wxAppTraits, wxEventLoopBase
 
- */
 
- class wxAppConsole : public wxEvtHandler,
 
-                      public wxEventFilter
 
- {
 
- protected:
 
-     /**
 
-         Creates the wxAppTraits object when GetTraits() needs it for the first time.
 
-         @see wxAppTraits
 
-     */
 
-     virtual wxAppTraits* CreateTraits();
 
- public:
 
-     /**
 
-         Destructor.
 
-     */
 
-     virtual ~wxAppConsole();
 
-     /**
 
-         @name Event-handling
 
-         Note that you should look at wxEvtLoopBase for more event-processing
 
-         documentation.
 
-     */
 
-     //@{
 
-     /**
 
-         Called by wxWidgets on creation of the application. Override this if you wish
 
-         to provide your own (environment-dependent) main loop.
 
-         @return 0 under X, and the wParam of the WM_QUIT message under Windows.
 
-     */
 
-     virtual int MainLoop();
 
-     /**
 
-         Call this to explicitly exit the main message (event) loop.
 
-         You should normally exit the main loop (and the application) by deleting
 
-         the top window.
 
-         This function simply calls wxEvtLoopBase::Exit() on the active loop.
 
-     */
 
-     virtual void ExitMainLoop();
 
-     /**
 
-         Overridden wxEventFilter method.
 
-         This function is called before processing any event and allows the application
 
-         to preempt the processing of some events, see wxEventFilter
 
-         documentation for more information.
 
-         wxApp implementation of this method always return -1 indicating that
 
-         the event should be processed normally.
 
-     */
 
-     virtual int FilterEvent(wxEvent& event);
 
-     /**
 
-         Returns the main event loop instance, i.e.\ the event loop which is started
 
-         by OnRun() and which dispatches all events sent from the native toolkit
 
-         to the application (except when new event loops are temporarily set-up).
 
-         The returned value maybe @NULL. Put initialization code which needs a
 
-         non-@NULL main event loop into OnEventLoopEnter().
 
-     */
 
-     wxEventLoopBase* GetMainLoop() const;
 
-     /**
 
-         This function simply invokes the given method @a func of the specified
 
-         event handler @a handler with the @a event as parameter. It exists solely
 
-         to allow to catch the C++ exceptions which could be thrown by all event
 
-         handlers in the application in one place: if you want to do this, override
 
-         this function in your wxApp-derived class and add try/catch clause(s) to it.
 
-     */
 
-     virtual void HandleEvent(wxEvtHandler* handler,
 
-                              wxEventFunction func,
 
-                              wxEvent& event) const;
 
-     /**
 
-         Returns @true if the application is using an event loop.
 
-         This function always returns @true for the GUI applications which
 
-         must use an event loop but by default only returns @true for the
 
-         console programs if an event loop is already running as it can't know
 
-         whether one will be created in the future.
 
-         Thus, it only makes sense to override it in console applications which
 
-         do use an event loop, to return @true instead of checking if there is a
 
-         currently active event loop.
 
-      */
 
-     virtual bool UsesEventLoop() const;
 
-     //@}
 
-     /**
 
-         @name Pending events
 
-         Pending events are handled by wxAppConsole rather than wxEventLoopBase
 
-         to allow queuing of events even when there's no event loop
 
-         (e.g. in wxAppConsole::OnInit).
 
-     */
 
-     //@{
 
-     /**
 
-         Process all pending events; it is necessary to call this function to
 
-         process events posted with wxEvtHandler::QueueEvent or wxEvtHandler::AddPendingEvent.
 
-         This happens during each event loop iteration (see wxEventLoopBase) in GUI mode but
 
-         it may be also called directly.
 
-         Note that this function does not only process the pending events for the wxApp object
 
-         itself (which derives from wxEvtHandler) but also the pending events for @e any
 
-         event handler of this application.
 
-         This function will immediately return and do nothing if SuspendProcessingOfPendingEvents()
 
-         was called.
 
-     */
 
-     virtual void ProcessPendingEvents();
 
-     /**
 
-         Deletes the pending events of all wxEvtHandlers of this application.
 
-         See wxEvtHandler::DeletePendingEvents() for warnings about deleting the pending
 
-         events.
 
-     */
 
-     void DeletePendingEvents();
 
-     /**
 
-         Returns @true if there are pending events on the internal pending event list.
 
-         Whenever wxEvtHandler::QueueEvent or wxEvtHandler::AddPendingEvent() are
 
-         called (not only for wxApp itself, but for any event handler of the application!),
 
-         the internal wxApp's list of handlers with pending events is updated and this
 
-         function will return true.
 
-     */
 
-     bool HasPendingEvents() const;
 
-     /**
 
-         Temporary suspends processing of the pending events.
 
-         @see ResumeProcessingOfPendingEvents()
 
-     */
 
-     void SuspendProcessingOfPendingEvents();
 
-     /**
 
-         Resume processing of the pending events previously stopped because of a
 
-         call to SuspendProcessingOfPendingEvents().
 
-     */
 
-     void ResumeProcessingOfPendingEvents();
 
-     //@}
 
-     /**
 
-         Delayed objects destruction.
 
-         In applications using events it may be unsafe for an event handler to
 
-         delete the object which generated the event because more events may be
 
-         still pending for the same object. In this case the handler may call
 
-         ScheduleForDestruction() instead.
 
-      */
 
-     //@{
 
-     /**
 
-         Schedule the object for destruction in the near future.
 
-         Notice that if the application is not using an event loop, i.e. if
 
-         UsesEventLoop() returns @false, this method will simply delete the
 
-         object immediately.
 
-         Examples of using this function inside wxWidgets itself include
 
-         deleting the top level windows when they are closed and sockets when
 
-         they are disconnected.
 
-      */
 
-     void ScheduleForDestruction(wxObject *object);
 
-     /**
 
-         Check if the object had been scheduled for destruction with
 
-         ScheduleForDestruction().
 
-         This function may be useful as an optimization to avoid doing something
 
-         with an object which will be soon destroyed in any case.
 
-      */
 
-     bool IsScheduledForDestruction(wxObject *object) const;
 
-     //@}
 
-     bool Yield(bool onlyIfNeeded = false);
 
-     /**
 
-         Allows external code to modify global ::wxTheApp, but you should really
 
-         know what you're doing if you call it.
 
-         @param app
 
-             Replacement for the global application object.
 
-         @see GetInstance()
 
-     */
 
-     static void SetInstance(wxAppConsole* app);
 
-     /**
 
-         Returns the one and only global application object.
 
-         Usually ::wxTheApp is used instead.
 
-         @see SetInstance()
 
-     */
 
-     static wxAppConsole* GetInstance();
 
-     /**
 
-         Returns @true if the main event loop is currently running, i.e.\ if the
 
-         application is inside OnRun().
 
-         This can be useful to test whether events can be dispatched. For example,
 
-         if this function returns @false, non-blocking sockets cannot be used because
 
-         the events from them would never be processed.
 
-     */
 
-     static bool IsMainLoopRunning();
 
-     /**
 
-         @name Callbacks for application-wide "events"
 
-     */
 
-     //@{
 
-     /**
 
-         This function is called when an assert failure occurs, i.e.\ the condition
 
-         specified in wxASSERT() macro evaluated to @false.
 
-         It is only called in debug mode (when @c __WXDEBUG__ is defined) as
 
-         asserts are not left in the release code at all.
 
-         The base class version shows the default assert failure dialog box proposing to
 
-         the user to stop the program, continue or ignore all subsequent asserts.
 
-         @param file
 
-             the name of the source file where the assert occurred
 
-         @param line
 
-             the line number in this file where the assert occurred
 
-         @param func
 
-             the name of the function where the assert occurred, may be
 
-             empty if the compiler doesn't support C99 __FUNCTION__
 
-         @param cond
 
-             the condition of the failed assert in text form
 
-         @param msg
 
-             the message specified as argument to wxASSERT_MSG or wxFAIL_MSG, will
 
-             be @NULL if just wxASSERT or wxFAIL was used
 
-     */
 
-     virtual void OnAssertFailure(const wxChar *file,
 
-                                  int line,
 
-                                  const wxChar *func,
 
-                                  const wxChar *cond,
 
-                                  const wxChar *msg);
 
-     /**
 
-         Called when command line parsing fails (i.e.\ an incorrect command line option
 
-         was specified by the user). The default behaviour is to show the program usage
 
-         text and abort the program.
 
-         Return @true to continue normal execution or @false to return
 
-         @false from OnInit() thus terminating the program.
 
-         @see OnInitCmdLine()
 
-     */
 
-     virtual bool OnCmdLineError(wxCmdLineParser& parser);
 
-     /**
 
-         Called when the help option (@c --help) was specified on the command line.
 
-         The default behaviour is to show the program usage text and abort the program.
 
-         Return @true to continue normal execution or @false to return
 
-         @false from OnInit() thus terminating the program.
 
-         @see OnInitCmdLine()
 
-     */
 
-     virtual bool OnCmdLineHelp(wxCmdLineParser& parser);
 
-     /**
 
-         Called after the command line had been successfully parsed. You may override
 
-         this method to test for the values of the various parameters which could be
 
-         set from the command line.
 
-         Don't forget to call the base class version unless you want to suppress
 
-         processing of the standard command line options.
 
-         Return @true to continue normal execution or @false to return @false from
 
-         OnInit() thus terminating the program.
 
-         @see OnInitCmdLine()
 
-     */
 
-     virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
 
-     /**
 
-         Called by wxEventLoopBase::SetActive(): you can override this function
 
-         and put here the code which needs an active event loop.
 
-         Note that this function is called whenever an event loop is activated;
 
-         you may want to use wxEventLoopBase::IsMain() to perform initialization
 
-         specific for the app's main event loop.
 
-         @see OnEventLoopExit()
 
-     */
 
-     virtual void OnEventLoopEnter(wxEventLoopBase* loop);
 
-     /**
 
-         Called by wxEventLoopBase::OnExit() for each event loop which
 
-         is exited.
 
-         @see OnEventLoopEnter()
 
-     */
 
-     virtual void OnEventLoopExit(wxEventLoopBase* loop);
 
-     /**
 
-         This function is called if an unhandled exception occurs inside the main
 
-         application event loop. It can return @true to ignore the exception and to
 
-         continue running the loop or @false to exit the loop and terminate the
 
-         program. In the latter case it can also use C++ @c throw keyword to
 
-         rethrow the current exception.
 
-         The default behaviour of this function is the latter in all ports except under
 
-         Windows where a dialog is shown to the user which allows him to choose between
 
-         the different options. You may override this function in your class to do
 
-         something more appropriate.
 
-         Finally note that if the exception is rethrown from here, it can be caught in
 
-         OnUnhandledException().
 
-     */
 
-     virtual bool OnExceptionInMainLoop();
 
-     /**
 
-         Override this member function for any processing which needs to be
 
-         done as the application is about to exit. OnExit is called after
 
-         destroying all application windows and controls, but before
 
-         wxWidgets cleanup. Note that it is not called at all if
 
-         OnInit() failed.
 
-         The return value of this function is currently ignored, return the same
 
-         value as returned by the base class method if you override it.
 
-     */
 
-     virtual int OnExit();
 
-     /**
 
-         This function may be called if something fatal happens: an unhandled
 
-         exception under Win32 or a fatal signal under Unix, for example. However,
 
-         this will not happen by default: you have to explicitly call
 
-         wxHandleFatalExceptions() to enable this.
 
-         Generally speaking, this function should only show a message to the user and
 
-         return. You may attempt to save unsaved data but this is not guaranteed to
 
-         work and, in fact, probably won't.
 
-         @see wxHandleFatalExceptions()
 
-     */
 
-     virtual void OnFatalException();
 
-     /**
 
-         This must be provided by the application, and will usually create the
 
-         application's main window, optionally calling SetTopWindow().
 
-         You may use OnExit() to clean up anything initialized here, provided
 
-         that the function returns @true.
 
-         Notice that if you want to use the command line processing provided by
 
-         wxWidgets you have to call the base class version in the derived class
 
-         OnInit().
 
-         Return @true to continue processing, @false to exit the application
 
-         immediately.
 
-     */
 
-     virtual bool OnInit();
 
-     /**
 
-         Called from OnInit() and may be used to initialize the parser with the
 
-         command line options for this application. The base class versions adds
 
-         support for a few standard options only.
 
-     */
 
-     virtual void OnInitCmdLine(wxCmdLineParser& parser);
 
-     /**
 
-         This virtual function is where the execution of a program written in wxWidgets
 
-         starts. The default implementation just enters the main loop and starts
 
-         handling the events until it terminates, either because ExitMainLoop() has
 
-         been explicitly called or because the last frame has been deleted and
 
-         GetExitOnFrameDelete() flag is @true (this is the default).
 
-         The return value of this function becomes the exit code of the program, so it
 
-         should return 0 in case of successful termination.
 
-     */
 
-     virtual int OnRun();
 
-     /**
 
-         This function is called when an unhandled C++ exception occurs in user
 
-         code called by wxWidgets.
 
-         Any unhandled exceptions thrown from (overridden versions of) OnInit()
 
-         and OnExit() methods as well as any exceptions thrown from inside the
 
-         main loop and re-thrown by OnUnhandledException() will result in a call
 
-         to this function.
 
-         By the time this function is called, the program is already about to
 
-         exit and the exception can't be handled nor ignored any more, override
 
-         OnUnhandledException() or use explicit @c try/catch blocks around
 
-         OnInit() body to be able to handle the exception earlier.
 
-         The default implementation dumps information about the exception using
 
-         wxMessageOutputBest.
 
-     */
 
-     virtual void OnUnhandledException();
 
-     //@}
 
-     /**
 
-         @name Application information
 
-     */
 
-     //@{
 
-     /**
 
-         Returns the user-readable application name.
 
-         The difference between this string and the one returned by GetAppName()
 
-         is that this one is meant to be shown to the user and so should be used
 
-         for the window titles, page headers and so on while the other one
 
-         should be only used internally, e.g. for the file names or
 
-         configuration file keys.
 
-         If the application name for display had been previously set by
 
-         SetAppDisplayName(), it will be returned by this function. Otherwise,
 
-         if SetAppName() had been called its value will be returned; also as is.
 
-         Finally if none was called, this function returns the program name
 
-         capitalized using wxString::Capitalize().
 
-         @since 2.9.0
 
-     */
 
-     wxString GetAppDisplayName() const;
 
-     /**
 
-         Returns the application name.
 
-         If SetAppName() had been called, returns the string passed to it.
 
-         Otherwise returns the program name, i.e. the value of @c argv[0] passed
 
-         to the @c main() function.
 
-         @see GetAppDisplayName()
 
-     */
 
-     wxString GetAppName() const;
 
-     /**
 
-         Gets the class name of the application. The class name may be used in a
 
-         platform specific manner to refer to the application.
 
-         @see SetClassName()
 
-     */
 
-     wxString GetClassName() const;
 
-     /**
 
-         Returns a pointer to the wxAppTraits object for the application.
 
-         If you want to customize the wxAppTraits object, you must override the
 
-         CreateTraits() function.
 
-     */
 
-     wxAppTraits* GetTraits();
 
-     /**
 
-         Returns the user-readable vendor name. The difference between this string
 
-         and the one returned by GetVendorName() is that this one is meant to be shown
 
-         to the user and so should be used for the window titles, page headers and so on
 
-         while the other one should be only used internally, e.g. for the file names or
 
-         configuration file keys.
 
-         By default, returns the same string as GetVendorName().
 
-         @since 2.9.0
 
-     */
 
-     const wxString& GetVendorDisplayName() const;
 
-     /**
 
-         Returns the application's vendor name.
 
-     */
 
-     const wxString& GetVendorName() const;
 
-     /**
 
-         Set the application name to be used in the user-visible places such as
 
-         window titles.
 
-         See GetAppDisplayName() for more about the differences between the
 
-         display name and name.
 
-         Notice that if this function is called, the name is used as is, without
 
-         any capitalization as done by default by GetAppDisplayName().
 
-     */
 
-     void SetAppDisplayName(const wxString& name);
 
-     /**
 
-         Sets the name of the application. This name should be used for file names,
 
-         configuration file entries and other internal strings. For the user-visible
 
-         strings, such as the window titles, the application display name set by
 
-         SetAppDisplayName() is used instead.
 
-         By default the application name is set to the name of its executable file.
 
-         @see GetAppName()
 
-     */
 
-     void SetAppName(const wxString& name);
 
-     /**
 
-         Sets the class name of the application. This may be used in a platform specific
 
-         manner to refer to the application.
 
-         @see GetClassName()
 
-     */
 
-     void SetClassName(const wxString& name);
 
-     /**
 
-         Set the vendor name to be used in the user-visible places.
 
-         See GetVendorDisplayName() for more about the differences between the
 
-         display name and name.
 
-     */
 
-     void SetVendorDisplayName(const wxString& name);
 
-     /**
 
-         Sets the name of application's vendor. The name will be used
 
-         in registry access. A default name is set by wxWidgets.
 
-         @see GetVendorName()
 
-     */
 
-     void SetVendorName(const wxString& name);
 
-     //@}
 
-     /**
 
-         Sets the C locale to the default locale for the current environment.
 
-         It is advised to call this to ensure that the underlying toolkit uses
 
-         the locale in which the numbers and monetary amounts are shown in the
 
-         format expected by user and so on.
 
-         Calling this function is roughly equivalent to calling
 
-         @code
 
-             setlocale(LC_ALL, "");
 
-         @endcode
 
-         but performs additional toolkit-specific tasks under some platforms and
 
-         so should be used instead of @c setlocale() itself. Alternatively, you
 
-         can use wxLocale to change the locale with more control.
 
-         Notice that this does @em not change the global C++ locale, you need to
 
-         do it explicitly if you want, e.g.
 
-         @code
 
-             std::locale::global(std::locale(""));
 
-         @endcode
 
-         but be warned that locale support in C++ standard library can be poor
 
-         or worse under some platforms, e.g. the above line results in an
 
-         immediate crash under OS X up to the version 10.8.2.
 
-         @since 2.9.5
 
-      */
 
-     void SetCLocale();
 
-     /**
 
-         Number of command line arguments (after environment-specific processing).
 
-     */
 
-     int argc;
 
-     /**
 
-         Command line arguments (after environment-specific processing).
 
-         Under Windows and Linux/Unix, you should parse the command line
 
-         arguments and check for files to be opened when starting your
 
-         application. Under OS X, you need to override MacOpenFiles()
 
-         since command line arguments are used differently there.
 
-         You may use the wxCmdLineParser to parse command line arguments.
 
-     */
 
-     wxChar** argv;
 
- };
 
- /**
 
-     @class wxApp
 
-     The wxApp class represents the application itself when @c wxUSE_GUI=1.
 
-     In addition to the features provided by wxAppConsole it keeps track of
 
-     the <em>top window</em> (see SetTopWindow()) and adds support for
 
-     video modes (see SetVideoMode()).
 
-     In general, application-wide settings for GUI-only apps are accessible
 
-     from wxApp (or from wxSystemSettings or wxSystemOptions classes).
 
-     @beginEventEmissionTable
 
-     @event{EVT_QUERY_END_SESSION(func)}
 
-         Process a query end session event, supplying the member function.
 
-         See wxCloseEvent.
 
-     @event{EVT_END_SESSION(func)}
 
-         Process an end session event, supplying the member function.
 
-         See wxCloseEvent.
 
-     @event{EVT_ACTIVATE_APP(func)}
 
-         Process a @c wxEVT_ACTIVATE_APP event. See wxActivateEvent.
 
-     @event{EVT_HIBERNATE(func)}
 
-         Process a hibernate event. See wxActivateEvent.
 
-     @event{EVT_DIALUP_CONNECTED(func)}
 
-         A connection with the network was established. See wxDialUpEvent.
 
-     @event{EVT_DIALUP_DISCONNECTED(func)}
 
-         The connection with the network was lost. See wxDialUpEvent.
 
-     @event{EVT_IDLE(func)}
 
-         Process a @c wxEVT_IDLE event. See wxIdleEvent.
 
-     @endEventTable
 
-     @library{wxbase}
 
-     @category{appmanagement}
 
-     @see @ref overview_app, wxAppTraits, wxEventLoopBase, wxSystemSettings
 
- */
 
- class wxApp : public wxAppConsole
 
- {
 
- public:
 
-     /**
 
-         Constructor. Called implicitly with a definition of a wxApp object.
 
-     */
 
-     wxApp();
 
-     /**
 
-         Destructor. Will be called implicitly on program exit if the wxApp
 
-         object is created on the stack.
 
-     */
 
-     virtual ~wxApp();
 
-     /**
 
-         Get display mode that is used use. This is only used in framebuffer
 
-         wxWidgets ports such as wxDFB.
 
-     */
 
-     virtual wxVideoMode GetDisplayMode() const;
 
-     /**
 
-         Returns @true if the application will exit when the top-level frame is deleted.
 
-         @see SetExitOnFrameDelete()
 
-     */
 
-     bool GetExitOnFrameDelete() const;
 
-     /**
 
-         Return the layout direction for the current locale or @c wxLayout_Default
 
-         if it's unknown.
 
-     */
 
-     virtual wxLayoutDirection GetLayoutDirection() const;
 
-     /**
 
-         Returns @true if the application will use the best visual on systems that support
 
-         different visuals, @false otherwise.
 
-         @see SetUseBestVisual()
 
-     */
 
-     bool GetUseBestVisual() const;
 
-     /**
 
-         Returns a pointer to the top window.
 
-         @remarks
 
-             If the top window hasn't been set using SetTopWindow(), this function
 
-             will find the first top-level window (frame or dialog or instance of
 
-             wxTopLevelWindow) from the internal top level window list and return that.
 
-         @see SetTopWindow()
 
-     */
 
-     virtual wxWindow* GetTopWindow() const;
 
-     /**
 
-         Returns @true if the application is active, i.e.\ if one of its windows is
 
-         currently in the foreground.
 
-         If this function returns @false and you need to attract users attention to
 
-         the application, you may use wxTopLevelWindow::RequestUserAttention to do it.
 
-     */
 
-     virtual bool IsActive() const;
 
-     /**
 
-         This function is similar to wxYield(), except that it disables the user
 
-         input to all program windows before calling wxAppConsole::Yield and re-enables it
 
-         again afterwards. If @a win is not @NULL, this window will remain enabled,
 
-         allowing the implementation of some limited user interaction.
 
-         Returns the result of the call to wxAppConsole::Yield.
 
-         @see wxSafeYield
 
-     */
 
-     virtual bool SafeYield(wxWindow *win, bool onlyIfNeeded);
 
-     /**
 
-         Works like SafeYield() with @e onlyIfNeeded == @true except that
 
-         it allows the caller to specify a mask of events to be processed.
 
-         See wxAppConsole::YieldFor for more info.
 
-     */
 
-     virtual bool SafeYieldFor(wxWindow *win, long eventsToProcess);
 
-     /**
 
-         Windows-only function for processing a message. This function is called
 
-         from the main message loop, checking for windows that may wish to process it.
 
-         The function returns @true if the message was processed, @false otherwise.
 
-         If you use wxWidgets with another class library with its own message loop,
 
-         you should make sure that this function is called to allow wxWidgets to
 
-         receive messages. For example, to allow co-existence with the Microsoft
 
-         Foundation Classes, override the PreTranslateMessage function:
 
-         @code
 
-         // Provide wxWidgets message loop compatibility
 
-         BOOL CTheApp::PreTranslateMessage(MSG *msg)
 
-         {
 
-             if (wxTheApp && wxTheApp->ProcessMessage((WXMSW *)msg))
 
-                 return true;
 
-             else
 
-                 return CWinApp::PreTranslateMessage(msg);
 
-         }
 
-         @endcode
 
-         @onlyfor{wxmsw}
 
-     */
 
-     bool ProcessMessage(WXMSG* msg);
 
-     /**
 
-         Set display mode to use. This is only used in framebuffer wxWidgets
 
-         ports such as wxDFB.
 
-     */
 
-     virtual bool SetDisplayMode(const wxVideoMode& info);
 
-     /**
 
-         Allows the programmer to specify whether the application will exit when the
 
-         top-level frame is deleted.
 
-         @param flag
 
-             If @true (the default), the application will exit when the top-level frame
 
-             is deleted. If @false, the application will continue to run.
 
-         @see GetExitOnFrameDelete(), @ref overview_app_shutdown
 
-     */
 
-     void SetExitOnFrameDelete(bool flag);
 
-     /**
 
-         Allows runtime switching of the UI environment theme.
 
-         Currently implemented for wxGTK2-only.
 
-         Return @true if theme was successfully changed.
 
-         @param theme
 
-             The name of the new theme or an absolute path to a gtkrc-theme-file
 
-     */
 
-     virtual bool SetNativeTheme(const wxString& theme);
 
-     /**
 
-         Sets the 'top' window. You can call this from within OnInit() to let wxWidgets
 
-         know which is the main window. You don't have to set the top window;
 
-         it is only a convenience so that (for example) certain dialogs without parents
 
-         can use a specific window as the top window.
 
-         If no top window is specified by the application, wxWidgets just uses the
 
-         first frame or dialog (or better, any wxTopLevelWindow) in its top-level
 
-         window list, when it needs to use the top window.
 
-         If you previously called SetTopWindow() and now you need to restore this
 
-         automatic behaviour you can call @code wxApp::SetTopWindow(NULL) @endcode.
 
-         @param window
 
-             The new top window.
 
-         @see GetTopWindow(), OnInit()
 
-     */
 
-     void SetTopWindow(wxWindow* window);
 
-     /**
 
-         Allows the programmer to specify whether the application will use the best
 
-         visual on systems that support several visual on the same display. This is typically
 
-         the case under Solaris and IRIX, where the default visual is only 8-bit whereas
 
-         certain applications are supposed to run in TrueColour mode.
 
-         Note that this function has to be called in the constructor of the wxApp
 
-         instance and won't have any effect when called later on.
 
-         This function currently only has effect under GTK.
 
-         @param flag
 
-             If @true, the app will use the best visual.
 
-         @param forceTrueColour
 
-             If @true then the application will try to force using a TrueColour
 
-             visual and abort the app if none is found.
 
-     */
 
-     void SetUseBestVisual(bool flag, bool forceTrueColour = false);
 
-     /**
 
-         @name Mac-specific functions
 
-     */
 
-     //@{
 
-     /**
 
-         Called in response of an "open-application" Apple event.
 
-         Override this to create a new document in your app.
 
-         @onlyfor{wxosx}
 
-     */
 
-     virtual void MacNewFile();
 
-     /**
 
-         Called in response of an openFiles message with Cocoa, or an
 
-         "open-document" Apple event with Carbon.
 
-         You need to override this method in order to open one or more document
 
-         files after the user double clicked on it or if the files and/or
 
-         folders were dropped on either the application in the dock or the
 
-         application icon in Finder.
 
-         By default this method calls MacOpenFile for each file/folder.
 
-         @onlyfor{wxosx}
 
-         @since 2.9.3
 
-     */
 
-     virtual void MacOpenFiles(const wxArrayString& fileNames);
 
-     /**
 
-         Called in response of an "open-document" Apple event.
 
-         @deprecated
 
-         This function is kept mostly for backwards compatibility. Please
 
-         override wxApp::MacOpenFiles method instead in any new code.
 
-         @onlyfor{wxosx}
 
-     */
 
-     virtual void MacOpenFile(const wxString& fileName);
 
-     /**
 
-         Called in response of a "get-url" Apple event.
 
-         @onlyfor{wxosx}
 
-     */
 
-     virtual void MacOpenURL(const wxString& url);
 
-     /**
 
-         Called in response of a "print-document" Apple event.
 
-         @onlyfor{wxosx}
 
-     */
 
-     virtual void MacPrintFile(const wxString& fileName);
 
-     /**
 
-         Called in response of a "reopen-application" Apple event.
 
-         @onlyfor{wxosx}
 
-     */
 
-     virtual void MacReopenApp();
 
-     /**
 
-         May be overridden to indicate that the application is not a foreground
 
-         GUI application under OS X.
 
-         This method is called during the application startup and returns @true
 
-         by default. In this case, wxWidgets ensures that the application is ran
 
-         as a foreground, GUI application so that the user can interact with it
 
-         normally, even if it is not bundled. If this is undesired, i.e. if the
 
-         application doesn't need to be brought to the foreground, this method
 
-         can be overridden to return @false.
 
-         Notice that overriding it doesn't make any difference for the bundled
 
-         applications which are always foreground unless @c LSBackgroundOnly key
 
-         is specified in the @c Info.plist file.
 
-         @onlyfor{wxosx}
 
-         
 
-         @since 3.0.1
 
-     */
 
-     virtual bool OSXIsGUIApplication();
 
-     //@}
 
- };
 
- // ============================================================================
 
- // Global functions/macros
 
- // ============================================================================
 
- /** @addtogroup group_funcmacro_rtti */
 
- //@{
 
- /**
 
-     This is used in headers to create a forward declaration of the ::wxGetApp()
 
-     function implemented by wxIMPLEMENT_APP().
 
-     It creates the declaration <tt>className& wxGetApp()</tt>
 
-     (requires a final semicolon).
 
-     @header{wx/app.h}
 
-     Example:
 
-     @code
 
-     wxDECLARE_APP(MyApp);
 
-     @endcode
 
- */
 
- #define wxDECLARE_APP( className )
 
- /**
 
-     This is used in the application class implementation file to make the
 
-     application class known to wxWidgets for dynamic construction.
 
-     Note that this macro requires a final semicolon.
 
-     @header{wx/app.h}
 
-     Example:
 
-     @code
 
-     wxIMPLEMENT_APP(MyApp);
 
-     @endcode
 
-     @see wxDECLARE_APP()
 
- */
 
- #define wxIMPLEMENT_APP( className )
 
- //@}
 
- /**
 
-     The global pointer to the singleton wxApp object.
 
-     @see wxApp::GetInstance()
 
- */
 
- wxApp *wxTheApp;
 
- /** @addtogroup group_funcmacro_appinitterm */
 
- //@{
 
- /**
 
-     This function doesn't exist in wxWidgets but it is created by using the
 
-     wxIMPLEMENT_APP() macro.
 
-     Thus, before using it anywhere but in the same module where this macro is
 
-     used, you must make it available using wxDECLARE_APP().
 
-     The advantage of using this function compared to directly using the global
 
-     ::wxTheApp pointer is that the latter is of type wxApp* and so wouldn't
 
-     allow you to access the functions specific to your application class but
 
-     not present in wxApp while wxGetApp() returns the object of the right type.
 
-     @header{wx/app.h}
 
- */
 
- wxAppDerivedClass& wxGetApp();
 
- /**
 
-     If @a doIt is @true, the fatal exceptions (also known as general protection
 
-     faults under Windows or segmentation violations in the Unix world) will be
 
-     caught and passed to wxApp::OnFatalException.
 
-     By default, i.e. before this function is called, they will be handled in
 
-     the normal way which usually just means that the application will be
 
-     terminated. Calling wxHandleFatalExceptions() with @a doIt equal to @false
 
-     will restore this default behaviour.
 
-     Notice that this function is only available if @c wxUSE_ON_FATAL_EXCEPTION
 
-     is 1 and under Windows platform this requires a compiler with support for
 
-     SEH (structured exception handling) which currently means only Microsoft
 
-     Visual C++ or a recent Borland C++ version.
 
-     @header{wx/app.h}
 
- */
 
- bool wxHandleFatalExceptions(bool doIt = true);
 
- /**
 
-     This function is used in wxBase only and only if you don't create
 
-     wxApp object at all. In this case you must call it from your
 
-     @c main() function before calling any other wxWidgets functions.
 
-     If the function returns @false the initialization could not be performed,
 
-     in this case the library cannot be used and wxUninitialize() shouldn't be
 
-     called neither.
 
-     This function may be called several times but wxUninitialize() must be
 
-     called for each successful call to this function.
 
-     @header{wx/app.h}
 
- */
 
- bool wxInitialize();
 
- /**
 
-     This function is for use in console (wxBase) programs only. It must be called
 
-     once for each previous successful call to wxInitialize().
 
-     @header{wx/app.h}
 
- */
 
- void wxUninitialize();
 
- /**
 
-     This function wakes up the (internal and platform dependent) idle system,
 
-     i.e. it will force the system to send an idle event even if the system
 
-     currently @e is idle and thus would not send any idle event until after
 
-     some other event would get sent. This is also useful for sending events
 
-     between two threads and is used by the corresponding functions
 
-     wxPostEvent() and wxEvtHandler::AddPendingEvent().
 
-     @header{wx/app.h}
 
- */
 
- void wxWakeUpIdle();
 
- /**
 
-     Calls wxAppConsole::Yield.
 
-     @deprecated
 
-     This function is kept only for backwards compatibility. Please use
 
-     the wxAppConsole::Yield method instead in any new code.
 
-     @header{wx/app.h}
 
- */
 
- bool wxYield();
 
- /**
 
-     Calls wxApp::SafeYield.
 
-     @header{wx/app.h}
 
- */
 
- bool wxSafeYield(wxWindow* win = NULL, bool onlyIfNeeded = false);
 
- /**
 
-     This function initializes wxWidgets in a platform-dependent way. Use this if you
 
-     are not using the default wxWidgets entry code (e.g. main or WinMain).
 
-     For example, you can initialize wxWidgets from an Microsoft Foundation Classes
 
-     (MFC) application using this function.
 
-     @note This overload of wxEntry is available under all platforms.
 
-     @see wxEntryStart()
 
-     @header{wx/app.h}
 
- */
 
- int wxEntry(int& argc, wxChar** argv);
 
- /**
 
-     See wxEntry(int&,wxChar**) for more info about this function.
 
-     Notice that under Windows CE platform, and only there, the type of @a pCmdLine
 
-     is @c wchar_t *, otherwise it is @c char *, even in Unicode build.
 
-     @remarks To clean up wxWidgets, call wxApp::OnExit followed by the static
 
-              function wxApp::CleanUp. For example, if exiting from an MFC application
 
-              that also uses wxWidgets:
 
-              @code
 
-              int CTheApp::ExitInstance()
 
-              {
 
-                 // OnExit isn't called by CleanUp so must be called explicitly.
 
-                 wxTheApp->OnExit();
 
-                 wxApp::CleanUp();
 
-                 return CWinApp::ExitInstance();
 
-              }
 
-              @endcode
 
-     @header{wx/app.h}
 
- */
 
- int wxEntry(HINSTANCE hInstance,
 
-             HINSTANCE hPrevInstance = NULL,
 
-             char* pCmdLine = NULL,
 
-             int nCmdShow = SW_SHOWNORMAL);
 
- //@}
 
- /** @addtogroup group_funcmacro_procctrl */
 
- //@{
 
- /**
 
-     Exits application after calling wxApp::OnExit.
 
-     Should only be used in an emergency: normally the top-level frame
 
-     should be deleted (after deleting all other frames) to terminate the
 
-     application. See wxCloseEvent and wxApp.
 
-     @header{wx/app.h}
 
- */
 
- void wxExit();
 
- //@}
 
- /** @addtogroup group_funcmacro_debug */
 
- //@{
 
- /**
 
-     @def wxDISABLE_DEBUG_SUPPORT()
 
-     Use this macro to disable all debugging code in release build when not
 
-     using wxIMPLEMENT_APP().
 
-     Currently this macro disables assert checking and debug and trace level
 
-     logging messages in release build (i.e. when @c NDEBUG is defined). It is
 
-     used by wxIMPLEMENT_APP() macro so you only need to use it explicitly if you
 
-     don't use this macro but initialize wxWidgets directly (e.g. calls
 
-     wxEntry() or wxEntryStart() itself).
 
-     If you do not want to disable debugging code even in release build of your
 
-     application, you can use wxSetDefaultAssertHandler() and
 
-     wxLog::SetLogLevel() with @c wxLOG_Max parameter to enable assertions and
 
-     debug logging respectively.
 
-     @see wxDISABLE_ASSERTS_IN_RELEASE_BUILD(),
 
-          wxDISABLE_DEBUG_LOGGING_IN_RELEASE_BUILD(),
 
-          @ref overview_debugging
 
-     @since 2.9.1
 
-     @header{wx/app.h}
 
-  */
 
- #define wxDISABLE_DEBUG_SUPPORT() \
 
-     wxDISABLE_ASSERTS_IN_RELEASE_BUILD(); \
 
-     wxDISABLE_DEBUG_LOGGING_IN_RELEASE_BUILD()
 
- //@}
 
 
  |