X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ff7774f191cf6c337d072c93cdb9cbceaf9176d3..0c4438d26e184e95a465b48794086df19a80b55c:/interface/wx/defs.h diff --git a/interface/wx/defs.h b/interface/wx/defs.h index 812d422968..a6f3952a68 100644 --- a/interface/wx/defs.h +++ b/interface/wx/defs.h @@ -3,25 +3,747 @@ // Purpose: interface of global functions // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// ---------------------------------------------------------------------------- +// enumerations +// ---------------------------------------------------------------------------- + +/** + Generic flags. +*/ +enum wxGeometryCentre +{ + wxCENTRE = 0x0001, + wxCENTER = wxCENTRE +}; + +/** + A generic orientation value. +*/ +enum wxOrientation +{ + wxHORIZONTAL = 0x0004, + wxVERTICAL = 0x0008, + + /** + A mask value to indicate both vertical and horizontal orientations. + */ + wxBOTH = wxVERTICAL | wxHORIZONTAL, + + /// A synonym for @c wxBOTH. + wxORIENTATION_MASK = wxBOTH +}; + +/** + A generic direction value. +*/ +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), + + /** A mask to extract direction from the combination of flags. */ + wxDIRECTION_MASK = wxALL +}; + /** - No id matches this one when compared to it. + Generic alignment values. Can be combined together. */ -int wxID_NONE = -3; +enum wxAlignment +{ + /** + A value different from any valid alignment value. + + Note that you shouldn't use 0 for this as it's the value of (valid) + alignments wxALIGN_LEFT and wxALIGN_TOP. + + @since 2.9.1 + */ + wxALIGN_INVALID = -1, + + 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, + + /** A mask to extract alignment from the combination of flags. */ + wxALIGN_MASK = 0x0f00 +}; + +/** + Miscellaneous flags for wxSizer items. +*/ +enum wxSizerFlagBits +{ + wxFIXED_MINSIZE = 0x8000, + wxRESERVE_SPACE_EVEN_IF_HIDDEN = 0x0002, + + /* a mask to extract wxSizerFlagBits from combination of flags */ + wxSIZER_FLAG_BITS_MASK = 0x8002 +}; + +/** + Generic stretch values. +*/ +enum wxStretch +{ + wxSTRETCH_NOT = 0x0000, + wxSHRINK = 0x1000, + wxGROW = 0x2000, + wxEXPAND = wxGROW, + wxSHAPED = 0x4000, + wxTILE = wxSHAPED | wxFIXED_MINSIZE, + + /* a mask to extract stretch from the combination of flags */ + wxSTRETCH_MASK = 0x7000 /* sans wxTILE */ +}; + +/** + Border flags for wxWindow. +*/ +enum wxBorder +{ + /** + This is different from wxBORDER_NONE as by default the controls do have + a border. + */ + wxBORDER_DEFAULT = 0, + + wxBORDER_NONE = 0x00200000, + wxBORDER_STATIC = 0x01000000, + wxBORDER_SIMPLE = 0x02000000, + wxBORDER_RAISED = 0x04000000, + wxBORDER_SUNKEN = 0x08000000, + wxBORDER_DOUBLE = 0x10000000, /* deprecated */ + wxBORDER_THEME = wxBORDER_DOUBLE, + + /* a mask to extract border style from the combination of flags */ + wxBORDER_MASK = 0x1f200000 +}; + +/* ---------------------------------------------------------------------------- */ +/* Possible SetSize flags */ +/* ---------------------------------------------------------------------------- */ + +/* Use internally-calculated width if -1 */ +#define wxSIZE_AUTO_WIDTH 0x0001 +/* Use internally-calculated height if -1 */ +#define wxSIZE_AUTO_HEIGHT 0x0002 +/* Use internally-calculated width and height if each is -1 */ +#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 0x0000 +/* Allow -1 as a valid position */ +#define wxSIZE_ALLOW_MINUS_ONE 0x0004 +/* Don't do parent client adjustments (for implementation only) */ +#define wxSIZE_NO_ADJUSTMENTS 0x0008 +/* Change the window position even if it seems to be already correct */ +#define wxSIZE_FORCE 0x0010 +/* Emit size event even if size didn't change */ +#define wxSIZE_FORCE_EVENT 0x0020 + +/* ---------------------------------------------------------------------------- */ +/* 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. + * Otherwise, numbers can be reused across groups. + */ + +/* + Summary of the bits used by various styles. + + High word, containing styles which can be used with many windows: + + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16| + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | \_ wxFULL_REPAINT_ON_RESIZE + | | | | | | | | | | | | | | \____ wxPOPUP_WINDOW + | | | | | | | | | | | | | \_______ wxWANTS_CHARS + | | | | | | | | | | | | \__________ wxTAB_TRAVERSAL + | | | | | | | | | | | \_____________ wxTRANSPARENT_WINDOW + | | | | | | | | | | \________________ wxBORDER_NONE + | | | | | | | | | \___________________ wxCLIP_CHILDREN + | | | | | | | | \______________________ wxALWAYS_SHOW_SB + | | | | | | | \_________________________ wxBORDER_STATIC + | | | | | | \____________________________ wxBORDER_SIMPLE + | | | | | \_______________________________ wxBORDER_RAISED + | | | | \__________________________________ wxBORDER_SUNKEN + | | | \_____________________________________ wxBORDER_{DOUBLE,THEME} + | | \________________________________________ wxCAPTION/wxCLIP_SIBLINGS + | \___________________________________________ wxHSCROLL + \______________________________________________ wxVSCROLL + + + Low word style bits is class-specific meaning that the same bit can have + different meanings for different controls (e.g. 0x10 is wxCB_READONLY + meaning that the control can't be modified for wxComboBox but wxLB_SORT + meaning that the control should be kept sorted for wxListBox, while + wxLB_SORT has a different value -- and this is just fine). + */ + +/* + * Window (Frame/dialog/subwindow/panel item) style flags + */ +#define wxVSCROLL 0x80000000 +#define wxHSCROLL 0x40000000 +#define wxCAPTION 0x20000000 + +/* New styles (border styles are now in their own enum) */ +#define wxDOUBLE_BORDER wxBORDER_DOUBLE +#define wxSUNKEN_BORDER wxBORDER_SUNKEN +#define wxRAISED_BORDER wxBORDER_RAISED +#define wxBORDER wxBORDER_SIMPLE +#define wxSIMPLE_BORDER wxBORDER_SIMPLE +#define wxSTATIC_BORDER wxBORDER_STATIC +#define wxNO_BORDER wxBORDER_NONE + +/* 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 and wxMSW so far */ +#define wxALWAYS_SHOW_SB 0x00800000 + +/* 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 + +/* Note we're reusing the wxCAPTION style because we won't need captions */ +/* for subwindows/controls */ +#define wxCLIP_SIBLINGS 0x20000000 + +#define wxTRANSPARENT_WINDOW 0x00100000 + +/* 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 */ +/* Windows, it won't normally get the dialog navigation key events) */ +#define wxWANTS_CHARS 0x00040000 + +/* Make window retained (Motif only, see src/generic/scrolwing.cpp) + * This is non-zero only under wxMotif, to avoid a clash with wxPOPUP_WINDOW + * on other platforms + */ + +#ifdef __WXMOTIF__ +#define wxRETAINED 0x00020000 +#else +#define wxRETAINED 0x00000000 +#endif +#define wxBACKINGSTORE wxRETAINED + +/* set this flag to create a special popup window: it will be always shown on */ +/* top of other windows, will capture the mouse and will be dismissed when the */ +/* mouse is clicked outside of it or if it loses focus in any other way */ +#define wxPOPUP_WINDOW 0x00020000 + +/* force a full repaint when the window is resized (instead of repainting just */ +/* the invalidated area) */ +#define wxFULL_REPAINT_ON_RESIZE 0x00010000 + +/* obsolete: now this is the default behaviour */ +/* */ +/* 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 0 + +/* A mask which can be used to filter (out) all wxWindow-specific styles. + */ +#define wxWINDOW_STYLE_MASK \ + (wxVSCROLL|wxHSCROLL|wxBORDER_MASK|wxALWAYS_SHOW_SB|wxCLIP_CHILDREN| \ + wxCLIP_SIBLINGS|wxTRANSPARENT_WINDOW|wxTAB_TRAVERSAL|wxWANTS_CHARS| \ + wxRETAINED|wxPOPUP_WINDOW|wxFULL_REPAINT_ON_RESIZE) + +/* + * 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 + +/* wxCommandEvents and the objects of the derived classes are forwarded to the */ +/* parent window and so on recursively by default. Using this flag for the */ +/* given window allows to block this propagation at this window, i.e. prevent */ +/* the events from being propagated further upwards. The dialogs have this */ +/* flag on by default. */ +#define wxWS_EX_BLOCK_EVENTS 0x00000002 + +/* don't use this window as an implicit parent for the other windows: this must */ +/* be used with transient windows as otherwise there is the risk of creating a */ +/* dialog/frame with this window as a parent which would lead to a crash if the */ +/* parent is destroyed before the child */ +#define wxWS_EX_TRANSIENT 0x00000004 + +/* don't paint the window background, we'll assume it will */ +/* be done by a theming engine. This is not yet used but could */ +/* 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 + +/* Draw the window in a metal theme on Mac */ +#define wxFRAME_EX_METAL 0x00000040 +#define wxDIALOG_EX_METAL 0x00000040 + +/* 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 wxWS_EX_CONTEXTHELP 0x00000080 + +/* synonyms for wxWS_EX_CONTEXTHELP for compatibility */ +#define wxFRAME_EX_CONTEXTHELP wxWS_EX_CONTEXTHELP +#define wxDIALOG_EX_CONTEXTHELP wxWS_EX_CONTEXTHELP + +/* Create a window which is attachable to another top level window */ +#define wxFRAME_DRAWER 0x0020 + +/* + * MDI parent frame style flags + * Can overlap with some of the above. + */ + +#define wxFRAME_NO_WINDOW_MENU 0x0100 + +/* + * wxMenuBar style flags + */ +/* use native docking */ +#define wxMB_DOCKABLE 0x0001 + +/* + * wxMenu style flags + */ +#define wxMENU_TEAROFF 0x0001 + +/* + * Apply to all panel items + */ +#define wxCOLOURED 0x0800 +#define wxFIXED_LENGTH 0x0400 + +/* + * Styles for wxListBox + */ +#define wxLB_SORT 0x0010 +#define wxLB_SINGLE 0x0020 +#define wxLB_MULTIPLE 0x0040 +#define wxLB_EXTENDED 0x0080 +/* wxLB_OWNERDRAW is Windows-only */ +#define wxLB_NEEDED_SB 0x0000 +#define wxLB_OWNERDRAW 0x0100 +#define wxLB_ALWAYS_SB 0x0200 +#define wxLB_NO_SB 0x0400 +#define wxLB_HSCROLL wxHSCROLL +/* always show an entire number of rows */ +#define wxLB_INT_HEIGHT 0x0800 + +/* + * wxComboBox style flags + */ +#define wxCB_SIMPLE 0x0004 +#define wxCB_SORT 0x0008 +#define wxCB_READONLY 0x0010 +#define wxCB_DROPDOWN 0x0020 + +/* + * wxRadioBox style flags + */ +/* should we number the items from left to right or from top to bottom in a 2d */ +/* radiobox? */ +#define wxRA_LEFTTORIGHT 0x0001 +#define wxRA_TOPTOBOTTOM 0x0002 + +/* New, more intuitive names to specify majorDim argument */ +#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 +#define wxRB_SINGLE 0x0008 + +/* + * wxScrollBar flags + */ +#define wxSB_HORIZONTAL wxHORIZONTAL +#define wxSB_VERTICAL wxVERTICAL + +/* + * wxSpinButton flags. + * Note that a wxSpinCtrl is sometimes defined as a wxTextCtrl, and so the + * flags shouldn't overlap with wxTextCtrl flags that can be used for a single + * line controls (currently we reuse wxTE_CHARWRAP and wxTE_RICH2 neither of + * which makes sense for them). + */ +#define wxSP_HORIZONTAL wxHORIZONTAL /* 4 */ +#define wxSP_VERTICAL wxVERTICAL /* 8 */ +#define wxSP_ARROW_KEYS 0x4000 +#define wxSP_WRAP 0x8000 + +/* + * wxTabCtrl flags + */ +#define wxTC_RIGHTJUSTIFY 0x0010 +#define wxTC_FIXEDWIDTH 0x0020 +#define wxTC_TOP 0x0000 /* default */ +#define wxTC_LEFT 0x0020 +#define wxTC_RIGHT 0x0040 +#define wxTC_BOTTOM 0x0080 +#define wxTC_MULTILINE 0x0200 /* == wxNB_MULTILINE */ +#define wxTC_OWNERDRAW 0x0400 + +/* + * wxStaticBitmap flags + */ +#define wxBI_EXPAND wxEXPAND + +/* + * wxStaticLine flags + */ +#define wxLI_HORIZONTAL wxHORIZONTAL +#define wxLI_VERTICAL wxVERTICAL + + +/* + * 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). + */ + +/* wxCENTRE already defined as 0x00000001 */ +#define wxYES 0x00000002 +#define wxOK 0x00000004 +#define wxNO 0x00000008 +#define wxYES_NO (wxYES | wxNO) +#define wxCANCEL 0x00000010 +#define wxAPPLY 0x00000020 +#define wxCLOSE 0x00000040 + +#define wxOK_DEFAULT 0x00000000 /* has no effect (default) */ +#define wxYES_DEFAULT 0x00000000 /* has no effect (default) */ +#define wxNO_DEFAULT 0x00000080 /* only valid with wxYES_NO */ +#define wxCANCEL_DEFAULT 0x80000000 /* only valid with wxCANCEL */ + +#define wxICON_EXCLAMATION 0x00000100 +#define wxICON_HAND 0x00000200 +#define wxICON_WARNING wxICON_EXCLAMATION +#define wxICON_ERROR wxICON_HAND +#define wxICON_QUESTION 0x00000400 +#define wxICON_INFORMATION 0x00000800 +#define wxICON_STOP wxICON_HAND +#define wxICON_ASTERISK wxICON_INFORMATION + +#define wxHELP 0x00001000 +#define wxFORWARD 0x00002000 +#define wxBACKWARD 0x00004000 +#define wxRESET 0x00008000 +#define wxMORE 0x00010000 +#define wxSETUP 0x00020000 +#define wxICON_NONE 0x00040000 + +#define wxICON_MASK \ + (wxICON_EXCLAMATION|wxICON_HAND|wxICON_QUESTION|wxICON_INFORMATION|wxICON_NONE) + + +/* symbolic constant used by all Find()-like functions returning positive */ +/* integer on success as failure indicator */ +#define wxNOT_FOUND (-1) /** - Id for a separator line in the menu (invalid for normal item). + Background styles. + + @see wxWindow::SetBackgroundStyle() */ -int wxID_SEPARATOR = -2; +enum wxBackgroundStyle +{ + /** + Default background style value indicating that the background may be + erased in the user-defined EVT_ERASE_BACKGROUND handler. + + If no such handler is defined (or if it skips the event), the effect of + this style is the same as wxBG_STYLE_SYSTEM. If an empty handler (@em + not skipping the event) is defined, the effect is the same as + wxBG_STYLE_PAINT, i.e. the background is not erased at all until + EVT_PAINT handler is executed. + + This is the only background style value for which erase background + events are generated at all. + */ + wxBG_STYLE_ERASE, + + /** + Use the default background, as determined by the system or the current + theme. + + If the window has been assigned a non-default background colour, it + will be used for erasing its background. Otherwise the default + background (which might be a gradient or a pattern) will be used. + + EVT_ERASE_BACKGROUND event will not be generated at all for windows + with this style. + */ + wxBG_STYLE_SYSTEM, + + /** + Indicates that the background is only erased in the user-defined + EVT_PAINT handler. + + Using this style avoids flicker which would result from redrawing the + background twice if the EVT_PAINT handler entirely overwrites it. It + must not be used however if the paint handler leaves any parts of the + window unpainted as their contents is then undetermined. Only use it if + you repaint the whole window in your handler. + + EVT_ERASE_BACKGROUND event will not be generated at all for windows + with this style. + */ + wxBG_STYLE_PAINT, + + /* this style is deprecated and doesn't do anything, don't use */ + wxBG_STYLE_COLOUR, + + /** + Indicates that the window background is not erased, letting the parent + window show through. + + Currently this style is only supported in wxOSX and wxGTK with + compositing available, see wxWindow::IsTransparentBackgroundSupported(). + */ + wxBG_STYLE_TRANSPARENT, +}; + /** - Any id: means that we don't care about the id, whether when installing - an event handler or when creating a new window. + Standard IDs. + + Notice that some, but @em not all, of these IDs are also stock IDs, i.e. + you can use them for the button or menu items without specifying the label + which will be provided by the underlying platform itself. See @ref page_stockitems "the + list of stock items" for the subset of standard IDs which are stock IDs as well. */ -int wxID_ANY = -1; +enum wxStandardID +{ + /** + This id delimits the lower bound of the range used by automatically-generated ids + (i.e. those used when wxID_ANY is specified during construction). + */ + wxID_AUTO_LOWEST, + + /** + This id delimits the upper bound of the range used by automatically-generated ids + (i.e. those used when wxID_ANY is specified during construction). + */ + wxID_AUTO_HIGHEST, + + /** + No id matches this one when compared to it. + */ + wxID_NONE = -3, + + /** + Id for a separator line in the menu (invalid for normal item). + */ + wxID_SEPARATOR = -2, + + /** + Any id: means that we don't care about the id, whether when installing + an event handler or when creating a new window. + */ + wxID_ANY = -1, + + wxID_LOWEST = 4999, + + wxID_OPEN, + wxID_CLOSE, + wxID_NEW, + wxID_SAVE, + wxID_SAVEAS, + wxID_REVERT, + wxID_EXIT, + wxID_UNDO, + wxID_REDO, + wxID_HELP, + wxID_PRINT, + wxID_PRINT_SETUP, + wxID_PAGE_SETUP, + wxID_PREVIEW, + wxID_ABOUT, + wxID_HELP_CONTENTS, + wxID_HELP_INDEX, + wxID_HELP_SEARCH, + wxID_HELP_COMMANDS, + wxID_HELP_PROCEDURES, + wxID_HELP_CONTEXT, + wxID_CLOSE_ALL, + wxID_PREFERENCES, + + wxID_EDIT = 5030, + wxID_CUT, + wxID_COPY, + wxID_PASTE, + wxID_CLEAR, + 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_FILE = 5050, + wxID_FILE1, + wxID_FILE2, + wxID_FILE3, + wxID_FILE4, + wxID_FILE5, + wxID_FILE6, + wxID_FILE7, + wxID_FILE8, + wxID_FILE9, + + /** Standard button and menu IDs */ + wxID_OK = 5100, + wxID_CANCEL, + wxID_APPLY, + wxID_YES, + wxID_NO, + wxID_STATIC, + wxID_FORWARD, + wxID_BACKWARD, + wxID_DEFAULT, + wxID_MORE, + wxID_SETUP, + wxID_RESET, + wxID_CONTEXT_HELP, + wxID_YESTOALL, + wxID_NOTOALL, + wxID_ABORT, + wxID_RETRY, + wxID_IGNORE, + wxID_ADD, + wxID_REMOVE, + + wxID_UP, + wxID_DOWN, + wxID_HOME, + wxID_REFRESH, + wxID_STOP, + wxID_INDEX, + + wxID_BOLD, + wxID_ITALIC, + wxID_JUSTIFY_CENTER, + wxID_JUSTIFY_FILL, + wxID_JUSTIFY_RIGHT, + wxID_JUSTIFY_LEFT, + wxID_UNDERLINE, + wxID_INDENT, + wxID_UNINDENT, + wxID_ZOOM_100, + wxID_ZOOM_FIT, + wxID_ZOOM_IN, + wxID_ZOOM_OUT, + wxID_UNDELETE, + wxID_REVERT_TO_SAVED, + wxID_CDROM, + wxID_CONVERT, + wxID_EXECUTE, + wxID_FLOPPY, + wxID_HARDDISK, + wxID_BOTTOM, + wxID_FIRST, + wxID_LAST, + wxID_TOP, + wxID_INFO, + wxID_JUMP_TO, + wxID_NETWORK, + wxID_SELECT_COLOR, + wxID_SELECT_FONT, + wxID_SORT_ASCENDING, + wxID_SORT_DESCENDING, + wxID_SPELL_CHECK, + wxID_STRIKETHROUGH, + + /** System menu IDs (used by wxUniv): */ + wxID_SYSTEM_MENU = 5200, + wxID_CLOSE_FRAME, + wxID_MOVE_FRAME, + wxID_RESIZE_FRAME, + wxID_MAXIMIZE_FRAME, + wxID_ICONIZE_FRAME, + wxID_RESTORE_FRAME, + + /** MDI window menu ids */ + wxID_MDI_WINDOW_FIRST = 5230, + wxID_MDI_WINDOW_CASCADE = wxID_MDI_WINDOW_FIRST, + wxID_MDI_WINDOW_TILE_HORZ, + wxID_MDI_WINDOW_TILE_VERT, + wxID_MDI_WINDOW_ARRANGE_ICONS, + wxID_MDI_WINDOW_PREV, + wxID_MDI_WINDOW_NEXT, + wxID_MDI_WINDOW_LAST = wxID_MDI_WINDOW_NEXT, + + /** IDs used by generic file dialog (13 consecutive starting from this value) */ + wxID_FILEDLGG = 5900, + + /** IDs used by generic file ctrl (4 consecutive starting from this value) */ + wxID_FILECTRL = 5950, + + wxID_HIGHEST = 5999 +}; /** Item kinds for use with wxMenu, wxMenuItem, and wxToolBar. @@ -65,6 +787,263 @@ enum wxItemKind wxITEM_MAX }; +/** + Generic hit test results. +*/ +enum wxHitTest +{ + wxHT_NOWHERE, + + /* scrollbar */ + wxHT_SCROLLBAR_FIRST = wxHT_NOWHERE, + wxHT_SCROLLBAR_ARROW_LINE_1, /**< left or upper arrow to scroll by line */ + wxHT_SCROLLBAR_ARROW_LINE_2, /**< right or down */ + wxHT_SCROLLBAR_ARROW_PAGE_1, /**< left or upper arrow to scroll by page */ + wxHT_SCROLLBAR_ARROW_PAGE_2, /**< right or down */ + wxHT_SCROLLBAR_THUMB, /**< on the thumb */ + wxHT_SCROLLBAR_BAR_1, /**< bar to the left/above the thumb */ + wxHT_SCROLLBAR_BAR_2, /**< bar to the right/below the thumb */ + wxHT_SCROLLBAR_LAST, + + /* window */ + wxHT_WINDOW_OUTSIDE, /**< not in this window at all */ + wxHT_WINDOW_INSIDE, /**< in the client area */ + wxHT_WINDOW_VERT_SCROLLBAR, /**< on the vertical scrollbar */ + wxHT_WINDOW_HORZ_SCROLLBAR, /**< on the horizontal scrollbar */ + wxHT_WINDOW_CORNER, /**< on the corner between 2 scrollbars */ + + wxHT_MAX +}; + +/** + Data format IDs used by wxDataFormat. +*/ +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_HTML = 30, /* Note: does not correspond to CF_ constant */ + wxDF_MAX +}; + +/** + Virtual keycodes used by wxKeyEvent and some other wxWidgets functions. + + Note that the range 0..255 corresponds to the characters of + the current locale, in particular the 32..127 subrange is for + the ASCII symbols, and all the special key values such as @c WXK_END lie + above this range. +*/ +enum wxKeyCode +{ + /** + No key. + + This value is returned by wxKeyEvent::GetKeyCode() if there is no + non-Unicode representation for the pressed key (e.g. a Cyrillic letter + was entered when not using a Cyrillic locale) and by + wxKeyEvent::GetUnicodeKey() if there is no Unicode representation for + the key (this happens for the special, non printable, keys only, e.g. + WXK_HOME). + + @since 2.9.2 (you can simply use 0 with previous versions). + */ + WXK_NONE = 0, + + WXK_BACK = 8, //!< Backspace. + WXK_TAB = 9, + WXK_RETURN = 13, + WXK_ESCAPE = 27, + WXK_SPACE = 32, + + WXK_DELETE = 127, + + /** + Special key values. + + These are, by design, not compatible with Unicode characters. + If you want to get a Unicode character from a key event, use + wxKeyEvent::GetUnicodeKey() instead. + */ + WXK_START = 300, + WXK_LBUTTON, + WXK_RBUTTON, + WXK_CANCEL, + WXK_MBUTTON, + WXK_CLEAR, + WXK_SHIFT, + WXK_ALT, + /** Note that under Mac OS X, to improve compatibility with other + * systems, 'WXK_CONTROL' represents the 'Command' key. Use this + * constant to work with keyboard shortcuts. See 'WXK_RAW_CONTROL' + * to get the state of the actual 'Control' key. + */ + WXK_CONTROL, + /** Under Mac OS X, where the 'Command' key is mapped to 'Control' + * to improve compatibility with other systems, WXK_RAW_CONTROL may + * be used to obtain the state of the actual 'Control' key + * ('WXK_CONTROL' would obtain the status of the 'Command' key). + * Under Windows/Linux/Others, this is equivalent to WXK_CONTROL + */ + WXK_RAW_CONTROL, + WXK_MENU, + WXK_PAUSE, + WXK_CAPITAL, + 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_PAGEUP, + 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, + + /** The following key codes are only generated under Windows currently */ + WXK_WINDOWS_LEFT, + WXK_WINDOWS_RIGHT, + WXK_WINDOWS_MENU , + + /** This special key code was used to represent the key used for keyboard shortcuts. Under Mac OS X, + * this key maps to the 'Command' (aka logo or 'Apple') key, whereas on Linux/Windows/others + * this is the Control key, with the new semantic of WXK_CONTROL, WXK_COMMAND is not needed anymore + */ + WXK_COMMAND, + + /** Hardware-specific buttons */ + WXK_SPECIAL1 = 193, + WXK_SPECIAL2, + WXK_SPECIAL3, + WXK_SPECIAL4, + WXK_SPECIAL5, + WXK_SPECIAL6, + WXK_SPECIAL7, + WXK_SPECIAL8, + WXK_SPECIAL9, + WXK_SPECIAL10, + WXK_SPECIAL11, + WXK_SPECIAL12, + WXK_SPECIAL13, + WXK_SPECIAL14, + WXK_SPECIAL15, + WXK_SPECIAL16, + WXK_SPECIAL17, + WXK_SPECIAL18, + WXK_SPECIAL19, + WXK_SPECIAL20 +}; + +/** + This enum contains bit mask constants used in wxKeyEvent. +*/ +enum wxKeyModifier +{ + wxMOD_NONE = 0x0000, + wxMOD_ALT = 0x0001, + /** Ctlr Key, corresponds to Command key on OS X */ + wxMOD_CONTROL = 0x0002, + wxMOD_ALTGR = wxMOD_ALT | wxMOD_CONTROL, + wxMOD_SHIFT = 0x0004, + wxMOD_META = 0x0008, + wxMOD_WIN = wxMOD_META, + + /** used to describe the true Ctrl Key under OSX, + identic to @c wxMOD_CONTROL on other platforms */ + wxMOD_RAW_CONTROL, + + /** deprecated, identic to @c wxMOD_CONTROL on all platforms */ + wxMOD_CMD = wxMOD_CONTROL, + wxMOD_ALL = 0xffff +}; /** Paper size types for use with the printing framework. @@ -196,6 +1175,182 @@ enum wxPaperSize wxPAPER_PENV_10_ROTATED ///< PRC Envelope #10 Rotated 458 x 324 m }; +/** + Printing orientation +*/ + +enum wxPrintOrientation +{ + wxPORTRAIT, + wxLANDSCAPE +}; + +/** + Duplex printing modes. +*/ +enum wxDuplexMode +{ + wxDUPLEX_SIMPLEX, /**< Non-duplex */ + wxDUPLEX_HORIZONTAL, + wxDUPLEX_VERTICAL +}; + +/** + Print quality. +*/ +#define wxPRINT_QUALITY_HIGH -1 +#define wxPRINT_QUALITY_MEDIUM -2 +#define wxPRINT_QUALITY_LOW -3 +#define wxPRINT_QUALITY_DRAFT -4 + +typedef int wxPrintQuality; + +/** + Print mode (currently PostScript only). +*/ +enum wxPrintMode +{ + wxPRINT_MODE_NONE = 0, + wxPRINT_MODE_PREVIEW = 1, /**< Preview in external application */ + wxPRINT_MODE_FILE = 2, /**< Print to file */ + wxPRINT_MODE_PRINTER = 3, /**< Send to printer */ + wxPRINT_MODE_STREAM = 4 /**< Send postscript data into a stream */ +}; + +/** + Flags which can be used in wxWindow::UpdateWindowUI(). +*/ +enum wxUpdateUI +{ + wxUPDATE_UI_NONE, + wxUPDATE_UI_RECURSE, + wxUPDATE_UI_FROMIDLE /**< Invoked from On(Internal)Idle */ +}; + + +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- + +/** + Top level window styles common to wxFrame and wxDialog +*/ + +#define wxSTAY_ON_TOP 0x8000 +#define wxICONIZE 0x4000 +#define wxMINIMIZE wxICONIZE +#define wxMAXIMIZE 0x2000 +#define wxCLOSE_BOX 0x1000 + +#define wxSYSTEM_MENU 0x0800 +#define wxMINIMIZE_BOX 0x0400 +#define wxMAXIMIZE_BOX 0x0200 + +#define wxTINY_CAPTION 0x0080 // clashes with wxNO_DEFAULT +#define wxRESIZE_BORDER 0x0040 + + +/** + C99-like sized MIN/MAX constants for all integer types. + + For each @c n in the set 8, 16, 32, 64 we define @c wxINTn_MIN, @c + wxINTn_MAX and @c wxUINTc_MAX (@c wxUINTc_MIN is always 0 and so is not + defined). + */ +//@{ +#define wxINT8_MIN CHAR_MIN +#define wxINT8_MAX CHAR_MAX +#define wxUINT8_MAX UCHAR_MAX + +#define wxINT16_MIN SHRT_MIN +#define wxINT16_MAX SHRT_MAX +#define wxUINT16_MAX USHRT_MAX + +#define wxINT32_MIN INT_MIN-or-LONG_MIN +#define wxINT32_MAX INT_MAX-or-LONG_MAX +#define wxUINT32_MAX UINT_MAX-or-LONG_MAX + +#define wxINT64_MIN LLONG_MIN +#define wxINT64_MAX LLONG_MAX +#define wxUINT64_MAX ULLONG_MAX +//@} + +// ---------------------------------------------------------------------------- +// types +// ---------------------------------------------------------------------------- + +/** The type for screen and DC coordinates. */ +typedef int wxCoord; + +/** A special value meaning "use default coordinate". */ +wxCoord wxDefaultCoord = -1; + +//@{ +/** 8 bit type (the mapping is more complex than a simple @c typedef and is not shown here). */ +typedef signed char wxInt8; +typedef unsigned char wxUint8; +typedef wxUint8 wxByte; +//@} + +//@{ +/** 16 bit type (the mapping is more complex than a simple @c typedef and is not shown here). */ +typedef signed short wxInt16; +typedef unsigned short wxUint16; +typedef wxUint16 wxWord; +typedef wxUint16 wxChar16; +//@} + +//@{ +/** 32 bit type (the mapping is more complex than a simple @c typedef and is not shown here). */ +typedef int wxInt32; +typedef unsigned int wxUint32; +typedef wxUint32 wxDword; +typedef wxUint32 wxChar32; +//@} + +//@{ +/** 64 bit type (the mapping is more complex than a simple @c typedef and is not shown here). */ +typedef wxLongLong_t wxInt64; +typedef wxULongLong_t wxUint64; +//@} + +//@{ +/** + Signed and unsigned integral types big enough to contain all of @c long, + @c size_t and @c void*. + (The mapping is more complex than a simple @c typedef and is not shown here). +*/ +typedef ssize_t wxIntPtr; +typedef size_t wxUIntPtr; +//@} + + +/** + 32 bit IEEE float ( 1 sign, 8 exponent bits, 23 fraction bits ). + (The mapping is more complex than a simple @c typedef and is not shown here). +*/ +typedef float wxFloat32; + + +/** + 64 bit IEEE float ( 1 sign, 11 exponent bits, 52 fraction bits ). + (The mapping is more complex than a simple @c typedef and is not shown here). +*/ +typedef double wxFloat64; + +/** + Native fastest representation that has at least wxFloat64 precision, so use + the IEEE types for storage, and this for calculations. + (The mapping is more complex than a simple @c typedef and is not shown here). +*/ +typedef double wxDouble; + + + +// ---------------------------------------------------------------------------- +// macros +// ---------------------------------------------------------------------------- + /** @addtogroup group_funcmacro_byteorder */ //@{ @@ -270,9 +1425,9 @@ enum wxPaperSize In such case, this macro can be used to disable the automatic assignment operator generation. - @see DECLARE_NO_COPY_CLASS() + @see wxDECLARE_NO_COPY_CLASS() */ -#define DECLARE_NO_ASSIGN_CLASS(classname) +#define wxDECLARE_NO_ASSIGN_CLASS(classname) /** This macro can be used in a class declaration to disable the generation of @@ -297,27 +1452,47 @@ enum wxPaperSize private: // widgets can't be copied - DECLARE_NO_COPY_CLASS(FooWidget) + wxDECLARE_NO_COPY_CLASS(FooWidget); }; @endcode - Notice that a semicolon should not be used after this macro and that it - changes the access specifier to private internally so it is better to use - it at the end of the class declaration. + Notice that a semicolon must be used after this macro and that it changes + the access specifier to private internally so it is better to use it at the + end of the class declaration. + + @see wxDECLARE_NO_ASSIGN_CLASS(), wxDECLARE_NO_COPY_TEMPLATE_CLASS() */ -#define DECLARE_NO_COPY_CLASS(classname) +#define wxDECLARE_NO_COPY_CLASS(classname) /** - Equivalent of DECLARE_NO_COPY_CLASS() for template classes. + Analog of wxDECLARE_NO_COPY_CLASS() for template classes. This macro can be used for template classes (with a single template - parameter) for the same purpose as DECLARE_NO_COPY_CLASS() is used with the + parameter) for the same purpose as wxDECLARE_NO_COPY_CLASS() is used with the non-template classes. @param classname The name of the template class. @param arg The name of the template parameter. + + @see wxDECLARE_NO_COPY_TEMPLATE_CLASS_2 + */ +#define wxDECLARE_NO_COPY_TEMPLATE_CLASS(classname, arg) + +/** + Analog of wxDECLARE_NO_COPY_TEMPLATE_CLASS() for templates with 2 + parameters. + + This macro can be used for template classes with two template + parameters for the same purpose as wxDECLARE_NO_COPY_CLASS() is used with + the non-template classes. + + @param classname The name of the template class. + @param arg1 The name of the first template parameter. + @param arg2 The name of the second template parameter. + + @see wxDECLARE_NO_COPY_TEMPLATE_CLASS */ -#define DECLARE_NO_COPY_TEMPLATE_CLASS(classname, arg) +#define wxDECLARE_NO_COPY_TEMPLATE_CLASS_2(classname, arg1, arg2) /** A function which deletes and nulls the pointer. @@ -406,7 +1581,7 @@ template wxDELETEA(T*& array); public: // OldMethod() is deprecated, use NewMethod() instead void NewMethod(); - wxDEPRECATED_INLINE( void OldMethod(), NewMethod() ); + wxDEPRECATED_INLINE( void OldMethod(), NewMethod(); ) }; @endcode @@ -414,6 +1589,40 @@ template wxDELETEA(T*& array); */ #define wxDEPRECATED_INLINE(func, body) +/** + A helper macro allowing to easily define a simple deprecated accessor. + + Compared to wxDEPRECATED_INLINE() it saves a @c return statement and, + especially, a strangely looking semicolon inside a macro. + + Example of use + @code + class wxFoo + { + public: + int GetValue() const { return m_value; } + + // this one is deprecated because it was erroneously non-const + wxDEPRECATED_ACCESSOR( int GetValue(), m_value ) + + private: + int m_value; + }; + @endcode + */ +#define wxDEPRECATED_ACCESSOR(func, what) + +/** + Combination of wxDEPRECATED_BUT_USED_INTERNALLY() and wxDEPRECATED_INLINE(). + + This macro should be used for deprecated functions called by the library + itself (usually for backwards compatibility reasons) and which are defined + inline. + + @header{wx/defs.h} +*/ +#define wxDEPRECATED_BUT_USED_INTERNALLY_INLINE(func, body) + /** @c wxEXPLICIT is a macro which expands to the C++ @c explicit keyword if the compiler supports it or nothing otherwise. Thus, it can be used even in