X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd3277fec0001448a6fad172c5abe0ec4cb86376..33e294191341e3ac4ba257a1292991f5519a564e:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index a5e111e13c..352820024a 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -22,8 +22,8 @@ // OS: first test for generic Unix defines, then for particular flavours and // finally for Unix-like systems -#if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \ - defined(__LINUX__) || defined(__sgi) || \ +#if defined(__UNIX__) || defined(__unix) || defined(__unix__) || \ + defined(____SVR4____) || defined(__LINUX__) || defined(__sgi) || \ defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \ defined(__EMX__) || defined(__VMS) || defined(__BEOS__) @@ -48,8 +48,37 @@ #endif #endif // Sun -#elif defined(applec) || defined(THINK_C) || ( defined( __MWERKS__ ) && !defined(__INTEL__) ) + #ifdef __EMX__ + #define OS2EMX_PLAIN_CHAR + #endif + + #if defined(__APPLE__) + // MacOS X + #ifndef __WXMAC__ + #define __WXMAC__ + #endif + #ifndef __WXMAC_X__ + #define __WXMAC_X__ + #endif + + #define PM_USE_SESSION_APIS 0 + #include + #endif +#elif defined(applec) || defined(THINK_C) || (defined(__MWERKS__) && !defined(__INTEL__)) // MacOS +#elif defined(__WXMAC__) && defined(__APPLE__) + // MacOS X + #define __UNIX_LIKE__ + + #ifndef __WXMAC__ + #define __WXMAC__ + #endif + #ifndef __WXMAC_X__ + #define __WXMAC_X__ + #endif + + #define PM_USE_SESSION_APIS 0 + #include #elif defined(__OS2__) #if defined(__IBMCPP__) #define __VISAGEAVER__ __IBMCPP__ @@ -96,8 +125,9 @@ # pragma warning(disable:4100) // unreferenced formal parameter # pragma warning(disable:4511) // copy ctor couldn't be generated # pragma warning(disable:4512) // operator=() couldn't be generated -# pragma warning(disable:4699) // Using precompiled header +# pragma warning(disable:4699) // using precompiled header # pragma warning(disable:4134) // conversion between pointers to members of same class +# pragma warning(disable:4710) // function not inlined #ifndef WIN32 # pragma warning(disable:4135) // conversion between different integral types # pragma warning(disable:4769) // assignment of near pointer to long integer @@ -135,10 +165,9 @@ #define va_list __gnuc_va_list #endif // HP-UX -// Mingw32 gcc-2.95 uses new windows headers which are more ms-like -// we are setting this define because of the complex check -// using NORLANDER as Cygwin may follow. (header author is Anders Norlander) -#if defined(__MINGW32__) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95))) +// Cygwin / Mingw32 with gcc >= 2.95 use new windows headers which +// are more ms-like (header author is Anders Norlander, hence the name) +#if (defined(__MINGW32__) || defined(__CYGWIN__)) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95))) #ifndef wxUSE_NORLANDER_HEADERS #define wxUSE_NORLANDER_HEADERS 1 #endif @@ -148,9 +177,9 @@ #endif #endif -// "old" GNUWIN32 is the one without Norlander's headers: it lacks the standard -// Win32 headers and we define the used stuff ourselves for it in -// wx/msw/gnuwin32/extra.h +// "old" GNUWIN32 is the one without Norlander's headers: it lacks the +// standard Win32 headers and we define the used stuff ourselves for it +// in wx/msw/gnuwin32/extra.h #if defined(__GNUC__) && !wxUSE_NORLANDER_HEADERS #define __GNUWIN32_OLD__ #endif @@ -220,8 +249,13 @@ #include "wx/setup.h" // just in case they were defined in setup.h +#ifdef PACKAGE #undef PACKAGE +#endif + +#ifdef VERSION #undef VERSION +#endif // this has to be done after including setup.h which might // define __HPUX__ 1 itself @@ -380,25 +414,8 @@ typedef int wxWindowID; #if defined(__WXMSW__) -// _declspec works in BC++ 5 and later, as well as VC++ -#if defined(__VISUALC__) || defined(__BORLANDC__) - -# ifdef WXMAKINGDLL -# define WXDLLEXPORT _declspec( dllexport ) -# define WXDLLEXPORT_DATA(type) _declspec( dllexport ) type -# define WXDLLEXPORT_CTORFN -# elif defined(WXUSINGDLL) -# define WXDLLEXPORT _declspec( dllimport ) -# define WXDLLEXPORT_DATA(type) _declspec( dllimport ) type -# define WXDLLEXPORT_CTORFN -# else -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN -# endif - -#elif defined(__GNUC__) - +// __declspec works in BC++ 5 and later, as well as VC++ and gcc +#if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) # ifdef WXMAKINGDLL # define WXDLLEXPORT __declspec( dllexport ) # define WXDLLEXPORT_DATA(type) __declspec( dllexport ) type @@ -412,34 +429,46 @@ typedef int wxWindowID; # define WXDLLEXPORT_DATA(type) type # define WXDLLEXPORT_CTORFN # endif +#else +# define WXDLLEXPORT +# define WXDLLEXPORT_DATA(type) type +# define WXDLLEXPORT_CTORFN +#endif #elif defined(__WXPM__) -# ifdef WXMAKINGDLL -# define WXDLLEXPORT _Export -# define WXDLLEXPORT_DATA(type) _Export type -# define WXDLLEXPORT_CTORFN -# elif defined(WXUSINGDLL) -# define WXDLLEXPORT _Export -# define WXDLLEXPORT_DATA(type) _Export type -# define WXDLLEXPORT_CTORFN +# if (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ))) + +# ifdef WXMAKINGDLL +# define WXDLLEXPORT _Export +# define WXDLLEXPORT_DATA(type) _Export type +# define WXDLLEXPORT_CTORFN +# elif defined(WXUSINGDLL) +# define WXDLLEXPORT _Export +# define WXDLLEXPORT_DATA(type) _Export type +# define WXDLLEXPORT_CTORFN +# else +# define WXDLLEXPORT +# define WXDLLEXPORT_DATA(type) type +# define WXDLLEXPORT_CTORFN +# endif + # else + # define WXDLLEXPORT # define WXDLLEXPORT_DATA(type) type # define WXDLLEXPORT_CTORFN + # endif -#else +#else // !(MSW or OS2) + # define WXDLLEXPORT # define WXDLLEXPORT_DATA(type) type # define WXDLLEXPORT_CTORFN + #endif -#else // !Windows -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN -#endif // Win/!Win // For ostream, istream ofstream #if defined(__BORLANDC__) && defined( _RTLDLL ) @@ -456,8 +485,12 @@ class WXDLLEXPORT wxEvent; #define wxNOT_FOUND (-1) // ---------------------------------------------------------------------------- -/** @name Very common macros */ +// Very common macros // ---------------------------------------------------------------------------- + +// everybody gets the assert and other debug macros +#include "wx/debug.h" + //@{ /// delete pointer if it is not NULL and NULL it afterwards // (checking that it's !NULL before passing it to delete is just a @@ -489,10 +522,6 @@ class WXDLLEXPORT wxEvent; /// 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 specific settings // ---------------------------------------------------------------------------- @@ -519,9 +548,13 @@ WXDLLEXPORT_DATA(extern const bool) wxFalse; // where should i put this? we need to make sure of this as it breaks // the code. #if !wxUSE_IOSTREAMH && defined(__WXDEBUG__) -#ifndef __MWERKS__ -#undef __WXDEBUG__ -#endif +# ifndef __MWERKS__ +// #undef __WXDEBUG__ +# ifdef wxUSE_DEBUG_NEW_ALWAYS +# undef wxUSE_DEBUG_NEW_ALWAYS +# define wxUSE_DEBUG_NEW_ALWAYS 0 +# endif +# endif #endif // Callback function type definition @@ -688,7 +721,7 @@ typedef float wxFloat32 ; = { 0xE158 }; #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0) - pascal wxInt16 wxUINT16_SWAP_ALWAYS(wxInt16 value) + pascal wxInt16 wxINT16_SWAP_ALWAYS(wxInt16 value) = { 0xE158 }; #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0) @@ -696,7 +729,7 @@ typedef float wxFloat32 ; = { 0xE158, 0x4840, 0xE158 }; #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0) - pascal wxInt32 wxUINT32_SWAP_ALWAYS(wxInt32 value) + pascal wxInt32 wxINT32_SWAP_ALWAYS(wxInt32 value) = { 0xE158, 0x4840, 0xE158 }; #endif @@ -811,7 +844,8 @@ enum wxStretch wxSHRINK = 0x1000, wxGROW = 0x2000, wxEXPAND = wxGROW, - wxSHAPED = 0x4000 + wxSHAPED = 0x4000, + wxADJUST_MINSIZE = 0x8000 }; // ---------------------------------------------------------------------------- @@ -859,6 +893,9 @@ enum wxStretch // splitter windows, but can't be used in a panel where a static box must be // 'transparent' (panel paints the background for it) #define wxCLIP_CHILDREN 0x00400000 +// Note we're reusing the wxCAPTION style because we won't need captions +// for subwindows/controls +#define wxCLIP_SIBLINGS 0x20000000 // Add this style to a panel to get tab traversal working outside of dialogs // (on by default for wxPanel, wxDialog, wxScrolledWindow) @@ -893,18 +930,32 @@ enum wxStretch #define wxICONIZE 0x4000 #define wxMINIMIZE wxICONIZE #define wxMAXIMIZE 0x2000 -#define wxTHICK_FRAME 0x1000 +// free value: 0x1000 #define wxSYSTEM_MENU 0x0800 #define wxMINIMIZE_BOX 0x0400 #define wxMAXIMIZE_BOX 0x0200 #define wxTINY_CAPTION_HORIZ 0x0100 #define wxTINY_CAPTION_VERT 0x0080 -#define wxRESIZE_BOX wxMAXIMIZE_BOX #define wxRESIZE_BORDER 0x0040 + +#define wxDIALOG_NO_PARENT 0x0001 // Don't make owned by apps top window +#define wxFRAME_NO_TASKBAR 0x0002 // No taskbar button (MSW only) +#define wxFRAME_TOOL_WINDOW 0x0004 // No taskbar button, no system menu + +// deprecated versions defined for compatibility reasons +#define wxRESIZE_BOX wxMAXIMIZE_BOX +#define wxTHICK_FRAME wxRESIZE_BORDER + +// obsolete styles, unused any more #define wxDIALOG_MODAL 0x0020 #define wxDIALOG_MODELESS 0x0000 -// Add for normal Windows frame behaviour -#define wxFRAME_FLOAT_ON_PARENT 0x0020 + +// deprecated flag, don't use any more, defined for compatibility only +#define wxFRAME_FLOAT_ON_PARENT 0 + +// Context-sensitive help +#define wxFRAME_EX_CONTEXTHELP 0x00000004 +#define wxDIALOG_EX_CONTEXTHELP 0x00000004 /* * MDI parent frame style flags @@ -918,14 +969,16 @@ enum wxStretch #endif #define wxDEFAULT_FRAME_STYLE \ - (wxSYSTEM_MENU | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN) + (wxSYSTEM_MENU | wxRESIZE_BORDER | \ + wxMINIMIZE_BOX | wxMAXIMIZE_BOX | \ + wxCAPTION | wxCLIP_CHILDREN) #ifdef __WXMSW__ -# define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME) +# define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU | wxCAPTION) #else -// Under Unix, the dialogs don't have a system menu. Specifying -// wxSYSTEM_MENU here, will make a close button appear. -# define wxDEFAULT_DIALOG_STYLE (wxCAPTION|wxTHICK_FRAME) +// Under Unix, the dialogs don't have a system menu. Specifying wxSYSTEM_MENU +// here will make a close button appear. +# define wxDEFAULT_DIALOG_STYLE wxCAPTION #endif /* @@ -1062,6 +1115,10 @@ enum wxStretch */ #define wxBU_AUTODRAW 0x0004 #define wxBU_NOAUTODRAW 0x0000 +#define wxBU_LEFT 0x0040 +#define wxBU_TOP 0x0080 +#define wxBU_RIGHT 0x0100 +#define wxBU_BOTTOM 0x0200 /* * wxTreeCtrl flags @@ -1074,10 +1131,13 @@ enum wxStretch #define wxTR_MULTIPLE 0x0020 #define wxTR_EXTENDED 0x0040 #define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080 +#define wxTR_NO_LINES 0x0100 /* * wxListCtrl flags */ +#define wxLC_VRULES 0x0001 +#define wxLC_HRULES 0x0002 #define wxLC_ICON 0x0004 #define wxLC_SMALL_ICON 0x0008 #define wxLC_LIST 0x0010 @@ -1118,16 +1178,14 @@ enum wxStretch * wxSplitterWindow flags */ #define wxSP_NOBORDER 0x0000 -#define wxSP_3D 0x0010 +#define wxSP_NOSASH 0x0010 #define wxSP_BORDER 0x0020 #define wxSP_PERMIT_UNSPLIT 0x0040 #define wxSP_LIVE_UPDATE 0x0080 - -/* - * wxFrame extra flags - */ -// No title on taskbar -#define wxFRAME_TOOL_WINDOW 0x0004 +#define wxSP_3DSASH 0x0100 +#define wxSP_3DBORDER 0x0200 +#define wxSP_FULLSASH 0x0400 +#define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH) /* * wxTabCtrl flags @@ -1282,6 +1340,12 @@ enum wxStretch #define wxID_MORE 5109 #define wxID_SETUP 5110 #define wxID_RESET 5111 +#define wxID_CONTEXT_HELP 5112 +#define wxID_YESTOALL 5113 +#define wxID_NOTOALL 5114 +#define wxID_ABORT 5115 +#define wxID_RETRY 5116 +#define wxID_IGNORE 5117 // IDs used by generic file dialog (11 consecutive starting from this value) #define wxID_FILEDLGG 5900 @@ -1659,9 +1723,16 @@ typedef enum { wxPRINT_MODE_PRINTER = 3 // Send to printer } wxPrintMode; -// --------------------------------------------------------------------------- -// Macro to specify "All Files" on different platforms -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// miscellaneous +// ---------------------------------------------------------------------------- + +// define this macro if font handling is done using the X font names +#if defined(__WXGTK__) || defined(__X__) + #define _WX_X_FONTLIKE +#endif + +// macro to specify "All Files" on different platforms #if defined(__WXMSW__) # define wxALL_FILES_PATTERN "*.*" # define wxALL_FILES gettext_noop("All files (*.*)|*.*") @@ -1669,6 +1740,7 @@ typedef enum { # define wxALL_FILES_PATTERN "*" # define wxALL_FILES gettext_noop("All files (*)|*") #endif + // --------------------------------------------------------------------------- // macros that enable wxWindows apps to be compiled in absence of the // sytem headers, although some platform specific types are used in the @@ -1678,27 +1750,27 @@ typedef enum { #ifdef __WXMAC__ typedef WindowPtr WXHWND; -typedef Handle WXHANDLE; -typedef CIconHandle WXHICON; +typedef Handle WXHANDLE; +typedef CIconHandle WXHICON; //typedef unsigned long WXHFONT; -typedef MenuHandle WXHMENU; +typedef MenuHandle WXHMENU; //typedef unsigned long WXHPEN; //typedef unsigned long WXHBRUSH; //typedef unsigned long WXHPALETTE; -typedef CursHandle WXHCURSOR; +typedef CursHandle WXHCURSOR; typedef RgnHandle WXHRGN; //typedef unsigned long WXHACCEL; //typedef unsigned long WXHINSTANCE; -typedef GWorldPtr WXHBITMAP; +typedef GWorldPtr WXHBITMAP; //typedef unsigned long WXHIMAGELIST; //typedef unsigned long WXHGLOBAL; -typedef GrafPtr WXHDC; +typedef GrafPtr WXHDC; typedef unsigned int WXUINT; typedef unsigned long WXDWORD; typedef unsigned short WXWORD; //typedef unsigned int WXWPARAM; //typedef long WXLPARAM; -typedef RGBColor WXCOLORREF; +typedef RGBColor WXCOLORREF; //typedef void * WXRGNDATA; //typedef void * WXMSG; //typedef unsigned long WXHCONV; @@ -1708,12 +1780,26 @@ typedef RGBColor WXCOLORREF; //typedef void * WXLPCREATESTRUCT; typedef int (*WXFARPROC)(); -typedef WindowPtr WXWindow; -typedef ControlHandle WXWidget; +typedef WindowPtr WXWindow; +typedef ControlHandle WXWidget; #endif #if defined(__WXMSW__) || defined(__WXPM__) + +// the keywords needed for WinMain() declaration +#ifdef __WIN16__ +# ifdef __VISUALC__ +# define WXFAR __far +# else +# define WXFAR _far +# endif +#else // Win32 +# ifndef WXFAR +# define WXFAR +# endif +#endif // Win16/32 + // Stand-ins for Windows types or OS/2, to avoid #including all of windows.h or os2.h typedef unsigned long WXHWND; typedef unsigned long WXHANDLE; @@ -1726,7 +1812,7 @@ typedef unsigned long WXHPALETTE; typedef unsigned long WXHCURSOR; typedef unsigned long WXHRGN; typedef unsigned long WXHACCEL; -typedef unsigned long WXHINSTANCE; +typedef void WXFAR * WXHINSTANCE; typedef unsigned long WXHBITMAP; typedef unsigned long WXHIMAGELIST; typedef unsigned long WXHGLOBAL; @@ -1760,7 +1846,7 @@ typedef void * WXLPCREATESTRUCT; typedef unsigned long WXMPARAM; typedef unsigned long WXMSGID; typedef void* WXRESULT; -typedef int (*WXFARPROC)(); +//typedef int (*WXFARPROC)(); // some windows handles not defined by PM typedef unsigned long HANDLE; typedef unsigned long HICON; @@ -1779,7 +1865,7 @@ typedef unsigned short WORD; // WIN32 graphics types for OS/2 GPI // RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def -#define OS2RGB(r,g,b) ((DWORD ((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(b)) << 16))) +#define OS2RGB(r,g,b) ((DWORD ((BYTE) (b) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(r)) << 16))) typedef unsigned long COLORREF; #define GetBValue(rgb) ((BYTE)((rgb) >> 16)) @@ -1807,6 +1893,13 @@ typedef struct tagLOGPALETTE typedef int (*WXFARPROC)(); #elif defined(__WIN32__) typedef int (__stdcall *WXFARPROC)(); +#elif defined(__WXPM__) +# if defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ) + // VA 3.0 for some reason needs base data types when typedefing a proc proto??? + typedef void* (_System *WXFARPROC)(unsigned long, unsigned long, void*, void*); +# else + typedef WXRESULT (_System *WXFARPROC)(WXHWND, WXMSGID, WXWPARAM, WXLPARAM); +# endif #else typedef int (*WXFARPROC)(); #endif @@ -1814,29 +1907,15 @@ typedef struct tagLOGPALETTE typedef WXHWND WXWidget; #if defined(__BORLANDC__) && !defined(__WIN32__) -#ifndef LPTSTR -#define LPTSTR LPSTR -#endif -#ifndef LPCTSTR -#define LPCTSTR LPSTR -#endif +# ifndef LPTSTR +# define LPTSTR LPSTR +# endif +# ifndef LPCTSTR +# define LPCTSTR LPSTR +# endif #endif -// the keywords needed for WinMain() declaration - -#ifdef __WIN16__ - #ifdef __VISUALC__ - #define WXFAR __far - #else // !VC++ - #define WXFAR _far - #endif -#else // Win32 - #ifndef WXFAR - #define WXFAR - #endif -#endif // Win16/32 - -#endif // MSW +#endif // MSW or OS2 #ifdef __WXMOTIF__ /* Stand-ins for X/Xt/Motif types */ @@ -1862,6 +1941,8 @@ typedef unsigned long Atom; /* this might fail on a few architectures */ #ifdef __WXGTK__ /* Stand-ins for GLIB types */ +typedef char gchar; +typedef signed char gint8; typedef int gint; typedef unsigned guint; typedef unsigned long gulong; @@ -1874,7 +1955,7 @@ typedef struct _GdkColor GdkColor; typedef struct _GdkColormap GdkColormap; typedef struct _GdkFont GdkFont; typedef struct _GdkGC GdkGC; -#ifdef __WXGTK13__ +#ifdef __WXGTK20__ typedef struct _GdkDrawable GdkWindow; typedef struct _GdkDrawable GdkBitmap; typedef struct _GdkDrawable GdkPixmap; @@ -1905,6 +1986,18 @@ typedef struct _GtkItemFactory GtkItemFactory; typedef struct _GtkSelectionData GtkSelectionData; typedef GtkWidget *WXWidget; + +#ifndef __WXGTK20__ +#define GTK_OBJECT_GET_CLASS(object) (GTK_OBJECT(object)->klass) +#define GTK_CLASS_TYPE(klass) ((klass)->type) +#endif + +#ifdef __WXGTK20__ +/* Stand-ins for Pango types */ +typedef struct _PangoContext PangoContext; +typedef struct _PangoLayout PangoLayout; +typedef struct _PangoFontDescription PangoFontDescription; +#endif #endif // GTK // This is required because of clashing macros in windows.h, which may be