]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/app.h
layout improvement on mac
[wxWidgets.git] / include / wx / app.h
index 8f631cccf22053799f447eb62dffa780696daf90..489194ab3bd1f0d9708dce2519a27574f6e1c444 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        app.h
+// Name:        wx/app.h
 // Purpose:     wxAppBase class and macros used for declaration of wxApp
 //              derived class in the user code
 // Author:      Julian Smart
@@ -47,6 +47,12 @@ class WXDLLEXPORT wxCmdLineParser;
     #include "wx/log.h"
 #endif
 
+#if WXWIN_COMPATIBILITY_2_2
+    #include "wx/icon.h"
+#endif
+
+#include "wx/build.h"
+
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
@@ -61,21 +67,21 @@ static const int wxPRINT_POSTSCRIPT = 2;
 #if wxUSE_GUI
 // VS: Fullscreen/framebuffer application needs to choose display mode prior
 //     to wxWindows initialization. This class holds information about display
-//     mode. An instance of it is returned by virtual wxApp::GetDisplayMode.
+//     mode. It is used by  wxApp::Set/GetDisplayMode.
 class WXDLLEXPORT wxDisplayModeInfo
 {
 public:
     wxDisplayModeInfo() : m_ok(FALSE) {}
-    wxDisplayModeInfo(const wxSize& size, unsigned depth) 
-        : m_size(size), m_depth(depth), m_ok(TRUE) {}
+    wxDisplayModeInfo(unsigned width, unsigned height, unsigned depth) 
+        : m_width(width), m_height(height), m_depth(depth), m_ok(TRUE) {}
     
-    const wxSize& GetScreenSize() const { return m_size; }
+    unsigned GetWidth() const { return m_width; }
+    unsigned GetHeight() const { return m_height; }
     unsigned GetDepth() const { return m_depth; }
     bool IsOk() const { return m_ok; }
 
 private:
-    wxSize   m_size;
-    unsigned m_depth;
+    unsigned m_width, m_height, m_depth;
     bool     m_ok;
 };
 #endif
@@ -86,8 +92,11 @@ private:
 
 class WXDLLEXPORT wxAppBase : public wxEvtHandler
 {
+    DECLARE_NO_COPY_CLASS(wxAppBase)
+        
 public:
     wxAppBase();
+    virtual ~wxAppBase();
 
     // the virtual functions which may/must be overridden in the derived class
     // -----------------------------------------------------------------------
@@ -274,19 +283,20 @@ public:
 #endif // wxUSE_LOG
 
 #if wxUSE_GUI
+
+  #if WXWIN_COMPATIBILITY_2_2
         // get the standard icon used by wxWin dialogs - this allows the user
         // to customize the standard dialogs. The 'which' parameter is one of
         // wxICON_XXX values
-    virtual wxIcon GetStdIcon(int which) const = 0;
+    virtual wxIcon GetStdIcon(int WXUNUSED(which)) const { return wxNullIcon; }
+  #endif
 
-        // get display mode to use. This is only used in framebuffer wxWin ports
-        // (such as wxMGL). This method is called early in wxWin initialization
-        // process and is supposed to be overriden in derived classes.
+        // Get display mode that is used use. This is only used in framebuffer wxWin ports
+        // (such as wxMGL).
     virtual wxDisplayModeInfo GetDisplayMode() const { return wxDisplayModeInfo(); }
-
-        // VZ: what does this do exactly?
-    void SetWantDebugOutput( bool flag ) { m_wantDebugOutput = flag; }
-    bool GetWantDebugOutput() const { return m_wantDebugOutput; }
+        // Set display mode to use. This is only used in framebuffer wxWin ports
+        // (such as wxMGL). This method should be called from wxApp:OnInitGui
+    virtual bool SetDisplayMode(const wxDisplayModeInfo& WXUNUSED(info)) { return TRUE; }
 
         // set use of best visual flag (see below)
     void SetUseBestVisual( bool flag ) { m_useBestVisual = flag; }
@@ -315,6 +325,23 @@ public:
     virtual void OnAssert(const wxChar *file, int line, const wxChar *msg);
 #endif // __WXDEBUG__
 
+    // check that the wxBuildOptions object (constructed in the application
+    // itself, usually the one from IMPLEMENT_APP() macro) matches the build
+    // options of the library and abort if it doesn't
+    static bool CheckBuildOptions(const wxBuildOptions& buildOptions);
+
+    // deprecated functions, please updae your code to not use them!
+    // -------------------------------------------------------------
+
+#if WXWIN_COMPATIBILITY_2_2
+    // used by obsolete wxDebugMsg only
+    void SetWantDebugOutput( bool flag ) { m_wantDebugOutput = flag; }
+    bool GetWantDebugOutput() const { return m_wantDebugOutput; }
+
+    // TRUE if the application wants to get debug output
+    bool m_wantDebugOutput;
+#endif // WXWIN_COMPATIBILITY_2_2
+
     // implementation only from now on
     // -------------------------------
 
@@ -324,11 +351,6 @@ public:
     static wxAppInitializerFunction GetInitializerFunction()
         { return m_appInitFn; }
 
-    // needed to avoid link errors
-#ifdef __DARWIN__
-    virtual ~wxAppBase() { }
-#endif
-
     // process all events in the wxPendingEvents list
     virtual void ProcessPendingEvents();
 
@@ -345,9 +367,6 @@ protected:
              m_appName,         // app name
              m_className;       // class name
 
-    // 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;
@@ -377,6 +396,8 @@ protected:
         #include "wx/mgl/app.h"
     #elif defined(__WXGTK__)
         #include "wx/gtk/app.h"
+    #elif defined(__WXX11__)
+        #include "wx/x11/app.h"
     #elif defined(__WXMAC__)
         #include "wx/mac/app.h"
     #elif defined(__WXPM__)
@@ -527,9 +548,19 @@ public:
     #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; }         \
     wxAppInitializer wxTheAppInitializer((wxAppInitializerFunction) wxCreateApp); \
     appname& wxGetApp() { return *(appname *)wxTheApp; }