X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a6ab05be988523913fb6bdcb33238c83129f80ee..5b36366c59ea68056ba07a3ca1c2cd6022a59735:/include/wx/defs.h?ds=inline diff --git a/include/wx/defs.h b/include/wx/defs.h index 1eab4c5e11..1071874f0e 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -24,16 +24,25 @@ // Make sure the environment is set correctly #if defined(__WXMSW__) && defined(__X__) -#error "Target can't be both X and Windows" + #error "Target can't be both X and Windows" #elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \ !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__WXCOCOA__) && \ !defined(__X__) && !defined(__WXMGL__) && !defined(__WXX11__) && \ wxUSE_GUI -#ifdef __UNIX__ -#error "No Target! You should use wx-config program for compilation flags!" -#else // !Unix -#error "No Target! You should use supplied makefiles for compilation!" -#endif // Unix/!Unix + #ifdef __UNIX__ + #error "No Target! You should use wx-config program for compilation flags!" + #else // !Unix + #error "No Target! You should use supplied makefiles for compilation!" + #endif // Unix/!Unix +#endif + +#ifndef __WXWINDOWS__ + #define __WXWINDOWS__ 1 +#endif + +#ifndef wxUSE_BASE + // by default consider that this is a monolithic build + #define wxUSE_BASE 1 #endif #if !wxUSE_GUI && !defined(__WXBASE__) @@ -53,6 +62,7 @@ # 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 +# pragma warning(disable:4097) // typedef used as class #ifndef WIN32 # pragma warning(disable:4135) // conversion between different integral types # pragma warning(disable:4769) // assignment of near pointer to long integer @@ -349,37 +359,80 @@ typedef int wxWindowID; #define WXIMPORT #endif -// WXDLLEXPORT maps to export declaration when building the DLL, to import -// declaration if using it or to nothing at all if we don't use wxWin DLL +/* + We support building wxWindows as a set of several libraries but we don't + support arbitrary combinations of libs/DLLs: either we build all of them as + DLLs (in which case WXMAKINGDLL is defined) or none (it isn't). + + However we have a problem because we need separate WXDLLEXPORT versions for + different libraries as, for example, wxString class should be dllexported + when compiled in wxBase and dllimported otherwise, so we do define separate + WXMAKING/USINGDLL_XYZ constants for each component XYZ. + */ #ifdef WXMAKINGDLL - #define WXDLLEXPORT WXEXPORT - #define WXDLLEXPORT_DATA(type) WXEXPORT type - #define WXDLLEXPORT_CTORFN + #if wxUSE_BASE + #define WXMAKINGDLL_BASE + #endif + + #define WXMAKINGDLL_CORE + #define WXMAKINGDLL_HTML + #define WXMAKINGDLL_XML +#endif // WXMAKINGDLL + +// WXDLLEXPORT maps to export declaration when building the DLL, to import +// declaration if using it or to nothing at all if we don't use wxWin as DLL +#ifdef WXMAKINGDLL_BASE + #define WXDLLIMPEXP_BASE WXEXPORT + #define WXDLLIMPEXP_DATA_BASE(type) WXEXPORT type #elif defined(WXUSINGDLL) - #define WXDLLEXPORT WXIMPORT - #define WXDLLEXPORT_DATA(type) WXIMPORT type - #define WXDLLEXPORT_CTORFN + #define WXDLLIMPEXP_BASE WXIMPORT + #define WXDLLIMPEXP_DATA_BASE(type) WXIMPORT type #else // not making nor using DLL - #define WXDLLEXPORT - #define WXDLLEXPORT_DATA(type) type - #define WXDLLEXPORT_CTORFN + #define WXDLLIMPEXP_BASE + #define WXDLLIMPEXP_DATA_BASE(type) type #endif -// For ostream, istream ofstream -#if defined(__BORLANDC__) && defined( _RTLDLL ) -# define WXDLLIMPORT __import -#else -# define WXDLLIMPORT +#ifdef WXMAKINGDLL_CORE + #define WXDLLIMPEXP_CORE WXEXPORT + #define WXDLLIMPEXP_DATA_CORE(type) WXEXPORT type +#elif defined(WXUSINGDLL) + #define WXDLLIMPEXP_CORE WXIMPORT + #define WXDLLIMPEXP_DATA_CORE(type) WXIMPORT type +#else // not making nor using DLL + #define WXDLLIMPEXP_CORE + #define WXDLLIMPEXP_DATA_CORE(type) type #endif -#ifdef __cplusplus -class WXDLLEXPORT wxObject; -class WXDLLEXPORT wxEvent; +#ifdef WXMAKINGDLL_HTML + #define WXDLLIMPEXP_HTML WXEXPORT + #define WXDLLIMPEXP_DATA_HTML(type) WXEXPORT type +#elif defined(WXUSINGDLL) + #define WXDLLIMPEXP_HTML WXIMPORT + #define WXDLLIMPEXP_DATA_HTML(type) WXIMPORT type +#else // not making nor using DLL + #define WXDLLIMPEXP_HTML + #define WXDLLIMPEXP_DATA_HTML(type) type #endif -// symbolic constant used by all Find()-like functions returning positive -// integer on success as failure indicator -#define wxNOT_FOUND (-1) +#ifdef WXMAKINGDLL_GL + #define WXDLLIMPEXP_GL WXEXPORT +#elif defined(WXUSINGDLL) + #define WXDLLIMPEXP_GL WXIMPORT +#else // not making nor using DLL + #define WXDLLIMPEXP_GL +#endif + +#ifdef WXMAKINGDLL_XML + #define WXDLLIMPEXP_XML WXEXPORT +#elif defined(WXUSINGDLL) + #define WXDLLIMPEXP_XML WXIMPORT +#else // not making nor using DLL + #define WXDLLIMPEXP_XML +#endif + +// for backwards compatibility, define suffix-less versions too +#define WXDLLEXPORT WXDLLIMPEXP_CORE +#define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE // ---------------------------------------------------------------------------- // Very common macros @@ -452,6 +505,19 @@ class WXDLLEXPORT wxEvent; // size of statically declared array #define WXSIZEOF(array) (sizeof(array)/sizeof(array[0])) +// helper macros to be able to define unique/anonymous objects: this works by +// appending the current line number to the given identifier to reduce the +// probability of the conflict (it may still happen if this is used in the +// headers, hence you should avoid doing it or provide unique prefixes then) +#define wxCONCAT(text, line) text ## line +#define wxCONCAT_LINE2(text, line) wxCONCAT(text, line) +#define wxCONCAT_LINE(text) wxCONCAT_LINE2(text, __LINE__) +#define wxMAKE_UNIQUE_NAME(text) wxCONCAT_LINE(text) + +// symbolic constant used by all Find()-like functions returning positive +// integer on success as failure indicator +#define wxNOT_FOUND (-1) + // ---------------------------------------------------------------------------- // compiler specific settings // ---------------------------------------------------------------------------- @@ -487,11 +553,6 @@ class WXDLLEXPORT wxEvent; # endif #endif -// Callback function type definition -#ifdef __cplusplus -typedef void (*wxFunction) (wxObject&, wxEvent&); -#endif - // ---------------------------------------------------------------------------- // OS mnemonics -- Identify the running OS (useful for Windows) // ---------------------------------------------------------------------------- @@ -521,6 +582,7 @@ enum wxWIN32S, // Windows 32S API wxWIN95, // Windows 95 wxWIN386, // Watcom 32-bit supervisor modus + wxWINDOWS_CE, // Windows CE wxMGL_UNIX, // MGL with direct hardware access wxMGL_X, // MGL on X wxMGL_WIN32, // MGL on Win32 @@ -924,19 +986,10 @@ enum wxBorder #define wxSTATIC_BORDER wxBORDER_STATIC #define wxNO_BORDER wxBORDER_NONE -// Override CTL3D etc. control colour processing to allow own background -// colour. -// Override CTL3D or native 3D styles for children -#define wxNO_3D 0x00800000 - -// OBSOLETE - use wxNO_3D instead -#define wxUSER_COLOURS wxNO_3D - // wxALWAYS_SHOW_SB: instead of hiding the scrollbar when it is not needed, // disable it - but still show (see also wxLB_ALWAYS_SB style) // -// NB: as this style is only supported by wxUniversal so far as it doesn't use -// wxUSER_COLOURS/wxNO_3D, we reuse the same style value +// NB: as this style is only supported by wxUniversal and wxMSW so far #define wxALWAYS_SHOW_SB 0x00800000 // Clip children when painting, which reduces flicker in e.g. frames and @@ -999,6 +1052,12 @@ enum wxBorder // possibly be made to work in the future, at least on Windows #define wxWS_EX_THEMED_BACKGROUND 0x00000008 +// this window should always process idle events +#define wxWS_EX_PROCESS_IDLE 0x00000010 + +// this window should always process UI update events +#define wxWS_EX_PROCESS_UI_UPDATES 0x00000020 + // Use this style to add a context-sensitive help to the window (currently for // Win32 only and it doesn't work if wxMINIMIZE_BOX or wxMAXIMIZE_BOX are used) #define wxFRAME_EX_CONTEXTHELP 0x00000004 @@ -1032,7 +1091,10 @@ enum wxBorder // obsolete styles, unused any more #define wxDIALOG_MODAL 0x0020 // free flag value 0x0020 -#define wxDIALOG_MODELESS 0x0000 +#define wxDIALOG_MODELESS 0 +#define wxNO_3D 0 +#define wxUSER_COLOURS 0 + /* * MDI parent frame style flags @@ -1211,17 +1273,6 @@ enum wxBorder #define wxTC_MULTILINE wxNB_MULTILINE #define wxTC_OWNERDRAW 0x0200 -// wxToolBar style flags -#define wxTB_HORIZONTAL wxHORIZONTAL // == 0x0004 -#define wxTB_VERTICAL wxVERTICAL // == 0x0008 -#define wxTB_3DBUTTONS 0x0010 -#define wxTB_FLAT 0x0020 // supported only under Win98+/GTK -#define wxTB_DOCKABLE 0x0040 // use native docking under GTK -#define wxTB_NOICONS 0x0080 // don't show the icons -#define wxTB_TEXT 0x0100 // show the text -#define wxTB_NODIVIDER 0x0200 // don't show the divider (Windows) -#define wxTB_NOALIGN 0x0400 // no automatic alignment (Windows) - /* * wxStatusBar95 flags */ @@ -1345,6 +1396,19 @@ enum wxID_FIND, wxID_DUPLICATE, wxID_SELECTALL, + wxID_DELETE, + wxID_REPLACE, + wxID_REPLACE_ALL, + wxID_PROPERTIES, + + wxID_VIEW_DETAILS, + wxID_VIEW_LARGEICONS, + wxID_VIEW_SMALLICONS, + wxID_VIEW_LIST, + wxID_VIEW_SORTDATE, + wxID_VIEW_SORTNAME, + wxID_VIEW_SORTSIZE, + wxID_VIEW_SORTTYPE, wxID_FILE1 = 5050, wxID_FILE2, @@ -1694,6 +1758,17 @@ enum wxKeyCode WXK_WINDOWS_MENU }; +#if wxUSE_HOTKEY +enum wxHotkeyModifier +{ + wxMOD_NONE = 0, + wxMOD_ALT = 1, + wxMOD_CONTROL = 2, + wxMOD_SHIFT = 4, + wxMOD_WIN = 8 +}; +#endif + // Mapping modes (same values as used by Windows, don't change) enum { @@ -1823,6 +1898,17 @@ enum wxPrintMode wxPRINT_MODE_PRINTER = 3 // Send to printer }; +// ---------------------------------------------------------------------------- +// UpdateWindowUI flags +// ---------------------------------------------------------------------------- + +enum wxUpdateUI +{ + wxUPDATE_UI_NONE = 0x0000, + wxUPDATE_UI_RECURSE = 0x0001, + wxUPDATE_UI_FROMIDLE = 0x0002 // Invoked from On(Internal)Idle +}; + // ---------------------------------------------------------------------------- // miscellaneous // ---------------------------------------------------------------------------- @@ -1939,6 +2025,7 @@ typedef struct objc_object *WX_##klass #endif // defined(__GNUC__) && defined(__APPLE__) DECLARE_WXCOCOA_OBJC_CLASS(NSApplication); +DECLARE_WXCOCOA_OBJC_CLASS(NSBitmapImageRep); DECLARE_WXCOCOA_OBJC_CLASS(NSBox); DECLARE_WXCOCOA_OBJC_CLASS(NSButton); DECLARE_WXCOCOA_OBJC_CLASS(NSColor);