1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     Definitions and stuff
 
   9 // Copyright:   (c) 1998 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  14 //---------------------------------------------------------------------------
 
  15 // Globally turn on the autodoc feature
 
  17 %feature("autodoc", "1");  // 0 == no param types, 1 == show param types
 
  19 //---------------------------------------------------------------------------
 
  20 // Tell SWIG to wrap all the wrappers with our thread protection by default
 
  23     PyThreadState* __tstate = wxPyBeginAllowThreads();
 
  25     wxPyEndAllowThreads(__tstate);
 
  26     if (PyErr_Occurred()) SWIG_fail;
 
  30 // This one can be used to add a check for an existing wxApp before the real
 
  31 // work is done.  An exception is raised if there isn't one.
 
  32 %define MustHaveApp(name)
 
  34     if (!wxPyCheckForApp()) SWIG_fail;
 
  35     PyThreadState* __tstate = wxPyBeginAllowThreads();
 
  37     wxPyEndAllowThreads(__tstate);
 
  38     if (PyErr_Occurred()) SWIG_fail;
 
  44 //---------------------------------------------------------------------------
 
  45 // some type definitions to simplify things for SWIG
 
  47 typedef int             wxEventType;
 
  48 typedef unsigned int    size_t;
 
  49 typedef unsigned int    time_t;
 
  50 typedef unsigned char   byte;
 
  52 #define wxWindowID      int
 
  55 #define wxUint32        unsigned int
 
  58 //----------------------------------------------------------------------
 
  59 // Various SWIG macros and such
 
  61 #define %pythonAppend   %feature("pythonappend")
 
  62 #define %pythonPrepend  %feature("pythonprepend")
 
  63 #define %kwargs         %feature("kwargs")
 
  64 #define %nokwargs       %feature("nokwargs")
 
  65 #define %noautodoc %feature("noautodoc")
 
  69 //#define %shadow         %insert("shadow")
 
  73 #define %pythoncode     %insert("python")
 
  79 // Given the name of a wxChar (or wxString) constant in C++, make
 
  80 // a static wxString for wxPython, and also let SWIG wrap it.
 
  81 %define MAKE_CONST_WXSTRING(strname)
 
  82     %{ static const wxString wxPy##strname(wx##strname); %}
 
  84     %name(strname) const wxString wxPy##strname;
 
  88 %define MAKE_CONST_WXSTRING2(strname, val)
 
  89     %{ static const wxString wxPy##strname(val); %}
 
  91     %name(strname) const wxString wxPy##strname;
 
  95 %define MAKE_CONST_WXSTRING_NOSWIG(strname)
 
  96     %{ static const wxString wxPy##strname(wx##strname); %}
 
  99 // Generate code in the module init for the event types, since they may not be
 
 100 // initialized yet when they are used in the static swig_const_table.
 
 101 %typemap(consttab) wxEventType; // TODO: how to prevent code inserted into the consttab?
 
 102 %typemap(constcode) wxEventType "PyDict_SetItemString(d, \"$symname\", PyInt_FromLong($value));";
 
 106 //----------------------------------------------------------------------
 
 107 // Macros for the docstring and autodoc features of SWIG.  These will
 
 108 // help make the code look more readable, and pretty, as well as help
 
 109 // reduce typing in some cases.
 
 111 // Set the docsring for the given full or partial declaration
 
 113     %define DocStr(decl, docstr, details)
 
 114         %feature("docstring") decl docstr details;
 
 117     %define DocStr(decl, docstr, details)
 
 118         %feature("docstring") decl docstr;
 
 123 // Set the autodoc string for a full or partial declaration
 
 124 %define DocA(decl, astr)
 
 125     %feature("autodoc") decl astr;
 
 129 // Set both the autodoc and docstring for a full or partial declaration
 
 131     %define DocAStr(decl, astr, docstr, details)
 
 132         %feature("autodoc") decl astr;
 
 133         %feature("docstring") decl docstr details
 
 136     %define DocAStr(decl, astr, docstr, details)
 
 137         %feature("autodoc") decl astr;
 
 138         %feature("docstring") decl docstr
 
 145 // Set the docstring for a decl and then define the decl too.  Must use the
 
 146 // full declaration of the item.
 
 148     %define DocDeclStr(type, decl, docstr, details)
 
 149         %feature("docstring") decl docstr details;
 
 153     %define DocDeclStr(type, decl, docstr, details)
 
 154         %feature("docstring") decl docstr;
 
 161 // As above, but also give the decl a new %name    
 
 163     %define DocDeclStrName(type, decl, docstr, details, newname)
 
 164         %feature("docstring") decl docstr details;
 
 165         %name(newname) type decl
 
 168     %define DocDeclStrName(type, decl, docstr, details, newname)
 
 169         %feature("docstring") decl docstr;
 
 170         %name(newname) type decl
 
 175 // Set the autodoc string for a decl and then define the decl too.  Must use the
 
 176 // full declaration of the item.
 
 177 %define DocDeclA(type, decl, astr)
 
 178     %feature("autodoc") decl astr;
 
 182 // As above, but also give the decl a new %name    
 
 183 %define DocDeclAName(type, decl, astr, newname)
 
 184     %feature("autodoc") decl astr;
 
 185     %name(newname) type decl
 
 190 // Set the autodoc and the docstring for a decl and then define the decl too.
 
 191 // Must use the full declaration of the item.
 
 193     %define DocDeclAStr(type, decl, astr, docstr, details)
 
 194         %feature("autodoc") decl astr;
 
 195         %feature("docstring") decl docstr details;
 
 199     %define DocDeclAStr(type, decl, astr, docstr, details)
 
 200         %feature("autodoc") decl astr;
 
 201         %feature("docstring") decl docstr;
 
 207 // As above, but also give the decl a new %name    
 
 209     %define DocDeclAStrName(type, decl, astr, docstr, details, newname)
 
 210         %feature("autodoc") decl astr;
 
 211         %feature("docstring") decl docstr details;
 
 212         %name(newname) type decl
 
 215     %define DocDeclAStrName(type, decl, astr, docstr, details, newname)
 
 216         %feature("autodoc") decl astr;
 
 217         %feature("docstring") decl docstr;
 
 218         %name(newname) type decl
 
 224 // Set the docstring for a constructor decl and then define the decl too.
 
 225 // Must use the full declaration of the item.
 
 227     %define DocCtorStr(decl, docstr, details)
 
 228         %feature("docstring") decl docstr details;
 
 232     %define DocCtorStr(decl, docstr, details)
 
 233         %feature("docstring") decl docstr;
 
 239 // As above, but also give the decl a new %name    
 
 241     %define DocCtorStrName(decl, docstr, details, newname)
 
 242         %feature("docstring") decl docstr details;
 
 246     %define DocCtorStrName(decl, docstr, details, newname)
 
 247         %feature("docstring") decl docstr;
 
 254 // Set the autodoc string for a constructor decl and then define the decl too.
 
 255 // Must use the full declaration of the item.
 
 256 %define DocCtorA(decl, astr)
 
 257     %feature("autodoc") decl astr;
 
 261 // As above, but also give the decl a new %name    
 
 262 %define DocCtorAName(decl, astr, newname)
 
 263     %feature("autodoc") decl astr;
 
 269 // Set the autodoc and the docstring for a constructor decl and then define
 
 270 // the decl too.  Must use the full declaration of the item.
 
 272     %define DocCtorAStr(decl, astr, docstr, details)
 
 273         %feature("autodoc") decl astr;
 
 274         %feature("docstring") decl docstr details;
 
 278     %define DocCtorAStr(decl, astr, docstr, details)
 
 279         %feature("autodoc") decl astr;
 
 280         %feature("docstring") decl docstr;
 
 287 // As above, but also give the decl a new %name    
 
 289     %define DocCtorAStrName(decl, astr, docstr, details, newname)
 
 290         %feature("autodoc") decl astr;
 
 291         %feature("docstring") decl docstr details;
 
 295     %define DocCtorAStrName(decl, astr, docstr, details, newname)
 
 296         %feature("autodoc") decl astr;
 
 297         %feature("docstring") decl docstr;
 
 306 %#---------------------------------------------------------------------------
 
 310 //---------------------------------------------------------------------------
 
 311 // Forward declarations and %renames for some classes, so the autodoc strings
 
 312 // will be able to use the right types even when the real class declaration is
 
 313 // not in the module being processed or seen by %import's.
 
 315 #ifdef BUILDING_RENAMERS
 
 316     #define FORWARD_DECLARE(wxName, Name)
 
 318     %define FORWARD_DECLARE(wxName, Name)
 
 319         %rename(Name) wxName;
 
 324 FORWARD_DECLARE(wxString,         String);
 
 325 FORWARD_DECLARE(wxBitmap,         Bitmap);
 
 326 FORWARD_DECLARE(wxDateTime,       DateTime);
 
 327 FORWARD_DECLARE(wxInputStream,    InputStream);
 
 328 FORWARD_DECLARE(wxDC,             DC);
 
 329 FORWARD_DECLARE(wxCursor,         Cursor);
 
 330 FORWARD_DECLARE(wxRegion,         Region);
 
 331 FORWARD_DECLARE(wxColour,         Colour);
 
 332 FORWARD_DECLARE(wxFont,           Font);
 
 333 FORWARD_DECLARE(wxCaret,          Caret);
 
 334 FORWARD_DECLARE(wxToolTip,        ToolTip);
 
 335 FORWARD_DECLARE(wxPyDropTarget,   DropTarget);
 
 336 FORWARD_DECLARE(wxImageList,      ImageList);
 
 337 FORWARD_DECLARE(wxMemoryDC,       MemoryDC);
 
 338 FORWARD_DECLARE(wxHtmlTagHandler, HtmlTagHandler);
 
 339 FORWARD_DECLARE(wxConfigBase,     ConfigBase);
 
 340 FORWARD_DECLARE(wxIcon,           Icon);
 
 341 FORWARD_DECLARE(wxStaticBox,      StaticBox);
 
 344 //---------------------------------------------------------------------------
 
 346 // General numeric #define's and etc.  Making them all enums makes SWIG use the
 
 347 // real macro when making the Python Int
 
 365     wxTRANSPARENT_WINDOW,
 
 465     wxSIZE_ALLOW_MINUS_ONE,
 
 468     wxPRINT_QUALITY_HIGH,
 
 469     wxPRINT_QUALITY_MEDIUM,
 
 471     wxPRINT_QUALITY_DRAFT,
 
 493     wxID_HELP_PROCEDURES,
 
 512     wxID_VIEW_LARGEICONS,
 
 513     wxID_VIEW_SMALLICONS,
 
 573     wxID_REVERT_TO_SAVED,
 
 602     wxNO_FULL_REPAINT_ON_RESIZE,
 
 603     wxFULL_REPAINT_ON_RESIZE,
 
 608     wxWS_EX_VALIDATE_RECURSIVELY,
 
 609     wxWS_EX_BLOCK_EVENTS,
 
 612     wxWS_EX_THEMED_BACKGROUND,
 
 613     wxWS_EX_PROCESS_IDLE,
 
 614     wxWS_EX_PROCESS_UI_UPDATES,
 
 617     // Mapping modes (as per Windows)
 
 630     // It looks like wxTabCtrl may rise from the dead.  Uncomment these if
 
 631     // it gets an implementation for all platforms...
 
 632 //     wxTC_RIGHTJUSTIFY,
 
 645 #define wxDEFAULT_STATUSBAR_STYLE wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE
 
 647 #define wxDEFAULT_STATUSBAR_STYLE wxST_SIZEGRIP
 
 652 enum wxGeometryCentre
 
 687     wxALIGN_CENTER_HORIZONTAL,
 
 688     wxALIGN_CENTRE_HORIZONTAL,
 
 693     wxALIGN_CENTER_VERTICAL,
 
 694     wxALIGN_CENTRE_VERTICAL,
 
 728 enum wxBackgroundStyle
 
 775   wxXOR,        // src XOR dst
 
 777   wxOR_REVERSE, // src OR (NOT dst)
 
 778   wxAND_REVERSE,// src AND (NOT dst)
 
 780   wxAND,        // src AND dst
 
 781   wxAND_INVERT, // (NOT src) AND dst
 
 783   wxNOR,        // (NOT src) AND (NOT dst)
 
 784   wxEQUIV,      // (NOT src) XOR dst
 
 785   wxSRC_INVERT, // (NOT src)
 
 786   wxOR_INVERT,  // (NOT src) OR dst
 
 787   wxNAND,       // (NOT src) OR (NOT dst)
 
 790 //  wxSRC_OR,     // source _bitmap_ OR destination
 
 791 //  wxSRC_AND     // source _bitmap_ AND destination
 
 814   WXK_PRIOR,  /* Page up */
 
 815   WXK_NEXT,   /* Page down */
 
 896   WXK_NUMPAD_SEPARATOR,
 
 910     wxPAPER_NONE,               // Use specific dimensions
 
 911     wxPAPER_LETTER,             // Letter, 8 1/2 by 11 inches
 
 912     wxPAPER_LEGAL,              // Legal, 8 1/2 by 14 inches
 
 913     wxPAPER_A4,                 // A4 Sheet, 210 by 297 millimeters
 
 914     wxPAPER_CSHEET,             // C Sheet, 17 by 22 inches
 
 915     wxPAPER_DSHEET,             // D Sheet, 22 by 34 inches
 
 916     wxPAPER_ESHEET,             // E Sheet, 34 by 44 inches
 
 917     wxPAPER_LETTERSMALL,        // Letter Small, 8 1/2 by 11 inches
 
 918     wxPAPER_TABLOID,            // Tabloid, 11 by 17 inches
 
 919     wxPAPER_LEDGER,             // Ledger, 17 by 11 inches
 
 920     wxPAPER_STATEMENT,          // Statement, 5 1/2 by 8 1/2 inches
 
 921     wxPAPER_EXECUTIVE,          // Executive, 7 1/4 by 10 1/2 inches
 
 922     wxPAPER_A3,                 // A3 sheet, 297 by 420 millimeters
 
 923     wxPAPER_A4SMALL,            // A4 small sheet, 210 by 297 millimeters
 
 924     wxPAPER_A5,                 // A5 sheet, 148 by 210 millimeters
 
 925     wxPAPER_B4,                 // B4 sheet, 250 by 354 millimeters
 
 926     wxPAPER_B5,                 // B5 sheet, 182-by-257-millimeter paper
 
 927     wxPAPER_FOLIO,              // Folio, 8-1/2-by-13-inch paper
 
 928     wxPAPER_QUARTO,             // Quarto, 215-by-275-millimeter paper
 
 929     wxPAPER_10X14,              // 10-by-14-inch sheet
 
 930     wxPAPER_11X17,              // 11-by-17-inch sheet
 
 931     wxPAPER_NOTE,               // Note, 8 1/2 by 11 inches
 
 932     wxPAPER_ENV_9,              // #9 Envelope, 3 7/8 by 8 7/8 inches
 
 933     wxPAPER_ENV_10,             // #10 Envelope, 4 1/8 by 9 1/2 inches
 
 934     wxPAPER_ENV_11,             // #11 Envelope, 4 1/2 by 10 3/8 inches
 
 935     wxPAPER_ENV_12,             // #12 Envelope, 4 3/4 by 11 inches
 
 936     wxPAPER_ENV_14,             // #14 Envelope, 5 by 11 1/2 inches
 
 937     wxPAPER_ENV_DL,             // DL Envelope, 110 by 220 millimeters
 
 938     wxPAPER_ENV_C5,             // C5 Envelope, 162 by 229 millimeters
 
 939     wxPAPER_ENV_C3,             // C3 Envelope, 324 by 458 millimeters
 
 940     wxPAPER_ENV_C4,             // C4 Envelope, 229 by 324 millimeters
 
 941     wxPAPER_ENV_C6,             // C6 Envelope, 114 by 162 millimeters
 
 942     wxPAPER_ENV_C65,            // C65 Envelope, 114 by 229 millimeters
 
 943     wxPAPER_ENV_B4,             // B4 Envelope, 250 by 353 millimeters
 
 944     wxPAPER_ENV_B5,             // B5 Envelope, 176 by 250 millimeters
 
 945     wxPAPER_ENV_B6,             // B6 Envelope, 176 by 125 millimeters
 
 946     wxPAPER_ENV_ITALY,          // Italy Envelope, 110 by 230 millimeters
 
 947     wxPAPER_ENV_MONARCH,        // Monarch Envelope, 3 7/8 by 7 1/2 inches
 
 948     wxPAPER_ENV_PERSONAL,       // 6 3/4 Envelope, 3 5/8 by 6 1/2 inches
 
 949     wxPAPER_FANFOLD_US,         // US Std Fanfold, 14 7/8 by 11 inches
 
 950     wxPAPER_FANFOLD_STD_GERMAN, // German Std Fanfold, 8 1/2 by 12 inches
 
 951     wxPAPER_FANFOLD_LGL_GERMAN, // German Legal Fanfold, 8 1/2 by 13 inches
 
 953     wxPAPER_ISO_B4,             // B4 (ISO) 250 x 353 mm
 
 954     wxPAPER_JAPANESE_POSTCARD,  // Japanese Postcard 100 x 148 mm
 
 955     wxPAPER_9X11,               // 9 x 11 in
 
 956     wxPAPER_10X11,              // 10 x 11 in
 
 957     wxPAPER_15X11,              // 15 x 11 in
 
 958     wxPAPER_ENV_INVITE,         // Envelope Invite 220 x 220 mm
 
 959     wxPAPER_LETTER_EXTRA,       // Letter Extra 9 \275 x 12 in
 
 960     wxPAPER_LEGAL_EXTRA,        // Legal Extra 9 \275 x 15 in
 
 961     wxPAPER_TABLOID_EXTRA,      // Tabloid Extra 11.69 x 18 in
 
 962     wxPAPER_A4_EXTRA,           // A4 Extra 9.27 x 12.69 in
 
 963     wxPAPER_LETTER_TRANSVERSE,  // Letter Transverse 8 \275 x 11 in
 
 964     wxPAPER_A4_TRANSVERSE,      // A4 Transverse 210 x 297 mm
 
 965     wxPAPER_LETTER_EXTRA_TRANSVERSE, // Letter Extra Transverse 9\275 x 12 in
 
 966     wxPAPER_A_PLUS,             // SuperA/SuperA/A4 227 x 356 mm
 
 967     wxPAPER_B_PLUS,             // SuperB/SuperB/A3 305 x 487 mm
 
 968     wxPAPER_LETTER_PLUS,        // Letter Plus 8.5 x 12.69 in
 
 969     wxPAPER_A4_PLUS,            // A4 Plus 210 x 330 mm
 
 970     wxPAPER_A5_TRANSVERSE,      // A5 Transverse 148 x 210 mm
 
 971     wxPAPER_B5_TRANSVERSE,      // B5 (JIS) Transverse 182 x 257 mm
 
 972     wxPAPER_A3_EXTRA,           // A3 Extra 322 x 445 mm
 
 973     wxPAPER_A5_EXTRA,           // A5 Extra 174 x 235 mm
 
 974     wxPAPER_B5_EXTRA,           // B5 (ISO) Extra 201 x 276 mm
 
 975     wxPAPER_A2,                 // A2 420 x 594 mm
 
 976     wxPAPER_A3_TRANSVERSE,      // A3 Transverse 297 x 420 mm
 
 977     wxPAPER_A3_EXTRA_TRANSVERSE // A3 Extra Transverse 322 x 445 mm
 
 982     wxDUPLEX_SIMPLEX, // Non-duplex
 
 989 // menu and toolbar item kinds
 
1005     wxHT_SCROLLBAR_FIRST = wxHT_NOWHERE,
 
1006     wxHT_SCROLLBAR_ARROW_LINE_1,    // left or upper arrow to scroll by line
 
1007     wxHT_SCROLLBAR_ARROW_LINE_2,    // right or down
 
1008     wxHT_SCROLLBAR_ARROW_PAGE_1,    // left or upper arrow to scroll by page
 
1009     wxHT_SCROLLBAR_ARROW_PAGE_2,    // right or down
 
1010     wxHT_SCROLLBAR_THUMB,           // on the thumb
 
1011     wxHT_SCROLLBAR_BAR_1,           // bar to the left/above the thumb
 
1012     wxHT_SCROLLBAR_BAR_2,           // bar to the right/below the thumb
 
1013     wxHT_SCROLLBAR_LAST,
 
1016     wxHT_WINDOW_OUTSIDE,            // not in this window at all
 
1017     wxHT_WINDOW_INSIDE,             // in the client area
 
1018     wxHT_WINDOW_VERT_SCROLLBAR,     // on the vertical scrollbar
 
1019     wxHT_WINDOW_HORZ_SCROLLBAR,     // on the horizontal scrollbar
 
1020     wxHT_WINDOW_CORNER,             // on the corner between 2 scrollbars
 
1028 enum wxHotkeyModifier
 
1036 #define wxEVT_HOTKEY 9999
 
1040 enum wxHotkeyModifier
 
1052     wxUPDATE_UI_NONE          = 0x0000,
 
1053     wxUPDATE_UI_RECURSE       = 0x0001,
 
1054     wxUPDATE_UI_FROMIDLE      = 0x0002 // Invoked from On(Internal)Idle
 
1059 //---------------------------------------------------------------------------