X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6d56eb5c56fb1f5707727e86a615e270d4dddbfe..b1f5d087c78df77408b3b2774695b1e0d148e6fb:/include/wx/app.h diff --git a/include/wx/app.h b/include/wx/app.h index c25f74ae29..8f0b44bbed 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -21,7 +21,7 @@ // typedefs // ---------------------------------------------------------------------------- -#if defined(__WXMSW__) || defined (__WXPM__) +#if (defined(__WXMSW__) && !defined(__WXMICROWIN__)) || defined (__WXPM__) class WXDLLEXPORT wxApp; typedef wxApp* (*wxAppInitializerFunction)(); #else @@ -59,6 +59,8 @@ static const int wxPRINT_POSTSCRIPT = 2; class WXDLLEXPORT wxAppBase : public wxEvtHandler { public: + wxAppBase(); + // the virtual functions which may/must be overridden in the derived class // ----------------------------------------------------------------------- #ifdef __WXMAC_X__ @@ -80,7 +82,7 @@ public: // depend on the toolkit. default version does nothing. // // Override: rarely. - virtual bool OnInitGui() { return TRUE; } + virtual bool OnInitGui(); #endif // wxUSE_GUI // called to start program execution - the default version just enters @@ -165,6 +167,9 @@ public: // top level window functions // -------------------------- + // return TRUE if our app has focus + virtual bool IsActive() const { return m_isActive; } + // set the "main" top level window void SetTopWindow(wxWindow *win) { m_topWindow = win; } @@ -200,11 +205,11 @@ public: // object) - this log object is used by default by all wxLogXXX() // functions. virtual wxLog *CreateLogTarget() -#if wxUSE_GUI - { return new wxLogGui; } -#else // !GUI - { return new wxLogStderr; } -#endif // wxUSE_GUI + #if wxUSE_GUI && wxUSE_LOGGUI + { return new wxLogGui; } + #else // !GUI + { return new wxLogStderr; } + #endif // wxUSE_GUI #endif // wxUSE_LOG #if wxUSE_GUI @@ -227,6 +232,11 @@ public: // printing. virtual void SetPrintMode(int WXUNUSED(mode)) { } int GetPrintMode() const { return wxPRINT_POSTSCRIPT; } + + // called by toolkit-specific code to set the app status: active (we have + // focus) or not and also the last window which had focus before we were + // deactivated + virtual void SetActive(bool isActive, wxWindow *lastFocus); #endif // wxUSE_GUI // implementation only from now on @@ -245,7 +255,6 @@ public: int argc; wxChar **argv; -//private: protected: // function used for dynamic wxApp creation static wxAppInitializerFunction m_appInitFn; @@ -255,19 +264,22 @@ protected: m_appName, // app name m_className; // class name - // if TRUE, exit the main loop when the last top level window is deleted - bool m_exitOnFrameDelete; - // TRUE if the application wants to get debug output bool m_wantDebugOutput; +#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; + // TRUE if the apps whats to use the best visual on systems where // more than one are available (Sun, SGI, XFree86 4.0 ?) bool m_useBestVisual; -#if wxUSE_GUI - // the main top level window - may be NULL - wxWindow *m_topWindow; + // does any of our windows has focus? + bool m_isActive; #endif // wxUSE_GUI }; @@ -280,6 +292,8 @@ protected: #include "wx/msw/app.h" #elif defined(__WXMOTIF__) #include "wx/motif/app.h" + #elif defined(__WXMGL__) + #include "wx/mgl/app.h" #elif defined(__WXQT__) #include "wx/qt/app.h" #elif defined(__WXGTK__) @@ -351,6 +365,27 @@ extern bool WXDLLEXPORT wxInitialize(); // wxUninitialize() extern void WXDLLEXPORT wxUninitialize(); +// create an object of this class on stack to initialize/cleanup thel ibrary +// automatically +class WXDLLEXPORT wxInitializer +{ +public: + // initialize the library + wxInitializer() { m_ok = wxInitialize(); } + + // has the initialization been successful? (explicit test) + bool IsOk() const { return m_ok; } + + // has the initialization been successful? (implicit test) + operator bool() const { return m_ok; } + + // dtor only does clean up if we initialized the library properly + ~wxInitializer() { if ( m_ok ) wxUninitialize(); } + +private: + bool m_ok; +}; + #endif // !wxUSE_GUI // ----------------------------------------------------------------------------