]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
IS_KIND_OF -> wxIS_KIND_OF compilation fix
[wxWidgets.git] / include / wx / defs.h
index 20ef4490298b15d05b0d3b010aa710b70f0a53b4..cc731991c3bee92a08ab654dd06d0c913ece28d0 100644 (file)
@@ -9,18 +9,19 @@
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __DEFSH__
-#define __DEFSH__
+#ifndef _WX_DEFS_H_
+#define _WX_DEFS_H_
 
 #ifdef __GNUG__
 #pragma interface "defs.h"
 #endif
 
-#ifdef __GTK__
+#ifdef __WXGTK__
 
 #include "glib.h"
 #include "gdk/gdk.h"
 #include "gtk/gtk.h"
+#include "wx/gtk/win_gtk.h"
 
 #endif
 
 #include "wx/version.h"
 
 // Helps SGI compilation, apparently
-#if defined(__SGI__) && defined(__GNUG__)
+#if defined(__SGI__)
+#if defined(__GNUG__)
 #define __need_wchar_t
+#else
+/* Note I use the term __SGI_CC__ for both cc and CC, its not a good idea to
+ * mix gcc and cc/CC, the name mangling is different */
+#define __SGI_CC__
+#endif
 #endif
 
-// Eliminate double/float warnings
-#ifdef _MSC_VER
-# pragma warning(disable:4244)
+#if defined(sun) || defined(__SUN__)
+# if !defined(__GNUG__)
+#  ifndef __SUNCC__
+#   define __SUNCC__
+#  endif
+# endif
 #endif
 
+// suppress some Visual C++ warnings
+#ifdef _MSC_VER
+#   pragma warning(disable:4244)    // cobversion from double to float
+#   pragma warning(disable:4100)    // unreferenced formal parameter
+#endif
 
 //////////////////////////////////////////////////////////////////////////////////
 // Currently Only MS-Windows/NT, XView and Motif are supported
 //
-#if defined(__HPUX__) && !defined(__MOTIF__)
-# define __MOTIF__
+#if defined(__HPUX__) && !defined(__WXMOTIF__)
+# define __WXMOTIF__
 #endif
-#if defined(__MOTIF__)
+#if defined(__WXMOTIF__)
 # define __X__
-#elif defined(__WINDOWS__) || defined(__WINDOWS_386__) || defined(__NT__) || defined(__MSDOS__) 
-# ifndef __WINDOWS__
-#  define __WINDOWS__
-# endif
 #endif
 
+#ifdef __WXMSW__
 // wxWindows checks for WIN32, not __WIN32__
-#if ((defined(WIN32) || defined(__NT__)) && !defined(__WIN32__))
+#if ((defined(WIN32) || defined(__NT__)) && !defined(__WIN32__) && !defined(__WXSTUBS__))
 #define __WIN32__
 #endif
 
 #define __WIN95__
 #endif
 
+#endif // wxMSW
+
 // Make sure the environment is set correctly
-#if defined(__WINDOWS__) && defined(__X__)
+#if defined(__WXMSW__) && defined(__X__)
 # error "Target can't be both X and Windows"
-#elif !defined(__MOTIF__) && !defined(__WINDOWS__) && !defined(__GTK__) && !defined(__MAC__) && !defined(__X__)
-#error "No Target! Use -D[__MOTIF__|__GTK__|__WINDOWS__|__MAC__]"
+#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \
+      !defined(__WXMAC__) && !defined(__X__) && !defined(__WXQT__) && !defined(__WXSTUBS__)
+#error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXSTUBS__]"
 #endif
 
-#if defined(__MOTIF__) || defined(__GTK__)
+#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || defined(__WXSTUBS__)
 
 // Bool is now obsolete, use bool instead
 // typedef int Bool;
 # define Bool_DEFINED
 #endif
 
-#elif defined(__WINDOWS__)
+#elif defined(__WXMSW__)
 
 #ifndef TRUE
 # define TRUE  1
 // VC++ 4.0 is 1000.
 
 // Add more tests here for compilers that don't already define bool.
-#if ( defined(_MSC_VER) && (_MSC_VER <= 1000) ) || (defined(__BORLANDC__) && (__BORLANDC__ < 0x500))
-typedef unsigned int bool;
+#if defined( __MWERKS__ )
+    #if (__MWERKS__ < 0x1000) || !__option(bool)
+        typedef unsigned int bool;
+    #endif
+#elif defined(_MSC_VER) && (_MSC_VER <= 1000)
+    typedef unsigned int bool;
+#elif defined(_MSC_VER) && (_MSC_VER == 1020)
+    #define bool unsigned int
+#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
+    typedef unsigned int bool;
+#elif defined(__SUNCC__)
+    // If we use int, we get identically overloaded functions in config.cpp
+    typedef unsigned char bool;
 #endif
 
 #if ( defined(_MSC_VER) && (_MSC_VER <= 800) ) || defined(__GNUWIN32__)
