X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d14a1e28567de23c586bc80017073d0c39f8d18f..8674d3b5d4b32e5a6d8762475e5a2eba267e9b8d:/wxPython/src/_defs.i diff --git a/wxPython/src/_defs.i b/wxPython/src/_defs.i index 345ec6737e..0d30488719 100644 --- a/wxPython/src/_defs.i +++ b/wxPython/src/_defs.i @@ -11,35 +11,67 @@ ///////////////////////////////////////////////////////////////////////////// +//--------------------------------------------------------------------------- +// 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; +#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 @@ -53,6 +85,16 @@ typedef unsigned char byte; %mutable; %enddef +%define MAKE_CONST_WXSTRING2(strname, val) + %{ static const wxString wxPy##strname(val); %} + %immutable; + %name(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,12 +102,245 @@ 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; + %name(newname) type decl + %enddef +#else + %define DocDeclStrName(type, decl, docstr, details, newname) + %feature("docstring") decl docstr; + %name(newname) 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; + %name(newname) 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; + %name(newname) type decl + %enddef +#else + %define DocDeclAStrName(type, decl, astr, docstr, details, newname) + %feature("autodoc") decl astr; + %feature("docstring") decl docstr; + %name(newname) 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; + %name(newname) decl + %enddef +#else + %define DocCtorStrName(decl, docstr, details, newname) + %feature("docstring") decl docstr; + %name(newname) 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; + %name(newname) 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; + %name(newname) decl + %enddef +#else + %define DocCtorAStrName(decl, astr, docstr, details, newname) + %feature("autodoc") decl astr; + %feature("docstring") decl docstr; + %name(newname) decl + %enddef +#endif + + + %define %newgroup %pythoncode { %#--------------------------------------------------------------------------- -} +} %enddef +//--------------------------------------------------------------------------- +// 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); + + //--------------------------------------------------------------------------- // General numeric #define's and etc. Making them all enums makes SWIG use the @@ -89,8 +364,6 @@ enum { wxSTATIC_BORDER, wxTRANSPARENT_WINDOW, wxNO_BORDER, - wxUSER_COLOURS, - wxNO_3D, wxTAB_TRAVERSAL, wxWANTS_CHARS, @@ -99,31 +372,6 @@ 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, @@ -133,6 +381,8 @@ enum { wxCLIP_CHILDREN, wxCLIP_SIBLINGS, + wxALWAYS_SHOW_SB, + wxRETAINED, wxBACKINGSTORE, @@ -296,8 +546,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, @@ -324,7 +600,8 @@ enum { wxMENU_TEAROFF, wxMB_DOCKABLE, wxNO_FULL_REPAINT_ON_RESIZE, - + wxFULL_REPAINT_ON_RESIZE, + wxLI_HORIZONTAL, wxLI_VERTICAL, @@ -364,6 +641,13 @@ enum { }; +#ifdef __WXGTK__ +#define wxDEFAULT_STATUSBAR_STYLE wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE +#else +#define wxDEFAULT_STATUSBAR_STYLE wxST_SIZEGRIP +#endif + + enum wxGeometryCentre { @@ -422,8 +706,9 @@ enum wxStretch wxGROW, wxEXPAND, wxSHAPED, - wxADJUST_MINSIZE, + wxFIXED_MINSIZE, wxTILE, + wxADJUST_MINSIZE, }; @@ -440,6 +725,14 @@ enum wxBorder }; +enum wxBackgroundStyle +{ + wxBG_STYLE_SYSTEM, + wxBG_STYLE_COLOUR, + wxBG_STYLE_CUSTOM +}; + + enum { wxDEFAULT , wxDECORATIVE, @@ -696,13 +989,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,