]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_defs.i
HandlePrintClient shouldn't go above a top-level window
[wxWidgets.git] / wxPython / src / _defs.i
index 345ec6737eafd8d782c0f824197116a8e4257f6c..800002497aeab521fffeb44cbcc72f01115f597a 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 
 
+//---------------------------------------------------------------------------
+// Globally turn on the autodoc feature
+
+%feature("autodoc", "1");  // 0 == no param types, 1 == show param types
+
+//---------------------------------------------------------------------------
+// Tell SWIG to wrap all the wrappers with our thread protection by default
+
+%exception {
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    $action
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) SWIG_fail;
+}
+
+
+// This one can be used to add a check for an existing wxApp before the real
+// work is done.  An exception is raised if there isn't one.
+%define MustHaveApp(name)
+%exception name {
+    if (!wxPyCheckForApp()) SWIG_fail;
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    $action
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) SWIG_fail;
+}
+%enddef
+
+    
 
 //---------------------------------------------------------------------------
 // some type definitions to simplify things for SWIG
 
-typedef int             wxWindowID;
-typedef int             wxCoord;
-typedef int             wxInt32;
-typedef unsigned int    wxUint32;
 typedef int             wxEventType;
 typedef unsigned int    size_t;
 typedef unsigned int    time_t;
 typedef unsigned char   byte;
+typedef unsigned long   wxUIntPtr;
+
+#define wxWindowID      int
+#define wxCoord         int
+#define wxInt32         int
+#define wxUint32        unsigned int
 
 
 //----------------------------------------------------------------------
 // Various SWIG macros and such
 
-#define %addtofunc      %feature("addtofunc")
+#define %pythonAppend   %feature("pythonappend")
+#define %pythonPrepend  %feature("pythonprepend")
 #define %kwargs         %feature("kwargs")
 #define %nokwargs       %feature("nokwargs")
-#define %noautorepr     %feature("noautorepr")
+#define %noautodoc %feature("noautodoc")
 
-#ifndef %shadow
-#define %shadow         %insert("shadow")
-#endif
+
+//#ifndef %shadow
+//#define %shadow         %insert("shadow")
+//#endif
 
 #ifndef %pythoncode
 #define %pythoncode     %insert("python")
-#endif 
+#endif
 
 #define WXUNUSED(x)     x
 