-#define byte unsigned char
+    #define byte unsigned char
 #endif
 
 typedef short int WXTYPE;
@@ -119,7 +145,7 @@ typedef int wxWindowID;
  * Making or using wxWindows as a Windows DLL
  */
 
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
 
 #ifdef __BORLANDC__
 
@@ -142,7 +168,7 @@ typedef int wxWindowID;
 #  ifdef WXMAKINGDLL
 #    define WXDLLEXPORT __declspec( dllexport )
 #    define WXDLLEXPORT_DATA(type) __declspec( dllexport ) type
-#    define WXDLLEXPORT_CTORFN __declspec( dllexport )
+#    define WXDLLEXPORT_CTORFN // __declspec( dllexport )
 #  elif defined(WXUSINGDLL)
 #    define WXDLLEXPORT __declspec( dllimport )
 #    define WXDLLEXPORT_DATA(type) __declspec( dllimport ) type
@@ -172,22 +198,9 @@ typedef int wxWindowID;
 class WXDLLEXPORT wxObject;
 class WXDLLEXPORT wxEvent;
 
-// Vadim's types - check whether we need them all
-
-/// the type for various indexes (string, arrays, ...)
-typedef unsigned int    uint;
-
-/// extended boolean type: { yes, no, may be }
-typedef signed   int    EBool;
-
-/// with TRUE and FALSE is a possible value for a "3-state" boolean var
-#define UNKNOWN         (-1)
-  /** symbolic constant used by all Find()-like functions returning positive
+ /** symbolic constant used by all Find()-like functions returning positive
       integer on success as failure indicator */
 #define NOT_FOUND       (-1)
-  /** useful for Windows programmers: makes somewhat more clear all these 
-      zeroes being passed to Windows APIs */
-#define RESERVED        (NULL)
 
 // ----------------------------------------------------------------------------
 // Error codes
@@ -210,30 +223,52 @@ enum  ErrCode
 /** @name Very common macros */
 // ----------------------------------------------------------------------------
 //@{
-/// delete pointer if it is not NULL
-#define DELETEP(p)      if ( (p) != NULL ) delete (p)
-/// delete array pointer if it is not NULL
-#define DELETEA(p)      if ( (p) != NULL ) delete [] (p)
+/// delete pointer if it is not NULL and NULL it afterwards
+// (checking that it's !NULL before passing it to delete is just a
+//  a question of style, because delete will do it itself anyhow, but it might
+//  be considered as an error by some overzealous debugging implementations of
+//  the library, so we do it ourselves)
+#if defined(__SGI_CC__)
+// Okay this is bad styling, but the native SGI compiler is very picky, it
+// wont let you compare/assign between a NULL (void *) and another pointer
+// type. To be really clean we'd need to pass in another argument, the type
+// of p.
+// Also note the use of 0L, this would allow future possible 64bit support
+// (as yet untested) by ensuring that we zero all the bits in a pointer
+// (which is always the same length as a long (at least with the LP64 standard)
+// --- offer aug 98
+#define wxDELETE(p)      if ( (p) ) { delete (p); p = 0L; }
+#else
+#define wxDELETE(p)      if ( (p) != NULL ) { delete p; p = NULL; }
+#endif /* __SGI__CC__ */
+
+// delete an array and NULL it (see comments above)
+#if defined(__SGI_CC__)
+// see above comment.
+#define wxDELETEA(p)      if ( (p) ) { delete [] (p); p = 0L; }
+#else
+#define wxDELETEA(p)      if ( ((void *) (p)) != NULL ) { delete [] p; p = NULL; }
+#endif /* __SGI__CC__ */
 
 /// size of statically declared array
 #define WXSIZEOF(array)   (sizeof(array)/sizeof(array[0]))
 
+// Use of these suppresses some compiler warnings
+WXDLLEXPORT_DATA(extern const bool) wxTrue;
+WXDLLEXPORT_DATA(extern const bool) wxFalse;
+
 // ----------------------------------------------------------------------------
 // compiler and OS identification
 // ----------------------------------------------------------------------------
 
 // OS
