]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_defs.i
reSWIGged
[wxWidgets.git] / wxPython / src / _defs.i
index e8fce22cc37e6263287d3e11d74bae66dddbceef..d196575a2e44606457633d66fc5920a0aed73142 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 %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
 
@@ -48,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.
@@ -59,13 +105,277 @@ 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
 
+
 //---------------------------------------------------------------------------
+// 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
@@ -88,8 +398,6 @@ enum {
     wxSTATIC_BORDER,
     wxTRANSPARENT_WINDOW,
     wxNO_BORDER,
-    wxUSER_COLOURS,
-    wxNO_3D,
 
     wxTAB_TRAVERSAL,
     wxWANTS_CHARS,
@@ -98,31 +406,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,
@@ -132,6 +415,8 @@ enum {
     wxCLIP_CHILDREN,
     wxCLIP_SIBLINGS,
 
+    wxALWAYS_SHOW_SB,
+    
     wxRETAINED,
     wxBACKINGSTORE,
 
@@ -157,20 +442,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,
 
@@ -295,8 +572,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,
@@ -316,6 +619,8 @@ enum {
     wxPD_ELAPSED_TIME,
     wxPD_ESTIMATED_TIME,
     wxPD_REMAINING_TIME,
+    wxPD_SMOOTH,
+    wxPD_CAN_SKIP,
 
     wxDD_NEW_DIR_BUTTON,
     wxDD_DEFAULT_STYLE,
@@ -323,7 +628,8 @@ enum {
     wxMENU_TEAROFF,
     wxMB_DOCKABLE,
     wxNO_FULL_REPAINT_ON_RESIZE,
-
+    wxFULL_REPAINT_ON_RESIZE,
+    
     wxLI_HORIZONTAL,
     wxLI_VERTICAL,
 
@@ -363,6 +669,13 @@ enum {
 };
 
 
+#ifdef __WXGTK__
+#define wxDEFAULT_STATUSBAR_STYLE wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE
+#else
+#define wxDEFAULT_STATUSBAR_STYLE wxST_SIZEGRIP
+#endif
+
+
 
 enum wxGeometryCentre
 {
@@ -421,8 +734,9 @@ enum wxStretch
     wxGROW,
     wxEXPAND,
     wxSHAPED,
-    wxADJUST_MINSIZE,
+    wxFIXED_MINSIZE,
     wxTILE,
+    wxADJUST_MINSIZE,
 };
 
 
@@ -439,6 +753,14 @@ enum wxBorder
 };
 
 
+enum wxBackgroundStyle
+{
+  wxBG_STYLE_SYSTEM,
+  wxBG_STYLE_COLOUR,
+  wxBG_STYLE_CUSTOM
+};
+
+
 enum {
   wxDEFAULT ,
   wxDECORATIVE,
@@ -695,13 +1017,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,