// OS
#if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \
defined(__LINUX__) || defined(__sgi ) || \
- defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX)
+ defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
+ defined(__EMX__)
#ifndef __UNIX__
#define __UNIX__
#endif
#endif // Sun
- #ifdef __hpux
+ #if defined(__hpux) && !defined(__HPUX__)
#define __HPUX__
#endif // HP-UX
#ifdef __VISUALC__
# 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:4134) // conversion between pointers to members of same class
+# pragma warning(disable:4135) // conversion between different integral types
+# pragma warning(disable:4769) // assignment of near pointer to long integer
+#endif
#endif // __VISUALC__
// suppress some Salford C++ warnings
//////////////////////////////////////////////////////////////////////////////////
// Currently Only MS-Windows/NT, XView and Motif are supported
//
-#if defined(__HPUX__) && !defined(__WXMOTIF__)
-# define __WXMOTIF__
+#if defined(__HPUX__) && !defined(__WXGTK__)
+ #ifndef __WXMOTIF__
+ #define __WXMOTIF__
+ #endif // __WXMOTIF__
#endif
+
#if defined(__WXMOTIF__)
-# define __X__
+ #define __X__
#endif
#ifdef __WXMSW__
#define __WIN32__
#endif
+#ifdef __WXWINE__
+ #ifndef __WIN32__
+ #define __WIN32__
+ #endif
+ #ifndef __WIN95__
+ #define __WIN95__
+ #endif
+ #ifndef STRICT
+ #define STRICT
+ #endif
+#endif
+
#ifndef __WIN32__
#define __WIN16__
#endif
// in VC++ 4.2 the bool keyword is reserved (hence can't be typedefed)
// but not implemented, so we must #define it
#define bool unsigned int
+ #elif defined(__VISUALC__) && (__VISUALC__ == 1010)
+ // For VisualC++ 4.1, we need to define
+ // bool as something between 4.0 & 5.0...
+ typedef unsigned int wxbool;
+ #define bool wxbool
+ #define HAVE_BOOL
#elif defined(__VISUALC__) && (__VISUALC__ > 1020)
// VC++ supports bool since 4.2
#define HAVE_BOOL
#elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
// Watcom 11+ supports bool
#define HAVE_BOOL
+ #elif defined(__GNUWIN32__)
+ // Cygwin supports bool
+ #define HAVE_BOOL
#endif // compilers
#endif // HAVE_BOOL
typedef unsigned int bool;
#endif // bool
-typedef unsigned char wxByte;
typedef short int WXTYPE;
+
+// special care should be taken with this type under Windows where the real
+// window id is unsigned, so we must always do the cast before comparing them
+// (or else they would be always different!). Usign wxGetWindowId() which does
+// the cast itself is recommended. Note that this type can't be unsigned
+// because -1 is a valid (and largely used) value for window id.
typedef int wxWindowID;
// Macro to cut down on compiler warnings.
// Callback function type definition
typedef void (*wxFunction) (wxObject&, wxEvent&);
+// ----------------------------------------------------------------------------
+// machine specific settings
+// ----------------------------------------------------------------------------
+
+// fixed length types
+
+typedef char signed wxInt8;
+typedef char unsigned wxUint8;
+
+#ifdef __WIN16__
+typedef int signed wxInt16;
+typedef int unsigned wxUint16;
+typedef long signed wxInt32;
+typedef long unsigned wxUint32;
+#endif
+
+#ifdef __WIN32__
+typedef short signed wxInt16;
+typedef short unsigned wxUint16;
+typedef int signed wxInt32;
+typedef int unsigned wxUint32;
+#endif
+
+#ifdef __WXMAC__
+typedef short signed wxInt16;
+typedef short unsigned wxUint16;
+typedef int signed wxInt32;
+typedef int unsigned wxUint32;
+#endif
+
+#ifdef __WXOS2__
+typedef short signed wxInt16;
+typedef short unsigned wxUint16;
+typedef int signed wxInt32;
+typedef int unsigned wxUint32;
+#endif
+
+#if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXOS2__)
+ #if defined(SIZEOF_INT)
+ #if (SIZEOF_SHORT == 2)
+ typedef short signed wxInt16;
+ typedef short unsigned wxUint16;
+ #else
+ #error "FIXME"
+ #endif
+ #if (SIZEOF_INT == 4)
+ typedef int signed wxInt32;
+ typedef int unsigned wxUint32;
+ #else
+ #error "FIXME"
+ #endif
+ #else
+ typedef short signed wxInt16;
+ typedef short unsigned wxUint16;
+ typedef int signed wxInt32;
+ typedef int unsigned wxUint32;
+ #endif
+#endif
+
+typedef wxUint8 wxByte;
+typedef wxUint16 wxWord;
+
+// byte sex
+
+#define wxBIG_ENDIAN 4321
+#define wxLITTLE_ENDIAN 1234
+#define wxPDP_ENDIAN 3412
+
+#ifdef WORDS_BIGENDIAN
+#define wxBYTE_ORDER wxBIG_ENDIAN
+#else
+#define wxBYTE_ORDER wxLITTLE_ENDIAN
+#endif
+
+// byte swapping
+
+#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)))
+
+#define wxINT32_SWAP_ALWAYS(val) \
+ ((wxInt32) ( \
+ (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
+ (((wxUint32) (val) & (wxUint32) 0x0000ff00U) << 8) | \
+ (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >> 8) | \
+ (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
+
+// machine specific byte swapping
+
+#ifdef WORDS_BIGENDIAN
+ #define wxUINT16_SWAP_ON_BE(val) wxUINT16_SWAP_ALWAYS(val)
+ #define wxINT16_SWAP_ON_BE(val) wxINT16_SWAP_ALWAYS(val)
+ #define wxUINT16_SWAP_ON_LE(val) (val)
+ #define wxINT16_SWAP_ON_LE(val) (val)
+ #define wxUINT32_SWAP_ON_BE(val) wxUINT32_SWAP_ALWAYS(val)
+ #define wxINT32_SWAP_ON_BE(val) wxINT32_SWAP_ALWAYS(val)
+ #define wxUINT32_SWAP_ON_LE(val) (val)
+ #define wxINT32_SWAP_ON_LE(val) (val)
+#else
+ #define wxUINT16_SWAP_ON_LE(val) wxUINT16_SWAP_ALWAYS(val)
+ #define wxINT16_SWAP_ON_LE(val) wxINT16_SWAP_ALWAYS(val)
+ #define wxUINT16_SWAP_ON_BE(val) (val)
+ #define wxINT16_SWAP_ON_BE(val) (val)
+ #define wxUINT32_SWAP_ON_LE(val) wxUINT32_SWAP_ALWAYS(val)
+ #define wxINT32_SWAP_ON_LE(val) wxINT32_SWAP_ALWAYS(val)
+ #define wxUINT32_SWAP_ON_BE(val) (val)
+ #define wxINT32_SWAP_ON_BE(val) (val)
+#endif
+
+// ----------------------------------------------------------------------------
+// Window style flags
+// ----------------------------------------------------------------------------
+
/*
- * Window style flags.
* Values are chosen so they can be |'ed in a bit list.
* Some styles are used across more than one group,
* so the values mustn't clash with others in the group.
#define wxSUNKEN_BORDER 0x08000000
#define wxRAISED_BORDER 0x04000000
#define wxBORDER 0x02000000
-#define wxSIMPLE_BORDER 0x02000000
+#define wxSIMPLE_BORDER wxBORDER
#define wxSTATIC_BORDER 0x01000000
#define wxTRANSPARENT_WINDOW 0x00100000
#define wxNO_BORDER 0x00200000
// outside of dialogs.
#define wxTAB_TRAVERSAL 0x00080000
+// Add this style if the control wants to get all keyboard messages (under
+// Windows, it won't normally get the dialog navigation key events)
+#define wxWANTS_CHARS 0x00040000
+
// Orientations
-#define wxHORIZONTAL 0x01
-#define wxVERTICAL 0x02
-#define wxBOTH (wxVERTICAL|wxHORIZONTAL)
+enum wxOrientation
+{
+ wxHORIZONTAL = 0x01,
+ wxVERTICAL = 0x02,
+ wxBOTH = (wxVERTICAL | wxHORIZONTAL)
+};
+
#define wxCENTER_FRAME 0x04 /* centering into frame rather than screen */
/*
#define wxRESIZE_BORDER 0x0040
#define wxDIALOG_MODAL 0x0020
#define wxDIALOG_MODELESS 0x0000
+/* Add for normal Windows frame behaviour */
+#define wxFRAME_FLOAT_ON_PARENT 0x0020
-#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
#endif
-#define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME)
+#define wxDEFAULT_FRAME_STYLE (wxSYSTEM_MENU|wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN)
+
+#ifdef __WXMSW__
+# define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME)
+#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)
+#endif
+
/*
* Subwindow style flags
#define wxGA_PROGRESSBAR 0x0004
#define wxGA_HORIZONTAL wxHORIZONTAL
#define wxGA_VERTICAL wxVERTICAL
+/* Windows only */
+#define wxGA_SMOOTH 0x0008
/*
* wxSlider flags
#define wxSB_VERTICAL wxVERTICAL
/*
- * wxButton flags
+ * wxButton flags (Win32 only)
*/
#define wxBU_AUTODRAW 0x0004
#define wxBU_NOAUTODRAW 0x0000
#define wxTR_EDIT_LABELS 0x0008
#define wxTR_LINES_AT_ROOT 0x0010
+#define wxTR_SINGLE 0x0000
+#define wxTR_MULTIPLE 0x0020
+#define wxTR_EXTENDED 0x0040
+#define wxTR_HAS_VARIABLE_ROW_HIGHT 0x0080
+
/*
* wxListCtrl flags
*/
#define wxSP_NOBORDER 0x0000
#define wxSP_3D 0x0004
#define wxSP_BORDER 0x0008
+#define wxSP_PERMIT_UNSPLIT 0x0010
+#define wxSP_LIVE_UPDATE 0x0020
/*
* wxFrame extra flags
#define wxST_SIZEGRIP 0x0002
+/*
+ * wxStaticLine flags
+ */
+#define wxLI_HORIZONTAL wxHORIZONTAL
+#define wxLI_VERTICAL wxVERTICAL
+
+/*
+ * wxProgressDialog flags
+ */
+#define wxPD_CAN_ABORT 0x0001
+#define wxPD_APP_MODAL 0x0002
+#define wxPD_AUTO_HIDE 0x0004
+
/*
* GDI descriptions
*/
#define wxCANCEL 0x0004
#define wxYES 0x0008
#define wxNO 0x0010
-
-#define wxICON_EXCLAMATION 0x0020
-#define wxICON_HAND 0x0040
-#define wxICON_QUESTION 0x0080
-#define wxICON_INFORMATION 0x0100
+#define wxNO_DEFAULT 0x0020
+#define wxYES_DEFAULT 0x0000 // has no effect
+#define wxICON_EXCLAMATION 0x0040
+#define wxICON_HAND 0x0080
+#define wxICON_QUESTION 0x0100
+#define wxICON_INFORMATION 0x0200
#define wxICON_STOP wxICON_HAND
#define wxICON_ASTERISK wxICON_INFORMATION
// Don't do parent client adjustments (for implementation only)
#define wxSIZE_NO_ADJUSTMENTS 0x0008
-#ifndef __WXGTK__
-
-enum wxDataFormat
+enum wxDataFormatId
{
wxDF_INVALID = 0,
wxDF_TEXT = 1, /* CF_TEXT */
wxDF_ENHMETAFILE = 14,
wxDF_FILENAME = 15, /* CF_HDROP */
wxDF_LOCALE = 16,
- wxDF_PRIVATE = 20
+ wxDF_PRIVATE = 20,
+ wxDF_MAX
};
-#endif
-
/* Virtual keycodes */
enum wxKeyCode
{
- WXK_BACK = 8,
- WXK_TAB = 9,
- WXK_RETURN = 13,
- WXK_ESCAPE = 27,
- WXK_SPACE = 32,
- WXK_DELETE = 127,
-
- WXK_START = 300,
- WXK_LBUTTON,
- WXK_RBUTTON,
- WXK_CANCEL,
- WXK_MBUTTON,
- WXK_CLEAR,
- WXK_SHIFT,
- WXK_CONTROL,
- WXK_MENU,
- WXK_PAUSE,
- WXK_CAPITAL,
- WXK_PRIOR, /* Page up */
- WXK_NEXT, /* Page down */
- WXK_END,
- WXK_HOME,
- WXK_LEFT,
- WXK_UP,
- WXK_RIGHT,
- WXK_DOWN,
- WXK_SELECT,
- WXK_PRINT,
- WXK_EXECUTE,
- WXK_SNAPSHOT,
- WXK_INSERT,
- WXK_HELP,
- WXK_NUMPAD0,
- WXK_NUMPAD1,
- WXK_NUMPAD2,
- WXK_NUMPAD3,
- WXK_NUMPAD4,
- WXK_NUMPAD5,
- WXK_NUMPAD6,
- WXK_NUMPAD7,
- WXK_NUMPAD8,
- WXK_NUMPAD9,
- WXK_MULTIPLY,
- WXK_ADD,
- WXK_SEPARATOR,
- WXK_SUBTRACT,
- WXK_DECIMAL,
- WXK_DIVIDE,
- WXK_F1,
- WXK_F2,
- WXK_F3,
- WXK_F4,
- WXK_F5,
- WXK_F6,
- WXK_F7,
- WXK_F8,
- WXK_F9,
- WXK_F10,
- WXK_F11,
- WXK_F12,
- WXK_F13,
- WXK_F14,
- WXK_F15,
- WXK_F16,
- WXK_F17,
- WXK_F18,
- WXK_F19,
- WXK_F20,
- WXK_F21,
- WXK_F22,
- WXK_F23,
- WXK_F24,
- WXK_NUMLOCK,
- WXK_SCROLL,
- WXK_PAGEUP,
- WXK_PAGEDOWN
+ WXK_BACK = 8,
+ WXK_TAB = 9,
+ WXK_RETURN = 13,
+ WXK_ESCAPE = 27,
+ WXK_SPACE = 32,
+ WXK_DELETE = 127,
+
+ WXK_START = 300,
+ WXK_LBUTTON,
+ WXK_RBUTTON,
+ WXK_CANCEL,
+ WXK_MBUTTON,
+ WXK_CLEAR,
+ WXK_SHIFT,
+ WXK_ALT,
+ WXK_CONTROL,
+ WXK_MENU,
+ WXK_PAUSE,
+ WXK_CAPITAL,
+ WXK_PRIOR, /* Page up */
+ WXK_NEXT, /* Page down */
+ WXK_END,
+ WXK_HOME,
+ WXK_LEFT,
+ WXK_UP,
+ WXK_RIGHT,
+ WXK_DOWN,
+ WXK_SELECT,
+ WXK_PRINT,
+ WXK_EXECUTE,
+ WXK_SNAPSHOT,
+ WXK_INSERT,
+ WXK_HELP,
+ WXK_NUMPAD0,
+ WXK_NUMPAD1,
+ WXK_NUMPAD2,
+ WXK_NUMPAD3,
+ WXK_NUMPAD4,
+ WXK_NUMPAD5,
+ WXK_NUMPAD6,
+ WXK_NUMPAD7,
+ WXK_NUMPAD8,
+ WXK_NUMPAD9,
+ WXK_MULTIPLY,
+ WXK_ADD,
+ WXK_SEPARATOR,
+ WXK_SUBTRACT,
+ WXK_DECIMAL,
+ WXK_DIVIDE,
+ WXK_F1,
+ WXK_F2,
+ WXK_F3,
+ WXK_F4,
+ WXK_F5,
+ WXK_F6,
+ WXK_F7,
+ WXK_F8,
+ WXK_F9,
+ WXK_F10,
+ WXK_F11,
+ WXK_F12,
+ WXK_F13,
+ WXK_F14,
+ WXK_F15,
+ WXK_F16,
+ WXK_F17,
+ WXK_F18,
+ WXK_F19,
+ WXK_F20,
+ WXK_F21,
+ WXK_F22,
+ WXK_F23,
+ WXK_F24,
+ WXK_NUMLOCK,
+ WXK_SCROLL,
+ WXK_PAGEUP,
+ WXK_PAGEDOWN,
+
+ WXK_NUMPAD_SPACE,
+ WXK_NUMPAD_TAB,
+ WXK_NUMPAD_ENTER,
+ WXK_NUMPAD_F1,
+ WXK_NUMPAD_F2,
+ WXK_NUMPAD_F3,
+ WXK_NUMPAD_F4,
+ WXK_NUMPAD_HOME,
+ WXK_NUMPAD_LEFT,
+ WXK_NUMPAD_UP,
+ WXK_NUMPAD_RIGHT,
+ WXK_NUMPAD_DOWN,
+ WXK_NUMPAD_PRIOR,
+ WXK_NUMPAD_PAGEUP,
+ WXK_NUMPAD_NEXT,
+ WXK_NUMPAD_PAGEDOWN,
+ WXK_NUMPAD_END,
+ WXK_NUMPAD_BEGIN,
+ WXK_NUMPAD_INSERT,
+ WXK_NUMPAD_DELETE,
+ WXK_NUMPAD_EQUAL,
+ WXK_NUMPAD_MULTIPLY,
+ WXK_NUMPAD_ADD,
+ WXK_NUMPAD_SEPARATOR,
+ WXK_NUMPAD_SUBTRACT,
+ WXK_NUMPAD_DECIMAL,
+ WXK_NUMPAD_DIVIDE
};
/* OS mnemonics -- Identify the running OS (useful for Windows)
#ifdef __WXMSW__
-/* Stand-ins for Windows types, to avoid
- * #including all of windows.h */
+// Stand-ins for Windows types, to avoid #including all of windows.h
typedef unsigned long WXHWND;
typedef unsigned long WXHANDLE;
typedef unsigned long WXHICON;
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)();
+
+#if defined(__GNUWIN32__) || defined(__WXWINE__)
+ typedef int (*WXFARPROC)();
#elif defined(__WIN32__)
-typedef int (__stdcall *WXFARPROC)();
+ typedef int (__stdcall *WXFARPROC)();
#else
-typedef int (*WXFARPROC)();
+ typedef int (*WXFARPROC)();
#endif
-#endif
+typedef WXHWND WXWidget;
+#endif // MSW
#ifdef __WXMOTIF__
/* Stand-ins for X/Xt/Motif types */
typedef void* WXImage;
typedef void* WXCursor;
typedef void* WXFontList;
-#endif
+#endif // Motif
#ifdef __WXGTK__
/* Stand-ins for GLIB types */
typedef struct _GtkItemFactory GtkItemFactory;
typedef struct _GtkSelectionData GtkSelectionData;
-#endif
+typedef GtkWidget *WXWidget;
+#endif // GTK
// This is required because of clashing macros in windows.h, which may be
// included before or after wxWindows classes, and therefore must be
#endif
// __WXMSW__
+// ---------------------------------------------------------------------------
+// macro to define a class without copy ctor nor assignment operator
+// ---------------------------------------------------------------------------
+
+#define DECLARE_NO_COPY_CLASS(classname) \
+ private: \
+ classname(const classname&); \
+ classname& operator=(const classname&)
+
#endif
// _WX_DEFS_H_