-#if     defined(__HPUX__) || defined(____SVR4____) || defined(__LINUX__)
+#if     defined(__HPUX__) || defined(____SVR4____) || defined(__LINUX__) || defined(__sgi ) || defined(__unix__)
   #ifndef __UNIX__
     #define __UNIX__
   #endif
 #endif
 
 #ifndef __UNIX__                     // Windows
-  #ifndef __WINDOWS__
-    #define __WINDOWS__
-  #endif
-
   #if   defined(_MSC_VER)
     #define __VISUALC__
   #elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__)
@@ -246,14 +281,6 @@ enum  ErrCode
 
 #endif  // OS
 
-#if     defined(__UNIX__)
-  #define FILE_PATH_SEPARATOR   ('/')
-#elif   defined(__WINDOWS__)
-  #define FILE_PATH_SEPARATOR   ('\\')
-#else
-  #error "don't know path separator for this platform"
-#endif
-
 // ----------------------------------------------------------------------------
 // compiler specific settings
 // ----------------------------------------------------------------------------
@@ -262,7 +289,7 @@ enum  ErrCode
 // warnings just must be disabled
 #ifdef  __VISUALC__
   #pragma warning(disable: 4514) // unreferenced inline func has been removed
-/* 
+/*
   you might be tempted to disable this one also: triggered by CHECK and FAIL
   macros in debug.h, but it's, overall, is a rather useful one, so I leave it
   and will try to find some way to disable this warning just for CHECK/FAIL.
@@ -272,6 +299,19 @@ enum  ErrCode
 
 #endif  // VC++
 
+#if _MSC_VER > 1010
+#undef try
+#undef except
+#undef finally
+#define except(x) catch(...)
+#endif
+
+// where should i put this? we need to make sure of this as it breaks
+// the <iostream> code.
+#if !wxUSE_IOSTREAMH && defined(__WXDEBUG__)
+#undef __WXDEBUG__
+#endif
+
 // Callback function type definition
 typedef void (*wxFunction) (wxObject&, wxEvent&);
 
@@ -286,7 +326,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
  * Window (cross-group) styles now take up the first half
  * of the flag, and control-specific styles the
  * second half.
- * 
+ *
  */
 
 /*
@@ -309,11 +349,14 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxUSER_COLOURS      0x00800000
                                  // Override CTL3D etc. control colour processing to
                                  // allow own background colour
-                                 // OBSOLETE - use wxNO_CTL3D instead
+                                 // OBSOLETE - use wxNO_3D instead
 #define wxNO_3D             0x00800000
                                  // Override CTL3D or native 3D styles for children
-#define wxOVERRIDE_KEY_TRANSLATIONS 0x00400000
-                                 // TODO: do we need this??? (Motif only)
+#define wxCLIP_CHILDREN     0x00400000
+                                 // Clip children when painting, which reduces flicker in
+                                 // e.g. frames and splitter windows, but can't be used in
+                                 // a panel where a static box must be 'transparent' (panel
+                                 // paints the background for it)
 
 // Add this style to a panel to get tab traversal working
 // outside of dialogs.
@@ -343,7 +386,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxDIALOG_MODAL      0x0020
 #define wxDIALOG_MODELESS   0x0000
 
-#define wxDEFAULT_FRAME_STYLE    (wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION)
+#define wxDEFAULT_FRAME_STYLE    (wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN)
 
 #if WXWIN_COMPATIBILITY
 #define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE
@@ -362,13 +405,17 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 /*
  * wxToolBar style flags
  */
+
 #define wxTB_3DBUTTONS      0x8000
+#define wxTB_HORIZONTAL     0x0002
+#define wxTB_VERTICAL       0x0004
+// Flatbar/Coolbar under Win98
+#define wxTB_FLAT           0x0008
 
 /*
  * Apply to all panel items
  */
+
 #define wxCOLOURED          0x0800
 // Alignment for panel item labels: replaces characters with zeros
 // when creating label, so spaces can be included in string for alignment.
@@ -382,21 +429,14 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
  * Styles for wxListBox
  */
 
-// In wxListBox style flag
-#define wxSB_MASK           0x0008
-#define wxNEEDED_SB         0x0000
-#define wxALWAYS_SB         0x0008
-
-// New naming convention
-#define wxLB_NEEDED_SB      wxNEEDED_SB
-#define wxLB_ALWAYS_SB      wxALWAYS_SB
 #define wxLB_SORT           0x0010
-// These duplicate the styles in the Multiple argument
-#define wxLB_SINGLE         0x0000
+#define wxLB_SINGLE         0x0020
 #define wxLB_MULTIPLE       0x0040
 #define wxLB_EXTENDED       0x0080
 // wxLB_OWNERDRAW is Windows-only
 #define wxLB_OWNERDRAW      0x0100
