X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/565215b26a117edbbbb52d62c79ef0fc38d81c39..1b826605f5ab0bb680925f5e24a57b068ce2bdc5:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 3b77dd23c4..22c8db9a99 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -9,14 +9,14 @@ // 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" @@ -30,8 +30,14 @@ #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 @@ -43,19 +49,15 @@ ////////////////////////////////////////////////////////////////////////////////// // 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 // 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 @@ -68,13 +70,14 @@ #endif // 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; @@ -85,7 +88,7 @@ # define Bool_DEFINED #endif -#elif defined(__WINDOWS__) +#elif defined(__WXMSW__) #ifndef TRUE # define TRUE 1 @@ -101,6 +104,10 @@ typedef unsigned int bool; #endif +#if defined(_MSC_VER) && (_MSC_VER == 1020) +#define bool unsigned int +#endif + #if ( defined(_MSC_VER) && (_MSC_VER <= 800) ) || defined(__GNUWIN32__) #define byte unsigned char #endif @@ -119,7 +126,7 @@ typedef int wxWindowID; * Making or using wxWindows as a Windows DLL */ -#ifdef __WINDOWS__ +#ifdef __WXMSW__ #ifdef __BORLANDC__ @@ -172,22 +179,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 +204,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 +262,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 +270,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. @@ -286,7 +294,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,7 +317,7 @@ 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 wxCLIP_CHILDREN 0x00400000 @@ -365,13 +373,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. @@ -385,21 +397,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 /* @@ -412,19 +417,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 @@ -443,7 +445,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 @@ -461,7 +463,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&); /* * wxScrollBar flags */ - + #define wxSB_HORIZONTAL wxHORIZONTAL #define wxSB_VERTICAL wxVERTICAL @@ -478,6 +480,7 @@ typedef void (*wxFunction) (wxObject&, wxEvent&); #define wxTR_HAS_BUTTONS 0x0004 #define wxTR_EDIT_LABELS 0x0008 +#define wxTR_LINES_AT_ROOT 0x0010 /* * wxListCtrl flags @@ -662,27 +665,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, @@ -766,20 +778,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 @@ -813,6 +828,7 @@ enum { #define wxID_PASTE 5032 #define wxID_CLEAR 5033 #define wxID_FIND 5034 +#define wxID_DUPLICATE 5035 #define wxID_FILE1 5050 #define wxID_FILE2 5051 @@ -829,8 +845,11 @@ enum { #define wxID_APPLY 5102 #define wxID_YES 5103 #define wxID_NO 5104 +#define wxID_STATIC 5105 -#ifdef __WINDOWS__ +#define wxID_HIGHEST 5999 + +#ifdef __WXMSW__ // Stand-ins for Windows types, to avoid // #including all of windows.h @@ -844,6 +863,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; @@ -855,19 +875,39 @@ 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 void * WXDRAWITEMSTRUCT; typedef void * WXMEASUREITEMSTRUCT; typedef void * WXLPCREATESTRUCT; +#ifdef __GNUWIN32__ typedef int (*WXFARPROC)(); +#else +typedef int (__stdcall *WXFARPROC)(); +#endif #endif -// for drag & drop and clipboard operations -typedef unsigned short wxDataFormat; +#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_