@library{wxbase}
@category{appmanagement}
- @see @ref overview_app, wxApp, wxAppTraits, wxEventLoop
+ @see @ref overview_app, wxApp, wxAppTraits, wxEventLoopBase
*/
class wxAppConsole : public wxEvtHandler
{
*/
virtual ~wxAppConsole();
- /**
- Dispatches the next event in the windowing system event queue.
- Blocks until an event appears if there are none currently
- (use Pending() if this is not wanted).
- This can be used for programming event loops, e.g.
+ /**
+ @name Event-handling
- @code
- while (app.Pending())
- Dispatch();
- @endcode
+ Note that you should look at wxEvtLoopBase for more event-processing
+ documentation.
+ */
+ //@{
- @return @false if the event loop should stop and @true otherwise.
+ /**
+ Called by wxWidgets on creation of the application. Override this if you wish
+ to provide your own (environment-dependent) main loop.
- @see Pending()
+ @return 0 under X, and the wParam of the WM_QUIT message under Windows.
*/
- virtual bool Dispatch();
+ 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();
*/
virtual int FilterEvent(wxEvent& event);
- /**
- 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. By default, returns the application name as
- returned by GetAppName() capitalized using wxString::Capitalize().
-
- @since 2.9.0
- */
- wxString GetAppDisplayName() const;
/**
- Returns the application name.
+ 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;
- @remarks wxWidgets sets this to a reasonable default before calling
- OnInit(), but the application can reset it at will.
+ //@}
- @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.
+ Allows external code to modify global ::wxTheApp, but you should really
+ know what you're doing if you call it.
- @see SetClassName()
+ @param app
+ Replacement for the global application object.
+
+ @see GetInstance()
*/
- wxString GetClassName() const;
+ static void SetInstance(wxAppConsole* app);
/**
Returns the one and only global application object.
- Usually wxTheApp is used instead.
+ Usually ::wxTheApp is used instead.
@see SetInstance()
*/
static wxAppConsole* GetInstance();
- /**
- 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;
-
- /**
- 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 main event loop is currently running, i.e. if the
application is inside OnRun().
*/
static bool IsMainLoopRunning();
- /**
- Process all pending events; it is necessary to call this function to
- process posted events.
- This happens during each event loop iteration in GUI mode but if there is
- no main loop, it may be also called directly.
+ /**
+ @name Mac-specific functions
*/
- virtual void ProcessPendingEvents();
+ //@{
/**
Called in response of an "open-application" Apple event.
*/
virtual void MacReopenApp();
- /**
- 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.
+
+ /**
+ @name Callbacks for application-wide "events"
*/
- virtual int MainLoop();
+ //@{
/**
This function is called when an assert failure occurs, i.e. the condition
*/
virtual void OnUnhandledException();
+ //@}
+
+
+ /**
+ @name Application informations
+ */
+ //@{
+
+ /**
+ 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. By default, returns the application name as
+ returned by GetAppName() capitalized using wxString::Capitalize().
+
+ @since 2.9.0
+ */
+ wxString GetAppDisplayName() const;
+
/**
- Returns @true if unprocessed events are in the window system event queue.
+ Returns the application name.
+
+ @remarks wxWidgets sets this to a reasonable default before calling
+ OnInit(), but the application can reset it at will.
+
+ @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;
- @see Dispatch()
+ /**
+ Returns the application's vendor name.
*/
- virtual bool Pending();
+ const wxString& GetVendorName() const;
/**
Set the application name to be used in the user-visible places such as
*/
void SetClassName(const wxString& name);
- /**
- 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);
-
/**
Set the vendor name to be used in the user-visible places.
See GetVendorDisplayName() for more about the differences between the
*/
void SetVendorName(const wxString& name);
- /**
- Yields control to pending messages in the windowing system.
+ //@}
- This can be useful, for example, when a time-consuming process writes to a
- text window. Without an occasional yield, the text window will not be updated
- properly, and on systems with cooperative multitasking, such as Windows 3.1
- other processes will not respond.
-
- Caution should be exercised, however, since yielding may allow the
- user to perform actions which are not compatible with the current task.
- Disabling menu items or whole menus during processing can avoid unwanted
- reentrance of code: see ::wxSafeYield for a better function.
-
- Note that Yield() will not flush the message logs. This is intentional as
- calling Yield() is usually done to quickly update the screen and popping up
- a message box dialog may be undesirable. If you do wish to flush the log
- messages immediately (otherwise it will be done during the next idle loop
- iteration), call wxLog::FlushActive.
-
- Calling Yield() recursively is normally an error and an assert failure is
- raised in debug build if such situation is detected. However if the
- @a onlyIfNeeded parameter is @true, the method will just silently
- return @false instead.
- */
- virtual bool Yield(bool onlyIfNeeded = false);
/**
Number of command line arguments (after environment-specific processing).
video modes (see SetVideoMode()).
In general, application-wide settings for GUI-only apps are accessible
- from wxApp (or from wxSystemSettings).
+ 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, wxEventLoop, wxSystemSettings
+ @see @ref overview_app, wxAppTraits, wxEventLoopBase, wxSystemSettings
*/
class wxApp : public wxAppConsole
{
/**
Get display mode that is used use. This is only used in framebuffer
- wxWin ports (such as wxMGL or wxDFB).
+ wxWidgets ports (such as wxMGL or wxDFB).
*/
virtual wxVideoMode GetDisplayMode() const;
*/
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.
virtual bool SendIdleEvents(wxWindow* win, wxIdleEvent& event);
/**
- Set display mode to use. This is only used in framebuffer wxWin
- ports (such as wxMGL or wxDFB). This method should be called from
- wxApp::OnInitGui.
+ Set display mode to use. This is only used in framebuffer wxWidgets
+ ports (such as wxMGL or wxDFB).
*/
virtual bool SetDisplayMode(const wxVideoMode& info);
*/
void SetExitOnFrameDelete(bool flag);
- /**
- 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);
-
/**
Allows runtime switching of the UI environment theme.
// ============================================================================
-/** @ingroup group_funcmacro_rtti */
+/** @addtogroup group_funcmacro_rtti */
//@{
/**
-/** @ingroup group_funcmacro_appinitterm */
+/** @addtogroup group_funcmacro_appinitterm */
//@{
/**
void wxWakeUpIdle();
/**
- Calls wxApp::Yield.
+ Calls wxAppConsole::Yield.
@deprecated
This function is kept only for backwards compatibility. Please use
- the wxApp::Yield method instead in any new code.
+ the wxAppConsole::Yield method instead in any new code.
@header{wx/app.h}
*/
bool wxYield();
/**
- This function is similar to wxYield(), except that it disables the user
- input to all program windows before calling wxYield() 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 ::wxYield.
+ Calls wxApp::SafeYield.
@header{wx/app.h}
*/
-/** @ingroup group_funcmacro_procctrl */
+/** @addtogroup group_funcmacro_procctrl */
//@{
/**