@@ -49,10 +82,22 @@ typedef unsigned char   byte;
 %define MAKE_CONST_WXSTRING(strname)
     %{ static const wxString wxPy##strname(wx##strname); %}
     %immutable;
-    %name(strname) const wxString wxPy##strname;
+    %rename(strname) wxPy##strname;
+    const wxString wxPy##strname;
+    %mutable;
+%enddef
+
+%define MAKE_CONST_WXSTRING2(strname, val)
+    %{ static const wxString wxPy##strname(val); %}
+    %immutable;
+    %rename(strname) wxPy##strname;
+    const wxString wxPy##strname;
     %mutable;
 %enddef
 
+%define MAKE_CONST_WXSTRING_NOSWIG(strname)
+    %{ static const wxString wxPy##strname(wx##strname); %}
+%enddef
 
 // Generate code in the module init for the event types, since they may not be
 // initialized yet when they are used in the static swig_const_table.
@@ -60,13 +105,289 @@ typedef unsigned char   byte;
 %typemap(constcode) wxEventType "PyDict_SetItemString(d, \"$symname\", PyInt_FromLong($value));";
 
 
+
+//----------------------------------------------------------------------
+// Macros for the docstring and autodoc features of SWIG.  These will
+// help make the code look more readable, and pretty, as well as help
+// reduce typing in some cases.
+
+// Set the docsring for the given full or partial declaration
+#ifdef _DO_FULL_DOCS
+    %define DocStr(decl, docstr, details)
+        %feature("docstring") decl docstr details;
+    %enddef
+#else
+    %define DocStr(decl, docstr, details)
+        %feature("docstring") decl docstr;
+    %enddef
+#endif
+
+
+// Set the autodoc string for a full or partial declaration
+%define DocA(decl, astr)
+    %feature("autodoc") decl astr;
+%enddef
+
+
+// Set both the autodoc and docstring for a full or partial declaration
+#ifdef _DO_FULL_DOCS
+    %define DocAStr(decl, astr, docstr, details)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr details
+    %enddef
+#else
+    %define DocAStr(decl, astr, docstr, details)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr
+    %enddef
+#endif
+
+        
+
+    
+// Set the docstring for a decl and then define the decl too.  Must use the
+// full declaration of the item.
+#ifdef _DO_FULL_DOCS
+    %define DocDeclStr(type, decl, docstr, details)
+        %feature("docstring") decl docstr details;
+        type decl
+    %enddef
+#else
+    %define DocDeclStr(type, decl, docstr, details)
+        %feature("docstring") decl docstr;
+        type decl
+    %enddef
+#endif
+
+        
+    
+// As above, but also give the decl a new %name    
+#ifdef _DO_FULL_DOCS
+    %define DocDeclStrName(type, decl, docstr, details, newname)
+        %feature("docstring") decl docstr details;
+        %rename(newname) decl;
+        type decl
+    %enddef
+#else
+    %define DocDeclStrName(type, decl, docstr, details, newname)
+        %feature("docstring") decl docstr;
+        %rename(newname) decl;
+        type decl
+    %enddef
+#endif
+        
+    
+// Set the autodoc string for a decl and then define the decl too.  Must use the
+// full declaration of the item.
+%define DocDeclA(type, decl, astr)
+    %feature("autodoc") decl astr;
+    type decl
+%enddef
+
+// As above, but also give the decl a new %name    
+%define DocDeclAName(type, decl, astr, newname)
+    %feature("autodoc") decl astr;
+    %rename(newname) decl;
+    type decl
+%enddef
+
+
+
+// Set the autodoc and the docstring for a decl and then define the decl too.
+// Must use the full declaration of the item.
+#ifdef _DO_FULL_DOCS
+    %define DocDeclAStr(type, decl, astr, docstr, details)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr details;
+        type decl
+    %enddef
+#else
+    %define DocDeclAStr(type, decl, astr, docstr, details)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr;
+        type decl
+    %enddef
+#endif
+
+        
+// As above, but also give the decl a new %name    
+#ifdef _DO_FULL_DOCS
+    %define DocDeclAStrName(type, decl, astr, docstr, details, newname)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr details;
+        %rename(newname) decl;
+        type decl
+    %enddef
+#else
+    %define DocDeclAStrName(type, decl, astr, docstr, details, newname)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr;
+        %rename(newname) decl;
+        type decl
+    %enddef
+#endif
+
+
+
+// Set the docstring for a constructor decl and then define the decl too.
+// Must use the full declaration of the item.
+#ifdef _DO_FULL_DOCS
+    %define DocCtorStr(decl, docstr, details)
+        %feature("docstring") decl docstr details;
+        decl
+    %enddef
+#else
+    %define DocCtorStr(decl, docstr, details)
+        %feature("docstring") decl docstr;
+        decl
+    %enddef
+#endif
+
+        
+// As above, but also give the decl a new %name    
+#ifdef _DO_FULL_DOCS
+    %define DocCtorStrName(decl, docstr, details, newname)
+        %feature("docstring") decl docstr details;
+        %rename(newname) decl;
+        decl
+    %enddef
+#else
+    %define DocCtorStrName(decl, docstr, details, newname)
+        %feature("docstring") decl docstr;
+        %rename(newname) decl;
+        decl
+    %enddef
+#endif
+
+        
+// Set the autodoc string for a constructor decl and then define the decl too.
+// Must use the full declaration of the item.
+%define DocCtorA(decl, astr)
+    %feature("autodoc") decl astr;
+    decl
+%enddef
+
+// As above, but also give the decl a new %name    
+%define DocCtorAName(decl, astr, newname)
+    %feature("autodoc") decl astr;
+    %rename(newname) decl;
+    decl
+%enddef
+
+
+
+// Set the autodoc and the docstring for a constructor decl and then define
+// the decl too.  Must use the full declaration of the item.
+#ifdef _DO_FULL_DOCS
+    %define DocCtorAStr(decl, astr, docstr, details)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr details;
+        decl
+    %enddef
+#else
+    %define DocCtorAStr(decl, astr, docstr, details)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr;
+        decl
+    %enddef
+#endif
+
+
+        
+// As above, but also give the decl a new %name    
+#ifdef _DO_FULL_DOCS
+    %define DocCtorAStrName(decl, astr, docstr, details, newname)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr details;
+        %rename(newname) decl;
+        decl
+    %enddef
+#else
+    %define DocCtorAStrName(decl, astr, docstr, details, newname)
+        %feature("autodoc") decl astr;
+        %feature("docstring") decl docstr;
+        %rename(newname) decl;
+        decl
+    %enddef
+#endif
+
+       
+    
 %define %newgroup
 %pythoncode {
 %#---------------------------------------------------------------------------
-} 
+}
+%enddef
+
+
+// A set of macros to make using %rename easier, since %name has been
+// deprecated...
+%define %Rename(newname, type, decl)
+    %rename(newname) decl;
+    type decl
 %enddef
 
+%define %RenameCtor(newname, decl)
+    %rename(newname) decl;
+    decl
+%enddef
+
+#ifdef _DO_FULL_DOCS
+    %define %RenameDocCtor(newname, docstr, details, decl)
+        %feature("docstring") decl docstr details;
+        %rename(newname) decl;
+        decl
+    %enddef
+#else
+    %define %RenameDocCtor(newname, docstr, details, decl)
+        %feature("docstring") decl docstr;
+        %rename(newname) decl;
+        decl
+    %enddef
+#endif
+
 //---------------------------------------------------------------------------
+// Forward declarations and %renames for some classes, so the autodoc strings
+// will be able to use the right types even when the real class declaration is
+// not in the module being processed or seen by %import's.
+
+#ifdef BUILDING_RENAMERS
+    #define FORWARD_DECLARE(wxName, Name)
+#else
+    %define FORWARD_DECLARE(wxName, Name)
+        %rename(Name) wxName;
+        class wxName;
+    %enddef
+#endif
+
+FORWARD_DECLARE(wxString,         String);
+FORWARD_DECLARE(wxBitmap,         Bitmap);
+FORWARD_DECLARE(wxDateTime,       DateTime);
+FORWARD_DECLARE(wxInputStream,    InputStream);
+FORWARD_DECLARE(wxDC,             DC);
+FORWARD_DECLARE(wxCursor,         Cursor);
+FORWARD_DECLARE(wxRegion,         Region);
+FORWARD_DECLARE(wxColour,         Colour);
+FORWARD_DECLARE(wxFont,           Font);
+FORWARD_DECLARE(wxCaret,          Caret);
+FORWARD_DECLARE(wxToolTip,        ToolTip);
+FORWARD_DECLARE(wxPyDropTarget,   DropTarget);
+FORWARD_DECLARE(wxImageList,      ImageList);
+FORWARD_DECLARE(wxMemoryDC,       MemoryDC);
+FORWARD_DECLARE(wxHtmlTagHandler, HtmlTagHandler);
+FORWARD_DECLARE(wxConfigBase,     ConfigBase);
+FORWARD_DECLARE(wxIcon,           Icon);
+FORWARD_DECLARE(wxStaticBox,      StaticBox);
+
+
+//---------------------------------------------------------------------------
+
+%{
+#if !WXWIN_COMPATIBILITY_2_4
+    #define wxHIDE_READONLY  0
+#endif
+%}    
+
 
 // General numeric #define's and etc.  Making them all enums makes SWIG use the
 // real macro when making the Python Int
@@ -89,9 +410,9 @@ enum {
     wxSTATIC_BORDER,
     wxTRANSPARENT_WINDOW,
     wxNO_BORDER,
-    wxUSER_COLOURS,
-    wxNO_3D,
-
+    wxDEFAULT_CONTROL_BORDER,
+    wxDEFAULT_STATUSBAR_STYLE,
+    
     wxTAB_TRAVERSAL,
     wxWANTS_CHARS,
     wxPOPUP_WINDOW,
@@ -99,40 +420,11 @@ enum {
     wxCENTRE_ON_SCREEN,
     wxCENTER_ON_SCREEN,
 
-    wxSTAY_ON_TOP,
-    wxICONIZE,
-    wxMINIMIZE,
-    wxMAXIMIZE,
-    wxCLOSE_BOX,
-    wxTHICK_FRAME,
-    wxSYSTEM_MENU,
-    wxMINIMIZE_BOX,
-    wxMAXIMIZE_BOX,
-    wxTINY_CAPTION_HORIZ,
-    wxTINY_CAPTION_VERT,
-    wxRESIZE_BOX,
-    wxRESIZE_BORDER,
-    wxDIALOG_MODAL,
-    wxDIALOG_MODELESS,
-    wxDIALOG_NO_PARENT,
-    wxDEFAULT_FRAME_STYLE,
-    wxDEFAULT_DIALOG_STYLE,
-
-    wxFRAME_TOOL_WINDOW,
-    wxFRAME_FLOAT_ON_PARENT,
-    wxFRAME_NO_WINDOW_MENU,
-    wxFRAME_NO_TASKBAR,
-    wxFRAME_SHAPED,
-
-    wxED_CLIENT_MARGIN,
-    wxED_BUTTONS_BOTTOM,
-    wxED_BUTTONS_RIGHT,
-    wxED_STATIC_LINE,
-    wxEXT_DIALOG_STYLE,
-
     wxCLIP_CHILDREN,
     wxCLIP_SIBLINGS,
 
+    wxALWAYS_SHOW_SB,
+    
     wxRETAINED,
     wxBACKINGSTORE,
 
@@ -158,20 +450,12 @@ enum {
     wxRA_VERTICAL,
     wxRA_SPECIFY_ROWS,
     wxRA_SPECIFY_COLS,
+    wxRA_USE_CHECKBOX,
     wxRB_GROUP,
     wxRB_SINGLE,
-    wxSL_HORIZONTAL,
-    wxSL_VERTICAL,
-    wxSL_AUTOTICKS,
-    wxSL_LABELS,
-    wxSL_LEFT,
-    wxSL_TOP,
-    wxSL_RIGHT,
-    wxSL_BOTTOM,
-    wxSL_BOTH,
-    wxSL_SELRANGE,
     wxSB_HORIZONTAL,
     wxSB_VERTICAL,
+    wxRB_USE_CHECKBOX,
     wxST_SIZEGRIP,
     wxST_NO_AUTORESIZE,
 
@@ -296,8 +580,34 @@ enum {
     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_HIGHEST,
-    
+
     wxOPEN,
     wxSAVE,
     wxHIDE_READONLY,
@@ -317,6 +627,8 @@ enum {
     wxPD_ELAPSED_TIME,
     wxPD_ESTIMATED_TIME,
     wxPD_REMAINING_TIME,
+    wxPD_SMOOTH,
+    wxPD_CAN_SKIP,
 
     wxDD_NEW_DIR_BUTTON,
     wxDD_DEFAULT_STYLE,
@@ -324,7 +636,8 @@ enum {
     wxMENU_TEAROFF,
     wxMB_DOCKABLE,
     wxNO_FULL_REPAINT_ON_RESIZE,
-
+    wxFULL_REPAINT_ON_RESIZE,
+    
     wxLI_HORIZONTAL,
     wxLI_VERTICAL,
 
@@ -422,8 +735,9 @@ enum wxStretch
     wxGROW,
     wxEXPAND,
     wxSHAPED,
-    wxADJUST_MINSIZE,
+    wxFIXED_MINSIZE,
     wxTILE,
+    wxADJUST_MINSIZE,
 };
 
 
@@ -440,6 +754,14 @@ enum wxBorder
 };
 
 
+enum wxBackgroundStyle
+{
+  wxBG_STYLE_SYSTEM,
+  wxBG_STYLE_COLOUR,
+  wxBG_STYLE_CUSTOM
+};
+
+
 enum {
   wxDEFAULT ,
   wxDECORATIVE,
@@ -463,6 +785,8 @@ enum {
   wxUSER_DASH,
   wxTRANSPARENT,
   wxSTIPPLE,
+  wxSTIPPLE_MASK,
+  wxSTIPPLE_MASK_OPAQUE,
   wxBDIAGONAL_HATCH,
   wxCROSSDIAG_HATCH,
   wxFDIAGONAL_HATCH,
@@ -499,116 +823,139 @@ typedef enum {
 } form_ops_t;
 
 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_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,
-
-  WXK_WINDOWS_LEFT,
-  WXK_WINDOWS_RIGHT,
-  WXK_WINDOWS_MENU
-
+    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,
+
+    WXK_WINDOWS_LEFT,
+    WXK_WINDOWS_RIGHT,
+    WXK_WINDOWS_MENU,
+
+    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
 };
 
 
@@ -696,13 +1043,14 @@ typedef enum {
 // menu and toolbar item kinds
 enum wxItemKind
 {
-    wxITEM_SEPARATOR = -1,
+    wxITEM_SEPARATOR,
     wxITEM_NORMAL,
     wxITEM_CHECK,
     wxITEM_RADIO,
     wxITEM_MAX
 };
 
+
 enum wxHitTest
 {
     wxHT_NOWHERE,