X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8f177c8e7309c8cf3ece1563870d135cc8f0e6a1..2fa7c206f68655f226e37ce1f1cc7e646e6c0bf2:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 174363f982..5a81d4ac0c 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -16,21 +16,16 @@ #pragma interface "defs.h" #endif - -// needed to handle strings with xgettext: -#ifndef gettext_noop -# define gettext_noop(x) x -#endif - // ---------------------------------------------------------------------------- // compiler and OS identification // ---------------------------------------------------------------------------- -// OS +// 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 ) || \ + defined(__LINUX__) || defined(__sgi) || \ defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \ - defined(__EMX__) || defined( __VMS ) + defined(__EMX__) || defined(__VMS) || defined(__BEOS__) #define __UNIX_LIKE__ @@ -67,7 +62,10 @@ #endif // Place other OS/2 compiler environment defines here - #define LINKAGEMODE _Optlink + #if defined(__VISAGECPP__) + // VisualAge is the only thing that understands _Optlink + #define LINKAGEMODE _Optlink + #endif #else // Windows #ifndef __WINDOWS__ #define __WINDOWS__ @@ -140,15 +138,19 @@ // 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))) -#ifndef wxUSE_NORLANDER_HEADERS -# define wxUSE_NORLANDER_HEADERS 1 -#endif + #ifndef wxUSE_NORLANDER_HEADERS + #define wxUSE_NORLANDER_HEADERS 1 + #endif +#else + #ifndef wxUSE_NORLANDER_HEADERS + #define wxUSE_NORLANDER_HEADERS 0 + #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 -#if defined(__MINGW32__) && !wxUSE_NORLANDER_HEADERS +#if defined(__GNUC__) && !wxUSE_NORLANDER_HEADERS #define __GNUWIN32_OLD__ #endif @@ -166,9 +168,11 @@ #endif #ifdef __WXMSW__ -// wxWindows checks for WIN32, not __WIN32__ -#if ((defined(WIN32) || defined(__NT__)) && !defined(__WIN32__) && !defined(__WXSTUBS__)) -#define __WIN32__ + +#if defined(_WIN32) || defined(WIN32) || defined(__NT__) + #ifndef __WIN32__ + #define __WIN32__ + #endif #endif #ifdef __WXWINE__ @@ -224,7 +228,7 @@ #define __HPUX__ #endif // HP-UX -// if we're on a Unixsystem but didn't use configure (so that setup.h didn't +// if we're on a Unix system but didn't use configure (so that setup.h didn't // define __UNIX__), do define __UNIX__ now #if !defined(__UNIX__) && defined(__UNIX_LIKE__) #define __UNIX__ @@ -322,19 +326,35 @@ typedef int wxWindowID; #define WXUNUSED(identifier) identifier #endif +// some arguments are only used in debug mode, but unused in release one +#ifdef __WXDEBUG__ + #define WXUNUSED_UNLESS_DEBUG(param) param +#else + #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param) +#endif + // ---------------------------------------------------------------------------- // portable calling conventions macros // ---------------------------------------------------------------------------- -// wxCALLBACK should be used for the functions which are called back by -// Windows (such as compare function for wxListCtrl) -#if defined(__WIN32__) - #if defined(__MINGW32__) || defined(__GNUWIN32__) - #define wxCALLBACK __attribute__((stdcall)) +// stdcall is used for all functions called by Windows under Windows +#ifdef __WINDOWS__ + #if defined(__GNUWIN32__) + #define wxSTDCALL __attribute__((stdcall)) #else // both VC++ and Borland understand this - #define wxCALLBACK _stdcall + #define wxSTDCALL _stdcall #endif + +#else // Win + // no such stupidness under Unix + #define wxSTDCALL +#endif // platform + +// wxCALLBACK should be used for the functions which are called back by +// Windows (such as compare function for wxListCtrl) +#if defined(__WIN32__) + #define wxCALLBACK wxSTDCALL #else // no stdcall under Unix nor Win16 #define wxCALLBACK @@ -376,6 +396,22 @@ typedef int wxWindowID; # define WXDLLEXPORT_CTORFN # endif +#elif defined(__GNUC__) + +# 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(__WXPM__) # ifdef WXMAKINGDLL @@ -497,32 +533,32 @@ typedef void (*wxFunction) (wxObject&, wxEvent&); // Not all platforms are currently available or supported enum { - 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 - wxNEXTSTEP, // NeXTStep - wxMACINTOSH, // Apple System 7 and 8 - wxBEOS, // BeOS - wxGTK, // GTK on X - wxGTK_WIN32, // GTK on Win32 - wxGTK_OS2, // GTK on OS/2 - wxGTK_BEOS, // GTK on BeOS - 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 - wxMGL_UNIX, // MGL with direct hardware access - wxMGL_X, // MGL on X - wxMGL_WIN32, // MGL on Win32 - wxMGL_OS2, // MGL on OS/2 - wxWINDOWS_OS2 // Native OS/2 PM + 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 + wxNEXTSTEP, // NeXTStep + wxMACINTOSH, // Apple System 7 and 8 + wxBEOS, // BeOS + wxGTK, // GTK on X + wxGTK_WIN32, // GTK on Win32 + wxGTK_OS2, // GTK on OS/2 + wxGTK_BEOS, // GTK on BeOS + 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 + wxMGL_UNIX, // MGL with direct hardware access + wxMGL_X, // MGL on X + wxMGL_WIN32, // MGL on Win32 + wxMGL_OS2, // MGL on OS/2 + wxWINDOWS_OS2 // Native OS/2 PM }; // ---------------------------------------------------------------------------- @@ -604,9 +640,9 @@ enum typedef float wxFloat32 ; #if defined( __WXMAC__ ) && defined (__MWERKS__) - typedef short double wxFloat64; + typedef short double wxFloat64; #else - typedef double wxFloat64; + typedef double wxFloat64; #endif #if defined( __WXMAC__ ) && !defined( __POWERPC__ ) @@ -636,30 +672,30 @@ typedef float wxFloat32 ; #if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh ) // assembler versions for these #ifdef __POWERPC__ - inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i ) - {return (__lhbrx( &i , 0 ) ) ;} - inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i ) - {return (__lhbrx( &i , 0 ) ) ;} - inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i ) - {return (__lwbrx( &i , 0 ) ) ;} - inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i ) - {return (__lwbrx( &i , 0 ) ) ;} + inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i ) + {return (__lhbrx( &i , 0 ) ) ;} + inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i ) + {return (__lhbrx( &i , 0 ) ) ;} + inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i ) + {return (__lwbrx( &i , 0 ) ) ;} + inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i ) + {return (__lwbrx( &i , 0 ) ) ;} #else - #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0) - pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value) - = { 0xE158 }; - - #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0) - pascal wxInt16 wxUINT16_SWAP_ALWAYS(wxInt16 value) - = { 0xE158 }; - - #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0) - pascal wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value) - = { 0xE158, 0x4840, 0xE158 }; - - #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0) - pascal wxInt32 wxUINT32_SWAP_ALWAYS(wxInt32 value) - = { 0xE158, 0x4840, 0xE158 }; + #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0) + pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value) + = { 0xE158 }; + + #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0) + pascal wxInt16 wxUINT16_SWAP_ALWAYS(wxInt16 value) + = { 0xE158 }; + + #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0) + pascal wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value) + = { 0xE158, 0x4840, 0xE158 }; + + #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0) + pascal wxInt32 wxUINT32_SWAP_ALWAYS(wxInt32 value) + = { 0xE158, 0x4840, 0xE158 }; #endif #else // !MWERKS @@ -810,20 +846,20 @@ enum wxStretch #define wxTRANSPARENT_WINDOW 0x00100000 #define wxNO_BORDER 0x00200000 +// Override CTL3D etc. control colour processing to allow own background +// colour. +// OBSOLETE - use wxNO_3D instead #define wxUSER_COLOURS 0x00800000 - // Override CTL3D etc. control colour processing to - // allow own background colour - // OBSOLETE - use wxNO_3D instead +// Override CTL3D or native 3D styles for children #define wxNO_3D 0x00800000 - // Override CTL3D or native 3D styles for children + +// 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) #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. +// Add this style to a panel to get tab traversal working outside of dialogs +// (on by default for wxPanel, wxDialog, wxScrolledWindow) #define wxTAB_TRAVERSAL 0x00080000 // Add this style if the control wants to get all keyboard messages (under @@ -837,6 +873,17 @@ enum wxStretch // don't invalidate the whole window (resulting in a PAINT event) when the // window is resized (currently, makes sense for wxMSW only) #define wxNO_FULL_REPAINT_ON_RESIZE 0x00010000 + +/* + * Extra window style flags (use wxWS_EX prefix to make it clear that they + * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle()) + */ + +// by default, TransferDataTo/FromWindow() only work on direct children of the +// window (compatible behaviour), set this flag to make them recursively +// descend into all subwindows +#define wxWS_EX_VALIDATE_RECURSIVELY 0x00000001 + /* * wxFrame/wxDialog style flags */ @@ -857,6 +904,12 @@ enum wxStretch // Add for normal Windows frame behaviour #define wxFRAME_FLOAT_ON_PARENT 0x0020 +/* + * MDI parent frame style flags + * Can overlap with some of the above. + */ + +#define wxFRAME_NO_WINDOW_MENU 0x0100 #if WXWIN_COMPATIBILITY #define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE @@ -890,13 +943,13 @@ enum wxStretch /* * wxToolBar style flags */ -#define wxTB_3DBUTTONS 0x8000 -#define wxTB_HORIZONTAL 0x0002 -#define wxTB_VERTICAL 0x0004 +#define wxTB_HORIZONTAL wxHORIZONTAL +#define wxTB_VERTICAL wxVERTICAL +#define wxTB_3DBUTTONS 0x0010 // Flatbar/Coolbar under Win98/ GTK 1.2 -#define wxTB_FLAT 0x0008 +#define wxTB_FLAT 0x0020 // use native docking under GTK -#define wxTB_DOCKABLE 0x0010 +#define wxTB_DOCKABLE 0x0040 /* * wxMenuBar style flags @@ -931,10 +984,9 @@ enum wxStretch /* * wxTextCtrl style flags */ -#define wxPROCESS_ENTER 0x0004 -#define wxPASSWORD 0x0008 -#define wxTE_PROCESS_ENTER wxPROCESS_ENTER -#define wxTE_PASSWORD wxPASSWORD +// the flag bits 0x0001, 2, 4 and 8 are free but should be used only for the +// things which don't make sense for a text control used by wxTextEntryDialog +// because they would otherwise conflict with wxOK, wxCANCEL, wxCENTRE #define wxTE_READONLY 0x0010 #define wxTE_MULTILINE 0x0020 #define wxTE_PROCESS_TAB 0x0040 @@ -943,6 +995,10 @@ enum wxStretch #define wxTE_RICH 0x0080 #define wxTE_NO_VSCROLL 0x0100 #define wxTE_AUTO_SCROLL 0x0200 +#define wxPROCESS_ENTER 0x0400 +#define wxPASSWORD 0x0800 +#define wxTE_PROCESS_ENTER wxPROCESS_ENTER +#define wxTE_PASSWORD wxPASSWORD /* * wxComboBox style flags @@ -1108,7 +1164,8 @@ enum wxStretch #define wxPD_AUTO_HIDE 0x0004 #define wxPD_ELAPSED_TIME 0x0008 #define wxPD_ESTIMATED_TIME 0x0010 -#define wxPD_REMAINING_TIME 0x0020 +// wxGA_SMOOTH = 0x0020 may also be used with wxProgressDialog +#define wxPD_REMAINING_TIME 0x0040 /* * wxHtmlWindow flags @@ -1116,6 +1173,15 @@ enum wxStretch #define wxHW_SCROLLBAR_NEVER 0x0002 #define wxHW_SCROLLBAR_AUTO 0x0004 +/* + * wxCalendarCtrl flags + */ +#define wxCAL_SUNDAY_FIRST 0x0000 +#define wxCAL_MONDAY_FIRST 0x0001 +#define wxCAL_SHOW_HOLIDAYS 0x0002 +#define wxCAL_NO_YEAR_CHANGE 0x0004 +#define wxCAL_NO_MONTH_CHANGE 0x000c // no month change => no year change + /* * extended dialog specifiers. these values are stored in a different * flag and thus do not overlap with other style flags. note that these @@ -1274,6 +1340,8 @@ enum { // Brush & Pen Stippling. Note that a stippled pen cannot be dashed!! // Note also that stippling a Pen IS meaningfull, because a Line is + wxSTIPPLE_MASK_OPAQUE, //mask is used for blitting monochrome using text fore and back ground colors + wxSTIPPLE_MASK, //mask is used for masking areas in the stipple bitmap (TO DO) // drawn with a Pen, and without any Brush -- and it can be stippled. wxSTIPPLE = 110, wxBDIAGONAL_HATCH, @@ -1297,24 +1365,22 @@ enum { // Logical ops typedef enum { - wxCLEAR, // 0 - wxXOR, // src XOR dst - wxINVERT, // NOT dst - wxOR_REVERSE, // src OR (NOT dst) - wxAND_REVERSE,// src AND (NOT dst) - wxCOPY, // src - wxAND, // src AND dst - wxAND_INVERT, // (NOT src) AND dst - wxNO_OP, // dst - wxNOR, // (NOT src) AND (NOT dst) - wxEQUIV, // (NOT src) XOR dst - wxSRC_INVERT, // (NOT src) - wxOR_INVERT, // (NOT src) OR dst - wxNAND, // (NOT src) OR (NOT dst) - wxOR, // src OR dst - wxSET, // 1 - wxSRC_OR, // source _bitmap_ OR destination - wxSRC_AND // source _bitmap_ AND destination + wxCLEAR, wxROP_BLACK = wxCLEAR, wxBLIT_BLACKNESS = wxCLEAR, // 0 + wxXOR, wxROP_XORPEN = wxXOR, wxBLIT_SRCINVERT = wxXOR, // src XOR dst + wxINVERT, wxROP_NOT = wxINVERT, wxBLIT_DSTINVERT = wxINVERT, // NOT dst + wxOR_REVERSE, wxROP_MERGEPENNOT = wxOR_REVERSE, wxBLIT_00DD0228 = wxOR_REVERSE, // src OR (NOT dst) + wxAND_REVERSE, wxROP_MASKPENNOT = wxAND_REVERSE, wxBLIT_SRCERASE = wxAND_REVERSE, // src AND (NOT dst) + wxCOPY, wxROP_COPYPEN = wxCOPY, wxBLIT_SRCCOPY = wxCOPY, // src + wxAND, wxROP_MASKPEN = wxAND, wxBLIT_SRCAND = wxAND, // src AND dst + wxAND_INVERT, wxROP_MASKNOTPEN = wxAND_INVERT, wxBLIT_00220326 = wxAND_INVERT, // (NOT src) AND dst + wxNO_OP, wxROP_NOP = wxNO_OP, wxBLIT_00AA0029 = wxNO_OP, // dst + wxNOR, wxROP_NOTMERGEPEN = wxNOR, wxBLIT_NOTSRCERASE = wxNOR, // (NOT src) AND (NOT dst) + wxEQUIV, wxROP_NOTXORPEN = wxEQUIV, wxBLIT_00990066 = wxEQUIV, // (NOT src) XOR dst + wxSRC_INVERT, wxROP_NOTCOPYPEN = wxSRC_INVERT, wxBLIT_NOTSCRCOPY = wxSRC_INVERT, // (NOT src) + wxOR_INVERT, wxROP_MERGENOTPEN = wxOR_INVERT, wxBLIT_MERGEPAINT = wxOR_INVERT, // (NOT src) OR dst + wxNAND, wxROP_NOTMASKPEN = wxNAND, wxBLIT_007700E6 = wxNAND, // (NOT src) OR (NOT dst) + wxOR, wxROP_MERGEPEN = wxOR, wxBLIT_SRCPAINT = wxOR, // src OR dst + wxSET, wxROP_WHITE = wxSET, wxBLIT_WHITENESS = wxSET // 1 } form_ops_t; /* Flood styles */ @@ -1609,28 +1675,28 @@ typedef enum { #ifdef __WXMAC__ -typedef WindowPtr WXHWND; -typedef Handle WXHANDLE; -typedef CIconHandle WXHICON; +typedef WindowPtr WXHWND; +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 RgnHandle WXHRGN; +typedef CursHandle WXHCURSOR; +typedef RgnHandle WXHRGN; //typedef unsigned long WXHACCEL; //typedef unsigned long WXHINSTANCE; 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; @@ -1754,6 +1820,20 @@ typedef WXHWND WXWidget; #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 #ifdef __WXMOTIF__ @@ -1792,9 +1872,15 @@ typedef struct _GdkColor GdkColor; typedef struct _GdkColormap GdkColormap; typedef struct _GdkFont GdkFont; typedef struct _GdkGC GdkGC; -typedef struct _GdkWindow GdkWindow; -typedef struct _GdkWindow GdkBitmap; -typedef struct _GdkWindow GdkPixmap; +#ifdef __WXGTK13__ + typedef struct _GdkDrawable GdkWindow; + typedef struct _GdkDrawable GdkBitmap; + typedef struct _GdkDrawable GdkPixmap; +#else + typedef struct _GdkWindow GdkWindow; + typedef struct _GdkWindow GdkBitmap; + typedef struct _GdkWindow GdkPixmap; +#endif typedef struct _GdkCursor GdkCursor; typedef struct _GdkRegion GdkRegion; typedef struct _GdkDragContext GdkDragContext; @@ -1813,8 +1899,8 @@ typedef struct _GtkTooltips GtkTooltips; typedef struct _GtkNotebook GtkNotebook; typedef struct _GtkNotebookPage GtkNotebookPage; typedef struct _GtkAccelGroup GtkAccelGroup; -typedef struct _GtkItemFactory GtkItemFactory; -typedef struct _GtkSelectionData GtkSelectionData; +typedef struct _GtkItemFactory GtkItemFactory; +typedef struct _GtkSelectionData GtkSelectionData; typedef GtkWidget *WXWidget; #endif // GTK