+#define wxLB_NEEDED_SB      0x0200
+#define wxLB_ALWAYS_SB      0x0400
 #define wxLB_HSCROLL        wxHSCROLL
 
 /*
@@ -409,19 +449,16 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxTE_READONLY       0x0010
 #define wxTE_MULTILINE      0x0020
 
-// TODO For backward compatibility, need wxOLD_READONLY
-#define wxREADONLY          wxTE_READONLY
-#define wxEDITABLE          0
-
-// #define wxTE_RICHTEXT       0x0020
+// MSW-only
+#define wxTE_RICHTEXT       0x0020
 
 /*
  * wxComboBox style flags
  */
 #define wxCB_SIMPLE         0x0004
-#define wxCB_DROPDOWN       0x0000
 #define wxCB_SORT           0x0008
-#define wxCB_READONLY       wxREADONLY
+#define wxCB_READONLY       0x0010
+#define wxCB_DROPDOWN       0x0020
 
 /*
  * wxRadioBox/wxRadioButton style flags
@@ -440,7 +477,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 /*
  * wxSlider flags
  */
+
 #define wxSL_HORIZONTAL      wxHORIZONTAL
 #define wxSL_VERTICAL        wxVERTICAL
 // The next one is obsolete - use scroll events instead
@@ -458,7 +495,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 /*
  * wxScrollBar flags
  */
+
 #define wxSB_HORIZONTAL      wxHORIZONTAL
 #define wxSB_VERTICAL        wxVERTICAL
 
@@ -475,6 +512,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 
 #define wxTR_HAS_BUTTONS     0x0004
 #define wxTR_EDIT_LABELS     0x0008
+#define wxTR_LINES_AT_ROOT   0x0010
 
 /*
  * wxListCtrl flags
@@ -531,11 +569,17 @@ typedef void (*wxFunction) (wxObject&, wxEvent&);
 #define wxTAB_FIXEDWIDTH    0x0008
 #define wxTAB_OWNERDRAW     0x0010
 
+// Sorry, I changed my mind about these names...
+#define wxTC_MULTILINE     0x0000
+#define wxTC_RIGHTJUSTIFY  0x0004
+#define wxTC_FIXEDWIDTH    0x0008
+#define wxTC_OWNERDRAW     0x0010
+
 /*
  * wxStatusBar95 flags
  */
 
-#define wxSB_SIZEGRIP       0x0002
+#define wxST_SIZEGRIP       0x0002
 
 /*
  * GDI descriptions
@@ -653,27 +697,36 @@ typedef enum {
 // Possible SetSize flags
 
 // Use internally-calculated width if -1
-#define wxSIZE_AUTO_WIDTH       1
+#define wxSIZE_AUTO_WIDTH       0x0001
 // Use internally-calculated height if -1
-#define wxSIZE_AUTO_HEIGHT      2
+#define wxSIZE_AUTO_HEIGHT      0x0002
 // Use internally-calculated width and height if each is -1
-#define wxSIZE_AUTO             3
+#define wxSIZE_AUTO             (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT)
 // Ignore missing (-1) dimensions (use existing).
 // For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code.
-#define wxSIZE_USE_EXISTING     0
+#define wxSIZE_USE_EXISTING     0x0000
 // Allow -1 as a valid position
-#define wxSIZE_ALLOW_MINUS_ONE  4
+#define wxSIZE_ALLOW_MINUS_ONE  0x0004
+// Don't do parent client adjustments (for implementation only)
+#define wxSIZE_NO_ADJUSTMENTS   0x0008
 
-// Clipboard formats
-// Numbers as per winuser.h
-# define wxCF_TEXT               1 /* CF_TEXT */
-# define wxCF_BITMAP             2 /* CF_BITMAP */
-# define wxCF_METAFILE           3 /* CF_METAFILEPICT */
-# define wxCF_DIB                8 /* CF_DIB */
-# define wxCF_OEMTEXT            7 /* CF_OEMTEXT */
+
+// Data format for drag & drop and clipboard operations
+// numbers as per winuser.h
+
+enum wxDataFormat
+{
+  wxDF_TEXT =             1,  /* CF_TEXT */
+  wxDF_BITMAP =           2,  /* CF_BITMAP */
+  wxDF_METAFILE =         3,  /* CF_METAFILEPICT */
+  wxDF_DIB =              8,  /* CF_DIB */
+  wxDF_OEMTEXT =          7,  /* CF_OEMTEXT */
+  wxDF_FILENAME =         15  /* CF_HDROP */
+};
 
 // Virtual keycodes
