#define _WX_DEFS_H_
#ifdef __GNUG__
-#pragma interface "defs.h"
+ #pragma interface "defs.h"
#endif
-#include <stddef.h>
-
-#include "wx/setup.h"
-
-#ifdef PACKAGE
- #undef PACKAGE
-#endif
-#ifdef VERSION
- #undef VERSION
-#endif
-
-#include "wx/version.h"
-
// ----------------------------------------------------------------------------
// 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(__EMX__) || defined(__VMS) || defined(__BEOS__)
- #ifndef __UNIX__
- #define __UNIX__
- #endif // Unix
+ #define __UNIX_LIKE__
// Helps SGI compilation, apparently
#ifdef __SGI__
#endif
#endif // Sun
- #if defined(__hpux) && !defined(__HPUX__)
- #define __HPUX__
- #endif // HP-UX
-
#elif defined(applec) || defined(THINK_C) || ( defined( __MWERKS__ ) && !defined(__INTEL__) )
// MacOS
+#elif defined(__OS2__)
+ #if defined(__IBMCPP__)
+ #define __VISAGEAVER__ __IBMCPP__
+ #endif
+ #ifndef __WXOS2__
+ #define __WXOS2__
+ #endif
+ #ifndef __WXPM__
+ #define __WXPM__
+ #endif
+
+ // Place other OS/2 compiler environment defines here
+ #if defined(__VISAGECPP__)
+ // VisualAge is the only thing that understands _Optlink
+ #define LINKAGEMODE _Optlink
+ #endif
#else // Windows
#ifndef __WINDOWS__
#define __WINDOWS__
#endif // compiler
#endif // OS
+// LINKAGEMODE mode is empty for everyting except OS/2
+#ifndef LINKAGEMODE
+ #define LINKAGEMODE
+#endif // LINKAGEMODE
+
// suppress some Visual C++ warnings
#ifdef __VISUALC__
+# pragma warning(disable:4201) // nonstandard extension used: nameless struct/union
# pragma warning(disable:4244) // conversion from double to float
# 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
-#ifndef WIN32
+# pragma warning(disable:4699) // Using precompiled header
# pragma warning(disable:4134) // conversion between pointers to members of same class
+#ifndef WIN32
# pragma warning(disable:4135) // conversion between different integral types
# pragma warning(disable:4769) // assignment of near pointer to long integer
+// This one is really annoying, since it occurs for each cast to (HANDLE)...
+# pragma warning(disable:4305) // truncation of long to near ptr
#endif
#endif // __VISUALC__
# pragma suppress 571 // Virtual function hiding
#endif // __SALFORDC__
-#ifdef __VISUALC__
-#ifndef WIN32
-// VC1.5 does not have LPTSTR type
-#define LPTSTR LPSTR
-#define LPCTSTR LPCSTR
-#endif
-#endif
+#if defined(__VISUALC__) && !defined(WIN32)
+ // VC1.5 does not have LPTSTR type
+ #define LPTSTR LPSTR
+ #define LPCTSTR LPCSTR
+#endif // VC++ 1.5
// Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
// so define it ourselves
#ifdef __DECCXX
- #define __cplusplus
+#ifndef __VMS
+# define __cplusplus
+#endif
#endif // __DECCXX
// Resolves linking problems under HP-UX
#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)))
+#ifndef wxUSE_NORLANDER_HEADERS
+# define wxUSE_NORLANDER_HEADERS 1
+#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(__GNUC__) && !wxUSE_NORLANDER_HEADERS
+ #define __GNUWIN32_OLD__
+#endif
+
//////////////////////////////////////////////////////////////////////////////////
// Currently Only MS-Windows/NT, XView and Motif are supported
//
#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__
#if defined(__WXMSW__) && defined(__X__)
#error "Target can't be both X and Windows"
#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__]"
+ !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \
+ !defined(__WXQT__) && !defined(__WXSTUBS__) && wxUSE_GUI
+ #error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXPM__|__WXSTUBS__]"
#endif
+// ----------------------------------------------------------------------------
+// wxWindows options
+// ----------------------------------------------------------------------------
+
+#include <stddef.h>
+
+#include "wx/setup.h"
+
+// just in case they were defined in setup.h
+#undef PACKAGE
+#undef VERSION
+
+// this has to be done after including setup.h which might
+// define __HPUX__ 1 itself
+#if defined(__hpux) && !defined(__HPUX__)
+ #define __HPUX__
+#endif // HP-UX
+
+// 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__
+#endif // Unix
+
+#include "wx/version.h"
+
+// ----------------------------------------------------------------------------
+// compatibility defines
+// ----------------------------------------------------------------------------
+
+// possibility to build non GUI apps is new, so don't burden ourselves with
+// compatibility code
+#if !wxUSE_GUI
+ #undef WXWIN_COMPATIBILITY_2
+ #define WXWIN_COMPATIBILITY_2 0
+#endif // !GUI
+
// ============================================================================
// non portable C++ features
// ============================================================================
// check for native bool type and TRUE/FALSE constants
// ----------------------------------------------------------------------------
-#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || defined(__WXSTUBS__)
- // Bool is now obsolete, use bool instead
- // typedef int Bool;
+// define boolean constants if not done yet
+#ifndef TRUE
+ #define TRUE 1
+#endif
- #ifndef TRUE
- #define TRUE 1
- #define FALSE 0
- #define Bool_DEFINED
- #endif
-#elif defined(__WXMSW__)
- #ifndef TRUE
- #define TRUE 1
- #define FALSE 0
- #endif
-#endif // TRUE/FALSE
+#ifndef FALSE
+ #define FALSE 0
+#endif
// Add more tests here for Windows compilers that already define bool
// (under Unix, configure tests for this)
#ifndef HAVE_BOOL
#if defined( __MWERKS__ )
- #if (__MWERKS__ >= 0x1000) && !__option(bool)
+ #if (__MWERKS__ >= 0x1000) && __option(bool)
#define HAVE_BOOL
#endif
#elif defined(__VISUALC__) && (__VISUALC__ == 1020)
#elif defined(__GNUWIN32__)
// Cygwin supports bool
#define HAVE_BOOL
+ #elif defined(__VISAGECPP__)
+ #if __IBMCPP__ < 400
+ typedef unsigned long bool;
+ #endif
+ #define HAVE_BOOL
#endif // compilers
#endif // HAVE_BOOL
// NB: of course, this doesn't replace the standard type, because, for
// example, overloading based on bool/int parameter doesn't work and
// so should be avoided in portable programs
- typedef unsigned int bool;
+#ifndef VMS
+typedef unsigned int bool;
+#endif
#endif // bool
typedef short int WXTYPE;
#define WXUNUSED(identifier) identifier
#endif
-/*
- * Making or using wxWindows as a Windows DLL
- */
+// 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
-#ifdef __WXMSW__
+// ----------------------------------------------------------------------------
+// portable calling conventions macros
+// ----------------------------------------------------------------------------
+
+// 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 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
+#endif // platform
+
+// callling convention for the qsort(3) callback
+
+#if defined(__VISUALC__)
+ #define wxCMPFUNC_CONV _cdecl
+#elif defined(__VISAGECPP__)
+ #define wxCMPFUNC_CONV _Optlink
+#else // !Visual C++
+ #define wxCMPFUNC_CONV
+#endif // compiler
+
+// compatibility :-(
+#define CMPFUNC_CONV wxCMPFUNC_CONV
+
+// ----------------------------------------------------------------------------
+// Making or using wxWindows as a Windows DLL
+// ----------------------------------------------------------------------------
+
+#if defined(__WXMSW__)
// _declspec works in BC++ 5 and later, as well as VC++
#if defined(__VISUALC__) || defined(__BORLANDC__)
# 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
+# 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
// 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
- 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
+ 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
};
// ----------------------------------------------------------------------------
-// machine specific settings
+// standard wxWindows types
// ----------------------------------------------------------------------------
+// the type for screen and DC coordinates
+
+#if wxUSE_COMPATIBLE_COORD_TYPES
+ // to ensure compatibility with 2.0, we must use long
+ #define wxCoord long
+#else // !wxUSE_COMPATIBLE_COORD_TYPES
+ #ifdef __WIN16__
+ // under Win16, int is too small, so use long to allow for bigger
+ // virtual canvases
+ typedef long wxCoord;
+ #else // !Win16
+ // other platforms we support have at least 32bit int - quite enough
+ typedef int wxCoord;
+ #endif // Win16/!Win16
+#endif // wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES
+
// fixed length types
-typedef char signed wxInt8;
-typedef char unsigned wxUint8;
+#define wxInt8 char signed
+#define wxUint8 char unsigned
#ifdef __WIN16__
-typedef int signed wxInt16;
-typedef int unsigned wxUint16;
-typedef long signed wxInt32;
-typedef long unsigned wxUint32;
+#define wxInt16 int signed
+#define wxUint16 int unsigned
+#define wxInt32 long signed
+#define wxUint32 long unsigned
#endif
#ifdef __WIN32__
-typedef short signed wxInt16;
-typedef short unsigned wxUint16;
-typedef int signed wxInt32;
-typedef int unsigned wxUint32;
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#ifdef __WXMAC__
-typedef short signed wxInt16;
-typedef short unsigned wxUint16;
-typedef int signed wxInt32;
-typedef int unsigned wxUint32;
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#ifdef __WXOS2__
-typedef short signed wxInt16;
-typedef short unsigned wxUint16;
-typedef int signed wxInt32;
-typedef int unsigned wxUint32;
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXOS2__)
#if defined(SIZEOF_INT)
/* well, this shouldn't happen... */
- typedef short signed wxInt16;
- typedef short unsigned wxUint16;
- typedef int signed wxInt32;
- typedef int unsigned wxUint32;
+ #define wxInt16 short signed
+ #define wxUint16 short unsigned
+ #define wxInt32 int signed
+ #define wxUint32 int unsigned
#else
- typedef short signed wxInt16;
- typedef short unsigned wxUint16;
- typedef int signed wxInt32;
- typedef int unsigned wxUint32;
+ #define wxInt16 short signed
+ #define wxUint16 short unsigned
+ #define wxInt32 int signed
+ #define wxUint32 int unsigned
#endif
#endif
-typedef wxUint8 wxByte;
-typedef wxUint16 wxWord;
+#define wxByte wxUint8
+#define wxWord wxUint16
+
+// base floating point types
+// wxFloat32 : 32 bit IEEE float ( 1 sign , 8 exponent bits , 23 fraction bits
+// wxFloat64 : 64 bit IEEE float ( 1 sign , 11 exponent bits , 52 fraction bits
+// wxDouble : native fastest representation that has at least wxFloat64
+// precision, so use the IEEE types for storage , and this for calculations
+
+typedef float wxFloat32 ;
+#if defined( __WXMAC__ ) && defined (__MWERKS__)
+ typedef short double wxFloat64;
+#else
+ typedef double wxFloat64;
+#endif
+
+#if defined( __WXMAC__ ) && !defined( __POWERPC__ )
+ typedef long double wxDouble;
+#else
+ typedef double wxDouble ;
+#endif
+
+// ----------------------------------------------------------------------------
+// byte ordering related definition and macros
+// ----------------------------------------------------------------------------
// byte sex
// byte swapping
+#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 ) ) ;}
+#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 };
+
+#endif
+#else // !MWERKS
#define wxUINT16_SWAP_ALWAYS(val) \
((wxUint16) ( \
(((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
(((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
-
+
#define wxINT16_SWAP_ALWAYS(val) \
((wxInt16) ( \
(((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
(((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
-
+
#define wxUINT32_SWAP_ALWAYS(val) \
((wxUint32) ( \
(((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
(((wxUint32) (val) & (wxUint32) 0x0000ff00U) << 8) | \
(((wxUint32) (val) & (wxUint32) 0x00ff0000U) >> 8) | \
(((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
-
+#endif
// machine specific byte swapping
#ifdef WORDS_BIGENDIAN
#define wxINT32_SWAP_ON_BE(val) (val)
#endif
+// ----------------------------------------------------------------------------
+// Geometric flags
+// ----------------------------------------------------------------------------
+
+enum wxGeometryCentre
+{
+ wxCENTRE = 0x0001,
+ wxCENTER = wxCENTRE
+};
+
+// centering into frame rather than screen (obsolete)
+#define wxCENTER_FRAME 0x0000
+// centre on screen rather than parent
+#define wxCENTRE_ON_SCREEN 0x0002
+#define wxCENTER_ON_SCREEN wxCENTRE_ON_SCREEN
+
+enum wxOrientation
+{
+ wxHORIZONTAL = 0x0004,
+ wxVERTICAL = 0x0008,
+
+ wxBOTH = (wxVERTICAL | wxHORIZONTAL)
+};
+
+enum wxDirection
+{
+ wxLEFT = 0x0010,
+ wxRIGHT = 0x0020,
+ wxUP = 0x0040,
+ wxDOWN = 0x0080,
+
+ wxTOP = wxUP,
+ wxBOTTOM = wxDOWN,
+
+ wxNORTH = wxUP,
+ wxSOUTH = wxDOWN,
+ wxWEST = wxLEFT,
+ wxEAST = wxRIGHT,
+
+ wxALL = (wxUP | wxDOWN | wxRIGHT | wxLEFT)
+};
+
+enum wxAlignment
+{
+ wxALIGN_NOT = 0x0000,
+ wxALIGN_CENTER_HORIZONTAL = 0x0100,
+ wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL,
+ wxALIGN_LEFT = wxALIGN_NOT,
+ wxALIGN_TOP = wxALIGN_NOT,
+ wxALIGN_RIGHT = 0x0200,
+ wxALIGN_BOTTOM = 0x0400,
+ wxALIGN_CENTER_VERTICAL = 0x0800,
+ wxALIGN_CENTRE_VERTICAL = wxALIGN_CENTER_VERTICAL,
+
+ wxALIGN_CENTER = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL),
+ wxALIGN_CENTRE = wxALIGN_CENTER
+};
+
+enum wxStretch
+{
+ wxSTRETCH_NOT = 0x0000,
+ wxSHRINK = 0x1000,
+ wxGROW = 0x2000,
+ wxEXPAND = wxGROW,
+ wxSHAPED = 0x4000
+};
+
// ----------------------------------------------------------------------------
// Window style flags
// ----------------------------------------------------------------------------
#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
#define wxWANTS_CHARS 0x00040000
// Make window retained (mostly Motif, I think)
-#define wxRETAINED 0x0002000
+#define wxRETAINED 0x00020000
#define wxBACKINGSTORE wxRETAINED
+// 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
*/
#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)
+# define wxDEFAULT_DIALOG_STYLE (wxCAPTION|wxTHICK_FRAME)
#endif
/*
/*
* 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
*/
// use native docking
#define wxMB_DOCKABLE 0x0001
-// make all menus tearoff menus, even if not set on per-menu basis
-#define wxMB_TEAROFF 0x0002
/*
* wxMenu style flags
* 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.
#define wxFIXED_LENGTH 0x0400
-#define wxALIGN_LEFT 0x0000
-#define wxALIGN_CENTER 0x0100
-#define wxALIGN_CENTRE 0x0100
-#define wxALIGN_RIGHT 0x0200
/*
* Styles for wxListBox
/*
* 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
+// this style means to use RICHEDIT control and does something only under wxMSW
+// and Win32 and is silently ignored under all other platforms
+#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
#define wxCB_DROPDOWN 0x0020
/*
- * wxRadioBox/wxRadioButton style flags
+ * wxRadioBox style flags
*/
-
// New, more intuitive names to specify majorDim argument
-// Same as wxRA_HORIZONTAL
-#define wxRA_SPECIFY_COLS 0x0001
-// Same as wxRA_VERTICAL
-#define wxRA_SPECIFY_ROWS 0x0002
-
+#define wxRA_SPECIFY_COLS wxHORIZONTAL
+#define wxRA_SPECIFY_ROWS wxVERTICAL
// Old names for compatibility
#define wxRA_HORIZONTAL wxHORIZONTAL
#define wxRA_VERTICAL wxVERTICAL
+
+/*
+ * wxRadioButton style flag
+ */
#define wxRB_GROUP 0x0004
/*
* wxGauge flags
*/
-#define wxGA_PROGRESSBAR 0x0004
#define wxGA_HORIZONTAL wxHORIZONTAL
#define wxGA_VERTICAL wxVERTICAL
+#define wxGA_PROGRESSBAR 0x0010
// Windows only
-#define wxGA_SMOOTH 0x0008
+#define wxGA_SMOOTH 0x0020
/*
* wxSlider flags
*/
-#define wxSL_HORIZONTAL wxHORIZONTAL
-#define wxSL_VERTICAL wxVERTICAL
+#define wxSL_HORIZONTAL wxHORIZONTAL // 4
+#define wxSL_VERTICAL wxVERTICAL // 8
// The next one is obsolete - use scroll events instead
#define wxSL_NOTIFY_DRAG 0x0000
-#define wxSL_AUTOTICKS 0x0008
+#define wxSL_AUTOTICKS 0x0010
// #define wxSL_MANUALTICKS 0x0010
#define wxSL_LABELS 0x0020
#define wxSL_LEFT 0x0040
#define wxTR_SINGLE 0x0000
#define wxTR_MULTIPLE 0x0020
#define wxTR_EXTENDED 0x0040
-#define wxTR_HAS_VARIABLE_ROW_HIGHT 0x0080
+#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080
/*
* wxListCtrl flags
/*
* wxSpinButton flags
*/
-#define wxSP_VERTICAL 0x0004
-#define wxSP_HORIZONTAL 0x0008
-#define wxSP_ARROW_KEYS 0x0010
-#define wxSP_WRAP 0x0020
+#define wxSP_HORIZONTAL wxHORIZONTAL // 4
+#define wxSP_VERTICAL wxVERTICAL // 8
+#define wxSP_ARROW_KEYS 0x0010
+#define wxSP_WRAP 0x0020
/*
* wxSplitterWindow flags
*/
-#define wxSP_NOBORDER 0x0000
-#define wxSP_3D 0x0004
-#define wxSP_BORDER 0x0008
-#define wxSP_PERMIT_UNSPLIT 0x0010
-#define wxSP_LIVE_UPDATE 0x0020
+#define wxSP_NOBORDER 0x0000
+#define wxSP_3D 0x0010
+#define wxSP_BORDER 0x0020
+#define wxSP_PERMIT_UNSPLIT 0x0040
+#define wxSP_LIVE_UPDATE 0x0080
/*
* wxFrame extra flags
* wxTabCtrl flags
*/
#define wxTC_MULTILINE 0x0000
-#define wxTC_RIGHTJUSTIFY 0x0004
-#define wxTC_FIXEDWIDTH 0x0008
-#define wxTC_OWNERDRAW 0x0010
+#define wxTC_RIGHTJUSTIFY 0x0010
+#define wxTC_FIXEDWIDTH 0x0020
+#define wxTC_OWNERDRAW 0x0040
/*
* wxNotebook flags
*/
-#define wxNB_FIXEDWIDTH 0x0008
+#define wxNB_FIXEDWIDTH 0x0010
+#define wxNB_LEFT 0x0020
+#define wxNB_RIGHT 0x0040
+#define wxNB_BOTTOM 0x0080
/*
* wxStatusBar95 flags
*/
-#define wxST_SIZEGRIP 0x0002
+#define wxST_SIZEGRIP 0x0010
+
+/*
+ * wxStaticText flags
+ */
+#define wxST_NO_AUTORESIZE 0x0001
/*
* wxStaticLine flags
#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
+ */
+#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
+ * extended dialog specifiers. these values are stored in a different
* flag and thus do not overlap with other style flags. note that these
* values do not correspond to the return values of the dialogs (for
- * those values, look at the wxID_XXX defines).
+ * those values, look at the wxID_XXX defines).
*/
-#define wxOK 0x00000001
-#define wxYES_NO 0x00000002
-#define wxCANCEL 0x00000004
-#define wxYES 0x00000008
-#define wxNO 0x00000010
-#define wxNO_DEFAULT 0x00000020
+
+// wxCENTRE already defined as 0x00000001
+#define wxOK 0x00000004
+#define wxYES_NO 0x00000008
+#define wxCANCEL 0x00000010
+#define wxYES 0x00000020
+#define wxNO 0x00000040
+#define wxNO_DEFAULT 0x00000080
#define wxYES_DEFAULT 0x00000000 // has no effect
-#define wxICON_EXCLAMATION 0x00000040
-#define wxICON_HAND 0x00000080
+#define wxICON_EXCLAMATION 0x00000100
+#define wxICON_HAND 0x00000200
#define wxICON_WARNING wxICON_EXCLAMATION
#define wxICON_ERROR wxICON_HAND
-#define wxICON_QUESTION 0x00000100
-#define wxICON_INFORMATION 0x00000200
+#define wxICON_QUESTION 0x00000400
+#define wxICON_INFORMATION 0x00000800
#define wxICON_STOP wxICON_HAND
#define wxICON_ASTERISK wxICON_INFORMATION
-#define wxICON_MASK (0x00000040|0x00000080|0x00000100|0x00000200)
+#define wxICON_MASK (0x00000100|0x00000200|0x00000400|0x00000800)
-#define wxCENTRE 0x00000400
-#define wxCENTER wxCENTRE
-
-#define wxFORWARD 0x00000800
-#define wxBACKWARD 0x00001000
-#define wxRESET 0x00002000
-#define wxHELP 0x00004000
-#define wxMORE 0x00008000
-#define wxSETUP 0x00010000
+#define wxFORWARD 0x00001000
+#define wxBACKWARD 0x00002000
+#define wxRESET 0x00004000
+#define wxHELP 0x00008000
+#define wxMORE 0x00010000
+#define wxSETUP 0x00020000
// ----------------------------------------------------------------------------
// standard IDs
// ----------------------------------------------------------------------------
+// id for a separator line in the menu (invalid for normal item)
+#define wxID_SEPARATOR (-1)
+
+// this one is for compatibility only, don't use in new code
+#ifndef ID_SEPARATOR
+ #define ID_SEPARATOR wxID_SEPARATOR
+#endif
+
// Standard menu IDs
#define wxID_LOWEST 4999
#define wxID_SETUP 5110
#define wxID_RESET 5111
+// IDs used by generic file dialog (11 consecutive starting from this value)
+#define wxID_FILEDLGG 5900
#define wxID_HIGHEST 5999
-// ----------------------------------------------------------------------------
-// Orientations and directions
-// ----------------------------------------------------------------------------
-
-enum wxOrientation
-{
- wxHORIZONTAL = 0x0001,
- wxVERTICAL = 0x0002,
- wxBOTH = (wxVERTICAL | wxHORIZONTAL)
-};
-
-enum wxDirection
-{
- wxLEFT = 0x0010,
- wxRIGHT = 0x0020,
- wxUP = 0x0040,
- wxDOWN = 0x0080
-};
-
-// wxCENTRE = 0x0400 (defined above)
-
-// centering into frame rather than screen
-#define wxCENTER_FRAME 0x0004
-
-
// ----------------------------------------------------------------------------
// Possible SetSize flags
// ----------------------------------------------------------------------------
// 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,
#define wxTOOL_LEFT 3
#define wxTOOL_RIGHT 4
-
+// the values of the format constants should be the same as correspondign
+// CF_XXX constants in Windows API
enum wxDataFormatId
{
- wxDF_INVALID = 0,
- wxDF_TEXT = 1, /* CF_TEXT */
- wxDF_BITMAP = 2, /* CF_BITMAP */
- wxDF_METAFILE = 3, /* CF_METAFILEPICT */
- wxDF_SYLK = 4,
- wxDF_DIF = 5,
- wxDF_TIFF = 6,
- wxDF_OEMTEXT = 7, /* CF_OEMTEXT */
- wxDF_DIB = 8, /* CF_DIB */
- wxDF_PALETTE = 9,
- wxDF_PENDATA = 10,
- wxDF_RIFF = 11,
- wxDF_WAVE = 12,
- wxDF_UNICODETEXT = 13,
- wxDF_ENHMETAFILE = 14,
- wxDF_FILENAME = 15, /* CF_HDROP */
- wxDF_LOCALE = 16,
- wxDF_PRIVATE = 20,
- wxDF_MAX
+ wxDF_INVALID = 0,
+ wxDF_TEXT = 1, /* CF_TEXT */
+ wxDF_BITMAP = 2, /* CF_BITMAP */
+ wxDF_METAFILE = 3, /* CF_METAFILEPICT */
+ wxDF_SYLK = 4,
+ wxDF_DIF = 5,
+ wxDF_TIFF = 6,
+ wxDF_OEMTEXT = 7, /* CF_OEMTEXT */
+ wxDF_DIB = 8, /* CF_DIB */
+ wxDF_PALETTE = 9,
+ wxDF_PENDATA = 10,
+ wxDF_RIFF = 11,
+ wxDF_WAVE = 12,
+ wxDF_UNICODETEXT = 13,
+ wxDF_ENHMETAFILE = 14,
+ wxDF_FILENAME = 15, /* CF_HDROP */
+ wxDF_LOCALE = 16,
+ wxDF_PRIVATE = 20,
+ wxDF_MAX
};
/* Virtual keycodes */
wxPRINT_MODE_PRINTER = 3 // Send to printer
} wxPrintMode;
+// ---------------------------------------------------------------------------
+// Macro to specify "All Files" on different platforms
+// ---------------------------------------------------------------------------
+#if defined(__WXMSW__)
+# define wxALL_FILES_PATTERN "*.*"
+# define wxALL_FILES gettext_noop("All files (*.*)|*.*")
+#else
+# 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
// platform specific (implementation) parts of the headers
// ---------------------------------------------------------------------------
-#ifdef __WXMSW__
-// Stand-ins for Windows types, to avoid #including all of windows.h
+#ifdef __WXMAC__
+
+typedef WindowPtr WXHWND;
+typedef Handle WXHANDLE;
+typedef CIconHandle WXHICON;
+//typedef unsigned long WXHFONT;
+typedef MenuHandle WXHMENU;
+//typedef unsigned long WXHPEN;
+//typedef unsigned long WXHBRUSH;
+//typedef unsigned long WXHPALETTE;
+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 unsigned int WXUINT;
+typedef unsigned long WXDWORD;
+typedef unsigned short WXWORD;
+//typedef unsigned int WXWPARAM;
+//typedef long WXLPARAM;
+typedef RGBColor WXCOLORREF;
+//typedef void * WXRGNDATA;
+//typedef void * WXMSG;
+//typedef unsigned long WXHCONV;
+//typedef unsigned long WXHKEY;
+//typedef void * WXDRAWITEMSTRUCT;
+//typedef void * WXMEASUREITEMSTRUCT;
+//typedef void * WXLPCREATESTRUCT;
+typedef int (*WXFARPROC)();
+
+typedef WindowPtr WXWindow;
+typedef ControlHandle WXWidget;
+
+#endif
+
+#if defined(__WXMSW__) || defined(__WXPM__)
+// 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;
typedef unsigned long WXHICON;
typedef unsigned int WXUINT;
typedef unsigned long WXDWORD;
typedef unsigned short WXWORD;
+#ifdef __WXMSW__
typedef unsigned int WXWPARAM;
typedef long WXLPARAM;
+#else
+# define WXWPARAM MPARAM
+# define WXLPARAM MPARAM
+# define RECT RECTL
+# define LOGFONT FATTRS
+# define LOWORD SHORT1FROMMP
+# define HIWORD SHORT2FROMMP
+#endif // __WXMSW__
typedef unsigned long WXCOLORREF;
typedef void * WXRGNDATA;
typedef void * WXMSG;
typedef void * WXMEASUREITEMSTRUCT;
typedef void * WXLPCREATESTRUCT;
+#if defined(__WXPM__)
+typedef unsigned long WXMPARAM;
+typedef unsigned long WXMSGID;
+typedef void* WXRESULT;
+typedef int (*WXFARPROC)();
+// some windows handles not defined by PM
+typedef unsigned long HANDLE;
+typedef unsigned long HICON;
+typedef unsigned long HFONT;
+typedef unsigned long HMENU;
+typedef unsigned long HPEN;
+typedef unsigned long HBRUSH;
+typedef unsigned long HPALETTE;
+typedef unsigned long HCURSOR;
+typedef unsigned long HINSTANCE;
+typedef unsigned long HIMAGELIST;
+typedef unsigned long HGLOBAL;
+typedef unsigned long DWORD;
+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)))
+
+typedef unsigned long COLORREF;
+#define GetBValue(rgb) ((BYTE)((rgb) >> 16))
+#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
+#define GetRValue(rgb) ((BYTE)(rgb))
+#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
+#define PALETTERGB(r,g,b) (0x02000000 | OS2RGB(r,g,b))
+// OS2's RGB/RGB2 is backwards from this
+typedef struct tagPALETTEENTRY
+{
+ char bRed;
+ char bGreen;
+ char bBlue;
+ char bFlags;
+} PALETTEENTRY;
+typedef struct tagLOGPALETTE
+{
+ WORD palVersion;
+ WORD palNumentries;
+ WORD PALETTEENTRY[1];
+} LOGPALETTE;
+#endif //__WXPM__
+
#if defined(__GNUWIN32__) || defined(__WXWINE__)
typedef int (*WXFARPROC)();
#elif defined(__WIN32__)
#endif
typedef WXHWND WXWidget;
+
+#if defined(__BORLANDC__) && !defined(__WIN32__)
+#ifndef LPTSTR
+#define LPTSTR LPSTR
+#endif
+#ifndef LPCTSTR
+#define LPCTSTR LPSTR
+#endif
+#endif
+
+// the keywords needed for WinMain() declaration
+#ifdef __WIN16__
+ #ifndef FAR
+ #ifdef __VISUALC__
+ #define FAR __far
+ #else // !VC++
+ #define FAR _far
+ #endif
+ #endif // no FAR
+#else // Win32
+ #ifndef FAR
+ #define FAR
+ #endif
+#endif // Win16/32
+
#endif // MSW
#ifdef __WXMOTIF__
typedef unsigned guint;
typedef unsigned long gulong;
typedef void* gpointer;
+typedef struct _GSList GSList;
/* Stand-ins for GDK types */
typedef gulong GdkAtom;
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;
+#ifdef HAVE_XIM
+typedef struct _GdkIC GdkIC;
+typedef struct _GdkICAttr GdkICAttr;
+#endif
/* Stand-ins for GTK types */
typedef struct _GtkWidget GtkWidget;
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