-enum _Virtual_keycodes {
+
+enum wxKeyCode {
  WXK_BACK    =   8,
  WXK_TAB     =   9,
  WXK_RETURN  = 13,
@@ -757,20 +810,23 @@ enum _Virtual_keycodes {
 // OS mnemonics -- Identify the running OS (useful for Windows)
 // [Not all platforms are currently available or supported]
 enum {
-  wxCURSES,
+  wxUNKNOWN_PLATFORM,
+  wxCURSES,     // Text-only CURSES
   wxXVIEW_X,   // Sun's XView OpenLOOK toolkit
   wxMOTIF_X,   // OSF Motif 1.x.x
-  wxCOSE_X,    // OSF Common Desktop Environment
+  wxCOSE_X,        // OSF Common Desktop Environment
   wxNEXTSTEP,  // NeXTStep
   wxMACINTOSH, // Apple System 7
-  wxGEOS,      // GEOS
-  wxOS2_PM,    // OS/2 Workplace
+  wxGTK,           // GTK
+  wxQT,                // Qt
+  wxGEOS,          // GEOS
+  wxOS2_PM,        // OS/2 Workplace
   wxWINDOWS,   // Windows or WfW
   wxPENWINDOWS,        // Windows for Pen Computing
   wxWINDOWS_NT,        // Windows NT
-  wxWIN32S,    // Windows 32S API
-  wxWIN95,     // Windows 95
-  wxWIN386     // Watcom 32-bit supervisor modus
+  wxWIN32S,        // Windows 32S API
+  wxWIN95,         // Windows 95
+  wxWIN386         // Watcom 32-bit supervisor modus
 };
 
 // Printing
@@ -804,6 +860,8 @@ enum {
 #define wxID_PASTE              5032
 #define wxID_CLEAR              5033
 #define wxID_FIND               5034
+#define wxID_DUPLICATE          5035
+#define wxID_SELECTALL          5036
 
 #define wxID_FILE1              5050
 #define wxID_FILE2              5051
@@ -820,8 +878,14 @@ enum {
 #define wxID_APPLY              5102
 #define wxID_YES                5103
 #define wxID_NO                 5104
+#define wxID_STATIC             5105
+
+#define wxID_HIGHEST            5999
 
-#ifdef __WINDOWS__
+// Shortcut for easier dialog-unit-to-pixel conversion
+#define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt)
+
+#ifdef __WXMSW__
 // Stand-ins for Windows types, to avoid
 // #including all of windows.h
 
@@ -835,6 +899,7 @@ typedef unsigned long   WXHBRUSH;
 typedef unsigned long   WXHPALETTE;
 typedef unsigned long   WXHCURSOR;
 typedef unsigned long   WXHRGN;
+typedef unsigned long   WXHACCEL;
 typedef unsigned long   WXHINSTANCE;
 typedef unsigned long   WXHBITMAP;
 typedef unsigned long   WXHIMAGELIST;
@@ -846,16 +911,40 @@ typedef unsigned short  WXWORD;
 typedef unsigned int    WXWPARAM;
 typedef long            WXLPARAM;
 typedef unsigned long   WXCOLORREF;
-typedef void *          WXRGN;
 typedef void *          WXRGNDATA;
 typedef void *          WXMSG;
 typedef unsigned long   WXHCONV;
+typedef unsigned long   WXHKEY;
+typedef unsigned long   WXHTREEITEM;
 typedef void *          WXDRAWITEMSTRUCT;
 typedef void *          WXMEASUREITEMSTRUCT;
 typedef void *          WXLPCREATESTRUCT;
+#ifdef __GNUWIN32__
 typedef int (*WXFARPROC)();
+#else
+typedef int (__stdcall *WXFARPROC)();
+#endif
+
+#endif
 
+#ifdef __WXMOTIF__
+// Stand-ins for X/Xt/Motif types
+typedef void*           WXWindow;
+typedef void*           WXWidget;
+typedef void*           WXAppContext;
+typedef void*           WXColormap;
+typedef void            WXDisplay;
+typedef void            WXEvent;
+typedef void*           WXCursor;
+typedef void*           WXPixmap;
+typedef void*           WXFontStructPtr;
+typedef void*           WXGC;
+typedef void*           WXRegion;
+typedef void*           WXFont;
+typedef void*           WXImage;
+typedef void*           WXCursor;
+typedef void*           WXFontList;
 #endif
 
 #endif
-    // __WXDEFSH__
+    // _WX_DEFS_H_