From 1e4a197e4c60e461b8068b0619692ea083e30b8b Mon Sep 17 00:00:00 2001
From: Robin Dunn
Date: Tue, 25 Mar 2003 06:35:27 +0000
Subject: [PATCH] Merged wxPython 2.4.x to the 2.5 branch (Finally!!!)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
wxPython/.cvsignore | 4 +
wxPython/BUILD.osx.txt | 58 +-
wxPython/BUILD.unix.txt | 188 +-
wxPython/BUILD.win32.txt | 133 +-
wxPython/CHANGES.txt | 244 +-
wxPython/MANIFEST.in | 5 -
wxPython/README.txt | 86 +-
wxPython/b | 8 +-
wxPython/b.bat | 35 +-
wxPython/contrib/gizmos/gizmos.cpp | 14 +-
wxPython/contrib/gizmos/gizmos.i | 4 +-
wxPython/contrib/glcanvas/glcanvas.i | 4 +-
wxPython/contrib/glcanvas/msw/myglcanvas.cpp | 25 +-
wxPython/contrib/glcanvas/msw/myglcanvas.h | 16 +-
wxPython/contrib/iewin/IEHtmlWin.cpp | 66 +-
wxPython/contrib/iewin/iewin.cpp | 23 +-
wxPython/contrib/iewin/iewin.i | 2 +-
wxPython/contrib/iewin/iewin.py | 4 +-
wxPython/contrib/iewin/wxactivex.cpp | 204 +-
wxPython/contrib/ogl/ogl.cpp | 26 +-
wxPython/contrib/ogl/oglbasic.cpp | 140 +-
wxPython/contrib/ogl/oglbasic.i | 2 +-
wxPython/contrib/ogl/oglcanvas.cpp | 214 +-
wxPython/contrib/ogl/oglcanvas.i | 11 +-
wxPython/contrib/ogl/oglcanvas.py | 15 -
wxPython/contrib/ogl/oglshapes.cpp | 401 +-
wxPython/contrib/ogl/oglshapes.i | 7 +-
wxPython/contrib/ogl/oglshapes.py | 15 +-
wxPython/contrib/ogl/oglshapes2.cpp | 220 +-
wxPython/contrib/ogl/oglshapes2.i | 2 +-
wxPython/contrib/ogl/oglshapes2.py | 11 +-
wxPython/contrib/stc/_stcextras.py | 4 +-
wxPython/contrib/xrc/_xrcextras.py | 32 +
wxPython/contrib/xrc/xrc.cpp | 248 +-
wxPython/contrib/xrc/xrc.i | 72 +-
wxPython/contrib/xrc/xrc.py | 85 +-
wxPython/demo/.cvsignore | 3 +
wxPython/demo/About.py | 6 +-
wxPython/demo/ActiveXWrapper_Acrobat.py | 4 +-
wxPython/demo/ActiveXWrapper_IE.py | 10 +-
wxPython/demo/ColourSelect.py | 5 +-
wxPython/demo/ContextHelp.py | 2 +-
wxPython/demo/CustomDragAndDrop.py | 49 +-
wxPython/demo/DialogUnits.py | 6 +-
wxPython/demo/DragAndDrop.py | 14 +-
wxPython/demo/DrawXXXList.py | 353 +-
wxPython/demo/ErrorDialogs.py | 33 +-
wxPython/demo/EventManager.py | 287 ++
wxPython/demo/FancyText.py | 3 +-
wxPython/demo/FontEnumerator.py | 39 +-
wxPython/demo/GenericButtons.py | 23 +-
wxPython/demo/GridCustEditor.py | 14 +-
wxPython/demo/GridCustTable.py | 31 +-
wxPython/demo/GridDragable.py | 193 +
wxPython/demo/GridEnterHandler.py | 2 +-
wxPython/demo/GridHugeTable.py | 16 +-
wxPython/demo/GridSimple.py | 22 +-
wxPython/demo/GridStdEdRend.py | 12 +-
wxPython/demo/LayoutAnchors.py | 20 +-
wxPython/demo/Layoutf.py | 2 +-
wxPython/demo/MDIDemo.py | 33 +-
wxPython/demo/MDISashDemo.py | 16 +-
wxPython/demo/Main.py | 175 +-
wxPython/demo/OOR.py | 2 +-
wxPython/demo/PrintFramework.py | 12 +-
wxPython/demo/RowColSizer.py | 8 +-
wxPython/demo/ScrolledPanel.py | 97 -
wxPython/demo/Sizers.py | 28 +-
wxPython/demo/SlashDot.py | 138 +-
wxPython/demo/SplitTree.py | 11 +-
wxPython/demo/TablePrint.py | 6 +-
wxPython/demo/Threads.py | 12 +-
wxPython/demo/Throbber.py | 180 +
wxPython/demo/URLDragAndDrop.py | 6 +-
wxPython/demo/Unicode.py | 4 +-
wxPython/demo/XMLtreeview.py | 8 +-
wxPython/demo/bmp_source/001.png | Bin 0 -> 2220 bytes
wxPython/demo/bmp_source/002.png | Bin 0 -> 2234 bytes
wxPython/demo/bmp_source/003.png | Bin 0 -> 2220 bytes
wxPython/demo/bmp_source/004.png | Bin 0 -> 2339 bytes
wxPython/demo/bmp_source/005.png | Bin 0 -> 2505 bytes
wxPython/demo/bmp_source/006.png | Bin 0 -> 2230 bytes
wxPython/demo/bmp_source/007.png | Bin 0 -> 2241 bytes
wxPython/demo/bmp_source/008.png | Bin 0 -> 2291 bytes
wxPython/demo/bmp_source/009.png | Bin 0 -> 2235 bytes
wxPython/demo/bmp_source/010.png | Bin 0 -> 2306 bytes
wxPython/demo/bmp_source/011.png | Bin 0 -> 2250 bytes
wxPython/demo/bmp_source/012.png | Bin 0 -> 2266 bytes
wxPython/demo/bmp_source/013.png | Bin 0 -> 2313 bytes
wxPython/demo/bmp_source/014.png | Bin 0 -> 2226 bytes
wxPython/demo/bmp_source/015.png | Bin 0 -> 2326 bytes
wxPython/demo/bmp_source/016.png | Bin 0 -> 2230 bytes
wxPython/demo/bmp_source/017.png | Bin 0 -> 2241 bytes
wxPython/demo/bmp_source/018.png | Bin 0 -> 2291 bytes
wxPython/demo/bmp_source/019.png | Bin 0 -> 2235 bytes
wxPython/demo/bmp_source/020.png | Bin 0 -> 2306 bytes
wxPython/demo/bmp_source/021.png | Bin 0 -> 2250 bytes
wxPython/demo/bmp_source/022.png | Bin 0 -> 2266 bytes
wxPython/demo/bmp_source/023.png | Bin 0 -> 2313 bytes
wxPython/demo/bmp_source/024.png | Bin 0 -> 2226 bytes
wxPython/demo/bmp_source/025.png | Bin 0 -> 2326 bytes
wxPython/demo/bmp_source/026.png | Bin 0 -> 2221 bytes
wxPython/demo/bmp_source/027.png | Bin 0 -> 2222 bytes
wxPython/demo/bmp_source/028.png | Bin 0 -> 2464 bytes
wxPython/demo/bmp_source/029.png | Bin 0 -> 2349 bytes
wxPython/demo/bmp_source/030.png | Bin 0 -> 2220 bytes
wxPython/demo/bmp_source/eclouds.png | Bin 0 -> 16502 bytes
wxPython/demo/bmp_source/logo.png | Bin 0 -> 1092 bytes
wxPython/demo/bmp_source/rest.png | Bin 0 -> 2234 bytes
wxPython/demo/data/tips.txt | 4 +-
wxPython/demo/data/widgetTest.htm | 12 +-
wxPython/demo/demoMainLoop.py | 8 +-
wxPython/demo/encode_bitmaps.py | 40 +-
wxPython/demo/hangman.py | 14 +-
wxPython/demo/images.py | 2 +-
wxPython/demo/infoframe.py | 4 +-
wxPython/demo/pyTree.py | 8 +-
wxPython/demo/run.py | 26 +-
wxPython/demo/simple.py | 4 +-
wxPython/demo/throbImages.py | 4362 +++++++++++++++++
wxPython/demo/viewer_basics.py | 4 +-
wxPython/demo/widgetTest.py | 4 +-
wxPython/demo/wxButton.py | 44 +-
wxPython/demo/wxCalendar.py | 30 +-
wxPython/demo/wxCalendarCtrl.py | 10 +
wxPython/demo/wxCheckBox.py | 2 +-
wxPython/demo/wxCheckListBox.py | 5 +-
wxPython/demo/wxColourDialog.py | 2 +-
wxPython/demo/wxComboBox.py | 3 +-
wxPython/demo/wxDialog.py | 115 +-
wxPython/demo/wxDragImage.py | 33 +-
wxPython/demo/wxDynamicSashWindow.py | 11 +
wxPython/demo/wxEditor.py | 2 +-
wxPython/demo/wxFileDialog.py | 7 +-
wxPython/demo/wxFileHistory.py | 10 +-
wxPython/demo/wxFindReplaceDialog.py | 6 +-
wxPython/demo/wxFloatBar.py | 2 +-
wxPython/demo/wxFontDialog.py | 128 +-
wxPython/demo/wxFrame.py | 4 +-
wxPython/demo/wxGLCanvas.py | 22 +-
wxPython/demo/wxGenericDirCtrl.py | 2 +-
wxPython/demo/wxGrid.py | 17 +-
wxPython/demo/wxHtmlWindow.py | 48 +-
wxPython/demo/wxIEHtmlWin.py | 10 +-
wxPython/demo/wxImage.py | 8 +
wxPython/demo/wxImageFromStream.py | 5 +-
wxPython/demo/wxIntCtrl.py | 337 ++
wxPython/demo/wxJoystick.py | 2 +-
wxPython/demo/wxKeyEvents.py | 20 +-
wxPython/demo/wxLEDNumberCtrl.py | 2 +-
wxPython/demo/wxLayoutConstraints.py | 2 +-
wxPython/demo/wxListBox.py | 41 +-
wxPython/demo/wxListCtrl.py | 63 +-
wxPython/demo/wxListCtrl_virtual.py | 3 +-
wxPython/demo/wxMDIWindows.py | 2 +-
wxPython/demo/wxMVCTree.py | 6 +-
wxPython/demo/wxMask.py | 13 +-
wxPython/demo/wxMenu.py | 10 +-
wxPython/demo/wxMimeTypesManager.py | 6 +-
wxPython/demo/wxMiniFrame.py | 5 +-
wxPython/demo/wxMultiSash.py | 90 +
wxPython/demo/wxNotebook.py | 50 +-
wxPython/demo/wxOGL.py | 86 +-
wxPython/demo/wxPopupControl.py | 94 +
wxPython/demo/wxPopupWindow.py | 8 +-
wxPython/demo/wxPrintDialog.py | 6 +-
wxPython/demo/wxProcess.py | 38 +-
wxPython/demo/wxProgressDialog.py | 2 +-
wxPython/demo/wxPyColourChooser.py | 58 +
wxPython/demo/wxRadioBox.py | 38 +-
wxPython/demo/wxRadioButton.py | 119 +
wxPython/demo/wxRightTextCtrl.py | 2 +-
wxPython/demo/wxSashWindow.py | 8 +-
wxPython/demo/wxScrolledPanel.py | 112 +
wxPython/demo/wxScrolledWindow.py | 9 +-
wxPython/demo/wxSlider.py | 12 +-
wxPython/demo/wxSpinButton.py | 2 -
wxPython/demo/wxSpinCtrl.py | 4 +-
wxPython/demo/wxSplitterWindow.py | 8 +-
wxPython/demo/wxStaticBitmap.py | 2 -
wxPython/demo/wxStaticText.py | 4 +-
wxPython/demo/wxStatusBar.py | 10 +-
wxPython/demo/wxStyledTextCtrl_1.py | 8 +-
wxPython/demo/wxStyledTextCtrl_2.py | 54 +-
wxPython/demo/wxTextCtrl.py | 70 +-
wxPython/demo/wxTimeCtrl.py | 213 +
wxPython/demo/wxToggleButton.py | 4 +-
wxPython/demo/wxToolBar.py | 32 +-
wxPython/demo/wxTreeCtrl.py | 57 +-
wxPython/demo/wxValidator.py | 40 +-
wxPython/demo/wxXmlResource.py | 2 +-
wxPython/demo/wxXmlResourceHandler.py | 4 +-
wxPython/distrib/.rpmrc | 5 -
wxPython/distrib/README.1st.txt | 117 +
wxPython/distrib/README.dbg.txt | 30 -
wxPython/distrib/README.viewdocs.txt | 17 +
wxPython/distrib/autobuild.py | 139 -
wxPython/distrib/genfilelist.py | 51 +
wxPython/distrib/mac/.cvsignore | 1 +
wxPython/distrib/mac/MacPython/.cvsignore | 1 +
wxPython/distrib/mac/MacPython/README.txt | 3 +
wxPython/distrib/mac/MacPython/build | 129 +
.../mac/MacPython/resources/Welcome.txt | 6 +
.../mac/MacPython/resources/postflight | 67 +
wxPython/distrib/mac/MachoPython.info | 15 -
wxPython/distrib/mac/_build | 264 -
wxPython/distrib/mac/_buildPython | 162 -
wxPython/distrib/mac/build | 11 -
wxPython/distrib/mac/buildPython | 8 -
wxPython/distrib/mac/buildapp.py | 4 +
wxPython/distrib/mac/buildpkg.py | 470 ++
wxPython/distrib/mac/bundlebuilder.py | 816 +++
wxPython/distrib/mac/makepkg | 283 --
wxPython/distrib/mac/resources/Welcome.txt | 2 -
wxPython/distrib/mac/resources/preflight | 11 -
.../distrib/mac/resourcesPython/License.rtf | 25 -
.../distrib/mac/resourcesPython/ReadMe.rtf | 91 -
.../distrib/mac/resourcesPython/Welcome.txt | 2 -
wxPython/distrib/mac/wxPythonOSX.info | 15 -
wxPython/distrib/mac/wxPythonOSX/.cvsignore | 1 +
.../distrib/mac/wxPythonOSX/PieShell.icns | Bin 0 -> 55621 bytes
wxPython/distrib/mac/wxPythonOSX/RunDemo.icns | Bin 0 -> 41898 bytes
wxPython/distrib/mac/wxPythonOSX/XRCed.icns | Bin 0 -> 37830 bytes
wxPython/distrib/mac/wxPythonOSX/build | 390 ++
.../{ => wxPythonOSX}/resources/License.rtf | 0
.../{ => wxPythonOSX}/resources/ReadMe.rtf | 35 +-
.../mac/wxPythonOSX/resources/Welcome.txt | 5 +
.../mac/wxPythonOSX/resources/postflight | 18 +
.../mac/wxPythonOSX/resources/preflight | 4 +
wxPython/distrib/mac/zappycfiles.py | 38 +
wxPython/distrib/make_installer.py | 93 +-
wxPython/distrib/makedbg.bat | 33 -
wxPython/distrib/makedemo | 10 +-
wxPython/distrib/makedev.bat | 4 +-
wxPython/distrib/makedocs | 63 +
wxPython/distrib/makedocs.bat | 26 -
wxPython/distrib/makerpm | 123 +-
wxPython/distrib/maketgz | 62 -
wxPython/distrib/maketools | 38 -
wxPython/distrib/makexferzip | 10 -
wxPython/distrib/makexferzip.bat | 9 -
wxPython/distrib/viewdocs.py | 31 +
wxPython/distrib/wise.aut | 7 -
wxPython/distrib/wxPython.WSM | Bin 33 -> 0 bytes
wxPython/distrib/wxPython.bmp | Bin 131190 -> 0 bytes
wxPython/distrib/wxPython.rsp | 106 -
wxPython/distrib/wxPython.wse | 1364 ------
wxPython/distrib/wxPythonFull.spec.in | 192 +-
wxPython/distrib/zipall.bat | 4 -
wxPython/distrib/zipit.bat | 44 -
wxPython/distutils/README | 22 +
wxPython/distutils/README_1st.txt | 19 +
wxPython/distutils/__init__.py | 15 +
wxPython/distutils/archive_util.py | 173 +
wxPython/distutils/bcppcompiler.py | 394 ++
wxPython/distutils/ccompiler.py | 1215 +++++
wxPython/distutils/cmd.py | 478 ++
wxPython/distutils/command/__init__.py | 32 +
wxPython/distutils/command/bdist.py | 150 +
wxPython/distutils/command/bdist_dumb.py | 128 +
wxPython/distutils/command/bdist_rpm.py | 493 ++
wxPython/distutils/command/bdist_wininst.py | 242 +
wxPython/distutils/command/build.py | 131 +
wxPython/distutils/command/build_clib.py | 238 +
wxPython/distutils/command/build_ext.py | 674 +++
wxPython/distutils/command/build_py.py | 396 ++
wxPython/distutils/command/build_scripts.py | 126 +
wxPython/distutils/command/clean.py | 82 +
wxPython/distutils/command/command_template | 45 +
wxPython/distutils/command/config.py | 368 ++
wxPython/distutils/command/install.py | 601 +++
wxPython/distutils/command/install_data.py | 85 +
wxPython/distutils/command/install_headers.py | 53 +
wxPython/distutils/command/install_lib.py | 210 +
wxPython/distutils/command/install_scripts.py | 66 +
wxPython/distutils/command/register.py | 292 ++
wxPython/distutils/command/sdist.py | 460 ++
wxPython/distutils/core.py | 241 +
wxPython/distutils/cygwinccompiler.py | 397 ++
wxPython/distutils/debug.py | 10 +
wxPython/distutils/dep_util.py | 95 +
wxPython/distutils/dir_util.py | 228 +
wxPython/distutils/dist.py | 1095 +++++
wxPython/distutils/emxccompiler.py | 315 ++
wxPython/distutils/errors.py | 99 +
wxPython/distutils/extension.py | 241 +
wxPython/distutils/fancy_getopt.py | 501 ++
wxPython/distutils/file_util.py | 253 +
wxPython/distutils/filelist.py | 355 ++
wxPython/distutils/log.py | 61 +
wxPython/distutils/msvccompiler.py | 503 ++
wxPython/distutils/mwerkscompiler.py | 248 +
wxPython/distutils/spawn.py | 194 +
wxPython/distutils/sysconfig.py | 495 ++
wxPython/distutils/text_file.py | 382 ++
wxPython/distutils/unixccompiler.py | 233 +
wxPython/distutils/util.py | 460 ++
wxPython/distutils/version.py | 299 ++
wxPython/my_distutils.py | 488 --
.../samples/StyleEditor/STCStyleEditor.py | 903 ++--
wxPython/samples/doodle/.cvsignore | 1 +
wxPython/samples/doodle/doodle.py | 16 +-
wxPython/samples/doodle/superdoodle.py | 10 +-
wxPython/samples/frogedit/FrogEdit.py | 28 +-
wxPython/samples/pySketch/pySketch.py | 3802 +++++++-------
wxPython/samples/stxview/README.txt | 3 -
.../StructuredText/ClassicDocumentClass.py | 684 ---
.../StructuredText/ClassicStructuredText.py | 625 ---
.../stxview/StructuredText/DocBookClass.py | 332 --
.../stxview/StructuredText/DocumentClass.py | 998 ----
.../StructuredText/DocumentWithImages.py | 134 -
.../stxview/StructuredText/HTMLClass.py | 307 --
.../stxview/StructuredText/HTMLWithImages.py | 128 -
wxPython/samples/stxview/StructuredText/ST.py | 283 --
.../samples/stxview/StructuredText/STDOM.py | 736 ---
.../samples/stxview/StructuredText/STNG.txt | 116 -
.../stxview/StructuredText/STletters.py | 15 -
.../stxview/StructuredText/StructuredText.py | 148 -
.../samples/stxview/StructuredText/Zwiki.py | 158 -
.../stxview/StructuredText/__init__.py | 112 -
wxPython/samples/stxview/stxview.py | 201 -
wxPython/samples/stxview/test.stx | 127 -
wxPython/samples/wxProject/wxProject.py | 32 +-
wxPython/scripts/CreateBatchFiles.py | 4 +-
wxPython/scripts/CreateMacScripts.py | 21 +-
wxPython/scripts/helpviewer | 4 +
wxPython/scripts/helpviewer.bat | 3 +
wxPython/scripts/img2png.bat | 2 +-
wxPython/scripts/img2py.bat | 2 +-
wxPython/scripts/img2xpm.bat | 2 +-
wxPython/scripts/pycrust.bat | 2 +-
wxPython/scripts/pycwrap | 7 +
wxPython/scripts/pycwrap.bat | 3 +
wxPython/scripts/pyshell.bat | 2 +-
wxPython/scripts/xrced.bat | 2 +-
wxPython/setup.py | 729 ++-
wxPython/src/__version__.py | 2 +-
wxPython/src/_calextras.py | 1 +
wxPython/src/_defs.i | 18 +-
wxPython/src/_extras.py | 104 +-
wxPython/src/_helpextras.py | 1 +
wxPython/src/_htmlextras.py | 1 +
wxPython/src/_wizardextras.py | 4 +
wxPython/src/clip_dnd.i | 35 +-
wxPython/src/controls.i | 8 +-
wxPython/src/controls2.i | 50 +-
wxPython/src/drawlist.cpp | 350 ++
wxPython/src/events.i | 4 +-
wxPython/src/filesys.i | 11 +-
wxPython/src/fonts.i | 93 +-
wxPython/src/frames.i | 4 +-
wxPython/src/gdi.i | 469 +-
wxPython/src/grid.i | 87 +-
wxPython/src/helpers.cpp | 428 +-
wxPython/src/helpers.h | 189 +-
wxPython/src/html.i | 137 +-
wxPython/src/image.i | 15 +
wxPython/src/misc.i | 263 +-
wxPython/src/misc2.i | 41 +-
wxPython/src/my_typemaps.i | 43 +-
wxPython/src/pyistream.h | 13 +
wxPython/src/sizers.i | 231 +-
wxPython/src/stattool.i | 4 +-
wxPython/src/streams.i | 19 +-
wxPython/src/utils.i | 26 +-
wxPython/src/windows.i | 17 +
wxPython/src/windows2.i | 34 +-
.../src/{wxc.pyd.manifest => winxp.manifest} | 2 +-
wxPython/src/wizard.i | 9 +-
wxPython/src/wx.i | 39 +-
wxPython/src/wxPython.h | 1 +
wxPython/src/wxc.rc | 2 +-
wxPython/tests/gridtest.py | 2 +-
wxPython/tests/hangman.py | 618 +--
wxPython/tests/tabs.py | 1 -
wxPython/tests/test7.py | 19 +-
wxPython/tests/test8.py | 58 +-
wxPython/tests/testDlg.py | 44 +-
wxPython/tests/testTree.py | 188 +-
wxPython/tests/txml.py | 4 +-
wxPython/tests/val.py | 3 +-
wxPython/tests/wxPlotCanvas.py | 533 +-
wxPython/tests/wxSlash.py | 126 +-
wxPython/wxPython/.cvsignore | 1 +
wxPython/wxPython/lib/CDate.py | 10 +-
wxPython/wxPython/lib/ErrorDialogs.py | 42 +-
wxPython/wxPython/lib/PyCrust/CHANGES.txt | 512 ++
wxPython/wxPython/lib/PyCrust/PyCrustApp.py | 67 +-
wxPython/wxPython/lib/PyCrust/PyFillingApp.py | 38 +-
wxPython/wxPython/lib/PyCrust/PyShellApp.py | 69 +-
wxPython/wxPython/lib/PyCrust/README.txt | 43 +-
wxPython/wxPython/lib/PyCrust/crust.py | 157 +-
wxPython/wxPython/lib/PyCrust/dispatcher.py | 266 +
wxPython/wxPython/lib/PyCrust/filling.py | 424 +-
wxPython/wxPython/lib/PyCrust/interpreter.py | 52 +-
wxPython/wxPython/lib/PyCrust/introspect.py | 199 +-
wxPython/wxPython/lib/PyCrust/pseudo.py | 64 +-
wxPython/wxPython/lib/PyCrust/shell.py | 845 ++--
wxPython/wxPython/lib/PyCrust/shellmenu.py | 226 +
wxPython/wxPython/lib/PyCrust/version.py | 9 +-
wxPython/wxPython/lib/PyCrust/wrap.py | 56 +
.../wxPython/lib/PyCrust/wxd/Accelerators.py | 58 +
wxPython/wxPython/lib/PyCrust/wxd/App.py | 358 ++
wxPython/wxPython/lib/PyCrust/wxd/Base.py | 206 +
.../wxPython/lib/PyCrust/wxd/ClipDragDrop.py | 485 ++
wxPython/wxPython/lib/PyCrust/wxd/Config.py | 199 +
wxPython/wxPython/lib/PyCrust/wxd/Controls.py | 1846 +++++++
.../lib/PyCrust/wxd/DataStructures.py | 485 ++
wxPython/wxPython/lib/PyCrust/wxd/DateTime.py | 553 +++
wxPython/wxPython/lib/PyCrust/wxd/Dialogs.py | 471 ++
wxPython/wxPython/lib/PyCrust/wxd/Drawing.py | 1466 ++++++
wxPython/wxPython/lib/PyCrust/wxd/Errors.py | 25 +
.../lib/PyCrust/wxd/EventFunctions.py | 794 +++
wxPython/wxPython/lib/PyCrust/wxd/Events.py | 1275 +++++
.../wxPython/lib/PyCrust/wxd/FileSystem.py | 193 +
wxPython/wxPython/lib/PyCrust/wxd/Frames.py | 440 ++
.../wxPython/lib/PyCrust/wxd/Functions.py | 1262 +++++
wxPython/wxPython/lib/PyCrust/wxd/Help.py | 127 +
.../wxPython/lib/PyCrust/wxd/ImageHandlers.py | 142 +
wxPython/wxPython/lib/PyCrust/wxd/Joystick.py | 197 +
.../lib/PyCrust/wxd/LayoutConstraints.py | 80 +
wxPython/wxPython/lib/PyCrust/wxd/Logging.py | 145 +
wxPython/wxPython/lib/PyCrust/wxd/Menus.py | 477 ++
.../wxPython/lib/PyCrust/wxd/MimeTypes.py | 185 +
wxPython/wxPython/lib/PyCrust/wxd/Misc.py | 558 +++
wxPython/wxPython/lib/PyCrust/wxd/Panel.py | 240 +
.../wxPython/lib/PyCrust/wxd/Parameters.py | 68 +
wxPython/wxPython/lib/PyCrust/wxd/Printing.py | 651 +++
wxPython/wxPython/lib/PyCrust/wxd/Process.py | 77 +
.../wxPython/lib/PyCrust/wxd/SashSplitter.py | 226 +
wxPython/wxPython/lib/PyCrust/wxd/Sizers.py | 488 ++
wxPython/wxPython/lib/PyCrust/wxd/Streams.py | 96 +
.../lib/PyCrust/wxd/StyledTextConstants.py | 643 +++
.../wxPython/lib/PyCrust/wxd/Threading.py | 26 +
wxPython/wxPython/lib/PyCrust/wxd/ToolBar.py | 403 ++
wxPython/wxPython/lib/PyCrust/wxd/Tree.py | 402 ++
.../wxPython/lib/PyCrust/wxd/Validators.py | 56 +
wxPython/wxPython/lib/PyCrust/wxd/Window.py | 850 ++++
wxPython/wxPython/lib/PyCrust/wxd/__init__.py | 1 +
wxPython/wxPython/lib/PyCrust/wxd/d_stc.py | 17 +
wxPython/wxPython/lib/PyCrust/wxd/d_wx.py | 17 +
.../wxPython/lib/PyCrust/wxd/decorator.py | 92 +
wxPython/wxPython/lib/PyCrust/wxd/gen.py | 71 +
wxPython/wxPython/lib/PyCrust/wxd/stc_.py | 1409 ++++++
wxPython/wxPython/lib/PyCrust/wxd/wx_.py | 62 +
wxPython/wxPython/lib/PythonBitmaps.py | 2 +-
wxPython/wxPython/lib/buttons.py | 110 +-
wxPython/wxPython/lib/calendar.py | 45 +-
.../wxPython/lib/colourchooser/__init__.py | 26 +
wxPython/wxPython/lib/colourchooser/canvas.py | 120 +
wxPython/wxPython/lib/colourchooser/intl.py | 24 +
.../wxPython/lib/colourchooser/pycolourbox.py | 79 +
.../lib/colourchooser/pycolourchooser.py | 385 ++
.../lib/colourchooser/pycolourslider.py | 82 +
.../wxPython/lib/colourchooser/pypalette.py | 214 +
wxPython/wxPython/lib/colourselect.py | 2 +-
wxPython/wxPython/lib/dialogs.py | 397 +-
wxPython/wxPython/lib/editor/editor.py | 57 +-
wxPython/wxPython/lib/editor/selection.py | 18 +-
wxPython/wxPython/lib/evtmgr.py | 519 ++
wxPython/wxPython/lib/fancytext.py | 2 +-
wxPython/wxPython/lib/filebrowsebutton.py | 16 +-
wxPython/wxPython/lib/floatbar.py | 12 +-
wxPython/wxPython/lib/gridmovers.py | 419 ++
wxPython/wxPython/lib/grids.py | 4 +-
wxPython/wxPython/lib/imagebrowser.py | 84 +-
wxPython/wxPython/lib/imageutils.py | 45 +
wxPython/wxPython/lib/infoframe.py | 8 +-
wxPython/wxPython/lib/intctrl.py | 866 ++++
wxPython/wxPython/lib/layoutf.py | 14 +-
wxPython/wxPython/lib/mixins/listctrl.py | 173 +-
wxPython/wxPython/lib/mixins/rubberband.py | 389 ++
wxPython/wxPython/lib/multisash.py | 726 +++
wxPython/wxPython/lib/mvctree.py | 90 +-
wxPython/wxPython/lib/popupctl.py | 243 +
wxPython/wxPython/lib/printout.py | 112 +-
wxPython/wxPython/lib/pubsub.py | 382 ++
wxPython/wxPython/lib/pyshell.py | 6 +-
wxPython/wxPython/lib/rpcMixin.py | 7 +-
wxPython/wxPython/lib/scrolledpanel.py | 85 +
wxPython/wxPython/lib/sheet.py | 92 +-
wxPython/wxPython/lib/shell.py | 24 +-
wxPython/wxPython/lib/splashscreen.py | 14 +-
wxPython/wxPython/lib/stattext.py | 12 +-
wxPython/wxPython/lib/throbber.py | 253 +
wxPython/wxPython/lib/timectrl.py | 843 ++++
wxPython/wxPython/lib/vtk.py | 4 +-
wxPython/wxPython/lib/wxPlotCanvas.py | 15 +-
wxPython/wxPython/lib/wxpTag.py | 67 +-
wxPython/wxPython/tools/XRCed/CHANGES.txt | 162 +
.../tools/XRCed/{README => README.txt} | 7 +-
.../wxPython/tools/XRCed/{TODO => TODO.txt} | 8 +-
.../wxPython/tools/XRCed/encode_bitmaps.py | 27 +
wxPython/wxPython/tools/XRCed/globals.py | 39 +
wxPython/wxPython/tools/XRCed/images.py | 1803 ++++++-
wxPython/wxPython/tools/XRCed/license.txt | 23 +
wxPython/wxPython/tools/XRCed/panel.py | 365 ++
wxPython/wxPython/tools/XRCed/params.py | 349 +-
wxPython/wxPython/tools/XRCed/sawfishrc | 24 +
.../tools/XRCed/src-images/AutoRefresh.png | Bin 0 -> 316 bytes
.../wxPython/tools/XRCed/src-images/Copy.png | Bin 0 -> 273 bytes
.../wxPython/tools/XRCed/src-images/Cut.png | Bin 0 -> 255 bytes
.../wxPython/tools/XRCed/src-images/Icon.png | Bin 0 -> 1111 bytes
.../wxPython/tools/XRCed/src-images/New.png | Bin 0 -> 190 bytes
.../wxPython/tools/XRCed/src-images/Open.png | Bin 0 -> 274 bytes
.../wxPython/tools/XRCed/src-images/Paste.png | Bin 0 -> 280 bytes
.../wxPython/tools/XRCed/src-images/Redo.png | Bin 0 -> 252 bytes
.../tools/XRCed/src-images/Refresh.png | Bin 0 -> 275 bytes
.../wxPython/tools/XRCed/src-images/Save.png | Bin 0 -> 207 bytes
.../wxPython/tools/XRCed/src-images/Test.png | Bin 0 -> 350 bytes
.../XRCed/src-images/ToolBitmapButton.png | Bin 0 -> 616 bytes
.../tools/XRCed/src-images/ToolBoxSizer.png | Bin 0 -> 141 bytes
.../tools/XRCed/src-images/ToolButton.png | Bin 0 -> 182 bytes
.../tools/XRCed/src-images/ToolCheckBox.png | Bin 0 -> 117 bytes
.../tools/XRCed/src-images/ToolCheckList.png | Bin 0 -> 233 bytes
.../tools/XRCed/src-images/ToolChoice.png | Bin 0 -> 193 bytes
.../tools/XRCed/src-images/ToolComboBox.png | Bin 0 -> 233 bytes
.../tools/XRCed/src-images/ToolDefault.png | Bin 0 -> 154 bytes
.../tools/XRCed/src-images/ToolDialog.png | Bin 0 -> 146 bytes
.../XRCed/src-images/ToolFlexGridSizer.png | Bin 0 -> 139 bytes
.../tools/XRCed/src-images/ToolFrame.png | Bin 0 -> 131 bytes
.../tools/XRCed/src-images/ToolGauge.png | Bin 0 -> 141 bytes
.../tools/XRCed/src-images/ToolGridSizer.png | Bin 0 -> 133 bytes
.../tools/XRCed/src-images/ToolListBox.png | Bin 0 -> 184 bytes
.../tools/XRCed/src-images/ToolListCtrl.png | Bin 0 -> 167 bytes
.../tools/XRCed/src-images/ToolMenu.png | Bin 0 -> 166 bytes
.../tools/XRCed/src-images/ToolMenuBar.png | Bin 0 -> 171 bytes
.../tools/XRCed/src-images/ToolMenuItem.png | Bin 0 -> 135 bytes
.../tools/XRCed/src-images/ToolNotebook.png | Bin 0 -> 253 bytes
.../tools/XRCed/src-images/ToolPanel.png | Bin 0 -> 140 bytes
.../tools/XRCed/src-images/ToolRadioBox.png | Bin 0 -> 296 bytes
.../XRCed/src-images/ToolRadioButton.png | Bin 0 -> 200 bytes
.../tools/XRCed/src-images/ToolRoot.png | Bin 0 -> 170 bytes
.../tools/XRCed/src-images/ToolScrollBar.png | Bin 0 -> 254 bytes
.../tools/XRCed/src-images/ToolSeparator.png | Bin 0 -> 80 bytes
.../tools/XRCed/src-images/ToolSlider.png | Bin 0 -> 185 bytes
.../tools/XRCed/src-images/ToolSpacer.png | Bin 0 -> 229 bytes
.../tools/XRCed/src-images/ToolSpinButton.png | Bin 0 -> 161 bytes
.../tools/XRCed/src-images/ToolSpinCtrl.png | Bin 0 -> 308 bytes
.../XRCed/src-images/ToolStaticBitmap.png | Bin 0 -> 576 bytes
.../tools/XRCed/src-images/ToolStaticBox.png | Bin 0 -> 189 bytes
.../XRCed/src-images/ToolStaticBoxSizer.png | Bin 0 -> 173 bytes
.../tools/XRCed/src-images/ToolStaticLine.png | Bin 0 -> 82 bytes
.../tools/XRCed/src-images/ToolStaticText.png | Bin 0 -> 166 bytes
.../tools/XRCed/src-images/ToolTextCtrl.png | Bin 0 -> 129 bytes
.../tools/XRCed/src-images/ToolTool.png | Bin 0 -> 119 bytes
.../tools/XRCed/src-images/ToolToolBar.png | Bin 0 -> 165 bytes
.../tools/XRCed/src-images/ToolTreeCtrl.png | Bin 0 -> 154 bytes
.../tools/XRCed/src-images/ToolUnknown.png | Bin 0 -> 145 bytes
.../tools/XRCed/src-images/TreeDefault.png | Bin 0 -> 154 bytes
.../tools/XRCed/src-images/TreeDialog.png | Bin 0 -> 146 bytes
.../tools/XRCed/src-images/TreeFrame.png | Bin 0 -> 131 bytes
.../tools/XRCed/src-images/TreeMenu.png | Bin 0 -> 166 bytes
.../tools/XRCed/src-images/TreeMenuBar.png | Bin 0 -> 171 bytes
.../tools/XRCed/src-images/TreeMenuItem.png | Bin 0 -> 139 bytes
.../tools/XRCed/src-images/TreePanel.png | Bin 0 -> 140 bytes
.../tools/XRCed/src-images/TreeRoot.png | Bin 0 -> 170 bytes
.../tools/XRCed/src-images/TreeSeparator.png | Bin 0 -> 103 bytes
.../XRCed/src-images/TreeSizerFlexGrid.png | Bin 0 -> 139 bytes
.../tools/XRCed/src-images/TreeSizerGrid.png | Bin 0 -> 133 bytes
.../tools/XRCed/src-images/TreeSizerH.png | Bin 0 -> 141 bytes
.../tools/XRCed/src-images/TreeSizerV.png | Bin 0 -> 136 bytes
.../XRCed/src-images/TreeStaticBoxSizerH.png | Bin 0 -> 173 bytes
.../XRCed/src-images/TreeStaticBoxSizerV.png | Bin 0 -> 177 bytes
.../tools/XRCed/src-images/TreeTool.png | Bin 0 -> 141 bytes
.../tools/XRCed/src-images/TreeToolBar.png | Bin 0 -> 194 bytes
.../wxPython/tools/XRCed/src-images/Undo.png | Bin 0 -> 240 bytes
wxPython/wxPython/tools/XRCed/tools.py | 279 ++
wxPython/wxPython/tools/XRCed/tree.py | 839 ++++
wxPython/wxPython/tools/XRCed/undo.py | 151 +
wxPython/wxPython/tools/XRCed/xrced.py | 1587 ++----
wxPython/wxPython/tools/XRCed/xrced.xrc | 101 +-
wxPython/wxPython/tools/XRCed/xxx.py | 234 +-
wxPython/wxPython/tools/dbg.py | 256 +
wxPython/wxPython/tools/helpviewer.py | 80 +
wxPython/wxPython/tools/img2img.py | 19 +-
wxPython/wxPython/tools/img2png.py | 12 +-
wxPython/wxPython/tools/img2py.py | 76 +-
wxPython/wxPython/tools/img2xpm.py | 12 +-
wxPython/wxSWIG/Modules/pycpp.cxx | 11 +-
wxPython/wxSWIG/Modules/python.cxx | 10 +-
wxPython/wxSWIG/swig_lib/perl5/.cvsignore | 1 +
wxPython/wxSWIG/swig_lib/python/.cvsignore | 1 +
wxPython/wxSWIG/swig_lib/python/pyexp.swg | 5 +-
wxPython/wxSWIG/swig_lib/python/python.swg | 4 +-
wxPython/wxSWIG/swig_lib/tcl/.cvsignore | 1 +
586 files changed, 62842 insertions(+), 17891 deletions(-)
create mode 100644 wxPython/demo/EventManager.py
create mode 100644 wxPython/demo/GridDragable.py
delete mode 100644 wxPython/demo/ScrolledPanel.py
create mode 100644 wxPython/demo/Throbber.py
create mode 100644 wxPython/demo/bmp_source/001.png
create mode 100644 wxPython/demo/bmp_source/002.png
create mode 100644 wxPython/demo/bmp_source/003.png
create mode 100644 wxPython/demo/bmp_source/004.png
create mode 100644 wxPython/demo/bmp_source/005.png
create mode 100644 wxPython/demo/bmp_source/006.png
create mode 100644 wxPython/demo/bmp_source/007.png
create mode 100644 wxPython/demo/bmp_source/008.png
create mode 100644 wxPython/demo/bmp_source/009.png
create mode 100644 wxPython/demo/bmp_source/010.png
create mode 100644 wxPython/demo/bmp_source/011.png
create mode 100644 wxPython/demo/bmp_source/012.png
create mode 100644 wxPython/demo/bmp_source/013.png
create mode 100644 wxPython/demo/bmp_source/014.png
create mode 100644 wxPython/demo/bmp_source/015.png
create mode 100644 wxPython/demo/bmp_source/016.png
create mode 100644 wxPython/demo/bmp_source/017.png
create mode 100644 wxPython/demo/bmp_source/018.png
create mode 100644 wxPython/demo/bmp_source/019.png
create mode 100644 wxPython/demo/bmp_source/020.png
create mode 100644 wxPython/demo/bmp_source/021.png
create mode 100644 wxPython/demo/bmp_source/022.png
create mode 100644 wxPython/demo/bmp_source/023.png
create mode 100644 wxPython/demo/bmp_source/024.png
create mode 100644 wxPython/demo/bmp_source/025.png
create mode 100644 wxPython/demo/bmp_source/026.png
create mode 100644 wxPython/demo/bmp_source/027.png
create mode 100644 wxPython/demo/bmp_source/028.png
create mode 100644 wxPython/demo/bmp_source/029.png
create mode 100644 wxPython/demo/bmp_source/030.png
create mode 100644 wxPython/demo/bmp_source/eclouds.png
create mode 100644 wxPython/demo/bmp_source/logo.png
create mode 100644 wxPython/demo/bmp_source/rest.png
create mode 100644 wxPython/demo/throbImages.py
create mode 100644 wxPython/demo/wxIntCtrl.py
create mode 100644 wxPython/demo/wxMultiSash.py
create mode 100644 wxPython/demo/wxPopupControl.py
create mode 100644 wxPython/demo/wxPyColourChooser.py
create mode 100644 wxPython/demo/wxRadioButton.py
create mode 100644 wxPython/demo/wxScrolledPanel.py
create mode 100644 wxPython/demo/wxTimeCtrl.py
delete mode 100644 wxPython/distrib/.rpmrc
create mode 100644 wxPython/distrib/README.1st.txt
delete mode 100644 wxPython/distrib/README.dbg.txt
create mode 100644 wxPython/distrib/README.viewdocs.txt
delete mode 100755 wxPython/distrib/autobuild.py
create mode 100644 wxPython/distrib/genfilelist.py
create mode 100644 wxPython/distrib/mac/.cvsignore
create mode 100644 wxPython/distrib/mac/MacPython/.cvsignore
create mode 100644 wxPython/distrib/mac/MacPython/README.txt
create mode 100755 wxPython/distrib/mac/MacPython/build
create mode 100644 wxPython/distrib/mac/MacPython/resources/Welcome.txt
create mode 100755 wxPython/distrib/mac/MacPython/resources/postflight
delete mode 100644 wxPython/distrib/mac/MachoPython.info
delete mode 100755 wxPython/distrib/mac/_build
delete mode 100755 wxPython/distrib/mac/_buildPython
delete mode 100755 wxPython/distrib/mac/build
delete mode 100755 wxPython/distrib/mac/buildPython
create mode 100644 wxPython/distrib/mac/buildapp.py
create mode 100644 wxPython/distrib/mac/buildpkg.py
create mode 100644 wxPython/distrib/mac/bundlebuilder.py
delete mode 100755 wxPython/distrib/mac/makepkg
delete mode 100644 wxPython/distrib/mac/resources/Welcome.txt
delete mode 100755 wxPython/distrib/mac/resources/preflight
delete mode 100644 wxPython/distrib/mac/resourcesPython/License.rtf
delete mode 100644 wxPython/distrib/mac/resourcesPython/ReadMe.rtf
delete mode 100644 wxPython/distrib/mac/resourcesPython/Welcome.txt
delete mode 100644 wxPython/distrib/mac/wxPythonOSX.info
create mode 100644 wxPython/distrib/mac/wxPythonOSX/.cvsignore
create mode 100644 wxPython/distrib/mac/wxPythonOSX/PieShell.icns
create mode 100644 wxPython/distrib/mac/wxPythonOSX/RunDemo.icns
create mode 100644 wxPython/distrib/mac/wxPythonOSX/XRCed.icns
create mode 100755 wxPython/distrib/mac/wxPythonOSX/build
rename wxPython/distrib/mac/{ => wxPythonOSX}/resources/License.rtf (100%)
rename wxPython/distrib/mac/{ => wxPythonOSX}/resources/ReadMe.rtf (70%)
create mode 100644 wxPython/distrib/mac/wxPythonOSX/resources/Welcome.txt
create mode 100755 wxPython/distrib/mac/wxPythonOSX/resources/postflight
create mode 100755 wxPython/distrib/mac/wxPythonOSX/resources/preflight
create mode 100644 wxPython/distrib/mac/zappycfiles.py
delete mode 100755 wxPython/distrib/makedbg.bat
create mode 100755 wxPython/distrib/makedocs
delete mode 100755 wxPython/distrib/makedocs.bat
delete mode 100755 wxPython/distrib/maketgz
delete mode 100755 wxPython/distrib/maketools
delete mode 100755 wxPython/distrib/makexferzip
delete mode 100755 wxPython/distrib/makexferzip.bat
create mode 100755 wxPython/distrib/viewdocs.py
delete mode 100644 wxPython/distrib/wise.aut
delete mode 100644 wxPython/distrib/wxPython.WSM
delete mode 100644 wxPython/distrib/wxPython.bmp
delete mode 100644 wxPython/distrib/wxPython.rsp
delete mode 100644 wxPython/distrib/wxPython.wse
delete mode 100755 wxPython/distrib/zipall.bat
delete mode 100755 wxPython/distrib/zipit.bat
create mode 100644 wxPython/distutils/README
create mode 100644 wxPython/distutils/README_1st.txt
create mode 100644 wxPython/distutils/__init__.py
create mode 100644 wxPython/distutils/archive_util.py
create mode 100644 wxPython/distutils/bcppcompiler.py
create mode 100644 wxPython/distutils/ccompiler.py
create mode 100644 wxPython/distutils/cmd.py
create mode 100644 wxPython/distutils/command/__init__.py
create mode 100644 wxPython/distutils/command/bdist.py
create mode 100644 wxPython/distutils/command/bdist_dumb.py
create mode 100644 wxPython/distutils/command/bdist_rpm.py
create mode 100644 wxPython/distutils/command/bdist_wininst.py
create mode 100644 wxPython/distutils/command/build.py
create mode 100644 wxPython/distutils/command/build_clib.py
create mode 100644 wxPython/distutils/command/build_ext.py
create mode 100644 wxPython/distutils/command/build_py.py
create mode 100644 wxPython/distutils/command/build_scripts.py
create mode 100644 wxPython/distutils/command/clean.py
create mode 100644 wxPython/distutils/command/command_template
create mode 100644 wxPython/distutils/command/config.py
create mode 100644 wxPython/distutils/command/install.py
create mode 100644 wxPython/distutils/command/install_data.py
create mode 100644 wxPython/distutils/command/install_headers.py
create mode 100644 wxPython/distutils/command/install_lib.py
create mode 100644 wxPython/distutils/command/install_scripts.py
create mode 100644 wxPython/distutils/command/register.py
create mode 100644 wxPython/distutils/command/sdist.py
create mode 100644 wxPython/distutils/core.py
create mode 100644 wxPython/distutils/cygwinccompiler.py
create mode 100644 wxPython/distutils/debug.py
create mode 100644 wxPython/distutils/dep_util.py
create mode 100644 wxPython/distutils/dir_util.py
create mode 100644 wxPython/distutils/dist.py
create mode 100644 wxPython/distutils/emxccompiler.py
create mode 100644 wxPython/distutils/errors.py
create mode 100644 wxPython/distutils/extension.py
create mode 100644 wxPython/distutils/fancy_getopt.py
create mode 100644 wxPython/distutils/file_util.py
create mode 100644 wxPython/distutils/filelist.py
create mode 100644 wxPython/distutils/log.py
create mode 100644 wxPython/distutils/msvccompiler.py
create mode 100644 wxPython/distutils/mwerkscompiler.py
create mode 100644 wxPython/distutils/spawn.py
create mode 100644 wxPython/distutils/sysconfig.py
create mode 100644 wxPython/distutils/text_file.py
create mode 100644 wxPython/distutils/unixccompiler.py
create mode 100644 wxPython/distutils/util.py
create mode 100644 wxPython/distutils/version.py
delete mode 100644 wxPython/my_distutils.py
delete mode 100644 wxPython/samples/stxview/README.txt
delete mode 100644 wxPython/samples/stxview/StructuredText/ClassicDocumentClass.py
delete mode 100644 wxPython/samples/stxview/StructuredText/ClassicStructuredText.py
delete mode 100644 wxPython/samples/stxview/StructuredText/DocBookClass.py
delete mode 100644 wxPython/samples/stxview/StructuredText/DocumentClass.py
delete mode 100644 wxPython/samples/stxview/StructuredText/DocumentWithImages.py
delete mode 100644 wxPython/samples/stxview/StructuredText/HTMLClass.py
delete mode 100644 wxPython/samples/stxview/StructuredText/HTMLWithImages.py
delete mode 100644 wxPython/samples/stxview/StructuredText/ST.py
delete mode 100644 wxPython/samples/stxview/StructuredText/STDOM.py
delete mode 100644 wxPython/samples/stxview/StructuredText/STNG.txt
delete mode 100644 wxPython/samples/stxview/StructuredText/STletters.py
delete mode 100644 wxPython/samples/stxview/StructuredText/StructuredText.py
delete mode 100644 wxPython/samples/stxview/StructuredText/Zwiki.py
delete mode 100644 wxPython/samples/stxview/StructuredText/__init__.py
delete mode 100644 wxPython/samples/stxview/stxview.py
delete mode 100644 wxPython/samples/stxview/test.stx
create mode 100755 wxPython/scripts/helpviewer
create mode 100755 wxPython/scripts/helpviewer.bat
create mode 100755 wxPython/scripts/pycwrap
create mode 100755 wxPython/scripts/pycwrap.bat
create mode 100644 wxPython/src/drawlist.cpp
rename wxPython/src/{wxc.pyd.manifest => winxp.manifest} (90%)
create mode 100644 wxPython/wxPython/lib/PyCrust/CHANGES.txt
create mode 100644 wxPython/wxPython/lib/PyCrust/dispatcher.py
create mode 100644 wxPython/wxPython/lib/PyCrust/shellmenu.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wrap.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Accelerators.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/App.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Base.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/ClipDragDrop.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Config.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Controls.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/DataStructures.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/DateTime.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Dialogs.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Drawing.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Errors.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/EventFunctions.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Events.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/FileSystem.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Frames.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Functions.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Help.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/ImageHandlers.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Joystick.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/LayoutConstraints.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Logging.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Menus.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/MimeTypes.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Misc.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Panel.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Parameters.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Printing.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Process.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/SashSplitter.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Sizers.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Streams.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/StyledTextConstants.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Threading.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/ToolBar.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Tree.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Validators.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/Window.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/__init__.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/d_stc.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/d_wx.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/decorator.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/gen.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/stc_.py
create mode 100644 wxPython/wxPython/lib/PyCrust/wxd/wx_.py
create mode 100644 wxPython/wxPython/lib/colourchooser/__init__.py
create mode 100644 wxPython/wxPython/lib/colourchooser/canvas.py
create mode 100644 wxPython/wxPython/lib/colourchooser/intl.py
create mode 100644 wxPython/wxPython/lib/colourchooser/pycolourbox.py
create mode 100644 wxPython/wxPython/lib/colourchooser/pycolourchooser.py
create mode 100644 wxPython/wxPython/lib/colourchooser/pycolourslider.py
create mode 100644 wxPython/wxPython/lib/colourchooser/pypalette.py
create mode 100644 wxPython/wxPython/lib/evtmgr.py
create mode 100644 wxPython/wxPython/lib/gridmovers.py
create mode 100644 wxPython/wxPython/lib/imageutils.py
create mode 100644 wxPython/wxPython/lib/intctrl.py
create mode 100644 wxPython/wxPython/lib/mixins/rubberband.py
create mode 100644 wxPython/wxPython/lib/multisash.py
create mode 100644 wxPython/wxPython/lib/popupctl.py
create mode 100644 wxPython/wxPython/lib/pubsub.py
create mode 100644 wxPython/wxPython/lib/scrolledpanel.py
create mode 100644 wxPython/wxPython/lib/throbber.py
create mode 100644 wxPython/wxPython/lib/timectrl.py
create mode 100644 wxPython/wxPython/tools/XRCed/CHANGES.txt
rename wxPython/wxPython/tools/XRCed/{README => README.txt} (92%)
rename wxPython/wxPython/tools/XRCed/{TODO => TODO.txt} (76%)
create mode 100644 wxPython/wxPython/tools/XRCed/encode_bitmaps.py
create mode 100644 wxPython/wxPython/tools/XRCed/globals.py
create mode 100644 wxPython/wxPython/tools/XRCed/license.txt
create mode 100644 wxPython/wxPython/tools/XRCed/panel.py
create mode 100644 wxPython/wxPython/tools/XRCed/sawfishrc
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/AutoRefresh.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Copy.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Cut.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Icon.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/New.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Open.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Paste.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Redo.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Refresh.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Save.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Test.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolBitmapButton.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolBoxSizer.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolButton.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolCheckBox.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolCheckList.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolChoice.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolComboBox.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolDefault.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolDialog.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolFlexGridSizer.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolFrame.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolGauge.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolGridSizer.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolListBox.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolListCtrl.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolMenu.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolMenuBar.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolMenuItem.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolNotebook.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolPanel.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolRadioBox.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolRadioButton.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolRoot.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolScrollBar.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolSeparator.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolSlider.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolSpacer.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolSpinButton.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolSpinCtrl.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolStaticBitmap.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolStaticBox.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolStaticBoxSizer.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolStaticLine.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolStaticText.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolTextCtrl.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolTool.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolToolBar.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolTreeCtrl.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/ToolUnknown.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeDefault.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeDialog.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeFrame.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeMenu.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeMenuBar.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeMenuItem.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreePanel.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeRoot.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeSeparator.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeSizerFlexGrid.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeSizerGrid.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeSizerH.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeSizerV.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeStaticBoxSizerH.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeStaticBoxSizerV.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeTool.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/TreeToolBar.png
create mode 100644 wxPython/wxPython/tools/XRCed/src-images/Undo.png
create mode 100644 wxPython/wxPython/tools/XRCed/tools.py
create mode 100644 wxPython/wxPython/tools/XRCed/tree.py
create mode 100644 wxPython/wxPython/tools/XRCed/undo.py
create mode 100644 wxPython/wxPython/tools/dbg.py
create mode 100644 wxPython/wxPython/tools/helpviewer.py
create mode 100644 wxPython/wxSWIG/swig_lib/perl5/.cvsignore
create mode 100644 wxPython/wxSWIG/swig_lib/python/.cvsignore
create mode 100644 wxPython/wxSWIG/swig_lib/tcl/.cvsignore
diff --git a/wxPython/.cvsignore b/wxPython/.cvsignore
index 611f71ef4c..38dfbf734e 100644
--- a/wxPython/.cvsignore
+++ b/wxPython/.cvsignore
@@ -2,8 +2,12 @@
.emacs.desktop
.gdb_history
MANIFEST
+_build_dmg
_build_rpm
build
+build-gtk
+build-gtk2
+build-gtk2.unicode
build-pkg
build-pkg-debug
build.local
diff --git a/wxPython/BUILD.osx.txt b/wxPython/BUILD.osx.txt
index 1af6b0d189..14bee6102d 100644
--- a/wxPython/BUILD.osx.txt
+++ b/wxPython/BUILD.osx.txt
@@ -1,57 +1,32 @@
Building wxPython on Mac OS X
-----------------------------
-NOTE: OS X support is HIGHLY EXPERIMENTAL at this time. Most things
- are working now, but a few still don't. I know about most of
- them and am addressing them as I have time. If you have any
- ideas about a fix for the stuff that's still broken then
- please persue them and send the fixes to me.
-
-These are the steps I have used for building wxPython on Mac OS X 10.1
+These are the steps I have used for building wxPython on Mac OS X 10.x
with the Apple Developer Tools, a.k.a the Darwin version. I assume
that you know your way around a command line and that you know how to
get things from various CVS repositories as needed.
-1. Python 2.2 is required. There is a disk image with an installer
- package in the wxPython Sourceforge download area, in this group:
+1. "MacPython-OSX" 2.3 is required. There is a disk image with an
+ installer package in the wxPython Sourceforge download area, in
+ this group:
http://sourceforge.net/project/showfiles.php?group_id=10718&release_id=84730
If, for some reason you need to build your own Python, get the
- source from www.python.org and follow theinstructions in the
- Mac/OSX/README file to build and install Python.app and the
- Python.framework.
-
- If you build your own Python then you may want to make a symlink or
- two in /usr/local/bin so that this version of Python can be found
- from the command line. For example:
-
- cd /usr/local/bin
- sudo ln -s /Library/Frameworks/Python.framework/Versions/2.2/bin/python2.2 python2.2
- sudo ln -s python2.2 python
-
- Also, if you create a /usr/local/bin/pythonw script like the
- following then you can run Python GUI apps (like wxPython) directly
- from the command line:
-
- #!/bin/sh
- exec /Applications/Python.app/Contents/MacOS/python $@
-
- Be sure to give this script execute permissions:
-
- sudo chmod +x /usr/local/bin/pythonw
-
- If you would like to make a MachoPython installer from what you
- built then you may want to look at the scripts I use to do it
- located in wxPython/distrib/mac/buildPython.
+ source from www.python.org and follow the instructions in the
+ Mac/OSX/README file to build and install the Python.framework and
+ Python tools.
One last thing, make sure that /usr/local/bin is in your PATH
- environment variable.
+ environment variable since that is where the new python and pythonw
+ commands will be located.
-2. In a wxWindows CVS tree make a build directory.
+2. In a wxWindows CVS tree make a build directory. (You can also use
+ a CVS snapshot located in http://wxwindows.org/snapshots/ or the
+ released wxPythonSrc-*.tr.gz archive.)
cd ~/proj/wxWindows # or wherever you put it
mkdir build
@@ -69,7 +44,14 @@ get things from various CVS repositories as needed.
5. Build and install wxPython.
cd ../wxPython
- python setup.py IN_CVS_TREE=1 build install
+ python setup.py build install
+
+ If you would like to install to someplace besides the Python
+ site-packages directory (such as to your home directory) then you
+ can add "--root=" after the "install" command. To use
+ wxPython like this you'll need to ensure that the directory
+ containing wxPyrthon is contained in in the PYTHONPATH environment
+ variable.
6. Test. Just navigate in the Finder to the demo directory and double
click demo.py, or simple.py, or whatever you want to run. Or from
diff --git a/wxPython/BUILD.unix.txt b/wxPython/BUILD.unix.txt
index 32bc8aeee6..a2abfebb32 100644
--- a/wxPython/BUILD.unix.txt
+++ b/wxPython/BUILD.unix.txt
@@ -1,23 +1,27 @@
Building wxPython on Unix or Unix-like Systems
----------------------------------------------
-The basic steps for building wxPython for Unix or Unix-like systems
-are:
-
- 1. Compile and/or install glib and gtk+
- 2. Compile and/or install wxGTK
- 3. Compile and install wxPython
-
-We'll go into more detail of each of these steps below, but first a
-few bits of background information on tools.
-
-I use a tool called SWIG (http://www.swig.org) to help generate the
-C++ sources used in the wxPython extension module. However you don't
-need to have SWIG unless you want to modify the *.i files. I've made
-several modifications to SWIG specific to wxPython's needs and so the
-modified sources are included in the wx CVS at .../wxPython/wxSWIG.
-If you need to modify the *.i files for wxPython then change to this
-directory and run:
+NOTE: You should probably look at the ../ README.1st.txt file for
+directions for how to build wxPython the "new way." This files
+describes the "old way" to build on unix-like systems. The difference
+is very simple: The new way uses a private copy of wxGTK while the
+old way uses either an existing wxGTK that may be installed and used
+by other apps, or you can build a wxGTK that will be accissible by
+other apps.
+
+
+NOTE 2: I use a tool called SWIG (http://www.swig.org) to help
+generate the C++ sources used in the wxPython extension module.
+However you don't need to have SWIG unless you want to modify the *.i
+files. I've made several modifications to and older version of SWIG
+that are specific to wxPython's needs and so the modified sources are
+included in the wx CVS at .../wxPython/wxSWIG. But because of the
+size and since most people won't need it my SWIG is not included in
+the wxPythonSrc tarball. You'll need to get it from CVS or a CVS
+snapshot.
+
+If you need to modify the *.i files for wxPython then you will need to
+build wxswig. Change to the .../wxPython/wxSWIG directory and run:
configure
make
@@ -46,29 +50,13 @@ A. First of all, check and see if you've already got glib/gtk+ on your
gtk-config --version
- If you have version 1.2.5 or better then you're all set. You can
- skip to step #2.
+ If you have version 1.2.7 or better then you're all set. Otherwise
+ either get the pacakges for your unix distribution and install them
+ or get the sources from www.gtk.org and build and install them.
-B. If your system has a binary package mechanism, (RPMs, debs,
- whatever...) check and see if binaries for glib abd gtk+ are
- available. Be sure to get the runtime library package as well as
- the development package, if they are separate. Install them with
- your package tool, and skip to step #2.
-
-C. If all else fails, you can get the source code for glib and gtk+ at
- http://www.gtk.org/. Fetch the latest of each in the 1.2.x
- series. Compile and install each of them like this:
-
- gzip -d [package].tar.gz | tar xvf -
- cd [package]
- ./configure
- make
- make install
-
- The last step will probably have to be done as root. Also, if your
- system needs anything done to update the dynamic loader for shared
- libraries, (such as running ldconfig on Linux) then do it after
- each library is installed.
+ The best version to get is the latest 1.2.x release as the
+ wxWindows support for GTK 2.x is still beta-level. (Most tings
+ work great though, and it looks real nice.)
@@ -77,30 +65,40 @@ C. If all else fails, you can get the source code for glib and gtk+ at
A. You can find the sources and RPMs for wxGTK at
http://wxwindows.org/, just follow the download links from the
- nevigation panel. You can also check out a current snapshot of the
- sources from the CVS server. (Some information about annonymous
- CVS access is at http://wxwindows.org/cvs.htm.) The advantage of
- using CVS is that you can easily update as soon as the developers
- check in new sources or fixes. The advantage of using a released
- version is that it usually has had more thorough testing done. You
- can decide which method is best for you.
+ navigation panel.
+
+ Source code for wxGTK is now included with the wxPythonSrc tarball,
+ and is the recommended way to get released wxGTK source code if you
+ plan on building both.
+
+ You can also check out a current snapshot of the sources from the
+ CVS server. (Some information about annonymous CVS access is at
+ http://wxwindows.org/cvs.htm.) The advantage of using CVS is that
+ you can easily update as soon as the developers check in new
+ sources or fixes. The advantage of using a released version is
+ that it usually has had more thorough testing done. You can decide
+ which method is best for you.
+
B. You'll usually want to use a version of wxGTK that has the same
version number as the wxPython sources you are using. (Another
- advantage of using CVS is that you'll get both at the same time.)
+ advantage of using wxPythonSrc or CVS is that you'll get both at
+ the same time.)
+
C. If using the RPMs be sure to get both the wxGTK and wxGTK-devel
RPMs (at a minimum) and then install them as root.
rpm -Uhv wxGTK-2.2.2-0.i386.rpm wxGTK-devel-2.2.2-0.i386.rpm
+
D. If using the sources (either from the tarball or from CVS) then
configure it like this:
cd wxWindows # or whatever your top-level directory is called
mkdir build
cd build
- ../configure --with-gtk
+ ../configure --with-gtk --enable-geometry
There are gobs and gobs of options for the configure script, run
../configure --help to see them all. I'll describe some that I find
@@ -118,32 +116,9 @@ D. If using the sources (either from the tarball or from CVS) then
special debugging code in wxWindows by defining the __WXDEBUG__
macro. You'll get some extra asserts, failure logging, etc.
- To make a static library and not make a shared library, use the
- --disable-shared and --enable-static flags.
-
- NOTE: There is a potential type mismatch between Python and wxGTK.
- This happens if Python defines some flags that turn on 64-bit file
- offset support and wxGTK does not. This causes some basic types,
- like off_t, to be typedef'd differently causing the C++ method
- signatures to be incompatible and giving link errors at runtime.
- If you get errors upon running a wxPython script that looks
- something like this:
-
- SeekI_13wxInputStream10wxSeekMode: referenced symbol not found
-
- then that is probably the issue. This can be fixed in the current
- code by predefining these flags before wxGTK's configure is run,
- for example:
-
- export CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DHAVE_LARGEFILE_SUPPORT"
- export CXXFLAGS=$CFLAGS
- ../configure --with-gtk --with-opengl --enable-debug
+ If you are using GTK 2.x then you'll want to add --enable-gtk2 and
+ probably also --enable-unicode.
- In the 2.3.3 final release there will be a real configure flag for
- it, and it should be enabled by default. You will be able to use
- --enable-largefile or --disable-largefile to control it. If you
- still get this or a similar error with 2.3.3 then try disabling
- largefile support in wxGTK.
E. Now just compile and install. You need to use GNU make, so if your
system has something else get GNU make and build and install it and
@@ -156,6 +131,7 @@ E. Now just compile and install. You need to use GNU make, so if your
system needs anything done to update the dynamic loader for shared
libraries, (such as running ldconfig on Linux) then do it now.
+
F. You can test your build by changing to one of the directories under
build/samples or build/demos, running make and then running the
executable that is built.
@@ -167,33 +143,24 @@ F. You can test your build by changing to one of the directories under
A. You have the same options (and same advantages/disadvantages) for
getting the wxPython source, either a released snapshot or from
- CVS. The released version file is named wxPython-[version].tar.gz
+ CVS. The released version file is named wxPythonSrc-[version].tar.gz
and is available at http://wxpython.org/download.php. If you want
to use CVS you'll find wxPython in the wxWindows CVS tree (see
above) in the wxWindows/wxPython directory.
-B. As mentioned previouslly, wxPython is built with the standard
- Python Distutils tool. If you are using Python 2.0 or later you
- are all set, otherwise you need to download and install Distutils
- 1.0 from http://www.python.org/sigs/distutils-sig/.
+
+B. wxPython is built with the standard Python Distutils tool and
+ currently includes it's own snapshot of the latest version of
+ distutils which can also be used with previous versions of Python
On Unix systems Distutils figures out what commands and flags to
use for the compiler and linker by looking in the Makefile that was
used to build Python itself. Most of the time this works okay. If
it doesn't, there doesn't seem to be a way to override the values
that Distutils uses without hacking either Distutils itself, or
- Python's Makefile. (Complain to the distutils-sig about this
- please.) For example, on a Solaris system I had to edit
- /usr/local/lib/python1.5/config/Makefile and replace
-
- LDSHARED=ld -G
-
- with
-
- LDSHARED=gcc -G
-
- This particular problem has been fixed in Python 1.6 and beyond,
- but there may be similar issues on other platforms.
+ Python's Makefile. (NOTE: This has been changed with the
+ distutilsincluded with Python 2.3 but I havn't yet looked into how
+ best to utilize this in wxPython...)
While we're on the subject of how Python was built... Since
wxPython is a C++ extension some platforms and/or compilers will
@@ -215,13 +182,14 @@ B. As mentioned previouslly, wxPython is built with the standard
make install
I recently built Python 2.1.3 and Python 2.2.1 on Solaris and did
- not have to resort to this workaround so apparently thigns are
+ not have to resort to this workaround so apparently things are
getting better there. I will leave this note here though in case
there are similar issues elsewhere. However I did run into a
Python build issue that affects the wxPython build when attempting
to use SunCC instead of GNU gcc. See the note below titled
"Building with non-GNU compilers" if you are interested.
+
C. Change to the root wxPython directory and look at the setup.py
file. This is the script that configures and defines all the
information that Distutils needs to build wxPython. There are some
@@ -248,18 +216,7 @@ C. Change to the root wxPython directory and look at the setup.py
will be executed to regenerate the wrapper C++
and shadow python files.
- IN_CVS_TREE If you are using the CVS version of the
- wxWindows and wxPython sources then you will
- need to set this flag to non-zero. This is
- needed because some source files from the
- wxWindows tree are copied to be under the
- wxPython tree in order to keep Distutils happy.
- With this flag set then setup.py will
- automatically keep these copied sources up to
- date if the original version is ever updated.
- If you are using the tar.gz version of the
- Python sources then these copied sources are
- already present in your source tree.
+ etc.
D. To build and install wxPython you simply need to execute the
@@ -269,15 +226,32 @@ D. To build and install wxPython you simply need to execute the
site-packages directory you may need to be root to run the install
command.
- python setup.py build
- python setup.py install
+ python setup.py build install
+
+ If you need to change any of the build flags that can also be done
+ on the setup.py command line, like this:
+
+ python setup.py BUILD_GLCANVAS=0 build install
+
+ If you are using GTK 2.x then you'll want to add these flags:
+
+ python setup.py WXPORT=gtk2 UNICODE=1 build install
+
+ If you would like to install to someplace besides the Python
+ site-packages directory (such as to your home directory) then you
+ can add "--root=" after the "install" command. To use
+ wxPython like this you'll need to ensure that the directory
+ containing wxPyrthon is contained in in the PYTHONPATH environment
+ variable.
+
E. At this point you should be able to change into the wxPython/demo
directory and run the demo:
python demo.py
-F. If you would like to make a test build that doesn't overwrite the
+
+F. If you would like to make a test build that doesn't overwrite any
installed version of wxPython you can do so with this command
instead of the install command above:
@@ -360,5 +334,7 @@ before running configure, like this in bash:
After making and installing Python with this configuration you should
be able to build wxPython as described in the steps above.
+
+
-----------------
robin@alldunn.com
diff --git a/wxPython/BUILD.win32.txt b/wxPython/BUILD.win32.txt
index 163cc1664c..f0cde57a6b 100644
--- a/wxPython/BUILD.win32.txt
+++ b/wxPython/BUILD.win32.txt
@@ -8,10 +8,9 @@ your sources from and what your desired end result is, there are
several permutations of those steps. At a high level the basic steps
are:
- 1. Get the wxWindows sources
+ 1. Get the sources
2. Build the wxWindows DLL
- 3. Get the wxPython sources
- 4. Build and Install wxPython
+ 3. Build and Install wxPython
We'll go into more detail of each of these steps below, but first a
few bits of background information on tools.
@@ -20,7 +19,11 @@ I use a tool called SWIG (http://www.swig.org) to help generate the
C++ sources used in the wxPython extension module. However you don't
need to have SWIG unless you want to modify the *.i files. I've made
several modifications to SWIG specific to wxPython's needs and so the
-modified sources are included in the wx CVS at .../wxPython/wxSWIG.
+modified sources are included in the wx CVS at.../wxPython/wxSWIG.
+But because of the size and since most people won't need it my SWIG is
+not included in the wxPythonSrc tarball. You'll need to get it from
+CVS or a CVS snapshot.
+
If you need to modify the *.i files for wxPython then change to this
directory and run:
@@ -42,6 +45,7 @@ If anybody wants to try it I'll take any required patches for the
setup script and for these instructions.
+
UNICODE
-------
@@ -69,44 +73,44 @@ And now on to the fun stuff...
-1. Get the wxWindows sources
-----------------------------
+1. Get the sources
+------------------
-A. There are a few possible ways to get sources for wxWindows. You
- can download a released version from http://wxwindows.org/ or you
- can get current development sources from the CVS server. (Some
- information about annonymous CVS access is at the
- http://wxwindows.org/cvs.htm site.) The advantage of using CVS is
- that you can easily update as soon as the developers check in new
- sources or fixes. The advantage of using a released version is
- that it usually has had more thorough testing done. You can decide
- which method is best for you.
+A. You can either use a tarball with the released version of the
+ source code for wxWindows/wxPython, or you can get current
+ development sources from the CVS repository. (Some information
+ about annonymous CVS access is at the http://wxwindows.org/cvs.htm
+ site.) The advantage of using CVS is that you can easily update as
+ soon as the developers check in new sources or fixes. The
+ advantage of using a released version is that it usually has had
+ more thorough testing done. You can decide which method is best
+ for you. The released version file is named
+ wxPythonSrc-[version].tar.gz and is available from the wxPython
+ website at http://wxpython.org/download.php. You can use WinZip to
+ unpack it if you don't have tar and gzip.
-B. You'll usually want to use wxWindows sources that have the same
- version number as the wxPython sources you are using. (Another
- advantage of using CVS is that you'll get both at the same time.)
-C. Once you get the sources be sure to put them in a path without a
+B. Once you get the sources be sure to put them in a path without a
space in it (i.e., NOT c:\Program Files\wx) and set an environment
- variable named WXWIN to this directory. For example:
+ variable named WXWIN to the top level directory. For example:
- mkdir \wx2
- cd \wx2
- unzip wxMSW-2.2.2.zip
- set WXWIN=c:\wx2
+ set WXWIN=c:\wx\wxPythonSrc-2.4.0.4
- You'll probably want to add that last line to your autoexec.bat or
+ You'll probably want to add that line to your autoexec.bat or
System Properties depending on the type of system you are on.
-D. Change to the wx2\include\wx\msw directory and copy setup0.h to
+
+C. Change to the %WXWIN%\include\wx\msw directory and copy setup0.h to
setup.h and then edit setup.h. This is how you control which parts
of wxWindows are compiled into or left out of the build, simply by
turning options on or off. I have the following differences from
the default setup0.h in my setup.h, but you can experiment with
other settings if you like:
+
WXWIN_COMPATIBILITY_2_2 0
wxDIALOG_UNIT_COMPATIBILITY 0
+ wxUSE_DEBUG_CONTEXT 1
wxUSE_MEMORY_TRACING 1
wxUSE_CMDLINE_PARSER 0
wxUSE_FSVOLUME 0
@@ -134,6 +138,7 @@ A. Although MSVC project files are provided I always use the makefiles
Python, (and I make sure they stay that way.) You would have to
edit the project files a bit to make it work otherwise.
+
B. There are three different types of wxWindows DLLs that can be
produced by the VC makefile simply by providing a flag on the nmake
command-line, I call the three types DEBUG, FINAL, and HYBRID.
@@ -157,43 +162,41 @@ B. There are three different types of wxWindows DLLs that can be
wxmsw[version].dll. This DLL is compiled with optimizations
turned on and without debugging information and without
__WXDEBUG__. The /MD flag is used which means that you
- can use this version with the standard python.exe. This
- is the version that I use when making the binary installer
- for win32.
+ can use this version with the standard python.exe.
HYBRID Specified with "FINAL=hybrid" and produces a DLL named
wxmsw[version]h.dll. This DLL is almost the same as the
- DEBUG version except the /MD flag is used which means that
- you can use the standard python.exe but you still get the
- debugging info and the __WXDEBUG__ code enabled. With the
- debugger you can trace through the the code for the
- wxPython extension and the wxWindows DLL, but not the
- Python interpreter. You might use this version when you
- want to deploy a wxPython app with the __WXDEBUG__ code
- enabled. I use this mode most of the time during
- development simply because it's easier than having to
- remember to type python_d all the time.
+ FINAL version except the __WXDEBUG__ is used which means
+ that you will get extra runtime assertions and validations
+ from wxWindows. If any of these fail then they are turned
+ into a Python exception that you can catch and deal with
+ in your code. This is the version that I use when making
+ the binary installer for win32.
+
Since different DLL names and object file directories are used you
can build all three types if you like.
-C. Change to the wx2\src\msw directory and type the following command,
+
+C. Change to the %WXWIN%\src\msw directory and type the following command,
using the value for FINAL that you want:
- nmake -f makefile.vc dll pch FINAL=hybrid
+ nmake -f makefile.vc dll FINAL=hybrid
Your machine will then crunch away for possibly a long time,
depending on your hardware, and when it's done you should have a
- DLL and some library files in \wx2\lib.
+ DLL and some library files in %WXWIN%\lib.
+
-D. You'll either need to add \wx2\lib to the PATH or copy the DLL file
- to a directory already on the PATH so the DLL can be found at
+D. You'll either need to add %WXWIN%\lib to the PATH or copy the DLL
+ file to a directory already on the PATH so the DLL can be found at
runtime. Another option is to copy the DLL to the directory that
the wxPython pacakge is installed to, for example,
c:\Python22\lib\site-packages\wxPython.
+
E. You can test your build by changing to one of the directories under
- \wx2\samples or \wx2\demos and typing (using the right FINAL flag):
+ %WXWIN%\samples or %WXWIN\demos and typing (using the right FINAL flag):
nmake -f makefile.vc FINAL=hybrid WXUSINGDLL=1
@@ -201,20 +204,8 @@ E. You can test your build by changing to one of the directories under
-3. Get the wxPython sources
----------------------------
-
-A. You have the same options (and same advantages/disadvantages) for
- getting the wxPython source, either a released snapshot or from
- CVS. The released version file is named wxPython-[version].tar.gz
- and is available at http://wxpython.org/download.php. You can use
- WinZip to unpack it if you don't have tar and gzip. If you want to
- use CVS you'll find wxPython in the wxWindows CVS tree (see above)
- in the wxWindows/wxPython directory.
-
-
-4. Build and Install wxPython
+3. Build and Install wxPython
-----------------------------
A. As mentioned previouslly, wxPython is built with the standard
@@ -222,6 +213,7 @@ A. As mentioned previouslly, wxPython is built with the standard
are all set, otherwise you need to download and install Distutils
1.0 from http://www.python.org/sigs/distutils-sig/.
+
B. Change to the root wxPython directory and look at the setup.py
file. This is the script that configures and defines all the
information that Distutils needs to build wxPython. There are some
@@ -246,18 +238,7 @@ B. Change to the root wxPython directory and look at the setup.py
will be executed to regenerate the wrapper C++
and shadow python files.
- IN_CVS_TREE If you are using the CVS version of the
- wxWindows and wxPython sources then you will
- need to set this flag to non-zero. This is
- needed because some source files from the
- wxWindows tree are copied to be under the
- wxPython tree in order to keep Distutils happy.
- With this flag set then setup.py will
- automatically keep these copied sources up to
- date if the original version is ever updated.
- If you are using the tar.gz version of the
- Python sources then these copied sources are
- already present in your source tree.
+ etc.
C. To build and install wxPython you simply need to execute the
@@ -280,12 +261,20 @@ C. To build and install wxPython you simply need to execute the
commented out. Just search for "GX-" and uncomment it so it is put
into the cflags list.
+ If you would like to install to someplace besides the Python
+ site-packages directory (such as to your home directory) then you
+ can add "--root=" after the "install" command. To use
+ wxPython like this you'll need to ensure that the directory
+ containing wxPyrthon is contained in in the PYTHONPATH environment
+ variable.
+
D. At this point you should be able to change into the wxPython\demo
directory and run the demo:
python demo.py
+
E. If you would like to make a test build that doesn't overwrite the
installed version of wxPython you can do so with one of these
commands instead of the install command above:
@@ -301,8 +290,8 @@ E. If you would like to make a test build that doesn't overwrite the
To run using this test version just add the base wxPython source
directory to the PYTHONPATH:
- set PYTHONPATH=c:\wx2\wxPython
- cd c:\wx2\wxPython\demo
+ set PYTHONPATH=%WXDIR%\wxPython
+ cd %WXDIR%\wxPython\demo
python demo.py
diff --git a/wxPython/CHANGES.txt b/wxPython/CHANGES.txt
index eefa6256aa..1f94276ec2 100644
--- a/wxPython/CHANGES.txt
+++ b/wxPython/CHANGES.txt
@@ -2,8 +2,239 @@ CHANGES.txt for wxPython
----------------------------------------------------------------------
-2.3.3
------
+?????
+-------
+
+Added wxScrolledPanel from Wil Sadkin
+
+
+
+2.4.0.7
+-------
+Gave up on generating a warning upon the use of the old true/false or
+TRUE/FALSE values.
+
+Fixed wxGenericTreeCtrl (used on wxGTK and wxMac for wxTreeCtrl) so
+that it can successfully handle lots of nodes instead of overflowing
+when the virtual height of the widget overflowed a 16-bit value.
+
+Fixed the typemap that converts strings to wxColours to also accept
+unicode.
+
+Fixed problem where the wrong class name could sometimes be used for
+OOR.
+
+Fixed an interpreter lock problem in the __eq__ and __ne__ methods in
+wxSize and etc.
+
+Updated PyCrust to version 0.9
+
+Instead of always logging C++ assertions, added wxPYAPP_ASSERT_LOG
+flag to turn it on. In most cases turning it into an exception (the
+default behavior) is enough. See below in the 2.3.4.1 notes for more
+details.
+
+
+
+
+2.4.0.6 (a.k.a. the I'm so stupid release)
+-------
+The new deprecation class for the old true/false symbols can now be
+returned from OnInit. And I promise to be sure I am testing what I
+think I am testing in the future...
+
+
+
+2.4.0.5 (a.k.a. the blame it on Kevin release)
+-------
+A few little but annoying bug fixes.
+
+Updated pycolourchooser.
+
+Updated to 0.9b of PyCrust.
+
+
+
+2.4.0.4
+-------
+Added missing wxRect methods
+
+Add OOR support for wxApp objects too.
+
+Added wxCursorFromImage, which works on wxMSW and wxGTK so far.
+
+All platforms now send EVT_DESTROY_WINDOW. Be warned that at the time
+the event is sent the window is in the process of being deconstructed,
+and so calling some (most?) methods of the window itself may cause
+problems.
+
+Fixed SF Bug #689481, a method in the OGL wrappers was using the wrong
+return type.
+
+Fixed SF Bug #689958, an endless loop in printout.py.
+
+Added EVT_WINDOW_CREATE_ID and EVT_WINDOW_DESTROY_ID so these events
+can be associated with a specific window ID and more easily caught by
+the parent window.
+
+Fixed copy-paste error in wxListCtrl.GetFirstSelected.
+
+Added missing Init method (and an overloading wrapper) to wxLocale
+wrapper.
+
+Added a wxBitmap.SetMaskColour convenience method.
+
+Changed how the dynamic event tables (used for all Python wx classes,
+C++ wx classes typically use static event tables) are searched such
+that they behave from a Python perspective more like the static tables
+in C++. Namely that if there are identical event bindings in a base
+Python class and a derived Python class that the one in the derived
+class will be found first and that if Skip is called that the one in
+the base class will still be found instead of skipping directly to the
+static stable in the C++ class.
+
+Switched to using True/False in the wxPython lib and demo instead of
+true/false or TRUE/FALSE to prepare for the new boolean type and
+constants being added to Python. Added code to wx.py to test for the
+existence of the new constants and to create suitable values if not
+present.
+
+Added some static wxApp functions that help with integration with the
+Mac UI. They are no-ops on other platforms so it doesn't hurt to
+always call them. The functions are:
+
+ wxApp_GetMacDefaultEncodingIsPC
+ wxApp_GetMacSupportPCMenuShortcuts
+ wxApp_GetMacAboutMenuItemId
+ wxApp_GetMacPreferencesMenuItemId
+ wxApp_GetMacExitMenuItemId
+ wxApp_GetMacHelpMenuTitleName
+ wxApp_SetMacDefaultEncodingIsPC
+ wxApp_SetMacSupportPCMenuShortcuts
+ wxApp_SetMacAboutMenuItemId
+ wxApp_SetMacPreferencesMenuItemId
+ wxApp_SetMacExitMenuItemId
+ wxApp_SetMacHelpMenuTitleName
+
+Refactored, enhanced and added capabilities for the DrawXXXList
+functions, inspired by code from Chris Barker.
+
+The wxWindows .mo language catalog files are now installed in a
+subdirectory of the wxPython package dir on MSW since that platform
+doesn't have a standard place for them.
+
+Added missing deselect methods for wxGrid.
+
+Fixed typemaps for wxGridCellCoordsArray.
+
+Updated to the 0.9a version of PyCrust
+
+
+
+2.4.0.2
+-------
+Several bug fixes.
+
+Added wxIntCtrl from Will Sadkin.
+
+Added wxPyColourChooser by Michael Gilfix.
+
+
+
+
+2.4.0.1
+-------
+No major new features since 2.3.4.2, mostly bug fixes and minor
+enhancements.
+
+Added function wrappers for the common dialogs from Kevin Altis. See
+wxPython/lib/dialogs.py for more details.
+
+
+
+2.3.4.2
+-------
+Various bug fixes.
+
+
+
+2.3.4.1
+-------
+Updated XRCed and wxTimeCtrl contribs.
+
+Show a couple new wxGrid features in the demo.
+
+Several bug fixes in wxWindows.
+
+Added wxHtmlFilter.
+
+wxASSERT and related C++ runtime diagnostics are now converted to
+Python exceptions. When an assert happens a wxPyAssertionError
+(which derives from AssertionError) exception is created and when
+control returns back to the Python code that invoked the C++ API it
+will be raised. The same exception restrictions are in place as
+before, namely that exceptions can't cross from one Python layer
+through C++ to another Python layer. That simply means that if you
+want to catch wxPyAssertionError or any other exception that you need
+to do it before control returns to C++ at the end of your event
+handler or callback code. There is some test code in demo/wxButton.py
+you can use to play with this new feature.
+
+Added some methods to wxApp (SetAssertMode and GetAssertMode) that let
+you control how C++ assertions are processed. Valid modes are:
+wxPYAPP_ASSERT_SUPPRESS, wxPYAPP_ASSERT_EXCEPTION, and
+wxPYAPP_ASSERT_DIALOG. Using _SUPPRESS will give you behavior like
+the old "final" builds and the assert will be ignored, _EXCEPTION is
+the new default described above, and _DIALOG is like the default in
+2.3.3.1 and prior "hybrid" builds. You can also combine _EXCEPTION
+and _DIALOG if you wish, although I don't know why you would.
+
+You can now overload OnInitGui, OnExit and OnAssert in your classes
+derived from wxApp.
+
+Added GetSelectedCells, GetSelectionBlockTopLeft,
+GetSelectionBlockBottomRight, GetSelectedRows, GetSelectedCols nethods
+to wxGrid.
+
+Added Python == and != operators for some basic classes
+
+Fixed the Python wrappers for wxInputStream so they no longer block
+when reading from a wxProcess on wxGTK. They now work more or less as
+they did before 2.3.3.1 but the dual meaning of eof() has been
+removed. There is now a CanRead() method that lets you know if there
+is data waiting to be read from the pipe.
+
+Fixed method name clash in wxIEHtmlWin, renamed Refresh to RefreshPage.
+
+Added Throbber from Cliff Wells to the library and the demo.
+
+Windows installer prompts to uninstall old version first.
+
+Added wxPython.lib.evtmgr by Robb Shecter, which is an easier, more
+"Pythonic" and more OO method of registering handlers for wxWindows
+events using the Publish/Subscribe pattern.
+
+Added wxPython.lib.popupctl by Gerrit van Dyk which is a combobox-like
+gizmo for poping up arbitrary controls. It is currently using
+wxDialog because of some issues with wxPopupWindow...
+
+Added wxPython.lib.gridmovers by Gerrit van Dyk which facilitates the
+dragging of columns and/or rows in a wxGrid.
+
+Added wxPython.lib.multisash by Gerrit van Dyk which is a nice
+implementation of allowing the user to split a window any number of
+times either horizontally or vertically, and to close the split off
+windows when desired.
+
+Added helpviewer tool that displays HTML books similarly to how MS
+HTMLHelp viewer does. Changed how the wxPythonDocs tarball is built
+and added a script to launch the doc viewer.
+
+
+
+
+2.3.3.1
+-------
Added wxSplashScreen.
Added wxGenericDirCtrl.
@@ -174,6 +405,9 @@ Added wxXmlResourceHandler which allows you to create custom handlers
for nonstandard class types in XRC resources. See the demo for an
example.
+Added wxPython.lib.mixins.rubberband module from Robb Shecter.
+
+Added wxTimeCtrl from Will Sadkin.
@@ -205,8 +439,8 @@ Added XRCed to the wxPython Tools directory, contributed by Roman
Rolinsky.
Added a new "constructor" to most of the window classes that calls the
-default C++ contructor, (the one with no parameters) and also added the
-coresponding Create(...) method. This allows you to do a 2-step
+default C++ constructor, (the one with no parameters) and also added the
+corresponding Create(...) method. This allows you to do a 2-step
creation of windows which is sometimes required for doing things such
as setting extended style flags before the window is created, or for
passing the object to the XRC resource system to be created from the
@@ -742,7 +976,7 @@ methods look like this:
toggle=FALSE)
-There are also coresponding InsertTool and InsertSimpleTool methods
+There are also corresponding InsertTool and InsertSimpleTool methods
that additionally take an integer position as the first parameter.
Added a wrapper for the new PCX and TIFF ImageHandlers.
diff --git a/wxPython/MANIFEST.in b/wxPython/MANIFEST.in
index 11ad108fbd..0dbd7d830c 100644
--- a/wxPython/MANIFEST.in
+++ b/wxPython/MANIFEST.in
@@ -44,11 +44,6 @@ include samples/doodle/*.txt
include samples/doodle/*.py
include samples/doodle/*.iss
include samples/doodle/sample.ddl
-include samples/stxview/*.txt
-include samples/stxview/*.py
-include samples/stxview/*.stx
-include samples/stxview/StructuredText/*.py
-include samples/stxview/StructuredText/*.txt
include samples/wxProject/*.txt
include samples/wxProject/*.py
include samples/StyleEditor/*.py
diff --git a/wxPython/README.txt b/wxPython/README.txt
index 278202e0f8..5e3c5b2f0a 100644
--- a/wxPython/README.txt
+++ b/wxPython/README.txt
@@ -3,58 +3,34 @@ wxPython README
Welcome to the wonderful world of wxPython!
-Once you have installed the wxPython extension module, you can try it
-out by going to the [install dir]\wxPython\demo directory and typing:
+So where do you go from here? The best thing to do is to run the demo
+and use its source code to help you learn how to use wxPython. Most
+of the classes available are demonstrated there, and you can view the
+sources directly in the demo so it is designed to help you learn. If
+you are on Windows or OS X then you can run the demo just by double
+clicking it's icon. If you are on Linux/Unix then change to the
+directory containing the demo and type:
python demo.py
-There are also some other sample files there for you to play with and
-learn from.
+There are also some sample mini applications available for you to run
+and to play with as a learning exercise.
-If you selected to install the documentation then point your browser
-to [install dir]\wxPython\docs\index.htm and you will then be looking
-at the docs for wxWindows. For the most part you can use the C++ docs
-as most classes and methods are used identically. Where there are
-differences they are documented with a "wxPython Note."
+The next thing you should do is join the wxPython-users maillist where
+you can interact with a community of other users and developers who
+are willing to help you learn, answer questions and solve problems.
+To join the mail list just send an email message to the following
+address from the account you want to receive the mail messages from
+the list:
-On Win32 systems the binary self-installer creates a program group on
-the Start Menu that contains a link to running the demo and a link to
-the help file. To help you save disk space I'm now using Microsoft's
-HTML Help format. If your system doesn't know what to do with the help
-file, you can install the HTML Help Viewer as part of IE 4+, NT
-Service Pack 4+, or the HTML Workshop at
+ wxPython-users-subscribe@lists.wxwindows.org
-http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp
-
-For some features, the latest common controls library from microsoft
-is required. You can get this by installing IE 5.0 or Office 2000.
-You can also get it independently from here:
-
-http://download.microsoft.com/download/platformsdk/Comctl32/5.80.2614.3600/W9XNT4/EN-US/50comupd.exe
-
-Windows 95 users may also need the WinSock 2.0 and OpenGL libraries.
-These can be found at these sites:
-
-
-http://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wunetworkingtools/w95sockets2/default.asp
-
-http://www.opengl.org/Downloads/Downloads.html
-
-
-
-Getting Help
-------------
-
-Since wxPython is a blending of multiple technologies, help comes from
-multiple sources. See the http://wxPython.org/ for details on various
-sources of help, but probably the best source is the wxPython-users
-mail list. You can view the archive or subscribe by going to
-
- http://lists.wxwindows.org/mailman/listinfo/wxpython-users
-
-Or you can send mail directly to the list using this address:
-
- wxpython-users@lists.wxwindows.org
+There is also a good set of class reference documentation available
+for wxPython, but currently it is geared for the C++ user. This may
+be a little daunting at first, but with a little practice you'll
+easily be able to "translate" from the C++ shown there to Python. Not
+all classes documented are available in Python, but most of the GUI
+related classes are.
Other Info
@@ -62,17 +38,21 @@ Other Info
Please also see the following files in this directory:
- CHANGES.txt Information about new features, fixes, etc. in
- each release.
+ CHANGES.txt Information about new features, fixes,
+ etc. in each release.
+
+ ../README.1st.txt Instructions for building wxGTK and
+ wxPython on Unix-like platforms the
+ "new way."
- BUILD.unix.txt Instructions for building wxPython on various
- Unix-like platforms.
+ BUILD.unix.txt Instructions for building wxPython on
+ various Unix-like platforms the "old way."
- BUILD.win32.txt Instructions for building wxPython on Windows.
+ BUILD.win32.txt Instructions for building wxPython on Windows.
- BUILD.osx.txt Instructions for building wxPython on Mac OS X.
+ BUILD.osx.txt Instructions for building wxPython on Mac OS X.
- licence/* Text of the wxWindows license.
+ licence/* Text of the wxWindows license.
diff --git a/wxPython/b b/wxPython/b
index 4f6136fb0a..b66448d124 100755
--- a/wxPython/b
+++ b/wxPython/b
@@ -9,6 +9,8 @@ function getpyver {
PYVER=2.1
elif [ "$1" = "22" ]; then
PYVER=2.2
+ elif [ "$1" = "23" ]; then
+ PYVER=2.3
else
echo You must specify Python version as first parameter.
exit
@@ -30,7 +32,7 @@ OTHERFLAGS=""
# "c" --> clean
if [ "$1" = "c" ]; then
shift
- CMD="$SETUP $FLAGS $OTHERFLAGS clean"
+ CMD="$SETUP $FLAGS $OTHERFLAGS clean $*"
OTHERCMD="rm -f wxPython/*.so"
# "d" --> clean extension modules only
@@ -47,12 +49,12 @@ elif [ "$1" = "t" ]; then
# "i" --> install
elif [ "$1" = "i" ]; then
shift
- CMD="$SETUP $FLAGS $OTHERFLAGS install"
+ CMD="$SETUP $FLAGS $OTHERFLAGS build_ext install $*"
# "s" --> source dist
elif [ "$1" = "s" ]; then
shift
- CMD="$SETUP $OTHERFLAGS sdist"
+ CMD="$SETUP $OTHERFLAGS sdist $*"
# "r" --> rpm dist
elif [ "$1" = "r" ]; then
diff --git a/wxPython/b.bat b/wxPython/b.bat
index 22f0042c1e..79c75bddc0 100755
--- a/wxPython/b.bat
+++ b/wxPython/b.bat
@@ -8,7 +8,7 @@ set FLAGS=USE_SWIG=1 IN_CVS_TREE=1
rem Use non-default python?
-iff "%1" == "15" .or. "%1" == "20" .or. "%1" == "21" .or. "%1" == "22" then
+iff "%1" == "15" .or. "%1" == "20" .or. "%1" == "21" .or. "%1" == "22" .or. "%1" == "23" then
set VER=%1
set PYTHON=%TOOLS%\python%1%\python.exe
shift
@@ -71,29 +71,26 @@ elseiff "%1" == "a" then
shift
set CMD=echo Finished!
- call b.bat 15 c
- call b.bat 15 f
- cd demo
- p15 encode_bitmaps.py
- cd -
- call b.bat 15 r
- call b.bat 15 c
- call b.bat 15 h
- call b.bat 15 r
-
- call b.bat 21 c
- call b.bat 21 f
- call b.bat 21 r
- call b.bat 21 c
+ call b.bat 21 d
call b.bat 21 h
call b.bat 21 r
+ call b.bat 21 d UNICODE=1
+ call b.bat 21 h UNICODE=1
+ call b.bat 21 r UNICODE=1
- call b.bat 22 c
- call b.bat 22 f
- call b.bat 22 r
- call b.bat 22 c
+ call b.bat 22 d
call b.bat 22 h
call b.bat 22 r
+ call b.bat 22 d UNICODE=1
+ call b.bat 22 h UNICODE=1
+ call b.bat 22 r UNICODE=1
+
+ call b.bat 23 d
+ call b.bat 23 h
+ call b.bat 23 r
+ call b.bat 23 d UNICODE=1
+ call b.bat 23 h UNICODE=1
+ call b.bat 23 r UNICODE=1
rem "b" --> both debug and hybrid builds
diff --git a/wxPython/contrib/gizmos/gizmos.cpp b/wxPython/contrib/gizmos/gizmos.cpp
index f92d609908..0abd1ec076 100644
--- a/wxPython/contrib/gizmos/gizmos.cpp
+++ b/wxPython/contrib/gizmos/gizmos.cpp
@@ -19,6 +19,8 @@
/* Implementation : PYTHON */
#define SWIGPYTHON
+#include "Python.h"
+
#include
#include
/* Definitions for Windows/Unix exporting */
@@ -36,12 +38,9 @@
# define SWIGEXPORT(a) a
#endif
-#include "Python.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
@@ -110,8 +109,8 @@ public:
wxPyBeginBlockThreads();
if ((found = wxPyCBH_findCallback(m_myInst, "DrawItem"))) {
PyObject* dcobj = wxPyMake_wxObject(&dc);
- PyObject* idobj = wxPyConstructObject((void*)&id, "wxTreeItemId", FALSE);
- PyObject* recobj= wxPyConstructObject((void*)&rect, "wxRect", FALSE);
+ PyObject* idobj = wxPyConstructObject((void*)&id, wxT("wxTreeItemId"), FALSE);
+ PyObject* recobj= wxPyConstructObject((void*)&rect, wxT("wxRect"), FALSE);
wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOO)", dcobj, idobj, recobj));
Py_DECREF(dcobj);
Py_DECREF(idobj);
@@ -659,11 +658,10 @@ static PyObject *_wrap_wxEditableListBox_SetStrings(PyObject *self, PyObject *ar
PyObject* item = PySequence_GetItem(_obj1, i);
#if wxUSE_UNICODE
PyObject* str = PyObject_Unicode(item);
- _arg1->Add(PyUnicode_AsUnicode(str));
#else
PyObject* str = PyObject_Str(item);
- _arg1->Add(PyString_AsString(str));
#endif
+ _arg1->Add(Py2wxString(str));
Py_DECREF(item);
Py_DECREF(str);
}
@@ -1790,7 +1788,7 @@ static PyObject *_wrap_wxLEDNumberCtrl_GetValue(PyObject *self, PyObject *args,
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
diff --git a/wxPython/contrib/gizmos/gizmos.i b/wxPython/contrib/gizmos/gizmos.i
index 48b33f4e7c..1af639a5b7 100644
--- a/wxPython/contrib/gizmos/gizmos.i
+++ b/wxPython/contrib/gizmos/gizmos.i
@@ -272,8 +272,8 @@ public:
wxPyBeginBlockThreads();
if ((found = wxPyCBH_findCallback(m_myInst, "DrawItem"))) {
PyObject* dcobj = wxPyMake_wxObject(&dc);
- PyObject* idobj = wxPyConstructObject((void*)&id, "wxTreeItemId", FALSE);
- PyObject* recobj= wxPyConstructObject((void*)&rect, "wxRect", FALSE);
+ PyObject* idobj = wxPyConstructObject((void*)&id, wxT("wxTreeItemId"), FALSE);
+ PyObject* recobj= wxPyConstructObject((void*)&rect, wxT("wxRect"), FALSE);
wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOO)", dcobj, idobj, recobj));
Py_DECREF(dcobj);
Py_DECREF(idobj);
diff --git a/wxPython/contrib/glcanvas/glcanvas.i b/wxPython/contrib/glcanvas/glcanvas.i
index 3b15de59f9..cdd8e7fbff 100644
--- a/wxPython/contrib/glcanvas/glcanvas.i
+++ b/wxPython/contrib/glcanvas/glcanvas.i
@@ -69,7 +69,7 @@ public:
~wxGLContext();
void SetCurrent();
- void SetColour(const char *colour);
+ void SetColour(const wxString& colour);
void SwapBuffers();
#ifdef __WXGTK__
@@ -151,7 +151,7 @@ public:
%pragma(python) addtomethod = "wxGLCanvasWithContext:val._setOORInfo(self)"
void SetCurrent();
- void SetColour(const char *colour);
+ void SetColour(const wxString& colour);
void SwapBuffers();
wxGLContext* GetContext();
diff --git a/wxPython/contrib/glcanvas/msw/myglcanvas.cpp b/wxPython/contrib/glcanvas/msw/myglcanvas.cpp
index 13bab4a35f..59157560fa 100644
--- a/wxPython/contrib/glcanvas/msw/myglcanvas.cpp
+++ b/wxPython/contrib/glcanvas/msw/myglcanvas.cpp
@@ -27,15 +27,17 @@
#if wxUSE_GLCANVAS
#ifndef WX_PRECOMP
-#include
+ #include "wx/frame.h"
+ #include "wx/settings.h"
+ #include "wx/intl.h"
+ #include "wx/log.h"
#endif
-#include
-#include
-#include
+#include "wx/msw/private.h"
#include "myglcanvas.h"
+const wxChar* wxGLCanvasName = wxT("GLcanvas");
static const wxChar *wxGLCanvasClassName = wxT("wxGLCanvasClass");
static const wxChar *wxGLCanvasClassNameNoRedraw = wxT("wxGLCanvasClassNR");
@@ -108,7 +110,7 @@ void wxGLContext::SetCurrent()
*/
}
-void wxGLContext::SetColour(const char *colour)
+void wxGLContext::SetColour(const wxChar *colour)
{
float r = 0.0;
float g = 0.0;
@@ -403,7 +405,6 @@ static void AdjustPFDForAttributes(PIXELFORMATDESCRIPTOR& pfd, int *attribList)
void wxGLCanvas::SetupPixelFormat(int *attribList) // (HDC hDC)
{
- int pixelFormat;
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), /* size */
1, /* version */
@@ -427,13 +428,13 @@ void wxGLCanvas::SetupPixelFormat(int *attribList) // (HDC hDC)
AdjustPFDForAttributes(pfd, attribList);
- pixelFormat = ChoosePixelFormat((HDC) m_hDC, &pfd);
+ int pixelFormat = ChoosePixelFormat((HDC) m_hDC, &pfd);
if (pixelFormat == 0) {
- wxLogWarning(_("ChoosePixelFormat failed."));
+ wxLogLastError(_T("ChoosePixelFormat"));
}
else {
- if (SetPixelFormat((HDC) m_hDC, pixelFormat, &pfd) != TRUE) {
- wxLogWarning(_("SetPixelFormat failed."));
+ if ( !::SetPixelFormat((HDC) m_hDC, pixelFormat, &pfd) ) {
+ wxLogLastError(_T("SetPixelFormat"));
}
}
}
@@ -527,7 +528,7 @@ void wxGLCanvas::SetCurrent()
}
}
-void wxGLCanvas::SetColour(const char *colour)
+void wxGLCanvas::SetColour(const wxChar *colour)
{
if (m_glContext)
m_glContext->SetColour(colour);
@@ -728,7 +729,7 @@ bool wxGLApp::InitGLVisual(int *attribList)
AdjustPFDForAttributes(pfd, attribList);
// use DC for whole (root) screen, since no windows have yet been created
- pixelFormat = ChoosePixelFormat((HDC) ::GetDC(NULL), &pfd);
+ pixelFormat = ChoosePixelFormat(ScreenHDC(), &pfd);
if (pixelFormat == 0) {
wxLogError(_("Failed to initialize OpenGL"));
diff --git a/wxPython/contrib/glcanvas/msw/myglcanvas.h b/wxPython/contrib/glcanvas/msw/myglcanvas.h
index 5dd269da72..2fe7404e2a 100644
--- a/wxPython/contrib/glcanvas/msw/myglcanvas.h
+++ b/wxPython/contrib/glcanvas/msw/myglcanvas.h
@@ -24,6 +24,7 @@
#include
#include
+#include "wx/msw/winundef.h"
#include
@@ -69,7 +70,7 @@ public:
~wxGLContext();
void SetCurrent();
- void SetColour(const char *colour);
+ void SetColour(const wxChar *colour);
void SwapBuffers();
@@ -83,21 +84,26 @@ public:
wxWindow* m_window;
};
+
+extern const wxChar* wxGLCanvasName;
+
+
class wxGLCanvas: public wxWindow
{
DECLARE_CLASS(wxGLCanvas)
public:
wxGLCanvas(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
- const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette);
+ const wxString& name = wxGLCanvasName, int *attribList = 0, const wxPalette& palette = wxNullPalette);
wxGLCanvas( wxWindow *parent, const wxGLContext *shared = (wxGLContext *)NULL,
wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "GLCanvas",
+ const wxSize& size = wxDefaultSize, long style = 0, const wxString&
+ name = wxGLCanvasName,
int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette );
wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared = (wxGLCanvas *)NULL, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0,
- const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette );
+ const wxString& name = wxGLCanvasName, int *attribList = 0, const wxPalette& palette = wxNullPalette );
~wxGLCanvas();
@@ -106,7 +112,7 @@ class wxGLCanvas: public wxWindow
const wxPoint& pos, const wxSize& size, long style, const wxString& name);
void SetCurrent();
- void SetColour(const char *colour);
+ void SetColour(const wxChar *colour);
void SwapBuffers();
void OnSize(wxSizeEvent& event);
diff --git a/wxPython/contrib/iewin/IEHtmlWin.cpp b/wxPython/contrib/iewin/IEHtmlWin.cpp
index 6214694d96..ad35820d51 100644
--- a/wxPython/contrib/iewin/IEHtmlWin.cpp
+++ b/wxPython/contrib/iewin/IEHtmlWin.cpp
@@ -37,23 +37,23 @@ private:
public:
FS_DWebBrowserEvents2(wxIEHtmlWin *iewin) : m_iewin(iewin) {}
- virtual ~FS_DWebBrowserEvents2()
+ virtual ~FS_DWebBrowserEvents2()
{
}
//IDispatch
STDMETHODIMP GetIDsOfNames(REFIID r, OLECHAR** o, unsigned int i, LCID l, DISPID* d)
- {
+ {
return E_NOTIMPL;
};
STDMETHODIMP GetTypeInfo(unsigned int i, LCID l, ITypeInfo** t)
- {
+ {
return E_NOTIMPL;
};
STDMETHODIMP GetTypeInfoCount(unsigned int* i)
- {
+ {
return E_NOTIMPL;
};
@@ -72,7 +72,7 @@ public:
m_iewin->GetParent()->AddPendingEvent(event);
};
- bool Process(WXTYPE etype, wxString text = "", long l1 = 0, long l2 = 0)
+ bool Process(WXTYPE etype, wxString text = wxEmptyString, long l1 = 0, long l2 = 0)
{
if (! m_iewin || ! m_iewin->GetParent())
return true;
@@ -103,7 +103,7 @@ public:
return v.bstrVal;
}
else
- return "";
+ return wxEmptyString;
};
#define STR_ARG(arg) GetStrArg(pDispParams->rgvarg[arg])
@@ -116,7 +116,7 @@ public:
WORD wFlags, DISPPARAMS * pDispParams,
VARIANT * pVarResult, EXCEPINFO * pExcepInfo,
unsigned int * puArgErr)
- {
+ {
if (wFlags & DISPATCH_PROPERTYGET)
return E_NOTIMPL;
@@ -125,21 +125,21 @@ public:
case DISPID_BEFORENAVIGATE2:
if (Process(wxEVT_COMMAND_MSHTML_BEFORENAVIGATE2, STR_ARG(5)))
*pDispParams->rgvarg->pboolVal = VARIANT_FALSE;
- else
+ else
*pDispParams->rgvarg->pboolVal = VARIANT_TRUE;
break;
case DISPID_NEWWINDOW2:
if (Process(wxEVT_COMMAND_MSHTML_NEWWINDOW2))
*pDispParams->rgvarg->pboolVal = VARIANT_FALSE;
- else
+ else
*pDispParams->rgvarg->pboolVal = VARIANT_TRUE;
break;
case DISPID_PROGRESSCHANGE:
- Post(wxEVT_COMMAND_MSHTML_PROGRESSCHANGE, "", LONG_ARG(1), LONG_ARG(0));
+ Post(wxEVT_COMMAND_MSHTML_PROGRESSCHANGE, wxEmptyString, LONG_ARG(1), LONG_ARG(0));
break;
-
+
case DISPID_DOCUMENTCOMPLETE:
Post(wxEVT_COMMAND_MSHTML_DOCUMENTCOMPLETE, STR_ARG(0));
break;
@@ -183,7 +183,7 @@ wxIEHtmlWin::wxIEHtmlWin(wxWindow * parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size,
long style,
- const wxString& name) :
+ const wxString& name) :
wxActiveX(parent, PROGID, id, pos, size, style, name)
{
SetupBrowser();
@@ -287,12 +287,12 @@ private:
istream *m_is;
public:
-
- IStreamAdaptor(istream *is) : IStreamAdaptorBase(), m_is(is)
+
+ IStreamAdaptor(istream *is) : IStreamAdaptorBase(), m_is(is)
{
wxASSERT(m_is != NULL);
}
- ~IStreamAdaptor()
+ ~IStreamAdaptor()
{
delete m_is;
}
@@ -314,12 +314,12 @@ private:
wxInputStream *m_is;
public:
-
- IwxStreamAdaptor(wxInputStream *is) : IStreamAdaptorBase(), m_is(is)
+
+ IwxStreamAdaptor(wxInputStream *is) : IStreamAdaptorBase(), m_is(is)
{
wxASSERT(m_is != NULL);
}
- ~IwxStreamAdaptor()
+ ~IwxStreamAdaptor()
{
delete m_is;
}
@@ -338,7 +338,7 @@ public:
void wxIEHtmlWin::LoadUrl(const wxString& url)
{
VARIANTARG navFlag, targetFrame, postData, headers;
- navFlag.vt = VT_EMPTY;
+ navFlag.vt = VT_EMPTY;
navFlag.vt = VT_I2;
navFlag.iVal = navNoReadFromCache;
targetFrame.vt = VT_EMPTY;
@@ -346,8 +346,8 @@ void wxIEHtmlWin::LoadUrl(const wxString& url)
headers.vt = VT_EMPTY;
HRESULT hret = 0;
- hret = m_webBrowser->Navigate((BSTR) (const wchar_t *) url.wc_str(wxConvUTF8),
- &navFlag, &targetFrame, &postData, &headers);
+ hret = m_webBrowser->Navigate((BSTR) (const wchar_t *) url.wc_str(wxConvUTF8),
+ &navFlag, &targetFrame, &postData, &headers);
};
class wxOwnedMemInputStream : public wxMemoryInputStream
@@ -358,7 +358,7 @@ public:
wxOwnedMemInputStream(char *data, size_t len) :
wxMemoryInputStream(data, len), m_data(data)
{}
- ~wxOwnedMemInputStream()
+ ~wxOwnedMemInputStream()
{
free(m_data);
}
@@ -524,17 +524,17 @@ wxString wxIEHtmlWin::GetStringSelection(bool asHTML)
{
wxAutoOleInterface tr(GetSelRange(m_oleObject));
if (! tr)
- return "";
+ return wxEmptyString;
BSTR text = NULL;
HRESULT hr = E_FAIL;
-
+
if (asHTML)
hr = tr->get_htmlText(&text);
else
hr = tr->get_text(&text);
if (hr != S_OK)
- return "";
+ return wxEmptyString;
wxString s = text;
SysFreeString(text);
@@ -545,41 +545,41 @@ wxString wxIEHtmlWin::GetStringSelection(bool asHTML)
wxString wxIEHtmlWin::GetText(bool asHTML)
{
if (! m_webBrowser.Ok())
- return "";
+ return wxEmptyString;
// get document dispatch interface
IDispatch *iDisp = NULL;
HRESULT hr = m_webBrowser->get_Document(&iDisp);
if (hr != S_OK)
- return "";
+ return wxEmptyString;
// Query for Document Interface
wxAutoOleInterface hd(IID_IHTMLDocument2, iDisp);
iDisp->Release();
if (! hd.Ok())
- return "";
+ return wxEmptyString;
// get body element
IHTMLElement *_body = NULL;
hd->get_body(&_body);
if (! _body)
- return "";
+ return wxEmptyString;
wxAutoOleInterface body(_body);
// get inner text
BSTR text = NULL;
hr = E_FAIL;
-
+
if (asHTML)
hr = body->get_innerHTML(&text);
else
hr = body->get_innerText(&text);
if (hr != S_OK)
- return "";
+ return wxEmptyString;
wxString s = text;
SysFreeString(text);
- return s;
-};
\ No newline at end of file
+ return s;
+};
diff --git a/wxPython/contrib/iewin/iewin.cpp b/wxPython/contrib/iewin/iewin.cpp
index 11fb5ef617..9bd052c734 100644
--- a/wxPython/contrib/iewin/iewin.cpp
+++ b/wxPython/contrib/iewin/iewin.cpp
@@ -19,6 +19,8 @@
/* Implementation : PYTHON */
#define SWIGPYTHON
+#include "Python.h"
+
#include
#include
/* Definitions for Windows/Unix exporting */
@@ -36,12 +38,9 @@
# define SWIGEXPORT(a) a
#endif
-#include "Python.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
@@ -177,7 +176,7 @@ static PyObject *_wrap_wxMSHTMLEvent_GetText1(PyObject *self, PyObject *args, Py
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -589,7 +588,7 @@ static PyObject *_wrap_wxIEHtmlWin_GetStringSelection(PyObject *self, PyObject *
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -629,7 +628,7 @@ static PyObject *_wrap_wxIEHtmlWin_GetText(PyObject *self, PyObject *args, PyObj
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -752,8 +751,8 @@ static PyObject *_wrap_wxIEHtmlWin_GoSearch(PyObject *self, PyObject *args, PyOb
return _resultobj;
}
-#define wxIEHtmlWin_Refresh(_swigobj,_swigarg0) (_swigobj->Refresh(_swigarg0))
-static PyObject *_wrap_wxIEHtmlWin_Refresh(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxIEHtmlWin_RefreshPage(_swigobj,_swigarg0) (_swigobj->Refresh(_swigarg0))
+static PyObject *_wrap_wxIEHtmlWin_RefreshPage(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
bool _result;
wxIEHtmlWin * _arg0;
@@ -762,18 +761,18 @@ static PyObject *_wrap_wxIEHtmlWin_Refresh(PyObject *self, PyObject *args, PyObj
char *_kwnames[] = { "self","level", NULL };
self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxIEHtmlWin_Refresh",_kwnames,&_argo0,&_arg1))
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxIEHtmlWin_RefreshPage",_kwnames,&_argo0,&_arg1))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIEHtmlWin_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIEHtmlWin_Refresh. Expected _wxIEHtmlWin_p.");
+ PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIEHtmlWin_RefreshPage. Expected _wxIEHtmlWin_p.");
return NULL;
}
}
{
PyThreadState* __tstate = wxPyBeginAllowThreads();
- _result = (bool )wxIEHtmlWin_Refresh(_arg0,_arg1);
+ _result = (bool )wxIEHtmlWin_RefreshPage(_arg0,_arg1);
wxPyEndAllowThreads(__tstate);
if (PyErr_Occurred()) return NULL;
@@ -811,7 +810,7 @@ static PyObject *_wrap_wxIEHtmlWin_Stop(PyObject *self, PyObject *args, PyObject
static PyMethodDef iewincMethods[] = {
{ "wxIEHtmlWin_Stop", (PyCFunction) _wrap_wxIEHtmlWin_Stop, METH_VARARGS | METH_KEYWORDS },
- { "wxIEHtmlWin_Refresh", (PyCFunction) _wrap_wxIEHtmlWin_Refresh, METH_VARARGS | METH_KEYWORDS },
+ { "wxIEHtmlWin_RefreshPage", (PyCFunction) _wrap_wxIEHtmlWin_RefreshPage, METH_VARARGS | METH_KEYWORDS },
{ "wxIEHtmlWin_GoSearch", (PyCFunction) _wrap_wxIEHtmlWin_GoSearch, METH_VARARGS | METH_KEYWORDS },
{ "wxIEHtmlWin_GoHome", (PyCFunction) _wrap_wxIEHtmlWin_GoHome, METH_VARARGS | METH_KEYWORDS },
{ "wxIEHtmlWin_GoForward", (PyCFunction) _wrap_wxIEHtmlWin_GoForward, METH_VARARGS | METH_KEYWORDS },
diff --git a/wxPython/contrib/iewin/iewin.i b/wxPython/contrib/iewin/iewin.i
index 8a90a95c0c..76384ee1d0 100644
--- a/wxPython/contrib/iewin/iewin.i
+++ b/wxPython/contrib/iewin/iewin.i
@@ -117,7 +117,7 @@ public:
bool GoForward();
bool GoHome();
bool GoSearch();
- bool Refresh(wxIEHtmlRefreshLevel level);
+ %name(RefreshPage)bool Refresh(wxIEHtmlRefreshLevel level);
bool Stop();
};
diff --git a/wxPython/contrib/iewin/iewin.py b/wxPython/contrib/iewin/iewin.py
index 9c3f24f122..1bc59d7e3a 100644
--- a/wxPython/contrib/iewin/iewin.py
+++ b/wxPython/contrib/iewin/iewin.py
@@ -125,8 +125,8 @@ class wxIEHtmlWinPtr(wxWindowPtr):
def GoSearch(self, *_args, **_kwargs):
val = apply(iewinc.wxIEHtmlWin_GoSearch,(self,) + _args, _kwargs)
return val
- def Refresh(self, *_args, **_kwargs):
- val = apply(iewinc.wxIEHtmlWin_Refresh,(self,) + _args, _kwargs)
+ def RefreshPage(self, *_args, **_kwargs):
+ val = apply(iewinc.wxIEHtmlWin_RefreshPage,(self,) + _args, _kwargs)
return val
def Stop(self, *_args, **_kwargs):
val = apply(iewinc.wxIEHtmlWin_Stop,(self,) + _args, _kwargs)
diff --git a/wxPython/contrib/iewin/wxactivex.cpp b/wxPython/contrib/iewin/wxactivex.cpp
index 779042ed0b..34fd2b1e2f 100644
--- a/wxPython/contrib/iewin/wxactivex.cpp
+++ b/wxPython/contrib/iewin/wxactivex.cpp
@@ -33,7 +33,7 @@ END_EVENT_TABLE()
class wxActiveX;
-class FrameSite :
+class FrameSite :
public IOleClientSite,
public IOleInPlaceSiteEx,
public IOleInPlaceFrame,
@@ -60,7 +60,7 @@ public:
STDMETHODIMP RequestBorderSpace(LPCBORDERWIDTHS);
STDMETHODIMP SetBorderSpace(LPCBORDERWIDTHS);
STDMETHODIMP SetActiveObject(IOleInPlaceActiveObject*, LPCOLESTR);
-
+
//IOleInPlaceFrame
STDMETHODIMP InsertMenus(HMENU, LPOLEMENUGROUPWIDTHS);
STDMETHODIMP SetMenu(HMENU, HOLEMENU, HWND);
@@ -73,7 +73,7 @@ public:
STDMETHODIMP CanInPlaceActivate();
STDMETHODIMP OnInPlaceActivate();
STDMETHODIMP OnUIActivate();
- STDMETHODIMP GetWindowContext(IOleInPlaceFrame**, IOleInPlaceUIWindow**,
+ STDMETHODIMP GetWindowContext(IOleInPlaceFrame**, IOleInPlaceUIWindow**,
LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO);
STDMETHODIMP Scroll(SIZE);
STDMETHODIMP OnUIDeactivate(BOOL);
@@ -119,7 +119,7 @@ public:
STDMETHODIMP GetObject(LPOLESTR, DWORD, IBindCtx*, REFIID, void**);
STDMETHODIMP GetObjectStorage(LPOLESTR, IBindCtx*, REFIID, void**);
STDMETHODIMP IsRunning(LPOLESTR);
-
+
//IDispatch
STDMETHODIMP GetIDsOfNames(REFIID, OLECHAR**, unsigned int, LCID, DISPID*);
STDMETHODIMP GetTypeInfo(unsigned int, LCID, ITypeInfo**);
@@ -148,7 +148,7 @@ protected:
bool m_bInPlaceActive;
bool m_bUIActive;
bool m_bWindowless;
-
+
LCID m_nAmbientLocale;
@@ -225,14 +225,14 @@ wxActiveX::~wxActiveX()
};
m_connections.clear();
- if (m_oleInPlaceObject.Ok())
+ if (m_oleInPlaceObject.Ok())
{
m_oleInPlaceObject->InPlaceDeactivate();
m_oleInPlaceObject->UIDeactivate();
}
- if (m_oleObject.Ok())
+ if (m_oleObject.Ok())
{
if (m_docAdviseCookie != 0)
m_oleObject->Unadvise(m_docAdviseCookie);
@@ -268,11 +268,11 @@ void wxActiveX::CreateActiveX(REFCLSID clsid)
GetTypeInfo();
// Get IOleObject interface
- hret = m_oleObject.QueryInterface(IID_IOleObject, m_ActiveX);
+ hret = m_oleObject.QueryInterface(IID_IOleObject, m_ActiveX);
wxASSERT(SUCCEEDED(hret));
// get IViewObject Interface
- hret = m_viewObject.QueryInterface(IID_IViewObject, m_ActiveX);
+ hret = m_viewObject.QueryInterface(IID_IViewObject, m_ActiveX);
wxASSERT(SUCCEEDED(hret));
// document advise
@@ -529,23 +529,23 @@ private:
public:
wxActiveXEvents(wxActiveX *ax) : m_activeX(ax) {}
- virtual ~wxActiveXEvents()
+ virtual ~wxActiveXEvents()
{
}
//IDispatch
STDMETHODIMP GetIDsOfNames(REFIID r, OLECHAR** o, unsigned int i, LCID l, DISPID* d)
- {
+ {
return E_NOTIMPL;
};
STDMETHODIMP GetTypeInfo(unsigned int i, LCID l, ITypeInfo** t)
- {
+ {
return E_NOTIMPL;
};
STDMETHODIMP GetTypeInfoCount(unsigned int* i)
- {
+ {
return E_NOTIMPL;
};
@@ -591,7 +591,7 @@ public:
if (px.IsOut())
{
wxVariant& vx = event.m_params[nArg - i - 1];
-
+
VariantToMSWVariant(vx, va);
};
};
@@ -605,7 +605,7 @@ public:
WORD wFlags, DISPPARAMS * pDispParams,
VARIANT * pVarResult, EXCEPINFO * pExcepInfo,
unsigned int * puArgErr)
- {
+ {
if (wFlags & (DISPATCH_PROPERTYGET | DISPATCH_PROPERTYPUT | DISPATCH_PROPERTYPUTREF))
return E_NOTIMPL;
@@ -616,7 +616,7 @@ public:
if (mid == m_activeX->m_eventsIdx.end())
return S_OK;
- int funcIdx = mid->second;
+ int funcIdx = mid->second;
wxActiveX::FuncX &func = m_activeX->m_events[funcIdx];
@@ -697,12 +697,12 @@ wxVariant& wxActiveXEvent::operator[] (wxString name)
return m_params[i];
};
- wxString err = "wxActiveXEvent::operator[] invalid name <" + name + ">";
- err += "\r\nValid Names = :\r\n";
+ wxString err = wxT("wxActiveXEvent::operator[] invalid name <") + name + wxT(">");
+ err += wxT("\r\nValid Names = :\r\n");
for (i = 0; i < m_params.GetCount(); i++)
{
err += m_params[i].GetName();
- err += "\r\n";
+ err += wxT("\r\n");
};
wxASSERT_MSG(false, err);
@@ -713,15 +713,15 @@ wxVariant& wxActiveXEvent::operator[] (wxString name)
void wxActiveX::GetTypeInfo()
{
/*
- We are currently only interested in the IDispatch interface
+ We are currently only interested in the IDispatch interface
to the control. For dual interfaces (TypeKind = TKIND_INTERFACE)
- we should drill down through the inheritance
+ we should drill down through the inheritance
(using TYPEATTR->cImplTypes) and GetRefTypeOfImplType(n)
- and retrieve all the func names etc that way, then generate a C++
+ and retrieve all the func names etc that way, then generate a C++
header file for it.
- But we don't do this and probably never will, so if we have a DUAL
- interface then we query for the IDispatch
+ But we don't do this and probably never will, so if we have a DUAL
+ interface then we query for the IDispatch
via GetRefTypeOfImplType(-1).
*/
@@ -772,12 +772,12 @@ void wxActiveX::GetTypeInfo()
{
if (impTypeFlags & IMPLTYPEFLAG_FSOURCE)
{
- WXOLE_TRACEOUT("Default Event Sink");
+ WXOLE_TRACEOUT(wxT("Default Event Sink"));
defEventSink = true;
}
else
{
- WXOLE_TRACEOUT("Default Interface");
+ WXOLE_TRACEOUT(wxT("Default Interface"));
}
};
@@ -804,7 +804,7 @@ void wxActiveX::GetTypeInfo(ITypeInfo *ti, bool defEventSink)
if (ta->typekind == TKIND_DISPATCH)
{
- WXOLE_TRACEOUT("GUID = " << GetIIDName(ta->guid).c_str());
+ WXOLE_TRACEOUT(wxT("GUID = ") << GetIIDName(ta->guid).c_str());
if (defEventSink)
{
@@ -831,7 +831,7 @@ void wxActiveX::GetTypeInfo(ITypeInfo *ti, bool defEventSink)
{
wxString name = anames[0];
- WXOLE_TRACEOUT("Name " << i << " = " << name.c_str());
+ WXOLE_TRACEOUT(wxT("Name ") << i << wxT(" = ") << name.c_str());
SysFreeString(anames[0]);
if (defEventSink)
@@ -901,11 +901,11 @@ HRESULT wxActiveX::ConnectAdvise(REFIID riid, IUnknown *events)
wxAutoOleInterface cpContainer(IID_IConnectionPointContainer, m_ActiveX);
if (! cpContainer.Ok())
return E_FAIL;
-
+
HRESULT hret = cpContainer->FindConnectionPoint(riid, cp.GetRef());
if (! SUCCEEDED(hret))
return hret;
-
+
hret = cp->Advise(events, &adviseCookie);
if (SUCCEEDED(hret))
@@ -979,7 +979,7 @@ void wxActiveX::OnSize(wxSizeEvent& event)
m_oleObject->SetExtent(DVASPECT_CONTENT, &sz);
};
- if (m_oleInPlaceObject.Ok())
+ if (m_oleInPlaceObject.Ok())
m_oleInPlaceObject->SetObjectRects(&posRect, &posRect);
}
@@ -1002,7 +1002,7 @@ void wxActiveX::OnPaint(wxPaintEvent& event)
::RedrawWindow(m_oleObjectHWND, NULL, NULL, RDW_INTERNALPAINT);
{
RECTL *prcBounds = (RECTL *) &posRect;
- m_viewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL,
+ m_viewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL,
(HDC)dc.GetHDC(), prcBounds, NULL, NULL, 0);
}
}
@@ -1018,11 +1018,11 @@ void wxActiveX::OnPaint(wxPaintEvent& event)
void wxActiveX::OnMouse(wxMouseEvent& event)
{
- if (m_oleObjectHWND == NULL)
- {
- wxLogTrace(wxT("no oleInPlaceObject"));
- event.Skip();
- return;
+ if (m_oleObjectHWND == NULL)
+ {
+ wxLogTrace(wxT("no oleInPlaceObject"));
+ event.Skip();
+ return;
}
wxLogTrace(wxT("mouse event"));
@@ -1031,52 +1031,52 @@ void wxActiveX::OnMouse(wxMouseEvent& event)
LPARAM lParam = 0;
LRESULT lResult = 0;
- if (event.m_metaDown)
+ if (event.m_metaDown)
wParam |= MK_CONTROL;
- if (event.m_shiftDown)
+ if (event.m_shiftDown)
wParam |= MK_SHIFT;
- if (event.m_leftDown)
+ if (event.m_leftDown)
wParam |= MK_LBUTTON;
- if (event.m_middleDown)
+ if (event.m_middleDown)
wParam |= MK_MBUTTON;
- if (event.m_rightDown)
+ if (event.m_rightDown)
wParam |= MK_RBUTTON;
lParam = event.m_x << 16;
lParam |= event.m_y;
- if (event.LeftDown())
+ if (event.LeftDown())
msg = WM_LBUTTONDOWN;
- else if (event.LeftDClick())
+ else if (event.LeftDClick())
msg = WM_LBUTTONDBLCLK;
- else if (event.LeftUp())
+ else if (event.LeftUp())
msg = WM_LBUTTONUP;
- else if (event.MiddleDown())
+ else if (event.MiddleDown())
msg = WM_MBUTTONDOWN;
- else if (event.MiddleDClick())
+ else if (event.MiddleDClick())
msg = WM_MBUTTONDBLCLK;
- else if (event.MiddleUp())
+ else if (event.MiddleUp())
msg = WM_MBUTTONUP;
- else if (event.RightDown())
+ else if (event.RightDown())
msg = WM_RBUTTONDOWN;
- else if (event.RightDClick())
+ else if (event.RightDClick())
msg = WM_RBUTTONDBLCLK;
- else if (event.RightUp())
+ else if (event.RightUp())
msg = WM_RBUTTONUP;
- else if (event.Moving() || event.Dragging())
+ else if (event.Moving() || event.Dragging())
msg = WM_MOUSEMOVE;
wxString log;
- if (msg == 0)
- {
+ if (msg == 0)
+ {
wxLogTrace(wxT("no message"));
- event.Skip(); return;
+ event.Skip(); return;
};
- if (!::SendMessage(m_oleObjectHWND, msg, wParam, lParam))
- {
+ if (!::SendMessage(m_oleObjectHWND, msg, wParam, lParam))
+ {
wxLogTrace(wxT("msg not delivered"));
- event.Skip();
- return;
+ event.Skip();
+ return;
};
wxLogTrace(wxT("msg sent"));
@@ -1106,13 +1106,13 @@ long wxActiveX::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
void wxActiveX::OnSetFocus(wxFocusEvent& event)
{
- if (m_oleInPlaceActiveObject.Ok())
+ if (m_oleInPlaceActiveObject.Ok())
m_oleInPlaceActiveObject->OnFrameWindowActivate(TRUE);
}
void wxActiveX::OnKillFocus(wxFocusEvent& event)
{
- if (m_oleInPlaceActiveObject.Ok())
+ if (m_oleInPlaceActiveObject.Ok())
m_oleInPlaceActiveObject->OnFrameWindowActivate(FALSE);
}
@@ -1132,7 +1132,7 @@ FrameSite::FrameSite(wxActiveX * win)
m_bAmbientShowHatching = true;
m_bAmbientShowGrabHandles = true;
m_bAmbientAppearance = true;
-
+
m_hDCBuffer = NULL;
m_hWndParent = (HWND)m_window->GetHWND();
}
@@ -1175,7 +1175,7 @@ HRESULT FrameSite::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid,
HRESULT hr;
- if (pVarResult == NULL)
+ if (pVarResult == NULL)
return E_INVALIDARG;
//The most common case is boolean, use as an initial type
@@ -1251,7 +1251,7 @@ HRESULT FrameSite::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid,
HRESULT FrameSite::GetWindow(HWND * phwnd)
{
WXOLE_TRACE("IOleWindow::GetWindow");
- if (phwnd == NULL)
+ if (phwnd == NULL)
return E_INVALIDARG;
(*phwnd) = m_hWndParent;
return S_OK;
@@ -1268,7 +1268,7 @@ HRESULT FrameSite::ContextSensitiveHelp(BOOL fEnterMode)
HRESULT FrameSite::GetBorder(LPRECT lprectBorder)
{
WXOLE_TRACE("IOleInPlaceUIWindow::GetBorder");
- if (lprectBorder == NULL)
+ if (lprectBorder == NULL)
return E_INVALIDARG;
return INPLACE_E_NOTOOLSPACE;
}
@@ -1276,7 +1276,7 @@ HRESULT FrameSite::GetBorder(LPRECT lprectBorder)
HRESULT FrameSite::RequestBorderSpace(LPCBORDERWIDTHS pborderwidths)
{
WXOLE_TRACE("IOleInPlaceUIWindow::RequestBorderSpace");
- if (pborderwidths == NULL)
+ if (pborderwidths == NULL)
return E_INVALIDARG;
return INPLACE_E_NOTOOLSPACE;
}
@@ -1373,9 +1373,9 @@ HRESULT FrameSite::GetWindowContext(IOleInPlaceFrame **ppFrame,
if (ppFrame == NULL || ppDoc == NULL || lprcPosRect == NULL ||
lprcClipRect == NULL || lpFrameInfo == NULL)
{
- if (ppFrame != NULL)
+ if (ppFrame != NULL)
(*ppFrame) = NULL;
- if (ppDoc != NULL)
+ if (ppDoc != NULL)
(*ppDoc) = NULL;
return E_INVALIDARG;
}
@@ -1465,7 +1465,7 @@ HRESULT FrameSite::OnInPlaceActivateEx(BOOL * pfNoRedraw, DWORD dwFlags)
{
WXOLE_TRACE("IOleInPlaceSiteEx::OnInPlaceActivateEx");
OleLockRunning(m_window->m_ActiveX, TRUE, FALSE);
- if (pfNoRedraw)
+ if (pfNoRedraw)
(*pfNoRedraw) = FALSE;
return S_OK;
}
@@ -1502,9 +1502,9 @@ HRESULT FrameSite::GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker,
HRESULT FrameSite::GetContainer(LPOLECONTAINER * ppContainer)
{
WXOLE_TRACE("IOleClientSite::GetContainer");
- if (ppContainer == NULL)
+ if (ppContainer == NULL)
return E_INVALIDARG;
-
+
HRESULT hr = QueryInterface(IID_IOleContainer, (void**)(ppContainer));
wxASSERT(SUCCEEDED(hr));
@@ -1557,26 +1557,26 @@ HRESULT FrameSite::LockContainer(BOOL fLock)
//IOleItemContainer
-HRESULT FrameSite::GetObject(LPOLESTR pszItem, DWORD dwSpeedNeeded,
+HRESULT FrameSite::GetObject(LPOLESTR pszItem, DWORD dwSpeedNeeded,
IBindCtx * pbc, REFIID riid, void ** ppvObject)
{
WXOLE_TRACE("IOleItemContainer::GetObject");
- if (pszItem == NULL)
+ if (pszItem == NULL)
return E_INVALIDARG;
- if (ppvObject == NULL)
+ if (ppvObject == NULL)
return E_INVALIDARG;
*ppvObject = NULL;
return MK_E_NOOBJECT;
}
-HRESULT FrameSite::GetObjectStorage(LPOLESTR pszItem, IBindCtx * pbc,
+HRESULT FrameSite::GetObjectStorage(LPOLESTR pszItem, IBindCtx * pbc,
REFIID riid, void ** ppvStorage)
{
WXOLE_TRACE("IOleItemContainer::GetObjectStorage");
- if (pszItem == NULL)
+ if (pszItem == NULL)
return E_INVALIDARG;
- if (ppvStorage == NULL)
+ if (ppvStorage == NULL)
return E_INVALIDARG;
*ppvStorage = NULL;
@@ -1586,7 +1586,7 @@ HRESULT FrameSite::GetObjectStorage(LPOLESTR pszItem, IBindCtx * pbc,
HRESULT FrameSite::IsRunning(LPOLESTR pszItem)
{
WXOLE_TRACE("IOleItemContainer::IsRunning");
- if (pszItem == NULL)
+ if (pszItem == NULL)
return E_INVALIDARG;
return MK_E_NOOBJECT;
@@ -1651,7 +1651,7 @@ HRESULT FrameSite::ShowPropertyFrame()
//IOleCommandTarget
-HRESULT FrameSite::QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds,
+HRESULT FrameSite::QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds,
OLECMD * prgCmds, OLECMDTEXT * pCmdTet)
{
WXOLE_TRACE("IOleCommandTarget::QueryStatus");
@@ -1670,8 +1670,8 @@ HRESULT FrameSite::QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds,
return S_OK;
}
-HRESULT FrameSite::Exec(const GUID * pguidCmdGroup, DWORD nCmdID,
- DWORD nCmdExecOpt, VARIANTARG * pVaIn,
+HRESULT FrameSite::Exec(const GUID * pguidCmdGroup, DWORD nCmdID,
+ DWORD nCmdExecOpt, VARIANTARG * pVaIn,
VARIANTARG * pVaOut)
{
WXOLE_TRACE("IOleCommandTarget::Exec");
@@ -1775,49 +1775,49 @@ wxString OLEHResultToString(HRESULT hr)
switch (hr)
{
case S_OK:
- return "";
+ return wxEmptyString;
case OLECMDERR_E_UNKNOWNGROUP:
- return "The pguidCmdGroup parameter is not NULL but does not specify a recognized command group.";
+ return wxT("The pguidCmdGroup parameter is not NULL but does not specify a recognized command group.");
case OLECMDERR_E_NOTSUPPORTED:
- return "The nCmdID parameter is not a valid command in the group identified by pguidCmdGroup.";
+ return wxT("The nCmdID parameter is not a valid command in the group identified by pguidCmdGroup.");
case OLECMDERR_E_DISABLED:
- return "The command identified by nCmdID is currently disabled and cannot be executed.";
+ return wxT("The command identified by nCmdID is currently disabled and cannot be executed.");
case OLECMDERR_E_NOHELP:
- return "The caller has asked for help on the command identified by nCmdID, but no help is available.";
+ return wxT("The caller has asked for help on the command identified by nCmdID, but no help is available.");
case OLECMDERR_E_CANCELED:
- return "The user canceled the execution of the command.";
+ return wxT("The user canceled the execution of the command.");
case E_INVALIDARG:
- return "E_INVALIDARG";
+ return wxT("E_INVALIDARG");
case E_OUTOFMEMORY:
- return "E_OUTOFMEMORY";
+ return wxT("E_OUTOFMEMORY");
case E_NOINTERFACE:
- return "E_NOINTERFACE";
+ return wxT("E_NOINTERFACE");
case E_UNEXPECTED:
- return "E_UNEXPECTED";
+ return wxT("E_UNEXPECTED");
case STG_E_INVALIDFLAG:
- return "STG_E_INVALIDFLAG";
+ return wxT("STG_E_INVALIDFLAG");
case E_FAIL:
- return "E_FAIL";
+ return wxT("E_FAIL");
case E_NOTIMPL:
- return "E_NOTIMPL";
+ return wxT("E_NOTIMPL");
default:
{
- char buf[64];
- sprintf(buf, "Unknown - 0x%X", hr);
- return wxString(buf);
+ wxString buf;
+ buf.Printf(wxT("Unknown - 0x%X"), hr);
+ return buf;
}
};
};
@@ -1826,7 +1826,7 @@ wxString OLEHResultToString(HRESULT hr)
wxString GetIIDName(REFIID riid)
{
// an association between symbolic name and numeric value of an IID
- struct KNOWN_IID
+ struct KNOWN_IID
{
const IID *pIid;
const wxChar *szName;
@@ -1836,7 +1836,7 @@ wxString GetIIDName(REFIID riid)
#define ADD_KNOWN_IID(name) { &IID_I##name, _T(#name) }
#define ADD_KNOWN_GUID(name) { &name, _T(#name) }
- static const KNOWN_IID aKnownIids[] =
+ static const KNOWN_IID aKnownIids[] =
{
ADD_KNOWN_IID(AdviseSink),
ADD_KNOWN_IID(AdviseSink2),
@@ -1930,9 +1930,9 @@ wxString GetIIDName(REFIID riid)
#undef ADD_KNOWN_GUID
// try to find the interface in the table
- for ( size_t ui = 0; ui < WXSIZEOF(aKnownIids); ui++ )
+ for ( size_t ui = 0; ui < WXSIZEOF(aKnownIids); ui++ )
{
- if ( riid == *aKnownIids[ui].pIid )
+ if ( riid == *aKnownIids[ui].pIid )
{
return aKnownIids[ui].szName;
}
@@ -1948,5 +1948,5 @@ wxString GetIIDName(REFIID riid)
return s;
}
else
- return "StringFromIID() error";
+ return wxT("StringFromIID() error");
}
diff --git a/wxPython/contrib/ogl/ogl.cpp b/wxPython/contrib/ogl/ogl.cpp
index da700b564f..cb54c18b03 100644
--- a/wxPython/contrib/ogl/ogl.cpp
+++ b/wxPython/contrib/ogl/ogl.cpp
@@ -1,15 +1,15 @@
/*
* FILE : contrib/ogl/ogl.cpp
- *
+ *
* This file was automatically generated by :
* Simplified Wrapper and Interface Generator (SWIG)
* Version 1.1 (Build 883)
- *
+ *
* Portions Copyright (c) 1995-1998
* The University of Utah and The Regents of the University of California.
* Permission is granted to distribute this file in any manner provided
* this notice remains intact.
- *
+ *
* Do not make changes to this file--changes will be lost!
*
*/
@@ -19,6 +19,8 @@
/* Implementation : PYTHON */
#define SWIGPYTHON
+#include "Python.h"
+
#include
#include
/* Definitions for Windows/Unix exporting */
@@ -36,12 +38,9 @@
# define SWIGEXPORT(a) a
#endif
-#include "Python.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
@@ -188,19 +187,20 @@ PyObject* wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler* source) {
//---------------------------------------------------------------------------
-PyObject* wxPy_ConvertShapeList(wxListBase* list, const char* className) {
+PyObject* wxPy_ConvertShapeList(wxListBase* listbase, const char* className) {
+ wxList* list = (wxList*)listbase;
PyObject* pyList;
PyObject* pyObj;
wxObject* wxObj;
- wxNode* node = list->First();
+ wxNode* node = list->GetFirst();
wxPyBeginBlockThreads();
pyList = PyList_New(0);
while (node) {
- wxObj = node->Data();
+ wxObj = node->GetData();
pyObj = wxPyMake_wxShapeEvtHandler((wxShapeEvtHandler*)wxObj);
PyList_Append(pyList, pyObj);
- node = node->Next();
+ node = node->GetNext();
}
wxPyEndBlockThreads();
return pyList;
@@ -239,7 +239,7 @@ static PyObject *_wrap_wxOGLInitialize(PyObject *self, PyObject *args, PyObject
char *_kwnames[] = { NULL };
self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxOGLInitialize",_kwnames))
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxOGLInitialize",_kwnames))
return NULL;
{
PyThreadState* __tstate = wxPyBeginAllowThreads();
@@ -257,7 +257,7 @@ static PyObject *_wrap_wxOGLCleanUp(PyObject *self, PyObject *args, PyObject *kw
char *_kwnames[] = { NULL };
self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxOGLCleanUp",_kwnames))
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxOGLCleanUp",_kwnames))
return NULL;
{
PyThreadState* __tstate = wxPyBeginAllowThreads();
@@ -386,7 +386,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
static PyObject *SWIG_globals;
#ifdef __cplusplus
-extern "C"
+extern "C"
#endif
SWIGEXPORT(void) initoglc() {
PyObject *m, *d;
diff --git a/wxPython/contrib/ogl/oglbasic.cpp b/wxPython/contrib/ogl/oglbasic.cpp
index ab32951076..a328db00e5 100644
--- a/wxPython/contrib/ogl/oglbasic.cpp
+++ b/wxPython/contrib/ogl/oglbasic.cpp
@@ -19,6 +19,8 @@
/* Implementation : PYTHON */
#define SWIGPYTHON
+#include "Python.h"
+
#include
#include
/* Definitions for Windows/Unix exporting */
@@ -36,12 +38,9 @@
# define SWIGEXPORT(a) a
#endif
-#include "Python.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
@@ -467,7 +466,7 @@ static PyObject *_wrap_wxShapeRegion_GetText(PyObject *self, PyObject *args, PyO
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -759,7 +758,7 @@ static PyObject *_wrap_wxShapeRegion_GetName(PyObject *self, PyObject *args, PyO
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -796,7 +795,7 @@ static PyObject *_wrap_wxShapeRegion_GetColour(PyObject *self, PyObject *args, P
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -904,7 +903,7 @@ static PyObject *_wrap_wxShapeRegion_GetPenColour(PyObject *self, PyObject *args
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -1489,8 +1488,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDraw(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -1526,8 +1524,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDrawContents(PyObject *self, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -1565,8 +1562,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDrawBranches(PyObject *self, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -1603,8 +1599,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnMoveLinks(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -1640,8 +1635,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnErase(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -1677,8 +1671,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnEraseContents(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -1714,8 +1707,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnHighlight(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -1884,8 +1876,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnMovePre(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -1927,8 +1918,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnMovePost(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -2167,8 +2157,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDrawOutline(PyObject *self, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -2204,8 +2193,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDrawControlPoints(PyObject *se
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -2241,8 +2229,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnEraseControlPoints(PyObject *s
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -2280,8 +2267,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnMoveLink(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -4524,8 +4510,7 @@ static PyObject *_wrap_wxPyShape_Move(PyObject *self, PyObject *args, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Move. Expected _wxDC_p.");
return NULL;
}
@@ -4562,8 +4547,7 @@ static PyObject *_wrap_wxPyShape_Erase(PyObject *self, PyObject *args, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Erase. Expected _wxDC_p.");
return NULL;
}
@@ -4599,8 +4583,7 @@ static PyObject *_wrap_wxPyShape_EraseContents(PyObject *self, PyObject *args, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_EraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -4636,8 +4619,7 @@ static PyObject *_wrap_wxPyShape_Draw(PyObject *self, PyObject *args, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Draw. Expected _wxDC_p.");
return NULL;
}
@@ -4701,8 +4683,7 @@ static PyObject *_wrap_wxPyShape_MoveLinks(PyObject *self, PyObject *args, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_MoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -4738,8 +4719,7 @@ static PyObject *_wrap_wxPyShape_DrawContents(PyObject *self, PyObject *args, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_DrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -5158,8 +5138,7 @@ static PyObject *_wrap_wxPyShape_FormatText(PyObject *self, PyObject *args, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_FormatText. Expected _wxDC_p.");
return NULL;
}
@@ -5397,7 +5376,7 @@ static PyObject *_wrap_wxPyShape_GetTextColour(PyObject *self, PyObject *args, P
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -5503,7 +5482,7 @@ static PyObject *_wrap_wxPyShape_GetRegionName(PyObject *self, PyObject *args, P
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -5788,8 +5767,7 @@ static PyObject *_wrap_wxPyShape_FindRegionNames(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxStringList_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxStringList_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_FindRegionNames. Expected _wxStringList_p.");
return NULL;
}
@@ -6173,8 +6151,7 @@ static PyObject *_wrap_wxPyShape_EraseLinks(PyObject *self, PyObject *args, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_EraseLinks. Expected _wxDC_p.");
return NULL;
}
@@ -6214,8 +6191,7 @@ static PyObject *_wrap_wxPyShape_DrawLinks(PyObject *self, PyObject *args, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_DrawLinks. Expected _wxDC_p.");
return NULL;
}
@@ -6257,8 +6233,7 @@ static PyObject *_wrap_wxPyShape_MoveLineToNewAttachment(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_MoveLineToNewAttachment. Expected _wxDC_p.");
return NULL;
}
@@ -6889,8 +6864,7 @@ static PyObject *_wrap_wxPyShape_Copy(PyObject *self, PyObject *args, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPyShape_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPyShape_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Copy. Expected _wxPyShape_p.");
return NULL;
}
@@ -6926,8 +6900,7 @@ static PyObject *_wrap_wxPyShape_CopyWithHandler(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPyShape_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPyShape_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_CopyWithHandler. Expected _wxPyShape_p.");
return NULL;
}
@@ -7050,8 +7023,7 @@ static PyObject *_wrap_wxPyShape_Recentre(PyObject *self, PyObject *args, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Recentre. Expected _wxDC_p.");
return NULL;
}
@@ -7087,8 +7059,7 @@ static PyObject *_wrap_wxPyShape_ClearPointList(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxList_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxList_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_ClearPointList. Expected _wxList_p.");
return NULL;
}
@@ -7212,8 +7183,7 @@ static PyObject *_wrap_wxPyShape_base_OnDraw(PyObject *self, PyObject *args, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -7249,8 +7219,7 @@ static PyObject *_wrap_wxPyShape_base_OnDrawContents(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -7288,8 +7257,7 @@ static PyObject *_wrap_wxPyShape_base_OnDrawBranches(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -7326,8 +7294,7 @@ static PyObject *_wrap_wxPyShape_base_OnMoveLinks(PyObject *self, PyObject *args
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -7363,8 +7330,7 @@ static PyObject *_wrap_wxPyShape_base_OnErase(PyObject *self, PyObject *args, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -7400,8 +7366,7 @@ static PyObject *_wrap_wxPyShape_base_OnEraseContents(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -7437,8 +7402,7 @@ static PyObject *_wrap_wxPyShape_base_OnHighlight(PyObject *self, PyObject *args
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -7607,8 +7571,7 @@ static PyObject *_wrap_wxPyShape_base_OnMovePre(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -7650,8 +7613,7 @@ static PyObject *_wrap_wxPyShape_base_OnMovePost(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -7890,8 +7852,7 @@ static PyObject *_wrap_wxPyShape_base_OnDrawOutline(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -7927,8 +7888,7 @@ static PyObject *_wrap_wxPyShape_base_OnDrawControlPoints(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -7964,8 +7924,7 @@ static PyObject *_wrap_wxPyShape_base_OnEraseControlPoints(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -8003,8 +7962,7 @@ static PyObject *_wrap_wxPyShape_base_OnMoveLink(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
diff --git a/wxPython/contrib/ogl/oglbasic.i b/wxPython/contrib/ogl/oglbasic.i
index 806c6b32ec..7220270323 100644
--- a/wxPython/contrib/ogl/oglbasic.i
+++ b/wxPython/contrib/ogl/oglbasic.i
@@ -303,7 +303,7 @@ public:
void ClearText(int regionId = 0);
void RemoveLine(wxPyLineShape *line);
-#ifdef PROLOGIO
+#ifdef wxUSE_PROLOGIO
void WriteAttributes(wxExpr *clause);
void ReadAttributes(wxExpr *clause);
void ReadConstraints(wxExpr *clause, wxExprDatabase *database);
diff --git a/wxPython/contrib/ogl/oglcanvas.cpp b/wxPython/contrib/ogl/oglcanvas.cpp
index 23965c2fc8..83ff03ea0d 100644
--- a/wxPython/contrib/ogl/oglcanvas.cpp
+++ b/wxPython/contrib/ogl/oglcanvas.cpp
@@ -19,6 +19,8 @@
/* Implementation : PYTHON */
#define SWIGPYTHON
+#include "Python.h"
+
#include
#include
/* Definitions for Windows/Unix exporting */
@@ -36,12 +38,9 @@
# define SWIGEXPORT(a) a
#endif
-#include "Python.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
@@ -199,8 +198,7 @@ static PyObject *_wrap_wxDiagram_Clear(PyObject *self, PyObject *args, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_Clear. Expected _wxDC_p.");
return NULL;
}
@@ -268,8 +266,7 @@ static PyObject *_wrap_wxDiagram_DrawOutline(PyObject *self, PyObject *args, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_DrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -552,156 +549,6 @@ static PyObject *_wrap_wxDiagram_InsertShape(PyObject *self, PyObject *args, PyO
return _resultobj;
}
-#define wxDiagram_LoadFile(_swigobj,_swigarg0) (_swigobj->LoadFile(_swigarg0))
-static PyObject *_wrap_wxDiagram_LoadFile(PyObject *self, PyObject *args, PyObject *kwargs) {
- PyObject * _resultobj;
- bool _result;
- wxDiagram * _arg0;
- wxString * _arg1;
- PyObject * _argo0 = 0;
- PyObject * _obj1 = 0;
- char *_kwnames[] = { "self","filename", NULL };
-
- self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_LoadFile",_kwnames,&_argo0,&_obj1))
- return NULL;
- if (_argo0) {
- if (_argo0 == Py_None) { _arg0 = NULL; }
- else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_LoadFile. Expected _wxDiagram_p.");
- return NULL;
- }
- }
-{
- _arg1 = wxString_in_helper(_obj1);
- if (_arg1 == NULL)
- return NULL;
-}
-{
- PyThreadState* __tstate = wxPyBeginAllowThreads();
- _result = (bool )wxDiagram_LoadFile(_arg0,*_arg1);
-
- wxPyEndAllowThreads(__tstate);
- if (PyErr_Occurred()) return NULL;
-} _resultobj = Py_BuildValue("i",_result);
-{
- if (_obj1)
- delete _arg1;
-}
- return _resultobj;
-}
-
-#define wxDiagram_ReadContainerGeometry(_swigobj,_swigarg0) (_swigobj->ReadContainerGeometry(_swigarg0))
-static PyObject *_wrap_wxDiagram_ReadContainerGeometry(PyObject *self, PyObject *args, PyObject *kwargs) {
- PyObject * _resultobj;
- wxDiagram * _arg0;
- wxExprDatabase * _arg1;
- PyObject * _argo0 = 0;
- PyObject * _argo1 = 0;
- char *_kwnames[] = { "self","database", NULL };
-
- self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_ReadContainerGeometry",_kwnames,&_argo0,&_argo1))
- return NULL;
- if (_argo0) {
- if (_argo0 == Py_None) { _arg0 = NULL; }
- else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_ReadContainerGeometry. Expected _wxDiagram_p.");
- return NULL;
- }
- }
- if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExprDatabase_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_ReadContainerGeometry. Expected _wxExprDatabase_p.");
- return NULL;
- }
- }
-{
- PyThreadState* __tstate = wxPyBeginAllowThreads();
- wxDiagram_ReadContainerGeometry(_arg0,*_arg1);
-
- wxPyEndAllowThreads(__tstate);
- if (PyErr_Occurred()) return NULL;
-} Py_INCREF(Py_None);
- _resultobj = Py_None;
- return _resultobj;
-}
-
-#define wxDiagram_ReadLines(_swigobj,_swigarg0) (_swigobj->ReadLines(_swigarg0))
-static PyObject *_wrap_wxDiagram_ReadLines(PyObject *self, PyObject *args, PyObject *kwargs) {
- PyObject * _resultobj;
- wxDiagram * _arg0;
- wxExprDatabase * _arg1;
- PyObject * _argo0 = 0;
- PyObject * _argo1 = 0;
- char *_kwnames[] = { "self","database", NULL };
-
- self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_ReadLines",_kwnames,&_argo0,&_argo1))
- return NULL;
- if (_argo0) {
- if (_argo0 == Py_None) { _arg0 = NULL; }
- else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_ReadLines. Expected _wxDiagram_p.");
- return NULL;
- }
- }
- if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExprDatabase_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_ReadLines. Expected _wxExprDatabase_p.");
- return NULL;
- }
- }
-{
- PyThreadState* __tstate = wxPyBeginAllowThreads();
- wxDiagram_ReadLines(_arg0,*_arg1);
-
- wxPyEndAllowThreads(__tstate);
- if (PyErr_Occurred()) return NULL;
-} Py_INCREF(Py_None);
- _resultobj = Py_None;
- return _resultobj;
-}
-
-#define wxDiagram_ReadNodes(_swigobj,_swigarg0) (_swigobj->ReadNodes(_swigarg0))
-static PyObject *_wrap_wxDiagram_ReadNodes(PyObject *self, PyObject *args, PyObject *kwargs) {
- PyObject * _resultobj;
- wxDiagram * _arg0;
- wxExprDatabase * _arg1;
- PyObject * _argo0 = 0;
- PyObject * _argo1 = 0;
- char *_kwnames[] = { "self","database", NULL };
-
- self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_ReadNodes",_kwnames,&_argo0,&_argo1))
- return NULL;
- if (_argo0) {
- if (_argo0 == Py_None) { _arg0 = NULL; }
- else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_ReadNodes. Expected _wxDiagram_p.");
- return NULL;
- }
- }
- if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExprDatabase_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_ReadNodes. Expected _wxExprDatabase_p.");
- return NULL;
- }
- }
-{
- PyThreadState* __tstate = wxPyBeginAllowThreads();
- wxDiagram_ReadNodes(_arg0,*_arg1);
-
- wxPyEndAllowThreads(__tstate);
- if (PyErr_Occurred()) return NULL;
-} Py_INCREF(Py_None);
- _resultobj = Py_None;
- return _resultobj;
-}
-
#define wxDiagram_RecentreAll(_swigobj,_swigarg0) (_swigobj->RecentreAll(_swigarg0))
static PyObject *_wrap_wxDiagram_RecentreAll(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
@@ -722,8 +569,7 @@ static PyObject *_wrap_wxDiagram_RecentreAll(PyObject *self, PyObject *args, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_RecentreAll. Expected _wxDC_p.");
return NULL;
}
@@ -759,8 +605,7 @@ static PyObject *_wrap_wxDiagram_Redraw(PyObject *self, PyObject *args, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_Redraw. Expected _wxDC_p.");
return NULL;
}
@@ -841,45 +686,6 @@ static PyObject *_wrap_wxDiagram_RemoveShape(PyObject *self, PyObject *args, PyO
return _resultobj;
}
-#define wxDiagram_SaveFile(_swigobj,_swigarg0) (_swigobj->SaveFile(_swigarg0))
-static PyObject *_wrap_wxDiagram_SaveFile(PyObject *self, PyObject *args, PyObject *kwargs) {
- PyObject * _resultobj;
- bool _result;
- wxDiagram * _arg0;
- wxString * _arg1;
- PyObject * _argo0 = 0;
- PyObject * _obj1 = 0;
- char *_kwnames[] = { "self","filename", NULL };
-
- self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_SaveFile",_kwnames,&_argo0,&_obj1))
- return NULL;
- if (_argo0) {
- if (_argo0 == Py_None) { _arg0 = NULL; }
- else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_SaveFile. Expected _wxDiagram_p.");
- return NULL;
- }
- }
-{
- _arg1 = wxString_in_helper(_obj1);
- if (_arg1 == NULL)
- return NULL;
-}
-{
- PyThreadState* __tstate = wxPyBeginAllowThreads();
- _result = (bool )wxDiagram_SaveFile(_arg0,*_arg1);
-
- wxPyEndAllowThreads(__tstate);
- if (PyErr_Occurred()) return NULL;
-} _resultobj = Py_BuildValue("i",_result);
-{
- if (_obj1)
- delete _arg1;
-}
- return _resultobj;
-}
-
#define wxDiagram_SetCanvas(_swigobj,_swigarg0) (_swigobj->SetCanvas(_swigarg0))
static PyObject *_wrap_wxDiagram_SetCanvas(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
@@ -1777,8 +1583,7 @@ static PyObject *_wrap_wxPyShapeCanvas_Redraw(PyObject *self, PyObject *args, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeCanvas_Redraw. Expected _wxDC_p.");
return NULL;
}
@@ -1948,15 +1753,10 @@ static PyMethodDef oglcanvascMethods[] = {
{ "wxDiagram_SetMouseTolerance", (PyCFunction) _wrap_wxDiagram_SetMouseTolerance, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_SetGridSpacing", (PyCFunction) _wrap_wxDiagram_SetGridSpacing, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_SetCanvas", (PyCFunction) _wrap_wxDiagram_SetCanvas, METH_VARARGS | METH_KEYWORDS },
- { "wxDiagram_SaveFile", (PyCFunction) _wrap_wxDiagram_SaveFile, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_RemoveShape", (PyCFunction) _wrap_wxDiagram_RemoveShape, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_RemoveAllShapes", (PyCFunction) _wrap_wxDiagram_RemoveAllShapes, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_Redraw", (PyCFunction) _wrap_wxDiagram_Redraw, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_RecentreAll", (PyCFunction) _wrap_wxDiagram_RecentreAll, METH_VARARGS | METH_KEYWORDS },
- { "wxDiagram_ReadNodes", (PyCFunction) _wrap_wxDiagram_ReadNodes, METH_VARARGS | METH_KEYWORDS },
- { "wxDiagram_ReadLines", (PyCFunction) _wrap_wxDiagram_ReadLines, METH_VARARGS | METH_KEYWORDS },
- { "wxDiagram_ReadContainerGeometry", (PyCFunction) _wrap_wxDiagram_ReadContainerGeometry, METH_VARARGS | METH_KEYWORDS },
- { "wxDiagram_LoadFile", (PyCFunction) _wrap_wxDiagram_LoadFile, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_InsertShape", (PyCFunction) _wrap_wxDiagram_InsertShape, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_GetSnapToGrid", (PyCFunction) _wrap_wxDiagram_GetSnapToGrid, METH_VARARGS | METH_KEYWORDS },
{ "wxDiagram_GetQuickEditMode", (PyCFunction) _wrap_wxDiagram_GetQuickEditMode, METH_VARARGS | METH_KEYWORDS },
diff --git a/wxPython/contrib/ogl/oglcanvas.i b/wxPython/contrib/ogl/oglcanvas.i
index 451ce9a7f1..1845651b65 100644
--- a/wxPython/contrib/ogl/oglcanvas.i
+++ b/wxPython/contrib/ogl/oglcanvas.i
@@ -71,8 +71,13 @@ public:
bool GetQuickEditMode();
bool GetSnapToGrid();
void InsertShape(wxPyShape *shape);
+
+#ifdef wxUSE_PROLOGIO
bool LoadFile(const wxString& filename);
+ bool SaveFile(const wxString& filename);
+#endif
+#ifdef wxUSE_PROLOGIO
// **** Have to deal with wxExpr and wxExprDatabase first...
//void OnDatabaseLoad(wxExprDatabase& database);
//void OnDatabaseSave(wxExprDatabase& database);
@@ -80,16 +85,18 @@ public:
//bool OnHeaderSave(wxExprDatabase& database, wxExpr& expr);
//bool OnShapeLoad(wxExprDatabase& database, wxPyShape& shape, wxExpr& expr);
//bool OnShapeSave(wxExprDatabase& database, wxPyShape& shape, wxExpr& expr);
+#endif
-
+#ifdef wxUSE_PROLOGIO
void ReadContainerGeometry(wxExprDatabase& database);
void ReadLines(wxExprDatabase& database);
void ReadNodes(wxExprDatabase& database);
+#endif
+
void RecentreAll(wxDC& dc);
void Redraw(wxDC& dc);
void RemoveAllShapes();
void RemoveShape(wxPyShape* shape);
- bool SaveFile(const wxString& filename);
void SetCanvas(wxPyShapeCanvas* canvas);
void SetGridSpacing(double spacing);
void SetMouseTolerance(int tolerance);
diff --git a/wxPython/contrib/ogl/oglcanvas.py b/wxPython/contrib/ogl/oglcanvas.py
index d0126a265a..6a6a7459bd 100644
--- a/wxPython/contrib/ogl/oglcanvas.py
+++ b/wxPython/contrib/ogl/oglcanvas.py
@@ -88,18 +88,6 @@ class wxDiagramPtr(wxObjectPtr):
def InsertShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_InsertShape,(self,) + _args, _kwargs)
return val
- def LoadFile(self, *_args, **_kwargs):
- val = apply(oglcanvasc.wxDiagram_LoadFile,(self,) + _args, _kwargs)
- return val
- def ReadContainerGeometry(self, *_args, **_kwargs):
- val = apply(oglcanvasc.wxDiagram_ReadContainerGeometry,(self,) + _args, _kwargs)
- return val
- def ReadLines(self, *_args, **_kwargs):
- val = apply(oglcanvasc.wxDiagram_ReadLines,(self,) + _args, _kwargs)
- return val
- def ReadNodes(self, *_args, **_kwargs):
- val = apply(oglcanvasc.wxDiagram_ReadNodes,(self,) + _args, _kwargs)
- return val
def RecentreAll(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_RecentreAll,(self,) + _args, _kwargs)
return val
@@ -112,9 +100,6 @@ class wxDiagramPtr(wxObjectPtr):
def RemoveShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_RemoveShape,(self,) + _args, _kwargs)
return val
- def SaveFile(self, *_args, **_kwargs):
- val = apply(oglcanvasc.wxDiagram_SaveFile,(self,) + _args, _kwargs)
- return val
def SetCanvas(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_SetCanvas,(self,) + _args, _kwargs)
return val
diff --git a/wxPython/contrib/ogl/oglshapes.cpp b/wxPython/contrib/ogl/oglshapes.cpp
index 7e4c39f2d5..4da8d8a782 100644
--- a/wxPython/contrib/ogl/oglshapes.cpp
+++ b/wxPython/contrib/ogl/oglshapes.cpp
@@ -19,6 +19,8 @@
/* Implementation : PYTHON */
#define SWIGPYTHON
+#include "Python.h"
+
#include
#include
/* Definitions for Windows/Unix exporting */
@@ -36,12 +38,9 @@
# define SWIGEXPORT(a) a
#endif
-#include "Python.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
@@ -185,8 +184,7 @@ static PyObject *_wrap_wxPseudoMetaFile_Draw(PyObject *self, PyObject *args, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPseudoMetaFile_Draw. Expected _wxDC_p.");
return NULL;
}
@@ -202,82 +200,6 @@ static PyObject *_wrap_wxPseudoMetaFile_Draw(PyObject *self, PyObject *args, PyO
return _resultobj;
}
-#define wxPseudoMetaFile_WriteAttributes(_swigobj,_swigarg0,_swigarg1) (_swigobj->WriteAttributes(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxPseudoMetaFile_WriteAttributes(PyObject *self, PyObject *args, PyObject *kwargs) {
- PyObject * _resultobj;
- wxPseudoMetaFile * _arg0;
- wxExpr * _arg1;
- int _arg2;
- PyObject * _argo0 = 0;
- PyObject * _argo1 = 0;
- char *_kwnames[] = { "self","clause","whichAngle", NULL };
-
- self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOi:wxPseudoMetaFile_WriteAttributes",_kwnames,&_argo0,&_argo1,&_arg2))
- return NULL;
- if (_argo0) {
- if (_argo0 == Py_None) { _arg0 = NULL; }
- else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPseudoMetaFile_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPseudoMetaFile_WriteAttributes. Expected _wxPseudoMetaFile_p.");
- return NULL;
- }
- }
- if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExpr_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPseudoMetaFile_WriteAttributes. Expected _wxExpr_p.");
- return NULL;
- }
- }
-{
- PyThreadState* __tstate = wxPyBeginAllowThreads();
- wxPseudoMetaFile_WriteAttributes(_arg0,_arg1,_arg2);
-
- wxPyEndAllowThreads(__tstate);
- if (PyErr_Occurred()) return NULL;
-} Py_INCREF(Py_None);
- _resultobj = Py_None;
- return _resultobj;
-}
-
-#define wxPseudoMetaFile_ReadAttributes(_swigobj,_swigarg0,_swigarg1) (_swigobj->ReadAttributes(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxPseudoMetaFile_ReadAttributes(PyObject *self, PyObject *args, PyObject *kwargs) {
- PyObject * _resultobj;
- wxPseudoMetaFile * _arg0;
- wxExpr * _arg1;
- int _arg2;
- PyObject * _argo0 = 0;
- PyObject * _argo1 = 0;
- char *_kwnames[] = { "self","clause","whichAngle", NULL };
-
- self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOi:wxPseudoMetaFile_ReadAttributes",_kwnames,&_argo0,&_argo1,&_arg2))
- return NULL;
- if (_argo0) {
- if (_argo0 == Py_None) { _arg0 = NULL; }
- else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPseudoMetaFile_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPseudoMetaFile_ReadAttributes. Expected _wxPseudoMetaFile_p.");
- return NULL;
- }
- }
- if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExpr_p")) {
- PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPseudoMetaFile_ReadAttributes. Expected _wxExpr_p.");
- return NULL;
- }
- }
-{
- PyThreadState* __tstate = wxPyBeginAllowThreads();
- wxPseudoMetaFile_ReadAttributes(_arg0,_arg1,_arg2);
-
- wxPyEndAllowThreads(__tstate);
- if (PyErr_Occurred()) return NULL;
-} Py_INCREF(Py_None);
- _resultobj = Py_None;
- return _resultobj;
-}
-
#define wxPseudoMetaFile_Clear(_swigobj) (_swigobj->Clear())
static PyObject *_wrap_wxPseudoMetaFile_Clear(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
@@ -326,8 +248,7 @@ static PyObject *_wrap_wxPseudoMetaFile_Copy(PyObject *self, PyObject *args, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPseudoMetaFile_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPseudoMetaFile_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPseudoMetaFile_Copy. Expected _wxPseudoMetaFile_p.");
return NULL;
}
@@ -469,16 +390,17 @@ static PyObject *_wrap_wxPseudoMetaFile_LoadFromMetaFile(PyObject *self, PyObjec
PyObject * _resultobj;
bool _result;
wxPseudoMetaFile * _arg0;
- char * _arg1;
+ wxString * _arg1;
double * _arg2;
double * _arg3;
PyObject * _argo0 = 0;
+ PyObject * _obj1 = 0;
PyObject * _argo2 = 0;
PyObject * _argo3 = 0;
char *_kwnames[] = { "self","filename","width","height", NULL };
self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OsOO:wxPseudoMetaFile_LoadFromMetaFile",_kwnames,&_argo0,&_arg1,&_argo2,&_argo3))
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxPseudoMetaFile_LoadFromMetaFile",_kwnames,&_argo0,&_obj1,&_argo2,&_argo3))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
@@ -487,6 +409,11 @@ static PyObject *_wrap_wxPseudoMetaFile_LoadFromMetaFile(PyObject *self, PyObjec
return NULL;
}
}
+{
+ _arg1 = wxString_in_helper(_obj1);
+ if (_arg1 == NULL)
+ return NULL;
+}
if (_argo2) {
if (_argo2 == Py_None) { _arg2 = NULL; }
else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_double_p")) {
@@ -503,11 +430,15 @@ static PyObject *_wrap_wxPseudoMetaFile_LoadFromMetaFile(PyObject *self, PyObjec
}
{
PyThreadState* __tstate = wxPyBeginAllowThreads();
- _result = (bool )wxPseudoMetaFile_LoadFromMetaFile(_arg0,_arg1,_arg2,_arg3);
+ _result = (bool )wxPseudoMetaFile_LoadFromMetaFile(_arg0,*_arg1,_arg2,_arg3);
wxPyEndAllowThreads(__tstate);
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("i",_result);
+{
+ if (_obj1)
+ delete _arg1;
+}
return _resultobj;
}
@@ -1886,8 +1817,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDraw(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -1923,8 +1853,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDrawContents(PyObject *self, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -1962,8 +1891,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDrawBranches(PyObject *self, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -2000,8 +1928,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnMoveLinks(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -2037,8 +1964,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnErase(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -2074,8 +2000,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnEraseContents(PyObject *self, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -2111,8 +2036,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnHighlight(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -2281,8 +2205,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnMovePre(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -2324,8 +2247,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnMovePost(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -2564,8 +2486,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDrawOutline(PyObject *self, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -2601,8 +2522,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDrawControlPoints(PyObject *sel
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -2638,8 +2558,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnEraseControlPoints(PyObject *se
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -2677,8 +2596,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnMoveLink(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -3076,8 +2994,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDraw(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -3113,8 +3030,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDrawContents(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -3152,8 +3068,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDrawBranches(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -3190,8 +3105,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnMoveLinks(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -3227,8 +3141,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnErase(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -3264,8 +3177,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnEraseContents(PyObject *self, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -3301,8 +3213,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnHighlight(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -3471,8 +3382,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnMovePre(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -3514,8 +3424,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnMovePost(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -3754,8 +3663,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDrawOutline(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -3791,8 +3699,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDrawControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -3828,8 +3735,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnEraseControlPoints(PyObject *self
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -3867,8 +3773,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnMoveLink(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -4229,7 +4134,7 @@ static PyObject *_wrap_wxPyBitmapShape_GetFilename(PyObject *self, PyObject *arg
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -4260,8 +4165,7 @@ static PyObject *_wrap_wxPyBitmapShape_SetBitmap(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_SetBitmap. Expected _wxBitmap_p.");
return NULL;
}
@@ -4364,8 +4268,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDraw(PyObject *self, PyObject *arg
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -4401,8 +4304,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDrawContents(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -4440,8 +4342,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDrawBranches(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -4478,8 +4379,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnMoveLinks(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -4515,8 +4415,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnErase(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -4552,8 +4451,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnEraseContents(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -4589,8 +4487,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnHighlight(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -4759,8 +4656,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnMovePre(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -4802,8 +4698,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnMovePost(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -5042,8 +4937,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDrawOutline(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -5079,8 +4973,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDrawControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -5116,8 +5009,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnEraseControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -5155,8 +5047,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnMoveLink(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -6056,12 +5947,13 @@ static PyObject *_wrap_wxPyDrawnShape_LoadFromMetaFile(PyObject *self, PyObject
PyObject * _resultobj;
bool _result;
wxPyDrawnShape * _arg0;
- char * _arg1;
+ wxString * _arg1;
PyObject * _argo0 = 0;
+ PyObject * _obj1 = 0;
char *_kwnames[] = { "self","filename", NULL };
self = self;
- if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxPyDrawnShape_LoadFromMetaFile",_kwnames,&_argo0,&_arg1))
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyDrawnShape_LoadFromMetaFile",_kwnames,&_argo0,&_obj1))
return NULL;
if (_argo0) {
if (_argo0 == Py_None) { _arg0 = NULL; }
@@ -6070,13 +5962,22 @@ static PyObject *_wrap_wxPyDrawnShape_LoadFromMetaFile(PyObject *self, PyObject
return NULL;
}
}
+{
+ _arg1 = wxString_in_helper(_obj1);
+ if (_arg1 == NULL)
+ return NULL;
+}
{
PyThreadState* __tstate = wxPyBeginAllowThreads();
- _result = (bool )wxPyDrawnShape_LoadFromMetaFile(_arg0,_arg1);
+ _result = (bool )wxPyDrawnShape_LoadFromMetaFile(_arg0,*_arg1);
wxPyEndAllowThreads(__tstate);
if (PyErr_Occurred()) return NULL;
} _resultobj = Py_BuildValue("i",_result);
+{
+ if (_obj1)
+ delete _arg1;
+}
return _resultobj;
}
@@ -6533,8 +6434,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDraw(PyObject *self, PyObject *args
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -6570,8 +6470,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDrawContents(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -6609,8 +6508,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDrawBranches(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -6647,8 +6545,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnMoveLinks(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -6684,8 +6581,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnErase(PyObject *self, PyObject *arg
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -6721,8 +6617,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnEraseContents(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -6758,8 +6653,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnHighlight(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -6928,8 +6822,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnMovePre(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -6971,8 +6864,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnMovePost(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -7211,8 +7103,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDrawOutline(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -7248,8 +7139,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDrawControlPoints(PyObject *self, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -7285,8 +7175,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnEraseControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -7324,8 +7213,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnMoveLink(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -8319,8 +8207,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDraw(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -8356,8 +8243,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDrawContents(PyObject *self, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -8395,8 +8281,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDrawBranches(PyObject *self, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -8433,8 +8318,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnMoveLinks(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -8470,8 +8354,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnErase(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -8507,8 +8390,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnEraseContents(PyObject *self, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -8544,8 +8426,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnHighlight(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -8714,8 +8595,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnMovePre(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -8757,8 +8637,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnMovePost(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -8997,8 +8876,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDrawOutline(PyObject *self, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -9034,8 +8912,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDrawControlPoints(PyObject *sel
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -9071,8 +8948,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnEraseControlPoints(PyObject *se
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -9110,8 +8986,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnMoveLink(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -9516,8 +9391,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDraw(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -9553,8 +9427,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDrawContents(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -9592,8 +9465,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDrawBranches(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -9630,8 +9502,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnMoveLinks(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -9667,8 +9538,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnErase(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -9704,8 +9574,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnEraseContents(PyObject *self, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -9741,8 +9610,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnHighlight(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -9911,8 +9779,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnMovePre(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -9954,8 +9821,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnMovePost(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -10194,8 +10060,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDrawOutline(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -10231,8 +10096,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDrawControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -10268,8 +10132,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnEraseControlPoints(PyObject *self
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -10307,8 +10170,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnMoveLink(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -10911,7 +10773,7 @@ static PyObject *_wrap_wxPyDivisionShape_GetLeftSideColour(PyObject *self, PyObj
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -11506,8 +11368,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDraw(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -11543,8 +11404,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDrawContents(PyObject *self, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -11582,8 +11442,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDrawBranches(PyObject *self, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -11620,8 +11479,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnMoveLinks(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -11657,8 +11515,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnErase(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -11694,8 +11551,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnEraseContents(PyObject *self, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -11731,8 +11587,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnHighlight(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -11901,8 +11756,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnMovePre(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -11944,8 +11798,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnMovePost(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -12184,8 +12037,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDrawOutline(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -12221,8 +12073,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDrawControlPoints(PyObject *self
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -12258,8 +12109,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnEraseControlPoints(PyObject *sel
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -12297,8 +12147,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnMoveLink(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -12836,8 +12685,6 @@ static PyMethodDef oglshapescMethods[] = {
{ "wxPseudoMetaFile_Scale", (PyCFunction) _wrap_wxPseudoMetaFile_Scale, METH_VARARGS | METH_KEYWORDS },
{ "wxPseudoMetaFile_Copy", (PyCFunction) _wrap_wxPseudoMetaFile_Copy, METH_VARARGS | METH_KEYWORDS },
{ "wxPseudoMetaFile_Clear", (PyCFunction) _wrap_wxPseudoMetaFile_Clear, METH_VARARGS | METH_KEYWORDS },
- { "wxPseudoMetaFile_ReadAttributes", (PyCFunction) _wrap_wxPseudoMetaFile_ReadAttributes, METH_VARARGS | METH_KEYWORDS },
- { "wxPseudoMetaFile_WriteAttributes", (PyCFunction) _wrap_wxPseudoMetaFile_WriteAttributes, METH_VARARGS | METH_KEYWORDS },
{ "wxPseudoMetaFile_Draw", (PyCFunction) _wrap_wxPseudoMetaFile_Draw, METH_VARARGS | METH_KEYWORDS },
{ "delete_wxPseudoMetaFile", (PyCFunction) _wrap_delete_wxPseudoMetaFile, METH_VARARGS | METH_KEYWORDS },
{ "new_wxPseudoMetaFile", (PyCFunction) _wrap_new_wxPseudoMetaFile, METH_VARARGS | METH_KEYWORDS },
diff --git a/wxPython/contrib/ogl/oglshapes.i b/wxPython/contrib/ogl/oglshapes.i
index 38fd4dab8a..e3e3c114d5 100644
--- a/wxPython/contrib/ogl/oglshapes.i
+++ b/wxPython/contrib/ogl/oglshapes.i
@@ -46,16 +46,17 @@ public:
~wxPseudoMetaFile();
void Draw(wxDC& dc, double xoffset, double yoffset);
-
+#ifdef wxUSE_PROLOGIO
void WriteAttributes(wxExpr *clause, int whichAngle);
void ReadAttributes(wxExpr *clause, int whichAngle);
+#endif
void Clear();
void Copy(wxPseudoMetaFile& copy);
void Scale(double sx, double sy);
void ScaleTo(double w, double h);
void Translate(double x, double y);
void Rotate(double x, double y, double theta);
- bool LoadFromMetaFile(char* filename, double *width, double *height);
+ bool LoadFromMetaFile(const wxString& filename, double *width, double *height);
void GetBounds(double *minX, double *minY, double *maxX, double *maxY);
void CalculateSize(wxPyDrawnShape* shape);
@@ -280,7 +281,7 @@ public:
wxPseudoMetaFile& GetMetaFile();
double GetRotation();
- bool LoadFromMetaFile(char * filename);
+ bool LoadFromMetaFile(const wxString& filename);
void Rotate(double x, double y, double theta);
void SetClippingRect(const wxRect& rect);
void SetDrawnBackgroundColour(const wxColour& colour);
diff --git a/wxPython/contrib/ogl/oglshapes.py b/wxPython/contrib/ogl/oglshapes.py
index 9f6d7e260f..4090867d08 100644
--- a/wxPython/contrib/ogl/oglshapes.py
+++ b/wxPython/contrib/ogl/oglshapes.py
@@ -49,18 +49,15 @@ class wxPseudoMetaFilePtr(wxObjectPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
- def __del__(self,oglshapesc=oglshapesc):
- if self.thisown == 1 :
- oglshapesc.delete_wxPseudoMetaFile(self)
+ def __del__(self, delfunc=oglshapesc.delete_wxPseudoMetaFile):
+ if self.thisown == 1:
+ try:
+ delfunc(self)
+ except:
+ pass
def Draw(self, *_args, **_kwargs):
val = apply(oglshapesc.wxPseudoMetaFile_Draw,(self,) + _args, _kwargs)
return val
- def WriteAttributes(self, *_args, **_kwargs):
- val = apply(oglshapesc.wxPseudoMetaFile_WriteAttributes,(self,) + _args, _kwargs)
- return val
- def ReadAttributes(self, *_args, **_kwargs):
- val = apply(oglshapesc.wxPseudoMetaFile_ReadAttributes,(self,) + _args, _kwargs)
- return val
def Clear(self, *_args, **_kwargs):
val = apply(oglshapesc.wxPseudoMetaFile_Clear,(self,) + _args, _kwargs)
return val
diff --git a/wxPython/contrib/ogl/oglshapes2.cpp b/wxPython/contrib/ogl/oglshapes2.cpp
index d23ae73f62..52c6257339 100644
--- a/wxPython/contrib/ogl/oglshapes2.cpp
+++ b/wxPython/contrib/ogl/oglshapes2.cpp
@@ -19,6 +19,8 @@
/* Implementation : PYTHON */
#define SWIGPYTHON
+#include "Python.h"
+
#include
#include
/* Definitions for Windows/Unix exporting */
@@ -36,12 +38,9 @@
# define SWIGEXPORT(a) a
#endif
-#include "Python.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
@@ -210,8 +209,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDraw(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -247,8 +245,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDrawContents(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -286,8 +283,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDrawBranches(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -324,8 +320,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnMoveLinks(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -361,8 +356,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnErase(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -398,8 +392,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnEraseContents(PyObject *self, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -435,8 +428,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnHighlight(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -605,8 +597,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnMovePre(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -648,8 +639,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnMovePost(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -888,8 +878,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDrawOutline(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -925,8 +914,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDrawControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -962,8 +950,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnEraseControlPoints(PyObject *self
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -1001,8 +988,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnMoveLink(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -1322,8 +1308,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDraw(PyObject *self, PyObject *arg
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -1359,8 +1344,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDrawContents(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -1398,8 +1382,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDrawBranches(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -1436,8 +1419,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnMoveLinks(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -1473,8 +1455,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnErase(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -1510,8 +1491,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnEraseContents(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -1547,8 +1527,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnHighlight(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -1717,8 +1696,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnMovePre(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -1760,8 +1738,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnMovePost(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -2000,8 +1977,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDrawOutline(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -2037,8 +2013,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDrawControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -2074,8 +2049,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnEraseControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -2113,8 +2087,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnMoveLink(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -2628,7 +2601,7 @@ static PyObject *_wrap_wxArrowHead_GetName(PyObject *self, PyObject *args, PyObj
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -3149,8 +3122,7 @@ static PyObject *_wrap_wxPyLineShape_DrawArrow(PyObject *self, PyObject *args, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_DrawArrow. Expected _wxDC_p.");
return NULL;
}
@@ -3291,8 +3263,7 @@ static PyObject *_wrap_wxPyLineShape_DrawArrows(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_DrawArrows. Expected _wxDC_p.");
return NULL;
}
@@ -3332,8 +3303,7 @@ static PyObject *_wrap_wxPyLineShape_DrawRegion(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_DrawRegion. Expected _wxDC_p.");
return NULL;
}
@@ -3380,8 +3350,7 @@ static PyObject *_wrap_wxPyLineShape_EraseRegion(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_EraseRegion. Expected _wxDC_p.");
return NULL;
}
@@ -3863,7 +3832,7 @@ static PyObject *_wrap_wxPyLineShape_GetLabelPosition(PyObject *self, PyObject *
#define wxPyLineShape_GetNextControlPoint(_swigobj,_swigarg0) (_swigobj->GetNextControlPoint(_swigarg0))
static PyObject *_wrap_wxPyLineShape_GetNextControlPoint(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
- wxPoint * _result;
+ wxRealPoint * _result;
wxPyLineShape * _arg0;
wxPyShape * _arg1;
PyObject * _argo0 = 0;
@@ -3890,12 +3859,12 @@ static PyObject *_wrap_wxPyLineShape_GetNextControlPoint(PyObject *self, PyObjec
}
{
PyThreadState* __tstate = wxPyBeginAllowThreads();
- _result = (wxPoint *)wxPyLineShape_GetNextControlPoint(_arg0,_arg1);
+ _result = (wxRealPoint *)wxPyLineShape_GetNextControlPoint(_arg0,_arg1);
wxPyEndAllowThreads(__tstate);
if (PyErr_Occurred()) return NULL;
} if (_result) {
- SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint_p");
+ SWIG_MakePtr(_ptemp, (char *) _result,"_wxRealPoint_p");
_resultobj = Py_BuildValue("s",_ptemp);
} else {
Py_INCREF(Py_None);
@@ -4465,8 +4434,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDraw(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -4502,8 +4470,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDrawContents(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -4541,8 +4508,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDrawBranches(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -4579,8 +4545,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnMoveLinks(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -4616,8 +4581,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnErase(PyObject *self, PyObject *args
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -4653,8 +4617,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnEraseContents(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -4690,8 +4653,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnHighlight(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -4860,8 +4822,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnMovePre(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -4903,8 +4864,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnMovePost(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -5143,8 +5103,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDrawOutline(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -5180,8 +5139,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDrawControlPoints(PyObject *self, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -5217,8 +5175,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnEraseControlPoints(PyObject *self, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -5256,8 +5213,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnMoveLink(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -5758,8 +5714,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDraw(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -5795,8 +5750,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDrawContents(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -5834,8 +5788,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDrawBranches(PyObject *self, PyOb
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -5872,8 +5825,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnMoveLinks(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -5909,8 +5861,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnErase(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -5946,8 +5897,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnEraseContents(PyObject *self, PyO
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -5983,8 +5933,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnHighlight(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -6153,8 +6102,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnMovePre(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -6196,8 +6144,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnMovePost(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -6436,8 +6383,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDrawOutline(PyObject *self, PyObj
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -6473,8 +6419,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDrawControlPoints(PyObject *self,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -6510,8 +6455,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnEraseControlPoints(PyObject *self
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -6549,8 +6493,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnMoveLink(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
@@ -6899,8 +6842,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDraw(PyObject *self, PyObject *args,
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDraw. Expected _wxDC_p.");
return NULL;
}
@@ -6936,8 +6878,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDrawContents(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDrawContents. Expected _wxDC_p.");
return NULL;
}
@@ -6975,8 +6916,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDrawBranches(PyObject *self, PyObjec
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDrawBranches. Expected _wxDC_p.");
return NULL;
}
@@ -7013,8 +6953,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnMoveLinks(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnMoveLinks. Expected _wxDC_p.");
return NULL;
}
@@ -7050,8 +6989,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnErase(PyObject *self, PyObject *args
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnErase. Expected _wxDC_p.");
return NULL;
}
@@ -7087,8 +7025,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnEraseContents(PyObject *self, PyObje
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnEraseContents. Expected _wxDC_p.");
return NULL;
}
@@ -7124,8 +7061,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnHighlight(PyObject *self, PyObject *
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnHighlight. Expected _wxDC_p.");
return NULL;
}
@@ -7294,8 +7230,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnMovePre(PyObject *self, PyObject *ar
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnMovePre. Expected _wxDC_p.");
return NULL;
}
@@ -7337,8 +7272,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnMovePost(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnMovePost. Expected _wxDC_p.");
return NULL;
}
@@ -7577,8 +7511,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDrawOutline(PyObject *self, PyObject
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDrawOutline. Expected _wxDC_p.");
return NULL;
}
@@ -7614,8 +7547,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDrawControlPoints(PyObject *self, Py
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDrawControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -7651,8 +7583,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnEraseControlPoints(PyObject *self, P
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnEraseControlPoints. Expected _wxDC_p.");
return NULL;
}
@@ -7690,8 +7621,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnMoveLink(PyObject *self, PyObject *a
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnMoveLink. Expected _wxDC_p.");
return NULL;
}
diff --git a/wxPython/contrib/ogl/oglshapes2.i b/wxPython/contrib/ogl/oglshapes2.i
index 2cb69e5a43..108a423acd 100644
--- a/wxPython/contrib/ogl/oglshapes2.i
+++ b/wxPython/contrib/ogl/oglshapes2.i
@@ -209,7 +209,7 @@ public:
void GetEnds(double *OUTPUT, double *OUTPUT, double *OUTPUT, double *OUTPUT);
wxPyShape * GetFrom();
void GetLabelPosition(int position, double *OUTPUT, double *OUTPUT);
- wxPoint * GetNextControlPoint(wxPyShape *shape);
+ wxRealPoint * GetNextControlPoint(wxPyShape *shape);
wxPyShape * GetTo();
void Initialise();
void InsertLineControlPoint(wxDC* dc);
diff --git a/wxPython/contrib/ogl/oglshapes2.py b/wxPython/contrib/ogl/oglshapes2.py
index 25c6516237..60d4c2947e 100644
--- a/wxPython/contrib/ogl/oglshapes2.py
+++ b/wxPython/contrib/ogl/oglshapes2.py
@@ -257,9 +257,12 @@ class wxArrowHeadPtr(wxObjectPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
- def __del__(self,oglshapes2c=oglshapes2c):
- if self.thisown == 1 :
- oglshapes2c.delete_wxArrowHead(self)
+ def __del__(self, delfunc=oglshapes2c.delete_wxArrowHead):
+ if self.thisown == 1:
+ try:
+ delfunc(self)
+ except:
+ pass
def _GetType(self, *_args, **_kwargs):
val = apply(oglshapes2c.wxArrowHead__GetType,(self,) + _args, _kwargs)
return val
@@ -393,7 +396,7 @@ class wxPyLineShapePtr(wxPyShapePtr):
return val
def GetNextControlPoint(self, *_args, **_kwargs):
val = apply(oglshapes2c.wxPyLineShape_GetNextControlPoint,(self,) + _args, _kwargs)
- if val: val = wxPointPtr(val)
+ if val: val = wxRealPointPtr(val)
return val
def GetTo(self, *_args, **_kwargs):
val = apply(oglshapes2c.wxPyLineShape_GetTo,(self,) + _args, _kwargs)
diff --git a/wxPython/contrib/stc/_stcextras.py b/wxPython/contrib/stc/_stcextras.py
index eefe2c4547..dc8f3456ef 100644
--- a/wxPython/contrib/stc/_stcextras.py
+++ b/wxPython/contrib/stc/_stcextras.py
@@ -3,5 +3,5 @@
wx.wxStyledTextEventPtr = wxStyledTextEventPtr
wx.wxStyledTextCtrlPtr = wxStyledTextCtrlPtr
-
-wxSTC_CARET_CENTER = wxSTC_CARET_STRICT
+# This constant no longer exists in Scintilla, but I'll put it here for a while to avoid disrupting user code...
+wxSTC_CARET_CENTER = 0
diff --git a/wxPython/contrib/xrc/_xrcextras.py b/wxPython/contrib/xrc/_xrcextras.py
index e4cd16f562..9562aea2eb 100644
--- a/wxPython/contrib/xrc/_xrcextras.py
+++ b/wxPython/contrib/xrc/_xrcextras.py
@@ -4,3 +4,35 @@
wxTheXmlResource = wxXmlResource_Get()
wx.wxXmlNodePtr = wxXmlNodePtr
+
+
+
+
+#----------------------------------------------------------------------
+# Create a factory for handling the subclass property of the object tag.
+
+
+def _my_import(name):
+ mod = __import__(name)
+ components = name.split('.')
+ for comp in components[1:]:
+ mod = getattr(mod, comp)
+ return mod
+
+
+class wxXmlSubclassFactory_Python(wxXmlSubclassFactory):
+ def __init__(self):
+ wxXmlSubclassFactory.__init__(self)
+
+ def Create(self, className):
+ assert className.find('.') != -1, "Module name must be specified!"
+ mname = className[:className.rfind('.')]
+ cname = className[className.rfind('.')+1:]
+ module = _my_import(mname)
+ klass = getattr(module, cname)
+ inst = klass()
+ return inst
+
+
+wxXmlResource_AddSubclassFactory(wxXmlSubclassFactory_Python())
+
diff --git a/wxPython/contrib/xrc/xrc.cpp b/wxPython/contrib/xrc/xrc.cpp
index e42e2572b8..c9b4c7caba 100644
--- a/wxPython/contrib/xrc/xrc.cpp
+++ b/wxPython/contrib/xrc/xrc.cpp
@@ -19,6 +19,8 @@
/* Implementation : PYTHON */
#define SWIGPYTHON
+#include "Python.h"
+
#include
#include
/* Definitions for Windows/Unix exporting */
@@ -36,12 +38,9 @@
# define SWIGEXPORT(a) a
#endif
-#include "Python.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
@@ -98,6 +97,16 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) {
static const wxString wxPyBitmapString(wxT("bitmap"));
static const wxString wxPyIconString(wxT("icon"));
static const wxString wxPyFontString(wxT("font"));
+
+class wxPyXmlSubclassFactory : public wxXmlSubclassFactory
+{
+public:
+ wxPyXmlSubclassFactory() {}
+ DEC_PYCALLBACK_OBJECT_STRING_pure(Create);
+ PYPRIVATE;
+};
+
+IMP_PYCALLBACK_OBJECT_STRING_pure(wxPyXmlSubclassFactory, wxXmlSubclassFactory, Create);
// C++ version of Python aware wxXmlResourceHandler, for the pure virtual
// callbacks, as well as to make some protected things public so they can
// be wrapped.
@@ -111,34 +120,6 @@ public:
DEC_PYCALLBACK_OBJECT__pure(DoCreateResource);
DEC_PYCALLBACK_BOOL_NODE_pure(CanHandle);
-// wxObject* DoCreateResource() {
-// wxObject* rv = NULL;
-// wxPyBeginBlockThreads();
-// if (wxPyCBH_findCallback(m_myInst, "DoCreateResource")) {
-// PyObject* ro;
-// ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()"));
-// if (ro) {
-// SWIG_GetPtrObj(ro, (void **)&rv, "_wxObject_p");
-// Py_DECREF(ro);
-// }
-// }
-// wxPyEndBlockThreads();
-// return rv;
-// }
-
-// bool CanHandle(wxXmlNode* a) {
-// bool rv=FALSE;
-// wxPyBeginBlockThreads();
-// if (wxPyCBH_findCallback(m_myInst, "CanHandle")) {
-// PyObject* obj = wxPyConstructObject((void*)a, "wxXmlNode", 0);
-// rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj));
-// Py_DECREF(obj);
-// }
-// wxPyEndBlockThreads();
-// return rv;
-// }
-
-
// accessors for protected members
@@ -576,6 +557,33 @@ static PyObject *_wrap_wxXmlResource_ClearHandlers(PyObject *self, PyObject *arg
return _resultobj;
}
+static PyObject *_wrap_wxXmlResource_AddSubclassFactory(PyObject *self, PyObject *args, PyObject *kwargs) {
+ PyObject * _resultobj;
+ wxPyXmlSubclassFactory * _arg0;
+ PyObject * _argo0 = 0;
+ char *_kwnames[] = { "factory", NULL };
+
+ self = self;
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxXmlResource_AddSubclassFactory",_kwnames,&_argo0))
+ return NULL;
+ if (_argo0) {
+ if (_argo0 == Py_None) { _arg0 = NULL; }
+ else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyXmlSubclassFactory_p")) {
+ PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxXmlResource_AddSubclassFactory. Expected _wxPyXmlSubclassFactory_p.");
+ return NULL;
+ }
+ }
+{
+ PyThreadState* __tstate = wxPyBeginAllowThreads();
+ wxXmlResource::AddSubclassFactory(_arg0);
+
+ wxPyEndAllowThreads(__tstate);
+ if (PyErr_Occurred()) return NULL;
+} Py_INCREF(Py_None);
+ _resultobj = Py_None;
+ return _resultobj;
+}
+
#define wxXmlResource_LoadMenu(_swigobj,_swigarg0) (_swigobj->LoadMenu(_swigarg0))
static PyObject *_wrap_wxXmlResource_LoadMenu(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
@@ -1521,6 +1529,99 @@ static PyObject *_wrap_wxXmlResource_GetFlags(PyObject *self, PyObject *args, Py
return _resultobj;
}
+#define wxXmlResource_SetFlags(_swigobj,_swigarg0) (_swigobj->SetFlags(_swigarg0))
+static PyObject *_wrap_wxXmlResource_SetFlags(PyObject *self, PyObject *args, PyObject *kwargs) {
+ PyObject * _resultobj;
+ wxXmlResource * _arg0;
+ int _arg1;
+ PyObject * _argo0 = 0;
+ char *_kwnames[] = { "self","flags", NULL };
+
+ self = self;
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxXmlResource_SetFlags",_kwnames,&_argo0,&_arg1))
+ return NULL;
+ if (_argo0) {
+ if (_argo0 == Py_None) { _arg0 = NULL; }
+ else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxXmlResource_p")) {
+ PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxXmlResource_SetFlags. Expected _wxXmlResource_p.");
+ return NULL;
+ }
+ }
+{
+ PyThreadState* __tstate = wxPyBeginAllowThreads();
+ wxXmlResource_SetFlags(_arg0,_arg1);
+
+ wxPyEndAllowThreads(__tstate);
+ if (PyErr_Occurred()) return NULL;
+} Py_INCREF(Py_None);
+ _resultobj = Py_None;
+ return _resultobj;
+}
+
+#define new_wxXmlSubclassFactory() (new wxPyXmlSubclassFactory())
+static PyObject *_wrap_new_wxXmlSubclassFactory(PyObject *self, PyObject *args, PyObject *kwargs) {
+ PyObject * _resultobj;
+ wxPyXmlSubclassFactory * _result;
+ char *_kwnames[] = { NULL };
+ char _ptemp[128];
+
+ self = self;
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxXmlSubclassFactory",_kwnames))
+ return NULL;
+{
+ PyThreadState* __tstate = wxPyBeginAllowThreads();
+ _result = (wxPyXmlSubclassFactory *)new_wxXmlSubclassFactory();
+
+ wxPyEndAllowThreads(__tstate);
+ if (PyErr_Occurred()) return NULL;
+} if (_result) {
+ SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyXmlSubclassFactory_p");
+ _resultobj = Py_BuildValue("s",_ptemp);
+ } else {
+ Py_INCREF(Py_None);
+ _resultobj = Py_None;
+ }
+ return _resultobj;
+}
+
+#define wxXmlSubclassFactory__setCallbackInfo(_swigobj,_swigarg0,_swigarg1) (_swigobj->_setCallbackInfo(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxXmlSubclassFactory__setCallbackInfo(PyObject *self, PyObject *args, PyObject *kwargs) {
+ PyObject * _resultobj;
+ wxPyXmlSubclassFactory * _arg0;
+ PyObject * _arg1;
+ PyObject * _arg2;
+ PyObject * _argo0 = 0;
+ PyObject * _obj1 = 0;
+ PyObject * _obj2 = 0;
+ char *_kwnames[] = { "self","self","_class", NULL };
+
+ self = self;
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxXmlSubclassFactory__setCallbackInfo",_kwnames,&_argo0,&_obj1,&_obj2))
+ return NULL;
+ if (_argo0) {
+ if (_argo0 == Py_None) { _arg0 = NULL; }
+ else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyXmlSubclassFactory_p")) {
+ PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxXmlSubclassFactory__setCallbackInfo. Expected _wxPyXmlSubclassFactory_p.");
+ return NULL;
+ }
+ }
+{
+ _arg1 = _obj1;
+}
+{
+ _arg2 = _obj2;
+}
+{
+ PyThreadState* __tstate = wxPyBeginAllowThreads();
+ wxXmlSubclassFactory__setCallbackInfo(_arg0,_arg1,_arg2);
+
+ wxPyEndAllowThreads(__tstate);
+ if (PyErr_Occurred()) return NULL;
+} Py_INCREF(Py_None);
+ _resultobj = Py_None;
+ return _resultobj;
+}
+
#define new_wxXmlProperty(_swigarg0,_swigarg1,_swigarg2) (new wxXmlProperty(_swigarg0,_swigarg1,_swigarg2))
static PyObject *_wrap_new_wxXmlProperty(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
@@ -1606,7 +1707,7 @@ static PyObject *_wrap_wxXmlProperty_GetName(PyObject *self, PyObject *args, PyO
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -1643,7 +1744,7 @@ static PyObject *_wrap_wxXmlProperty_GetValue(PyObject *self, PyObject *args, Py
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -2260,7 +2361,7 @@ static PyObject *_wrap_wxXmlNode_GetName(PyObject *self, PyObject *args, PyObjec
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -2297,7 +2398,7 @@ static PyObject *_wrap_wxXmlNode_GetContent(PyObject *self, PyObject *args, PyOb
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -2488,7 +2589,7 @@ static PyObject *_wrap_wxXmlNode_GetPropVal(PyObject *self, PyObject *args, PyOb
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -3143,8 +3244,7 @@ static PyObject *_wrap_wxXmlDocument_SaveToStream(PyObject *self, PyObject *args
}
}
if (_argo1) {
- if (_argo1 == Py_None) { _arg1 = NULL; }
- else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxOutputStream_p")) {
+ if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxOutputStream_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxXmlDocument_SaveToStream. Expected _wxOutputStream_p.");
return NULL;
}
@@ -3248,7 +3348,7 @@ static PyObject *_wrap_wxXmlDocument_GetVersion(PyObject *self, PyObject *args,
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -3285,7 +3385,7 @@ static PyObject *_wrap_wxXmlDocument_GetFileEncoding(PyObject *self, PyObject *a
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -3443,7 +3543,7 @@ static PyObject *_wrap_wxXmlDocument_GetEncoding(PyObject *self, PyObject *args,
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -3454,6 +3554,51 @@ static PyObject *_wrap_wxXmlDocument_GetEncoding(PyObject *self, PyObject *args,
return _resultobj;
}
+static void wxXmlDocument_SetEncoding(wxXmlDocument *self,const wxString & enc) {
+ #if wxUSE_UNICODE
+ // do nothing
+ #else
+ self->SetEncoding(enc);
+ #endif
+ }
+static PyObject *_wrap_wxXmlDocument_SetEncoding(PyObject *self, PyObject *args, PyObject *kwargs) {
+ PyObject * _resultobj;
+ wxXmlDocument * _arg0;
+ wxString * _arg1;
+ PyObject * _argo0 = 0;
+ PyObject * _obj1 = 0;
+ char *_kwnames[] = { "self","enc", NULL };
+
+ self = self;
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxXmlDocument_SetEncoding",_kwnames,&_argo0,&_obj1))
+ return NULL;
+ if (_argo0) {
+ if (_argo0 == Py_None) { _arg0 = NULL; }
+ else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxXmlDocument_p")) {
+ PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxXmlDocument_SetEncoding. Expected _wxXmlDocument_p.");
+ return NULL;
+ }
+ }
+{
+ _arg1 = wxString_in_helper(_obj1);
+ if (_arg1 == NULL)
+ return NULL;
+}
+{
+ PyThreadState* __tstate = wxPyBeginAllowThreads();
+ wxXmlDocument_SetEncoding(_arg0,*_arg1);
+
+ wxPyEndAllowThreads(__tstate);
+ if (PyErr_Occurred()) return NULL;
+} Py_INCREF(Py_None);
+ _resultobj = Py_None;
+{
+ if (_obj1)
+ delete _arg1;
+}
+ return _resultobj;
+}
+
static void *SwigwxPyXmlResourceHandlerTowxObject(void *ptr) {
wxPyXmlResourceHandler *src;
wxObject *dest;
@@ -3714,7 +3859,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetClass(PyObject *self, PyObject *a
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -3920,7 +4065,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetNodeContent(PyObject *self, PyObj
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -4049,7 +4194,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetParamValue(PyObject *self, PyObje
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -4209,7 +4354,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetText(PyObject *self, PyObject *ar
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -4278,7 +4423,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetName(PyObject *self, PyObject *ar
if (PyErr_Occurred()) return NULL;
}{
#if wxUSE_UNICODE
- _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len());
+ _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len());
#else
_resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
#endif
@@ -4569,8 +4714,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetBitmap(PyObject *self, PyObject *
return NULL;
}
if (_argo2) {
- if (_argo2 == Py_None) { _arg2 = NULL; }
- else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxArtClient_p")) {
+ if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxArtClient_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxXmlResourceHandler_GetBitmap. Expected _wxArtClient_p.");
return NULL;
}
@@ -4629,8 +4773,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetIcon(PyObject *self, PyObject *ar
return NULL;
}
if (_argo2) {
- if (_argo2 == Py_None) { _arg2 = NULL; }
- else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxArtClient_p")) {
+ if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxArtClient_p")) {
PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxXmlResourceHandler_GetIcon. Expected _wxArtClient_p.");
return NULL;
}
@@ -4942,6 +5085,7 @@ static PyMethodDef xrccMethods[] = {
{ "wxXmlResourceHandler_CreateResource", (PyCFunction) _wrap_wxXmlResourceHandler_CreateResource, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResourceHandler__setCallbackInfo", (PyCFunction) _wrap_wxXmlResourceHandler__setCallbackInfo, METH_VARARGS | METH_KEYWORDS },
{ "new_wxXmlResourceHandler", (PyCFunction) _wrap_new_wxXmlResourceHandler, METH_VARARGS | METH_KEYWORDS },
+ { "wxXmlDocument_SetEncoding", (PyCFunction) _wrap_wxXmlDocument_SetEncoding, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlDocument_GetEncoding", (PyCFunction) _wrap_wxXmlDocument_GetEncoding, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlDocument_SetFileEncoding", (PyCFunction) _wrap_wxXmlDocument_SetFileEncoding, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlDocument_SetVersion", (PyCFunction) _wrap_wxXmlDocument_SetVersion, METH_VARARGS | METH_KEYWORDS },
@@ -4990,6 +5134,9 @@ static PyMethodDef xrccMethods[] = {
{ "wxXmlProperty_GetValue", (PyCFunction) _wrap_wxXmlProperty_GetValue, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlProperty_GetName", (PyCFunction) _wrap_wxXmlProperty_GetName, METH_VARARGS | METH_KEYWORDS },
{ "new_wxXmlProperty", (PyCFunction) _wrap_new_wxXmlProperty, METH_VARARGS | METH_KEYWORDS },
+ { "wxXmlSubclassFactory__setCallbackInfo", (PyCFunction) _wrap_wxXmlSubclassFactory__setCallbackInfo, METH_VARARGS | METH_KEYWORDS },
+ { "new_wxXmlSubclassFactory", (PyCFunction) _wrap_new_wxXmlSubclassFactory, METH_VARARGS | METH_KEYWORDS },
+ { "wxXmlResource_SetFlags", (PyCFunction) _wrap_wxXmlResource_SetFlags, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResource_GetFlags", (PyCFunction) _wrap_wxXmlResource_GetFlags, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResource_Set", (PyCFunction) _wrap_wxXmlResource_Set, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResource_Get", (PyCFunction) _wrap_wxXmlResource_Get, METH_VARARGS | METH_KEYWORDS },
@@ -5011,6 +5158,7 @@ static PyMethodDef xrccMethods[] = {
{ "wxXmlResource_LoadMenuBarOnFrame", (PyCFunction) _wrap_wxXmlResource_LoadMenuBarOnFrame, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResource_LoadMenuBar", (PyCFunction) _wrap_wxXmlResource_LoadMenuBar, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResource_LoadMenu", (PyCFunction) _wrap_wxXmlResource_LoadMenu, METH_VARARGS | METH_KEYWORDS },
+ { "wxXmlResource_AddSubclassFactory", (PyCFunction) _wrap_wxXmlResource_AddSubclassFactory, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResource_ClearHandlers", (PyCFunction) _wrap_wxXmlResource_ClearHandlers, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResource_InsertHandler", (PyCFunction) _wrap_wxXmlResource_InsertHandler, METH_VARARGS | METH_KEYWORDS },
{ "wxXmlResource_AddHandler", (PyCFunction) _wrap_wxXmlResource_AddHandler, METH_VARARGS | METH_KEYWORDS },
diff --git a/wxPython/contrib/xrc/xrc.i b/wxPython/contrib/xrc/xrc.i
index 037e1eb214..8676043657 100644
--- a/wxPython/contrib/xrc/xrc.i
+++ b/wxPython/contrib/xrc/xrc.i
@@ -48,6 +48,9 @@
static const wxString wxPyIconString(wxT("icon"));
static const wxString wxPyFontString(wxT("font"));
%}
+
+class wxPyXmlSubclassFactory;
+
//---------------------------------------------------------------------------
enum wxXmlResourceFlags
@@ -128,6 +131,12 @@ public:
// Removes all handlers
void ClearHandlers();
+ // Registers subclasses factory for use in XRC. This function is not meant
+ // for public use, please see the comment above wxXmlSubclassFactory
+ // definition.
+ static void AddSubclassFactory(wxPyXmlSubclassFactory *factory);
+
+
// Loads menu from resource. Returns NULL on failure.
wxMenu *LoadMenu(const wxString& name);
@@ -199,6 +208,9 @@ public:
// Returns flags, which may be a bitlist of wxXRC_USE_LOCALE and wxXRC_NO_SUBCLASSING.
int GetFlags();
+ // Set flags after construction.
+ void SetFlags(int flags) { m_flags = flags; }
+
};
//----------------------------------------------------------------------
@@ -215,6 +227,31 @@ XMLCTRL = XRCCTRL
"
//----------------------------------------------------------------------
+// wxXmlSubclassFactory
+
+
+%{
+class wxPyXmlSubclassFactory : public wxXmlSubclassFactory
+{
+public:
+ wxPyXmlSubclassFactory() {}
+ DEC_PYCALLBACK_OBJECT_STRING_pure(Create);
+ PYPRIVATE;
+};
+
+IMP_PYCALLBACK_OBJECT_STRING_pure(wxPyXmlSubclassFactory, wxXmlSubclassFactory, Create);
+%}
+
+
+%name(wxXmlSubclassFactory)class wxPyXmlSubclassFactory {
+public:
+ wxPyXmlSubclassFactory();
+
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxXmlSubclassFactory)"
+};
+
+
//----------------------------------------------------------------------
// In order to provide wrappers for wxXmlResourceHandler we need to also
// provide the classes for representing and parsing XML.
@@ -374,6 +411,13 @@ public:
return self->GetEncoding();
#endif
}
+ void SetEncoding(const wxString& enc) {
+ #if wxUSE_UNICODE
+ // do nothing
+ #else
+ self->SetEncoding(enc);
+ #endif
+ }
}
};
@@ -396,34 +440,6 @@ public:
DEC_PYCALLBACK_OBJECT__pure(DoCreateResource);
DEC_PYCALLBACK_BOOL_NODE_pure(CanHandle);
-// wxObject* DoCreateResource() {
-// wxObject* rv = NULL;
-// wxPyBeginBlockThreads();
-// if (wxPyCBH_findCallback(m_myInst, "DoCreateResource")) {
-// PyObject* ro;
-// ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()"));
-// if (ro) {
-// SWIG_GetPtrObj(ro, (void **)&rv, "_wxObject_p");
-// Py_DECREF(ro);
-// }
-// }
-// wxPyEndBlockThreads();
-// return rv;
-// }
-
-// bool CanHandle(wxXmlNode* a) {
-// bool rv=FALSE;
-// wxPyBeginBlockThreads();
-// if (wxPyCBH_findCallback(m_myInst, "CanHandle")) {
-// PyObject* obj = wxPyConstructObject((void*)a, "wxXmlNode", 0);
-// rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj));
-// Py_DECREF(obj);
-// }
-// wxPyEndBlockThreads();
-// return rv;
-// }
-
-
// accessors for protected members
diff --git a/wxPython/contrib/xrc/xrc.py b/wxPython/contrib/xrc/xrc.py
index 9a10422a35..79f0b6a62c 100644
--- a/wxPython/contrib/xrc/xrc.py
+++ b/wxPython/contrib/xrc/xrc.py
@@ -56,9 +56,12 @@ class wxXmlResourcePtr(wxObjectPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
- def __del__(self,xrcc=xrcc):
- if self.thisown == 1 :
- xrcc.delete_wxXmlResource(self)
+ def __del__(self, delfunc=xrcc.delete_wxXmlResource):
+ if self.thisown == 1:
+ try:
+ delfunc(self)
+ except:
+ pass
def Load(self, *_args, **_kwargs):
val = apply(xrcc.wxXmlResource_Load,(self,) + _args, _kwargs)
return val
@@ -135,6 +138,9 @@ class wxXmlResourcePtr(wxObjectPtr):
def GetFlags(self, *_args, **_kwargs):
val = apply(xrcc.wxXmlResource_GetFlags,(self,) + _args, _kwargs)
return val
+ def SetFlags(self, *_args, **_kwargs):
+ val = apply(xrcc.wxXmlResource_SetFlags,(self,) + _args, _kwargs)
+ return val
def __repr__(self):
return "" % (self.this,)
class wxXmlResource(wxXmlResourcePtr):
@@ -152,6 +158,24 @@ def wxEmptyXmlResource(*_args,**_kwargs):
return val
+class wxXmlSubclassFactoryPtr :
+ def __init__(self,this):
+ self.this = this
+ self.thisown = 0
+ def _setCallbackInfo(self, *_args, **_kwargs):
+ val = apply(xrcc.wxXmlSubclassFactory__setCallbackInfo,(self,) + _args, _kwargs)
+ return val
+ def __repr__(self):
+ return "" % (self.this,)
+class wxXmlSubclassFactory(wxXmlSubclassFactoryPtr):
+ def __init__(self,*_args,**_kwargs):
+ self.this = apply(xrcc.new_wxXmlSubclassFactory,_args,_kwargs)
+ self.thisown = 1
+ self._setCallbackInfo(self, wxXmlSubclassFactory)
+
+
+
+
class wxXmlPropertyPtr :
def __init__(self,this):
self.this = this
@@ -189,9 +213,12 @@ class wxXmlNodePtr :
def __init__(self,this):
self.this = this
self.thisown = 0
- def __del__(self,xrcc=xrcc):
- if self.thisown == 1 :
- xrcc.delete_wxXmlNode(self)
+ def __del__(self, delfunc=xrcc.delete_wxXmlNode):
+ if self.thisown == 1:
+ try:
+ delfunc(self)
+ except:
+ pass
def AddChild(self, *_args, **_kwargs):
val = apply(xrcc.wxXmlNode_AddChild,(self,) + _args, _kwargs)
return val
@@ -281,9 +308,12 @@ class wxXmlDocumentPtr(wxObjectPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
- def __del__(self,xrcc=xrcc):
- if self.thisown == 1 :
- xrcc.delete_wxXmlDocument(self)
+ def __del__(self, delfunc=xrcc.delete_wxXmlDocument):
+ if self.thisown == 1:
+ try:
+ delfunc(self)
+ except:
+ pass
def Load(self, *_args, **_kwargs):
val = apply(xrcc.wxXmlDocument_Load,(self,) + _args, _kwargs)
return val
@@ -321,6 +351,9 @@ class wxXmlDocumentPtr(wxObjectPtr):
def GetEncoding(self, *_args, **_kwargs):
val = apply(xrcc.wxXmlDocument_GetEncoding,(self,) + _args, _kwargs)
return val
+ def SetEncoding(self, *_args, **_kwargs):
+ val = apply(xrcc.wxXmlDocument_SetEncoding,(self,) + _args, _kwargs)
+ return val
def __repr__(self):
return "" % (self.this,)
class wxXmlDocument(wxXmlDocumentPtr):
@@ -474,6 +507,8 @@ class wxXmlResourceHandler(wxXmlResourceHandlerPtr):
#-------------- FUNCTION WRAPPERS ------------------
+wxXmlResource_AddSubclassFactory = xrcc.wxXmlResource_AddSubclassFactory
+
wxXmlResource_GetXRCID = xrcc.wxXmlResource_GetXRCID
def wxXmlResource_Get(*_args, **_kwargs):
@@ -515,3 +550,35 @@ wxXML_HTML_DOCUMENT_NODE = xrcc.wxXML_HTML_DOCUMENT_NODE
wxTheXmlResource = wxXmlResource_Get()
wx.wxXmlNodePtr = wxXmlNodePtr
+
+
+
+
+#----------------------------------------------------------------------
+# Create a factory for handling the subclass property of the object tag.
+
+
+def _my_import(name):
+ mod = __import__(name)
+ components = name.split('.')
+ for comp in components[1:]:
+ mod = getattr(mod, comp)
+ return mod
+
+
+class wxXmlSubclassFactory_Python(wxXmlSubclassFactory):
+ def __init__(self):
+ wxXmlSubclassFactory.__init__(self)
+
+ def Create(self, className):
+ assert className.find('.') != -1, "Module name must be specified!"
+ mname = className[:className.rfind('.')]
+ cname = className[className.rfind('.')+1:]
+ module = _my_import(mname)
+ klass = getattr(module, cname)
+ inst = klass()
+ return inst
+
+
+wxXmlResource_AddSubclassFactory(wxXmlSubclassFactory_Python())
+
diff --git a/wxPython/demo/.cvsignore b/wxPython/demo/.cvsignore
index b4a758e078..3648f08aa4 100644
--- a/wxPython/demo/.cvsignore
+++ b/wxPython/demo/.cvsignore
@@ -1,6 +1,9 @@
*.pyc
.DS_Store
+._demo.py
.emacs.desktop
+.gdb_history
+.setup.sh
b.bat
hangman_dict.txt
mimetypes_wdr
diff --git a/wxPython/demo/About.py b/wxPython/demo/About.py
index 0605fa36fa..3e22739553 100644
--- a/wxPython/demo/About.py
+++ b/wxPython/demo/About.py
@@ -1,4 +1,4 @@
-import sys, string
+import sys
from wxPython.wx import *
from wxPython.html import *
@@ -46,12 +46,12 @@ demo item so you can learn how to use the classes yourself.
def __init__(self, parent):
wxDialog.__init__(self, parent, -1, 'About the wxPython demo',)
html = wxHtmlWindow(self, -1, size=(420, -1))
- py_version = string.split(sys.version)[0]
+ py_version = sys.version.split()[0]
html.SetPage(self.text % (wx.__version__, py_version))
btn = html.FindWindowById(wxID_OK)
btn.SetDefault()
ir = html.GetInternalRepresentation()
- html.SetSize( (ir.GetWidth()+5, ir.GetHeight()+5) )
+ html.SetSize( (ir.GetWidth()+25, ir.GetHeight()+25) )
self.SetClientSize(html.GetSize())
self.CentreOnParent(wxBOTH)
diff --git a/wxPython/demo/ActiveXWrapper_Acrobat.py b/wxPython/demo/ActiveXWrapper_Acrobat.py
index 6eb972d109..694f875463 100644
--- a/wxPython/demo/ActiveXWrapper_Acrobat.py
+++ b/wxPython/demo/ActiveXWrapper_Acrobat.py
@@ -62,7 +62,7 @@ class TestPanel(wxPanel):
sizer.Add(btnSizer, 0, wxEXPAND)
self.SetSizer(sizer)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
EVT_WINDOW_DESTROY(self, self.OnDestroy)
@@ -121,7 +121,7 @@ if __name__ == '__main__':
app = wxPySimpleApp()
frame = TestFrame()
- frame.Show(true)
+ frame.Show(True)
app.MainLoop()
diff --git a/wxPython/demo/ActiveXWrapper_IE.py b/wxPython/demo/ActiveXWrapper_IE.py
index 2e23f54545..2e08c8e1a4 100644
--- a/wxPython/demo/ActiveXWrapper_IE.py
+++ b/wxPython/demo/ActiveXWrapper_IE.py
@@ -101,12 +101,18 @@ class TestPanel(wxWindow):
self.location.Append(self.current)
self.SetSizer(sizer)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
EVT_SIZE(self, self.OnSize)
EVT_WINDOW_DESTROY(self, self.OnDestroy)
+ def ShutdownDemo(self):
+ # put the frame title back
+ if self.frame:
+ self.frame.SetTitle(self.titleBase)
+
+
def OnDestroy(self, evt):
if self.ie:
self.ie.Cleanup()
@@ -224,7 +230,7 @@ if __name__ == '__main__':
app = wxPySimpleApp()
frame = TestFrame()
- frame.Show(true)
+ frame.Show(True)
app.MainLoop()
diff --git a/wxPython/demo/ColourSelect.py b/wxPython/demo/ColourSelect.py
index 0e044e0671..18cdf015a5 100644
--- a/wxPython/demo/ColourSelect.py
+++ b/wxPython/demo/ColourSelect.py
@@ -18,7 +18,6 @@
from wxPython.wx import *
from wxPython.lib.colourselect import *
-import string
#----------------------------------------------------------------------------
@@ -26,7 +25,7 @@ class TestColourSelect(wxPanel):
def __init__(self, parent, log):
self.log = log
wxPanel.__init__(self, parent, -1)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
mainSizer = wxBoxSizer(wxVERTICAL)
self.SetSizer(mainSizer)
t = wxStaticText(self, -1,
@@ -86,7 +85,7 @@ class TestColourSelect(wxPanel):
colour = button.GetColour() # get the colour selection button result
result.append(name + ": " + str(colour)) # create string list for easy viewing of results
- out_result = string.joinfields(result, ', ')
+ out_result = ', '.join(result)
self.log.WriteText("Colour Results: " + out_result + "\n")
#---------------------------------------------------------------------------
diff --git a/wxPython/demo/ContextHelp.py b/wxPython/demo/ContextHelp.py
index 2c2a567ab7..c115f22c44 100644
--- a/wxPython/demo/ContextHelp.py
+++ b/wxPython/demo/ContextHelp.py
@@ -53,7 +53,7 @@ class TestPanel(wxPanel):
border = wxBoxSizer(wxVERTICAL)
border.Add(sizer, 0, wxALL, 25)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(border)
self.Layout()
diff --git a/wxPython/demo/CustomDragAndDrop.py b/wxPython/demo/CustomDragAndDrop.py
index 46c3ed5240..3fb49e5d02 100644
--- a/wxPython/demo/CustomDragAndDrop.py
+++ b/wxPython/demo/CustomDragAndDrop.py
@@ -124,7 +124,8 @@ class DoodleDropTarget(wxPyDropTarget):
self.dv = window
# specify the type of data we will accept
- self.data = wxCustomDataObject(wxCustomDataFormat("DoodleLines"))
+ self.df = wxCustomDataFormat("DoodleLines")
+ self.data = wxCustomDataObject(self.df)
self.SetDataObject(self.data)
@@ -138,7 +139,7 @@ class DoodleDropTarget(wxPyDropTarget):
def OnDrop(self, x, y):
self.log.WriteText("OnDrop: %d %d\n" % (x, y))
- return true
+ return True
def OnDragOver(self, x, y, d):
#self.log.WriteText("OnDragOver: %d, %d, %d\n" % (x, y, d))
@@ -153,7 +154,7 @@ class DoodleDropTarget(wxPyDropTarget):
- # Called when OnDrop returns true. We need to get the data and
+ # Called when OnDrop returns True. We need to get the data and
# do something with it.
def OnData(self, x, y, d):
self.log.WriteText("OnData: %d, %d, %d\n" % (x, y, d))
@@ -205,7 +206,7 @@ class CustomDnDPanel(wxPanel):
def __init__(self, parent, log):
wxPanel.__init__(self, parent, -1)
- self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false))
+ self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, False))
# Make the controls
text1 = wxStaticText(self, -1,
@@ -217,9 +218,9 @@ class CustomDnDPanel(wxPanel):
)
rb1 = wxRadioButton(self, -1, "Draw", style=wxRB_GROUP)
- rb1.SetValue(true)
+ rb1.SetValue(True)
rb2 = wxRadioButton(self, -1, "Drag")
- rb2.SetValue(false)
+ rb2.SetValue(False)
text2 = wxStaticText(self, -1,
"The lower window is accepting a\n"
@@ -249,7 +250,7 @@ class CustomDnDPanel(wxPanel):
sizer.Add(dndsizer, 1, wxEXPAND)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(sizer)
# Events
@@ -269,12 +270,12 @@ class TestPanel(wxPanel):
def __init__(self, parent, log):
wxPanel.__init__(self, parent, -1)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
sizer = wxBoxSizer(wxVERTICAL)
msg = "Custom Drag-And-Drop"
text = wxStaticText(self, -1, "", style=wxALIGN_CENTRE)
- text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, false))
+ text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, False))
text.SetLabel(msg)
w,h = text.GetTextExtent(msg)
text.SetSize(wxSize(w,h+1))
@@ -303,8 +304,9 @@ if __name__ == '__main__':
class TestApp(wxApp):
def OnInit(self):
+ wxInitAllImageHandlers()
self.MakeFrame()
- return true
+ return True
def MakeFrame(self, event=None):
frame = wxFrame(None, -1, "Custom Drag and Drop", size=(550,400))
@@ -315,7 +317,7 @@ if __name__ == '__main__':
frame.SetMenuBar(mb)
EVT_MENU(frame, 6543, self.MakeFrame)
panel = TestPanel(frame, DummyLog())
- frame.Show(true)
+ frame.Show(True)
self.SetTopWindow(frame)
@@ -326,21 +328,20 @@ if __name__ == '__main__':
#----------------------------------------------------------------------
+overview = """
+This demo shows Drag and Drop using a custom data type and a custom
+data object. A type called "DoodleLines" is created and a Python
+Pickle of a list is actually transfered in the drag and drop
+opperation.
+A second data object is also created containing a bitmap of the image
+and is made available to any drop target that accepts bitmaps, such as
+MS Word.
+The two data objects are combined in a wxDataObjectComposite and the
+rest is handled by the framework.
+
+"""
-
-
-
-
-
-overview = """\
-This demo shows Drag and Drop using a custom data type and a custom data object. A type called "DoodleLines" is created and a Python Pickle of a list is actually transfered in the drag and drop opperation.
-
-A second data object is also created containing a bitmap of the image and is made available to any drop target that accepts bitmaps, such as MS Word.
-
-The two data objects are combined in a wxDataObjectComposite and the rest is handled by the framework.
-"""
-
diff --git a/wxPython/demo/DialogUnits.py b/wxPython/demo/DialogUnits.py
index eca857897a..78974eb676 100644
--- a/wxPython/demo/DialogUnits.py
+++ b/wxPython/demo/DialogUnits.py
@@ -88,13 +88,13 @@ if __name__ == "__main__":
# Create an instance of our customized Frame class
frame = MyFrame(None, -1, "This is a test")
- frame.Show(true)
+ frame.Show(True)
# Tell wxWindows that this is our main window
self.SetTopWindow(frame)
# Return a success flag
- return true
+ return True
app = MyApp(0) # Create an instance of the application class
@@ -107,7 +107,7 @@ if __name__ == "__main__":
def runTest(frame, nb, log):
win = MyFrame(frame, -1, "This is a test")
frame.otherWin = win
- win.Show(true)
+ win.Show(True)
overview = """\
diff --git a/wxPython/demo/DragAndDrop.py b/wxPython/demo/DragAndDrop.py
index da17b09299..e99abc3660 100644
--- a/wxPython/demo/DragAndDrop.py
+++ b/wxPython/demo/DragAndDrop.py
@@ -8,7 +8,7 @@ class ClipTextPanel(wxPanel):
wxPanel.__init__(self, parent, -1)
self.log = log
- #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false))
+ #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, False))
sizer = wxBoxSizer(wxVERTICAL)
sizer.Add(wxStaticText(self, -1,
@@ -28,7 +28,7 @@ class ClipTextPanel(wxPanel):
EVT_BUTTON(self, 6051, self.OnPaste)
EVT_BUTTON(self, 6052, self.OnCopyBitmap)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(sizer)
@@ -86,7 +86,7 @@ class OtherDropTarget(wxPyDropTarget):
def OnDrop(self, x, y):
self.log.WriteText("OnDrop: %d %d\n" % (x, y))
- return true
+ return True
def OnData(self, x, y, d):
self.log.WriteText("OnData: %d, %d, %d\n" % (x, y, d))
@@ -128,7 +128,7 @@ class FileDropPanel(wxPanel):
def __init__(self, parent, log):
wxPanel.__init__(self, parent, -1)
- #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false))
+ #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, False))
sizer = wxBoxSizer(wxVERTICAL)
sizer.Add(wxStaticText(self, -1, " \nDrag some files here:"),
@@ -148,7 +148,7 @@ class FileDropPanel(wxPanel):
self.text2.SetDropTarget(dt)
sizer.Add(self.text2, 1, wxEXPAND)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(sizer)
@@ -166,12 +166,12 @@ class TestPanel(wxPanel):
def __init__(self, parent, log):
wxPanel.__init__(self, parent, -1)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
outsideSizer = wxBoxSizer(wxVERTICAL)
msg = "Clipboard / Drag-And-Drop"
text = wxStaticText(self, -1, "", style=wxALIGN_CENTRE)
- text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, false))
+ text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, False))
text.SetLabel(msg)
w,h = text.GetTextExtent(msg)
text.SetSize(wxSize(w,h+1))
diff --git a/wxPython/demo/DrawXXXList.py b/wxPython/demo/DrawXXXList.py
index 1783ef76e9..776201aa1a 100644
--- a/wxPython/demo/DrawXXXList.py
+++ b/wxPython/demo/DrawXXXList.py
@@ -46,6 +46,43 @@ def makeRandomLines(num, w, h):
return pnts
+def makeRandomRectangles(num, W, H):
+ rects = []
+ for i in range(num):
+ w = whrandom.randint(10, W/2)
+ h = whrandom.randint(10, H/2)
+ x = whrandom.randint(0, W - w)
+ y = whrandom.randint(0, H - h)
+ rects.append( (x, y, w, h) )
+ return rects
+
+
+def makeRandomText(num):
+ Np = 8 # number of charcters in text
+ text = []
+ for i in range(num):
+ word = []
+ for i in range(Np):
+ c = chr( whrandom.randint(48, 122) )
+ word.append( c )
+ text.append( "".join(word) )
+ return text
+
+
+def makeRandomPolygons(num, W, H):
+ Np = 8 # number of points per polygon
+ polys = []
+ for i in range(num):
+ poly = []
+ for i in range(Np):
+ x = whrandom.randint(0, W)
+ y = whrandom.randint(0, H)
+ poly.append( (x,y) )
+ polys.append( poly )
+ return polys
+
+
+
def makeRandomPens(num, cache):
pens = []
for i in range(num):
@@ -57,62 +94,278 @@ def makeRandomPens(num, cache):
return pens
-class TestPanel(wxPanel):
- def __init__(self, parent, size, log):
- wxPanel.__init__(self, parent, -1, size=size)
- self.log = log
- self.SetBackgroundColour(wxWHITE)
+def makeRandomBrushes(num, cache):
+ brushes = []
+ for i in range(num):
+ c = whrandom.choice(colours)
+ if not cache.has_key(c):
+ cache[c] = wxBrush(c)
+ brushes.append( cache[c] )
+ return brushes
- w = size.width
- h = size.height
- pencache = {}
- # make some lists of random points
- self.pnts1 = makeRandomPoints(1000, w, h)
- self.pnts2 = makeRandomPoints(1000, w, h)
- self.pnts3 = makeRandomPoints(1000, w, h)
- self.pens1 = makeRandomPens(1000, pencache)
+def makeRandomColors(num):
+ colors = []
+ for i in range(num):
+ c = whrandom.choice(colours)
+ colors.append(wxNamedColor(c))
+ return colors
- # and now some lines
- self.lines1 = makeRandomLines(500, w, h)
- self.lines2 = makeRandomLines(500, w, h)
- self.lines3 = makeRandomLines(500, w, h)
- self.pens2 = makeRandomPens(500, pencache)
- EVT_PAINT(self, self.OnPaint)
+pencache = {}
+brushcache = {}
+points = None
+lines = None
+rectangles = None
+polygons = None
+text = None
+pens = None
+brushes = None
+colors1 = None
+colors2 = None
+
+
+def Init(w, h, n):
+ global pencache
+ global brushcache
+ global points
+ global lines
+ global rectangles
+ global polygons
+ global text
+ global pens
+ global brushes
+ global colors1
+ global colors2
+
+ # make some lists of random shapes
+ points = makeRandomPoints(n, w, h)
+ try:
+ import Numeric
+ Apoints = Numeric.array(points)
+ except:
+ pass
+ lines = makeRandomLines(n, w, h)
+ rectangles = makeRandomRectangles(n, w, h)
+ polygons = makeRandomPolygons(n, w, h)
+ text = makeRandomText(n)
+
+ # make some random pens and brushes
+ pens = makeRandomPens(n, pencache)
+ brushes = makeRandomBrushes(n, brushcache)
+ # make some random color lists
+ colors1 = makeRandomColors(n)
+ colors2 = makeRandomColors(n)
+
+
+
+def TestPoints(dc,log):
+ dc.BeginDrawing()
+ start = time.time()
+ dc.SetPen(wxPen("BLACK", 4))
+
+ dc.DrawPointList(points)
+ dc.DrawPointList(points, wxPen("RED", 2))
+ dc.DrawPointList(points, pens)
+
+ dc.EndDrawing()
+ log.write("DrawTime: %s seconds with DrawPointList\n" % (time.time() - start))
+
+
+def TestArrayPoints(dc,log):
+ try:
+ import Numeric
- def OnPaint(self, evt):
- dc = wxPaintDC(self)
dc.BeginDrawing()
start = time.time()
-
dc.SetPen(wxPen("BLACK", 1))
- dc.DrawPointList(self.pnts1)
- dc.DrawPointList(self.pnts2, wxPen("RED", 2))
- dc.DrawPointList(self.pnts3, self.pens1)
+ for i in range(1):
+ dc.DrawPointList(Apoints)
+ #dc.DrawPointList(Apoints, wxPen("RED", 2))
+ #dc.DrawPointList(Apoints, pens)
+ dc.EndDrawing()
+ log.write("DrawTime: %s seconds with DrawPointList an Numpy Array\n" % (time.time() - start))
+ except ImportError:
+ log.write("Couldn't import Numeric")
+ pass
+
+
+def TestLines(dc,log):
+ dc.BeginDrawing()
+ start = time.time()
+
+ dc.SetPen(wxPen("BLACK", 2))
+ dc.DrawLineList(lines)
+ dc.DrawLineList(lines, wxPen("RED", 2))
+ dc.DrawLineList(lines, pens)
+
+ dc.EndDrawing()
+ log.write("DrawTime: %s seconds with DrawLineList\n" % (time.time() - start))
+
+
+def TestRectangles(dc,log):
+ dc.BeginDrawing()
+ start = time.time()
+
+ dc.SetPen( wxPen("BLACK",1) )
+ dc.SetBrush( wxBrush("RED") )
+ dc.DrawRectangleList(rectangles)
+ dc.DrawRectangleList(rectangles,pens)
+ dc.DrawRectangleList(rectangles,pens[0],brushes)
+ dc.DrawRectangleList(rectangles,pens,brushes[0])
+ dc.DrawRectangleList(rectangles,None,brushes)
+## for i in range(10):
+## #dc.DrawRectangleList(rectangles,pens,brushes)
+## dc.DrawRectangleList(rectangles)
+
+ dc.EndDrawing()
+ log.write("DrawTime: %s seconds with DrawRectanglesList\n" % (time.time() - start))
+
+
+def TestEllipses(dc,log):
+ dc.BeginDrawing()
+ start = time.time()
+
+ dc.SetPen( wxPen("BLACK",1) )
+ dc.SetBrush( wxBrush("RED") )
+
+ dc.DrawEllipseList(rectangles)
+ dc.DrawEllipseList(rectangles,pens)
+ dc.DrawEllipseList(rectangles,pens[0],brushes)
+ dc.DrawEllipseList(rectangles,pens,brushes[0])
+ dc.DrawEllipseList(rectangles,None,brushes)
+ dc.DrawEllipseList(rectangles,pens,brushes)
+
+ dc.EndDrawing()
+ log.write("DrawTime: %s seconds with DrawEllipsesList\n" % (time.time() - start))
+
+
+def TestRectanglesArray(dc,log):
+ try:
+ import Numeric
+ Apoints = Numeric.array(rectangles)
+
+ dc.BeginDrawing()
+ start = time.time()
dc.SetPen(wxPen("BLACK", 1))
- dc.DrawLineList(self.lines1)
- dc.DrawLineList(self.lines2, wxPen("RED", 2))
- dc.DrawLineList(self.lines3, self.pens2)
+ dc.DrawRectangleList(rectangles)
+ dc.DrawRectangleList(rectangles,pens)
+ dc.DrawRectangleList(rectangles,pens[0],brushes)
+ dc.DrawRectangleList(rectangles,pens,brushes[0])
+ dc.DrawRectangleList(rectangles,None,brushes)
+## for i in range(10):
+## #dc.DrawRectangleList(rectangles,pens,brushes)
+## dc.DrawRectangleList(rectangles)
dc.EndDrawing()
- self.log.write("DrawTime: %s seconds\n" % (time.time() - start))
- self.log.write("GetBoundingBox: %s\n" % (dc.GetBoundingBox(), ))
+ log.write("DrawTime: %s seconds with DrawRectangleList and Numpy Array\n" % (time.time() - start))
+ except ImportError:
+ log.write("Couldn't import Numeric")
+ pass
+
+
+def TestRectanglesLoop(dc,log):
+ dc.BeginDrawing()
+
+ start = time.time()
+ dc.DrawRectangleList(rectangles,pens,brushes)
+ log.write("DrawTime: %s seconds with DrawRectanglesList\n" % (time.time() - start))
+
+ start = time.time()
+ for i in range(len(rectangles)):
+ dc.SetPen( pens[i] )
+ dc.SetBrush( brushes[i] )
+ dc.DrawRectangle(rectangles[i][0],rectangles[i][1],rectangles[i][2],rectangles[i][3])
+ dc.EndDrawing()
+ log.write("DrawTime: %s seconds with Python loop\n" % (time.time() - start))
+
+
+def TestPolygons(dc,log):
+ dc.BeginDrawing()
+
+ start = time.time()
+ dc.SetPen(wxPen("BLACK", 1))
+ dc.DrawPolygonList(polygons)
+ dc.DrawPolygonList(polygons,pens)
+ dc.DrawPolygonList(polygons,pens[0],brushes)
+ dc.DrawPolygonList(polygons,pens,brushes[0])
+ dc.DrawPolygonList(polygons,None,brushes)
+ log.write("DrawTime: %s seconds with DrawPolygonList\n" % (time.time() - start))
+
+ dc.EndDrawing()
+
+
+def TestText(dc,log):
+ dc.BeginDrawing()
+
+ start = time.time()
+
+ # NOTE: you need to set BackgroundMode for the background colors to be used.
+ dc.SetBackgroundMode(wxSOLID)
+ foreground = colors1
+ background = colors2
+ dc.DrawTextList(text, points, foreground, background)
+
+ log.write("DrawTime: %s seconds with DrawTextList\n" % (time.time() - start))
+
+ dc.EndDrawing()
+
+
+
+class TestNB(wxNotebook):
+ def __init__(self, parent, id, log):
+ style = wxNB_BOTTOM
+ if wxPlatform == "__WXMAC__":
+ style = 0
+ wxNotebook.__init__(self, parent, id, style=style)
+ self.log = log
+
+ win = DrawPanel(self, TestEllipses, log)
+ self.AddPage(win, 'Ellipses')
+
+ win = DrawPanel(self, TestText, log)
+ self.AddPage(win, 'Text')
+
+ win = DrawPanel(self, TestPolygons, log)
+ self.AddPage(win, 'Polygons')
+
+ win = DrawPanel(self, TestPoints, log)
+ self.AddPage(win, 'Points')
+
+ win = DrawPanel(self, TestLines, log)
+ self.AddPage(win, 'Lines')
+
+ win = DrawPanel(self, TestRectangles, log)
+ self.AddPage(win, 'Rectangles')
+
+
+class DrawPanel(wxPanel):
+ def __init__(self, parent, drawFun, log):
+ wxPanel.__init__(self, parent, -1)
+ self.SetBackgroundColour(wxWHITE)
+
+ self.log = log
+ self.drawFun = drawFun
+ EVT_PAINT(self, self.OnPaint)
+
+
+ def OnPaint(self, evt):
+ dc = wxPaintDC(self)
+ dc.Clear()
+ self.drawFun(dc,self.log)
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
w = nb.GetClientSize().width
h = nb.GetClientSize().height
- if w < 300: w = 300
- if h < 300: h = 300
- win = wxPanel(nb, -1)
- tp = TestPanel(win, wxSize(w, h), log)
- def OnPanelSize(evt, tp=tp):
- tp.SetSize(evt.GetSize())
- EVT_SIZE(win, OnPanelSize)
+ if w < 600: w = 600
+ if h < 400: h = 400
+ Init(w, h, 200)
+ win = TestNB(nb, -1, log)
return win
#----------------------------------------------------------------------
@@ -136,4 +389,30 @@ drawing routines. Currently they are:
(x1,y1, x2,y2) andd pens is either None, a single pen or a list
of pens.
+
+ DrawRectangleList(rectangles, pens=None, brushes=None)
+
+
+
+
+ DrawEllipseList(ellipses, pens=None, brushes=None)
+
+
+
+
+ DrawPolygonList(polygons, pens=None, brushes=None)
+
+
+
+
+ DrawTextList(textList, coords, foregrounds = None, backgrounds = None)
+
+
"""
+
+
+if __name__ == '__main__':
+ import sys,os
+ import run
+ run.main(['', os.path.basename(sys.argv[0])])
+
diff --git a/wxPython/demo/ErrorDialogs.py b/wxPython/demo/ErrorDialogs.py
index 18076f8bc1..db24853b82 100644
--- a/wxPython/demo/ErrorDialogs.py
+++ b/wxPython/demo/ErrorDialogs.py
@@ -14,14 +14,14 @@ ID_BUTTON_wxPyNonFatalErrorDialog = 10004
ID_BUTTON_wxPyFatalErrorDialogWithTraceback = 10005
ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback = 10006
-def ErrorDialogsDemoPanelFunc( parent, call_fit = true, set_sizer = true ):
+def ErrorDialogsDemoPanelFunc( parent, call_fit = True, set_sizer = True ):
item0 = wxBoxSizer( wxVERTICAL )
-
+
item1 = wxStaticText( parent, ID_TEXT, "Please select one of the buttons below for an example using explicit errors...", wxDefaultPosition, wxDefaultSize, 0 )
item0.AddWindow( item1, 0, wxALIGN_CENTRE|wxALL, 5 )
item2 = wxFlexGridSizer( 0, 2, 0, 0 )
-
+
item3 = wxButton( parent, ID_BUTTON_wxPyNonFatalError, "wxPyNonFatalError", wxDefaultPosition, wxDefaultSize, 0 )
item2.AddWindow( item3, 0, wxALIGN_CENTRE|wxALL, 5 )
@@ -34,7 +34,7 @@ def ErrorDialogsDemoPanelFunc( parent, call_fit = true, set_sizer = true ):
item0.AddWindow( item5, 0, wxALIGN_CENTRE|wxALL, 5 )
item6 = wxFlexGridSizer( 0, 2, 0, 0 )
-
+
item7 = wxButton( parent, ID_BUTTON_wxPyFatalErrorDialog, "wxPyFatalErrorDialog", wxDefaultPosition, wxDefaultSize, 0 )
item6.AddWindow( item7, 0, wxALIGN_CENTRE|wxALL, 5 )
@@ -51,16 +51,16 @@ def ErrorDialogsDemoPanelFunc( parent, call_fit = true, set_sizer = true ):
item0.AddSizer( item6, 0, wxALIGN_CENTRE|wxALL, 5 )
item11 = wxFlexGridSizer( 0, 2, 0, 0 )
-
+
item0.AddSizer( item11, 0, wxALIGN_CENTRE|wxALL, 5 )
- if set_sizer == true:
- parent.SetAutoLayout( true )
+ if set_sizer == True:
+ parent.SetAutoLayout( True )
parent.SetSizer( item0 )
- if call_fit == true:
+ if call_fit == True:
item0.Fit( parent )
item0.SetSizeHints( parent )
-
+
return item0
# Menu bar functions
@@ -105,8 +105,8 @@ class MyPanel(wxPanel):
EVT_BUTTON(self,
ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback,
self.DoDialog)
- EVT_CLOSE(self,self.OnClose)
-
+
+
IndexFromID = {
ID_BUTTON_wxPyFatalErrorDialog: 3,
ID_BUTTON_wxPyFatalErrorDialogWithTraceback: 2,
@@ -138,10 +138,11 @@ class MyPanel(wxPanel):
print "%s.DoDialog(): testing %s..." % (self,sys.stderr)
this_will_generate_a_NameError_exception
- def OnClose(self,evt):
+ def ShutdownDemo(self):
for d in self.dialogs:
- d.Destroy ()
- self.Destroy ()
+ d.Destroy()
+
+
class MyFrame(wxFrame):
def __init__(self,parent=None):
@@ -158,9 +159,9 @@ class MyFrame(wxFrame):
class MyApp(wxApp):
def OnInit(self):
frame = MyFrame()
- frame.Show(true)
+ frame.Show(True)
self.SetTopWindow(frame)
- return true
+ return True
def runTest(pframe, nb, log):
panel = MyPanel(nb)
diff --git a/wxPython/demo/EventManager.py b/wxPython/demo/EventManager.py
new file mode 100644
index 0000000000..2966b930ff
--- /dev/null
+++ b/wxPython/demo/EventManager.py
@@ -0,0 +1,287 @@
+#---------------------------------------------------------------------------
+# Name: EventManager.py
+# Purpose: A module to demonstrate wxPython.lib.evtmgr.EventManager.
+#
+# Author: Robb Shecter (robb@acm.org)
+#
+# Created: 16-December-2002
+# Copyright: (c) 2002 by Robb Shecter (robb@acm.org)
+# Licence: wxWindows license
+#---------------------------------------------------------------------------
+
+from wxPython.wx import *
+from wxPython.lib.evtmgr import eventManager
+
+#----------------------------------------------------------------------
+
+class TestPanel(wxPanel):
+ def __init__(self, parent, log):
+ wxPanel.__init__(self, parent, -1)
+ self.log = log
+
+ fsize = self.GetFont().GetPointSize()
+ f1 = wxFont(fsize+0, wxSWISS, wxNORMAL, wxNORMAL)
+ f2 = wxFont(fsize+2, wxSWISS, wxNORMAL, wxBOLD)
+ f3 = wxFont(fsize+6, wxSWISS, wxNORMAL, wxBOLD)
+
+ title1 = wxStaticText(self, -1, 'EventManager')
+ title1.SetFont(f3)
+ txt = """\
+ This demo shows (1) basic uses and features of the EventManager, as well
+ as (2) how it helps with a real-world task: creating independent, object-
+ oriented components."""
+ message0 = wxStaticText(self, -1, txt)
+ message0.SetFont(f1)
+
+ title2 = wxStaticText(self, -1, 'Event Listeners')
+ title2.SetFont(f2)
+
+ txt = """\
+ These objects listen to motion events from the target window, using the ability
+ to register one event with multiple listeners. They also register for mouse events
+ on themselves to implement toggle-button functionality."""
+ message1 = wxStaticText(self, -1, txt)
+ message1.SetFont(f1)
+
+ title3 = wxStaticText(self, -1, 'Target Window')
+ title3.SetFont(f2)
+
+ txt = """\
+ A passive window that's used as an event generator. Move the mouse over it to
+ send events to the listeners above."""
+ message2 = wxStaticText(self, -1, txt)
+ message2.SetFont(f1)
+
+ targetPanel = Tile(self, log, bgColor=wxColor(80,10,10), active=0)
+ buttonPanel = wxPanel(self ,-1)
+ sizer = wxBoxSizer(wxHORIZONTAL)
+ target = targetPanel.tile
+
+ sizer.Add(0,0,1)
+ for factor in [0.2, 0.3, 0.4, 0.5, 0.6, 0.7]:
+ sizer.Add(Tile(buttonPanel, log, factor-0.05, target), 0, wxALIGN_CENTER)
+ sizer.Add(0,0,1)
+ sizer.Add(Tile(buttonPanel, log, factor, target), 0, wxALIGN_CENTER)
+ sizer.Add(0,0,1)
+
+ buttonPanel.SetAutoLayout(1)
+ buttonPanel.SetSizer(sizer)
+ sizer.Fit(buttonPanel)
+
+ sizer = wxBoxSizer(wxVERTICAL)
+ sizer.Add(title1, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, 6)
+ sizer.Add(message0, 0, wxALIGN_CENTER | wxALL, 6)
+ sizer.Add(title2, 0, wxALIGN_CENTER | wxLEFT | wxTOP | wxRIGHT, 16)
+ sizer.Add(message1, 0, wxALIGN_CENTER | wxALL, 6)
+ sizer.Add(buttonPanel, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxRIGHT, 16)
+ sizer.Add(title3, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, 16)
+ sizer.Add(message2, 0, wxALIGN_CENTER | wxALL, 6)
+ sizer.Add(targetPanel, 2, wxEXPAND | wxLEFT | wxBOTTOM | wxRIGHT, 16)
+ self.SetAutoLayout(1)
+ self.SetSizer(sizer)
+
+
+
+class Tile(wxPanel):
+ """
+ This outer class is responsible for changing
+ its border color in response to certain mouse
+ events over its contained 'InnerTile'.
+ """
+ normal = wxColor(150,150,150)
+ active = wxColor(250,245,245)
+ hover = wxColor(210,220,210)
+
+ def __init__(self, parent, log, factor=1, thingToWatch=None, bgColor=None, active=1, size=(38,38), borderWidth=3):
+ wxPanel.__init__(self, parent, -1, size=size, style=wxCLIP_CHILDREN)
+ self.tile = InnerTile(self, log, factor, thingToWatch, bgColor)
+ self.log = log
+ sizer = wxBoxSizer(wxHORIZONTAL)
+ sizer.Add(self.tile, 1, wxEXPAND | wxALL, borderWidth)
+ self.SetAutoLayout(1)
+ self.SetSizer(sizer)
+ self.Layout()
+ self.SetBackgroundColour(Tile.normal)
+ if active:
+ # Register myself for mouse events over self.tile in order to
+ # create typical button/hyperlink visual effects.
+ eventManager.Register(self.setHover, EVT_ENTER_WINDOW, self.tile)
+ eventManager.Register(self.setNormal, EVT_LEAVE_WINDOW, self.tile)
+ eventManager.Register(self.setActive, EVT_LEFT_DOWN, self.tile)
+ eventManager.Register(self.setHover, EVT_LEFT_UP, self.tile)
+
+
+ def setHover(self, event):
+ self.SetBackgroundColour(Tile.hover)
+ self.Refresh()
+
+
+ def setActive(self, event):
+ self.SetBackgroundColour(Tile.active)
+ self.Refresh()
+
+
+ def setNormal(self, event):
+ self.SetBackgroundColour(Tile.normal)
+ self.Refresh()
+
+
+
+class InnerTile(wxPanel):
+ IDLE_COLOR = wxColor( 80, 10, 10)
+ START_COLOR = wxColor(200, 70, 50)
+ FINAL_COLOR = wxColor( 20, 80,240)
+ OFF_COLOR = wxColor(185,190,185)
+ # Some pre-computation.
+ DELTAS = map(lambda a,b: b-a, START_COLOR.Get(), FINAL_COLOR.Get())
+ START_COLOR_TUPLE = START_COLOR.Get()
+
+ """
+ This inner panel changes its color in reaction to mouse
+ events over the 'thingToWatch'.
+ """
+ def __init__(self, parent, log, factor, thingToWatch=None, bgColor=None):
+ wxPanel.__init__(self, parent, -1)
+ self.log=log
+ if bgColor:
+ self.SetBackgroundColour(bgColor)
+ if thingToWatch:
+ self.factor = factor
+ self.thingToWatch = thingToWatch
+ self.state = 0
+ self.toggleOnOff()
+ # Watch for the mouse click to enable/disable myself.
+ eventManager.Register(self.toggleOnOff, EVT_LEFT_UP, self)
+
+
+ def toggleOnOff(self, event=None):
+ # Implement being on or off by registering and
+ # de-registering self.makeColor() from the event manager.
+ if self.state:
+ eventManager.DeregisterListener(self.makeColor)
+ else:
+ eventManager.Register(self.makeColor, EVT_MOTION, self.thingToWatch)
+ self.state = 1 - self.state
+ self.resetColor()
+
+
+ def resetColor(self, event=None):
+ if self.state:
+ self.setColor(InnerTile.IDLE_COLOR)
+ else:
+ self.setColor(InnerTile.OFF_COLOR)
+
+
+ def setColor(self, color):
+ self.SetBackgroundColour(color)
+ self.Refresh()
+
+
+ def makeColor(self, mouseEvent):
+ self.makeColorFromTuple(mouseEvent.GetPositionTuple())
+
+
+ def makeColorFromTuple(self, (x, y)):
+ MAX = 180.0
+ scaled = min((x + y) * self.factor, MAX) # In range [0..MAX]
+ percent = scaled / MAX
+ r = InnerTile.START_COLOR_TUPLE[0] + (InnerTile.DELTAS[0] * percent)
+ g = InnerTile.START_COLOR_TUPLE[1] + (InnerTile.DELTAS[1] * percent)
+ b = InnerTile.START_COLOR_TUPLE[2] + (InnerTile.DELTAS[2] * percent)
+ self.setColor(wxColor(r,g,b))
+
+
+
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+ win = TestPanel(nb, log)
+ return win
+
+#----------------------------------------------------------------------
+
+
+
+overview = """
+EventManager
+
+ The goal of the EventManager is to make wxWindows events more
+'Pythonic' (ie. object-oriented) and easier to work with, without
+impacting performance. It offers these features:
+
+
+
+
+ - Allows any number of listeners to register for a single
+ event. (In addition to the standard wxPython feature of a single
+ listener being able to respond to many events.)
+
+
- Makes it easy to disconnect and reconnect listeners. This
+ has the effect of reducing the need for case-based branching in
+ application code.
+
+
- Has an object-oriented API. Programmers register to get
+ events directly from the objects that generate them, instead of
+ using ID numbers.
+
+
+
+Usage
+
+The EventManager class has three public methods. First get a
+reference to it:
+
+
+ from wxPython.lib.evtmgr import eventManager
+
+
+...and then invoke any of the following methods. These methods are
+'safe'; duplicate registrations or de-registrations will have no
+effect.
+
+
Registering a listener:
+
+
+ eventManager.Register(listener, event, event-source)
+
+
+
+De-registering by window:
+
+
+ eventManager.DeregisterWindow(event-source)
+
+
+
+De-registering by listener:
+
+
+ eventManager.DeregisterListener(listener)
+
+
+Simple Example:
+
+
+ from wxPython.lib.evtmgr import eventManager
+
+ aButton = wxButton(somePanel, -1, 'Click me')
+ eventManager.Register(self.someMethod, EVT_BUTTON, aButton)
+
+
+ See the demo code as well as the documentation in the source of
+wxPython.lib.evtmgr for more details.
+
+
+
+by Robb Shecter (robb@acm.org)
+
+"""
+
+
+
+if __name__ == '__main__':
+ import sys,os
+ import run
+ run.main(['', os.path.basename(sys.argv[0])])
+
diff --git a/wxPython/demo/FancyText.py b/wxPython/demo/FancyText.py
index edda6ce178..f504ccc21c 100644
--- a/wxPython/demo/FancyText.py
+++ b/wxPython/demo/FancyText.py
@@ -36,6 +36,5 @@ def runTest(frame, nb, log):
-import string
-overview = string.replace(fancytext.__doc__, "<", "<")
+overview = fancytext.__doc__.replace("<", "<")
diff --git a/wxPython/demo/FontEnumerator.py b/wxPython/demo/FontEnumerator.py
index 27a1466d94..67b5f6ef10 100644
--- a/wxPython/demo/FontEnumerator.py
+++ b/wxPython/demo/FontEnumerator.py
@@ -3,44 +3,40 @@ from wxPython.wx import *
#----------------------------------------------------------------------
-## class MyFontEnumerator(wxFontEnumerator):
-## def __init__(self, list):
-## wxFontEnumerator.__init__(self)
-## self.list = list
-
-## def OnFacename(self, face):
-## self.list.append(face)
-## return true
-
-
class TestPanel(wxPanel):
def __init__(self, parent, log):
wxPanel.__init__(self, parent, -1)
-## list = []
-## e = MyFontEnumerator(list)
-## e.EnumerateFacenames()
-
e = wxFontEnumerator()
e.EnumerateFacenames()
list = e.GetFacenames()
list.sort()
- wxStaticText(self, -1, "Face names:", (15, 50), (65, 18))
- self.lb1 = wxListBox(self, -1, (80, 50), (200, 250),
+ s1 = wxStaticText(self, -1, "Face names:")
+ self.lb1 = wxListBox(self, -1, wxDefaultPosition, (200, 250),
list, wxLB_SINGLE)
EVT_LISTBOX(self, self.lb1.GetId(), self.OnSelect)
self.txt = wxStaticText(self, -1, "Sample text...", (285, 50))
+ row = wxBoxSizer(wxHORIZONTAL)
+ row.Add(s1, 0, wxALL, 5)
+ row.Add(self.lb1, 0, wxALL, 5)
+ row.Add(self.txt, 0, wxALL, 5)
+
+ sizer = wxBoxSizer(wxVERTICAL)
+ sizer.Add(row, 0, wxALL, 30)
+ self.SetSizer(sizer)
+ self.Layout()
+
self.lb1.SetSelection(0)
def OnSelect(self, evt):
face = self.lb1.GetStringSelection()
- font = wxFont(28, wxDEFAULT, wxNORMAL, wxNORMAL, false, face)
+ font = wxFont(28, wxDEFAULT, wxNORMAL, wxNORMAL, False, face)
self.txt.SetFont(font)
self.txt.SetSize(self.txt.GetBestSize())
@@ -64,9 +60,12 @@ def runTest(frame, nb, log):
-overview = """\
-wxFontEnumerator enumerates either all available fonts on the system or only the ones with given attributes - either only fixed-width (suited for use in programs such as terminal emulators and the like) or the fonts available in the given encoding.
-
+overview = """
+wxFontEnumerator enumerates either all available fonts on the system or only
+the ones with given attributes - either only fixed-width (suited for use in
+programs such as terminal emulators and the like) or the fonts available in
+the given encoding.
+
"""
diff --git a/wxPython/demo/GenericButtons.py b/wxPython/demo/GenericButtons.py
index ad30e9752c..c3e7ff4039 100644
--- a/wxPython/demo/GenericButtons.py
+++ b/wxPython/demo/GenericButtons.py
@@ -28,12 +28,12 @@ class TestPanel(wxPanel):
b = wxGenButton(self, -1, 'disabled')
EVT_BUTTON(self, b.GetId(), self.OnButton)
- b.Enable(false)
+ b.Enable(False)
sizer.Add(b)
b = wxGenButton(self, -1, 'bigger')
EVT_BUTTON(self, b.GetId(), self.OnBiggerButton)
- b.SetFont(wxFont(20, wxSWISS, wxNORMAL, wxBOLD, false))
+ b.SetFont(wxFont(20, wxSWISS, wxNORMAL, wxBOLD, False))
b.SetBezelWidth(5)
###b.SetBestSize()
b.SetBackgroundColour("Navy")
@@ -46,6 +46,12 @@ class TestPanel(wxPanel):
EVT_BUTTON(self, b.GetId(), self.OnButton)
sizer.Add(b)
+ bmp = images.getTest2Bitmap()
+ b = wxGenBitmapButton(self, -1, bmp)
+ EVT_BUTTON(self, b.GetId(), self.OnButton)
+ sizer.Add(b)
+ b.Enable(False)
+
b = wxGenBitmapButton(self, -1, None)
EVT_BUTTON(self, b.GetId(), self.OnButton)
bmp = images.getBulb1Bitmap()
@@ -58,7 +64,6 @@ class TestPanel(wxPanel):
b.SetBitmapSelected(bmp)
b.SetBestSize()
sizer.Add(b)
- sizer.Add(10,10)
b = wxGenToggleButton(self, -1, "Toggle Button")
EVT_BUTTON(self, b.GetId(), self.OnToggleButton)
@@ -74,7 +79,7 @@ class TestPanel(wxPanel):
mask = wxMaskColour(bmp, wxBLUE)
bmp.SetMask(mask)
b.SetBitmapSelected(bmp)
- b.SetToggle(true)
+ b.SetToggle(True)
b.SetBestSize()
sizer.Add(b)
@@ -88,7 +93,7 @@ class TestPanel(wxPanel):
mask = wxMaskColour(bmp, wxBLUE)
bmp.SetMask(mask)
b.SetBitmapSelected(bmp)
- b.SetUseFocusIndicator(false)
+ b.SetUseFocusIndicator(False)
b.SetBestSize()
sizer.Add(b)
@@ -128,3 +133,11 @@ def runTest(frame, nb, log):
import wxPython.lib.buttons
overview = wxPython.lib.buttons.__doc__
+
+
+
+if __name__ == '__main__':
+ import sys,os
+ import run
+ run.main(['', os.path.basename(sys.argv[0])])
+
diff --git a/wxPython/demo/GridCustEditor.py b/wxPython/demo/GridCustEditor.py
index 27bba1562d..50101e4b60 100644
--- a/wxPython/demo/GridCustEditor.py
+++ b/wxPython/demo/GridCustEditor.py
@@ -2,6 +2,7 @@
from wxPython.wx import *
from wxPython.grid import *
+import string
#---------------------------------------------------------------------------
class MyCellEditor(wxPyGridCellEditor):
"""
@@ -86,16 +87,16 @@ class MyCellEditor(wxPyGridCellEditor):
def EndEdit(self, row, col, grid):
"""
- Complete the editing of the current cell. Returns true if the value
+ Complete the editing of the current cell. Returns True if the value
has changed. If necessary, the control may be destroyed.
*Must Override*
"""
self.log.write("MyCellEditor: EndEdit (%d,%d)\n" % (row, col))
- changed = false
+ changed = False
val = self._tc.GetValue()
if val != self.startValue:
- changed = true
+ changed = True
grid.GetTable().SetValue(row, col, val) # update the table
self.startValue = ''
@@ -115,7 +116,7 @@ class MyCellEditor(wxPyGridCellEditor):
def IsAcceptedKey(self, evt):
"""
- Return TRUE to allow the given key to start editing: the base class
+ Return True to allow the given key to start editing: the base class
version only checks that the event has no modifiers. F2 is special
and will always start the editor.
"""
@@ -143,12 +144,13 @@ class MyCellEditor(wxPyGridCellEditor):
elif key < 256 and key >= 0 and chr(key) in string.printable:
ch = chr(key)
if not evt.ShiftDown():
- ch = string.lower(ch)
+ ch = ch.lower()
if ch is not None:
# For this example, replace the text. Normally we would append it.
#self._tc.AppendText(ch)
self._tc.SetValue(ch)
+ self._tc.SetInsertionPointEnd()
else:
evt.Skip()
@@ -226,7 +228,7 @@ if __name__ == '__main__':
import sys
app = wxPySimpleApp()
frame = TestFrame(None, sys.stdout)
- frame.Show(true)
+ frame.Show(True)
app.MainLoop()
diff --git a/wxPython/demo/GridCustTable.py b/wxPython/demo/GridCustTable.py
index ff78201fcb..3d4b6b3011 100644
--- a/wxPython/demo/GridCustTable.py
+++ b/wxPython/demo/GridCustTable.py
@@ -1,8 +1,6 @@
from wxPython.wx import *
from wxPython.grid import *
-import string
-
#---------------------------------------------------------------------------
class CustomDataTable(wxPyGridTableBase):
@@ -45,7 +43,10 @@ class CustomDataTable(wxPyGridTableBase):
return len(self.data[0])
def IsEmptyCell(self, row, col):
- return not self.data[row][col]
+ try:
+ return not self.data[row][col]
+ except IndexError:
+ return true
# Get/Set values in the table. The Python version of these
# methods can handle any data-type, (as long as the Editor and
@@ -90,11 +91,11 @@ class CustomDataTable(wxPyGridTableBase):
# editor and renderer. This allows you to enforce some type-safety
# in the grid.
def CanGetValueAs(self, row, col, typeName):
- colType = string.split(self.dataTypes[col], ':')[0]
+ colType = self.dataTypes[col].split(':')[0]
if typeName == colType:
return true
else:
- return false
+ return False
def CanSetValueAs(self, row, col, typeName):
return self.CanGetValueAs(row, col, typeName)
@@ -120,7 +121,7 @@ class CustTableGrid(wxGrid):
self.SetRowLabelSize(0)
self.SetMargins(0,0)
- self.AutoSizeColumns(false)
+ self.AutoSizeColumns(False)
EVT_GRID_CELL_LEFT_DCLICK(self, self.OnLeftDClick)
@@ -138,8 +139,22 @@ class CustTableGrid(wxGrid):
class TestFrame(wxFrame):
def __init__(self, parent, log):
wxFrame.__init__(self, parent, -1, "Custom Table, data driven Grid Demo", size=(640,480))
- grid = CustTableGrid(self, log)
-
+ p = wxPanel(self, -1, style=0)
+ grid = CustTableGrid(p, log)
+ b = wxButton(p, -1, "Another Control...")
+ b.SetDefault()
+ EVT_BUTTON(self, b.GetId(), self.OnButton)
+ EVT_SET_FOCUS(b, self.OnButtonFocus)
+ bs = wxBoxSizer(wxVERTICAL)
+ bs.Add(grid, 1, wxGROW|wxALL, 5)
+ bs.Add(b)
+ p.SetSizer(bs)
+
+ def OnButton(self, evt):
+ print "button selected"
+
+ def OnButtonFocus(self, evt):
+ print "button focus"
#---------------------------------------------------------------------------
diff --git a/wxPython/demo/GridDragable.py b/wxPython/demo/GridDragable.py
new file mode 100644
index 0000000000..ea989c6116
--- /dev/null
+++ b/wxPython/demo/GridDragable.py
@@ -0,0 +1,193 @@
+from wxPython.wx import *
+from wxPython.grid import *
+from wxPython.lib.gridmovers import wxGridColMover, EVT_GRID_COL_MOVE
+from wxPython.lib.gridmovers import wxGridRowMover, EVT_GRID_ROW_MOVE
+
+#---------------------------------------------------------------------------
+
+class CustomDataTable(wxPyGridTableBase):
+ """
+ """
+
+ def __init__(self, log):
+ wxPyGridTableBase.__init__(self)
+ self.log = log
+
+ self.identifiers = ['id','ds','sv','pr','pl','op','fx','ts']
+
+ self.rowLabels = ['Row1','Row2','Row3']
+
+ self.colLabels = {'id':'ID','ds':'Description','sv':'Severity',
+ 'pr':'Priority','pl':'Platform','op':'Opened?',
+ 'fx':'Fixed?','ts':'Tested?'}
+
+ self.data = [{'id':1010,
+ 'ds':"The foo doesn't bar",
+ 'sv':"major",
+ 'pr':1,
+ 'pl':'MSW',
+ 'op':1,
+ 'fx':1,
+ 'ts':1
+ },
+ {'id':1011,
+ 'ds':"I've got a wicket in my wocket",
+ 'sv':"wish list",
+ 'pr':2,
+ 'pl':'other',
+ 'op':0,
+ 'fx':0,
+ 'ts':0
+ },
+ {'id':1012,
+ 'ds':"Rectangle() returns a triangle",
+ 'sv':"critical",
+ 'pr':5,
+ 'pl':'all',
+ 'op':0,
+ 'fx':0,
+ 'ts':0
+ }
+ ]
+
+ #--------------------------------------------------
+ # required methods for the wxPyGridTableBase interface
+
+ def GetNumberRows(self):
+ return len(self.data)
+
+ def GetNumberCols(self):
+ return len(self.identifiers)
+
+ def IsEmptyCell(self, row, col):
+ id = self.identifiers[col]
+ return not self.data[row][id]
+
+ def GetValue(self, row, col):
+ id = self.identifiers[col]
+ return self.data[row][id]
+
+ def SetValue(self, row, col, value):
+ id = self.identifiers[col]
+ self.data[row][id] = value
+
+ #--------------------------------------------------
+ # Some optional methods
+
+ # Called when the grid needs to display column labels
+ def GetColLabelValue(self, col):
+ id = self.identifiers[col]
+ return self.colLabels[id]
+
+ # Called when the grid needs to display row labels
+ def GetRowLabelValue(self,row):
+ return self.rowLabels[row]
+
+ #--------------------------------------------------
+ # Methods added for demo purposes.
+
+ # The physical moving of the cols/rows is left to the implementer.
+ # Because of the dynamic nature of a wxGrid the physical moving of
+ # columns differs from implementation to implementation
+
+ # Move the column
+ def MoveColumn(self,frm,to):
+ grid = self.GetView()
+ if grid:
+ # Move the identifiers
+ old = self.identifiers[frm]
+ del self.identifiers[frm]
+ if to > frm:
+ self.identifiers.insert(to-1,old)
+ else:
+ self.identifiers.insert(to,old)
+
+ # Notify the grid
+ grid.BeginBatch()
+ msg = wxGridTableMessage(self,wxGRIDTABLE_NOTIFY_COLS_DELETED,
+ frm,1)
+ grid.ProcessTableMessage(msg)
+ msg = wxGridTableMessage(self,wxGRIDTABLE_NOTIFY_COLS_INSERTED,
+ to,1)
+ grid.ProcessTableMessage(msg)
+ grid.EndBatch()
+
+ # Move the row
+ def MoveRow(self,frm,to):
+ grid = self.GetView()
+ if grid:
+ # Move the rowLabels and data rows
+ oldLabel = self.rowLabels[frm]
+ oldData = self.data[frm]
+ del self.rowLabels[frm]
+ del self.data[frm]
+ if to > frm:
+ self.rowLabels.insert(to-1,oldLabel)
+ self.data.insert(to-1,oldData)
+ else:
+ self.rowLabels.insert(to,oldLabel)
+ self.data.insert(to,oldData)
+
+ # Notify the grid
+ grid.BeginBatch()
+ msg = wxGridTableMessage(self,wxGRIDTABLE_NOTIFY_ROWS_DELETED,
+ frm,1)
+ grid.ProcessTableMessage(msg)
+ msg = wxGridTableMessage(self,wxGRIDTABLE_NOTIFY_ROWS_INSERTED,
+ to,1)
+ grid.ProcessTableMessage(msg)
+ grid.EndBatch()
+
+
+#---------------------------------------------------------------------------
+
+
+class DragableGrid(wxGrid):
+ def __init__(self, parent, log):
+ wxGrid.__init__(self, parent, -1)
+
+ table = CustomDataTable(log)
+
+ # The second parameter means that the grid is to take ownership of the
+ # table and will destroy it when done. Otherwise you would need to keep
+ # a reference to it and call it's Destroy method later.
+ self.SetTable(table, True)
+
+ # Enable Column moving
+ wxGridColMover(self)
+ EVT_GRID_COL_MOVE(self,self.GetId(),self.OnColMove)
+
+ # Enable Row moving
+ wxGridRowMover(self)
+ EVT_GRID_ROW_MOVE(self,self.GetId(),self.OnRowMove)
+
+ # Event method called when a column move needs to take place
+ def OnColMove(self,evt):
+ frm = evt.GetMoveColumn() # Column being moved
+ to = evt.GetBeforeColumn() # Before which column to insert
+ self.GetTable().MoveColumn(frm,to)
+
+ # Event method called when a row move needs to take place
+ def OnRowMove(self,evt):
+ frm = evt.GetMoveRow() # Row being moved
+ to = evt.GetBeforeRow() # Before which row to insert
+ self.GetTable().MoveRow(frm,to)
+
+#---------------------------------------------------------------------------
+
+class TestFrame(wxFrame):
+ def __init__(self, parent, log):
+ wxFrame.__init__(self, parent, -1, "Custom Table, data driven Grid Demo", size=(640,480))
+ grid = DragableGrid(self, log)
+
+
+#---------------------------------------------------------------------------
+
+if __name__ == '__main__':
+ import sys
+ app = wxPySimpleApp()
+ frame = TestFrame(None, sys.stdout)
+ frame.Show(True)
+ app.MainLoop()
+
+#---------------------------------------------------------------------------
diff --git a/wxPython/demo/GridEnterHandler.py b/wxPython/demo/GridEnterHandler.py
index 719c622ef0..d6989fbcfe 100644
--- a/wxPython/demo/GridEnterHandler.py
+++ b/wxPython/demo/GridEnterHandler.py
@@ -55,7 +55,7 @@ if __name__ == '__main__':
import sys
app = wxPySimpleApp()
frame = TestFrame(None, sys.stdout)
- frame.Show(true)
+ frame.Show(True)
app.MainLoop()
diff --git a/wxPython/demo/GridHugeTable.py b/wxPython/demo/GridHugeTable.py
index 6c450ec5d7..a2084fb6e3 100644
--- a/wxPython/demo/GridHugeTable.py
+++ b/wxPython/demo/GridHugeTable.py
@@ -23,7 +23,7 @@ class HugeTable(wxPyGridTableBase):
return 10000
def IsEmptyCell(self, row, col):
- return false
+ return False
def GetValue(self, row, col):
return str( (row, col) )
@@ -45,7 +45,15 @@ class HugeTableGrid(wxGrid):
# The second parameter means that the grid is to take ownership of the
# table and will destroy it when done. Otherwise you would need to keep
# a reference to it and call it's Destroy method later.
- self.SetTable(table, true)
+ self.SetTable(table, True)
+
+ EVT_GRID_CELL_RIGHT_CLICK(self, self.OnRightDown) #added
+
+ def OnRightDown(self, event): #added
+ print "hello"
+ print self.GetSelectedRows() #added
+
+
@@ -56,7 +64,7 @@ class TestFrame(wxFrame):
wxFrame.__init__(self, parent, -1, "Huge (virtual) Table Demo", size=(640,480))
grid = HugeTableGrid(self, log)
- grid.SetReadOnly(5,5, true)
+ grid.SetReadOnly(5,5, True)
#---------------------------------------------------------------------------
@@ -64,7 +72,7 @@ if __name__ == '__main__':
import sys
app = wxPySimpleApp()
frame = TestFrame(None, sys.stdout)
- frame.Show(true)
+ frame.Show(True)
app.MainLoop()
diff --git a/wxPython/demo/GridSimple.py b/wxPython/demo/GridSimple.py
index 9857e22ae0..89c2ec6e07 100644
--- a/wxPython/demo/GridSimple.py
+++ b/wxPython/demo/GridSimple.py
@@ -13,8 +13,8 @@ class SimpleGrid(wxGrid): ##, wxGridAutoEditMixin):
EVT_IDLE(self, self.OnIdle)
- self.CreateGrid(25, 25)
- ##self.EnableEditing(false)
+ self.CreateGrid(25, 25) #, wxGrid.wxGridSelectRows)
+ ##self.EnableEditing(False)
# simple cell formatting
self.SetColSize(3, 200)
@@ -26,9 +26,9 @@ class SimpleGrid(wxGrid): ##, wxGridAutoEditMixin):
self.SetCellFont(0, 0, wxFont(12, wxROMAN, wxITALIC, wxNORMAL))
self.SetCellTextColour(1, 1, wxRED)
self.SetCellBackgroundColour(2, 2, wxCYAN)
- self.SetReadOnly(3, 3, true)
+ self.SetReadOnly(3, 3, True)
- self.SetCellEditor(5, 0, wxGridCellNumberEditor())
+ self.SetCellEditor(5, 0, wxGridCellNumberEditor(1,1000))
self.SetCellValue(5, 0, "123")
self.SetCellEditor(6, 0, wxGridCellFloatEditor())
self.SetCellValue(6, 0, "123.34")
@@ -53,6 +53,18 @@ class SimpleGrid(wxGrid): ##, wxGridAutoEditMixin):
self.SetColLabelAlignment(wxALIGN_LEFT, wxALIGN_BOTTOM)
+ #self.SetDefaultCellOverflow(False)
+ #r = wxGridCellAutoWrapStringRenderer()
+ #self.SetCellRenderer(9, 1, r)
+
+ # overflow cells
+ self.SetCellValue( 9, 1, "This default cell will overflow into neighboring cells, but not if you turn overflow off.");
+ self.SetCellSize(11, 1, 3, 3);
+ self.SetCellAlignment(11, 1, wxALIGN_CENTRE, wxALIGN_CENTRE);
+ self.SetCellValue(11, 1, "This cell is set to span 3 rows and 3 columns");
+
+
+
# test all the events
EVT_GRID_CELL_LEFT_CLICK(self, self.OnCellLeftClick)
EVT_GRID_CELL_RIGHT_CLICK(self, self.OnCellRightClick)
@@ -216,7 +228,7 @@ if __name__ == '__main__':
import sys
app = wxPySimpleApp()
frame = TestFrame(None, sys.stdout)
- frame.Show(true)
+ frame.Show(True)
app.MainLoop()
diff --git a/wxPython/demo/GridStdEdRend.py b/wxPython/demo/GridStdEdRend.py
index b4a3db3c36..8e43b41729 100644
--- a/wxPython/demo/GridStdEdRend.py
+++ b/wxPython/demo/GridStdEdRend.py
@@ -1,7 +1,7 @@
from wxPython.wx import *
from wxPython.grid import *
-import string, random
+import random
#---------------------------------------------------------------------------
@@ -60,7 +60,7 @@ editorDemoData = [
('wxGridCellBoolEditor', '1', wxGridCellBoolEditor, ()),
('wxGridCellChoiceEditor', 'one', wxGridCellChoiceEditor, (['one', 'two', 'three', 'four',
'kick', 'Microsoft', 'out the',
- 'door'], false)),
+ 'door'], False)),
]
@@ -139,15 +139,15 @@ Renderers used together.
attr = wxGridCellAttr()
attr.SetFont(font)
attr.SetBackgroundColour(wxLIGHT_GREY)
- attr.SetReadOnly(true)
+ attr.SetReadOnly(True)
attr.SetAlignment(wxRIGHT, -1)
self.SetColAttr(renCol, attr)
attr.IncRef()
self.SetColAttr(edCol, attr)
# There is a bug in wxGTK for this method...
- self.AutoSizeColumns(true)
- self.AutoSizeRows(true)
+ self.AutoSizeColumns(True)
+ self.AutoSizeRows(True)
EVT_GRID_CELL_LEFT_DCLICK(self, self.OnLeftDClick)
@@ -174,7 +174,7 @@ if __name__ == '__main__':
import sys
app = wxPySimpleApp()
frame = TestFrame(None, sys.stdout)
- frame.Show(true)
+ frame.Show(True)
app.MainLoop()
diff --git a/wxPython/demo/LayoutAnchors.py b/wxPython/demo/LayoutAnchors.py
index b201372a7e..04b0c3f92c 100644
--- a/wxPython/demo/LayoutAnchors.py
+++ b/wxPython/demo/LayoutAnchors.py
@@ -21,38 +21,38 @@ class AnchorsDemoFrame(wxFrame):
self._init_utils()
self.mainPanel = wxPanel(size = wxSize(320, 160), parent = self, id = wxID_ANCHORSDEMOFRAMEMAINPANEL, name = 'panel1', style = wxTAB_TRAVERSAL | wxCLIP_CHILDREN, pos = wxPoint(0, 0))
- self.mainPanel.SetAutoLayout(true)
+ self.mainPanel.SetAutoLayout(True)
self.okButton = wxButton(label = 'OK', id = wxID_ANCHORSDEMOFRAMEOKBUTTON, parent = self.mainPanel, name = 'okButton', size = wxSize(72, 24), style = 0, pos = wxPoint(240, 128))
- self.okButton.SetConstraints(LayoutAnchors(self.okButton, false, false, true, true))
+ self.okButton.SetConstraints(LayoutAnchors(self.okButton, False, False, True, True))
EVT_BUTTON(self.okButton, wxID_ANCHORSDEMOFRAMEOKBUTTON, self.OnOkButtonButton)
self.backgroundPanel = wxPanel(size = wxSize(304, 80), parent = self.mainPanel, id = wxID_ANCHORSDEMOFRAMEBACKGROUNDPANEL, name = 'backgroundPanel', style = wxSIMPLE_BORDER | wxCLIP_CHILDREN, pos = wxPoint(8, 40))
self.backgroundPanel.SetBackgroundColour(wxColour(255, 255, 255))
- self.backgroundPanel.SetConstraints(LayoutAnchors(self.backgroundPanel, true, true, true, true))
+ self.backgroundPanel.SetConstraints(LayoutAnchors(self.backgroundPanel, True, True, True, True))
self.anchoredPanel = wxPanel(size = wxSize(88, 48), id = wxID_ANCHORSDEMOFRAMEANCHOREDPANEL, parent = self.backgroundPanel, name = 'anchoredPanel', style = wxSIMPLE_BORDER, pos = wxPoint(104, 16))
self.anchoredPanel.SetBackgroundColour(wxColour(0, 0, 222))
- self.anchoredPanel.SetConstraints(LayoutAnchors(self.anchoredPanel, false, false, false, false))
+ self.anchoredPanel.SetConstraints(LayoutAnchors(self.anchoredPanel, False, False, False, False))
self.leftCheckBox = wxCheckBox(label = 'Left', id = wxID_ANCHORSDEMOFRAMELEFTCHECKBOX, parent = self.mainPanel, name = 'leftCheckBox', size = wxSize(40, 16), style = 0, pos = wxPoint(8, 8))
- self.leftCheckBox.SetConstraints(LayoutAnchors(self.leftCheckBox, false, true, false, false))
+ self.leftCheckBox.SetConstraints(LayoutAnchors(self.leftCheckBox, False, True, False, False))
EVT_CHECKBOX(self.leftCheckBox, wxID_ANCHORSDEMOFRAMELEFTCHECKBOX, self.OnCheckboxCheckbox)
self.topCheckBox = wxCheckBox(label = 'Top', id = wxID_ANCHORSDEMOFRAMETOPCHECKBOX, parent = self.mainPanel, name = 'topCheckBox', size = wxSize(40, 16), style = 0, pos = wxPoint(88, 8))
- self.topCheckBox.SetConstraints(LayoutAnchors(self.topCheckBox, false, true, false, false))
+ self.topCheckBox.SetConstraints(LayoutAnchors(self.topCheckBox, False, True, False, False))
EVT_CHECKBOX(self.topCheckBox, wxID_ANCHORSDEMOFRAMETOPCHECKBOX, self.OnCheckboxCheckbox)
self.rightCheckBox = wxCheckBox(label = 'Right', id = wxID_ANCHORSDEMOFRAMERIGHTCHECKBOX, parent = self.mainPanel, name = 'rightCheckBox', size = wxSize(48, 16), style = 0, pos = wxPoint(168, 8))
- self.rightCheckBox.SetConstraints(LayoutAnchors(self.rightCheckBox, false, true, false, false))
+ self.rightCheckBox.SetConstraints(LayoutAnchors(self.rightCheckBox, False, True, False, False))
EVT_CHECKBOX(self.rightCheckBox, wxID_ANCHORSDEMOFRAMERIGHTCHECKBOX, self.OnCheckboxCheckbox)
self.bottomCheckBox = wxCheckBox(label = 'Bottom', id = wxID_ANCHORSDEMOFRAMEBOTTOMCHECKBOX, parent = self.mainPanel, name = 'bottomCheckBox', size = wxSize(56, 16), style = 0, pos = wxPoint(248, 8))
- self.bottomCheckBox.SetConstraints(LayoutAnchors(self.bottomCheckBox, false, true, false, false))
+ self.bottomCheckBox.SetConstraints(LayoutAnchors(self.bottomCheckBox, False, True, False, False))
EVT_CHECKBOX(self.bottomCheckBox, wxID_ANCHORSDEMOFRAMEBOTTOMCHECKBOX, self.OnCheckboxCheckbox)
self.helpStaticText = wxStaticText(label = 'Select anchor options above, then resize window to see the effect', id = wxID_ANCHORSDEMOFRAMEHELPSTATICTEXT, parent = self.mainPanel, name = 'helpStaticText', size = wxSize(224, 24), style = wxST_NO_AUTORESIZE, pos = wxPoint(8, 128))
- self.helpStaticText.SetConstraints(LayoutAnchors(self.helpStaticText, true, false, true, true))
+ self.helpStaticText.SetConstraints(LayoutAnchors(self.helpStaticText, True, False, True, True))
def __init__(self, parent):
self._init_ctrls(parent)
@@ -71,7 +71,7 @@ class AnchorsDemoFrame(wxFrame):
def runTest(frame, nb, log):
win = AnchorsDemoFrame(frame)
frame.otherWin = win
- win.Show(true)
+ win.Show(True)
diff --git a/wxPython/demo/Layoutf.py b/wxPython/demo/Layoutf.py
index e5809b60c5..cde4ad405f 100644
--- a/wxPython/demo/Layoutf.py
+++ b/wxPython/demo/Layoutf.py
@@ -8,7 +8,7 @@ class TestLayoutf(wxPanel):
def __init__(self, parent):
wxPanel.__init__(self, parent, -1)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
EVT_BUTTON(self, 100, self.OnButton)
self.panelA = wxWindow(self, -1, wxPyDefaultPosition, wxPyDefaultSize, wxSIMPLE_BORDER)
diff --git a/wxPython/demo/MDIDemo.py b/wxPython/demo/MDIDemo.py
index 3ae510ea7c..c5298129c1 100644
--- a/wxPython/demo/MDIDemo.py
+++ b/wxPython/demo/MDIDemo.py
@@ -3,6 +3,9 @@
from wxPython.wx import *
from wxScrolledWindow import MyCanvas
+import images
+SHOW_BACKGROUND = 1
+
#----------------------------------------------------------------------
class MyParentFrame(wxMDIParentFrame):
@@ -24,16 +27,38 @@ class MyParentFrame(wxMDIParentFrame):
EVT_MENU(self, 5000, self.OnNewWindow)
EVT_MENU(self, 5001, self.OnExit)
+ if SHOW_BACKGROUND:
+ self.bg_bmp = images.getGridBGBitmap()
+ EVT_ERASE_BACKGROUND(self.GetClientWindow(), self.OnEraseBackground)
+
def OnExit(self, evt):
- self.Close(true)
+ self.Close(True)
def OnNewWindow(self, evt):
self.winCount = self.winCount + 1
win = wxMDIChildFrame(self, -1, "Child Window: %d" % self.winCount)
canvas = MyCanvas(win)
- win.Show(true)
+ win.Show(True)
+
+
+ def OnEraseBackground(self, evt):
+ dc = evt.GetDC()
+ if not dc:
+ dc = wxClientDC(self.GetClientWindow())
+
+ # tile the background bitmap
+ sz = self.GetClientSize()
+ w = self.bg_bmp.GetWidth()
+ h = self.bg_bmp.GetHeight()
+ x = 0
+ while x < sz.width:
+ y = 0
+ while y < sz.height:
+ dc.DrawBitmap(self.bg_bmp, x, y)
+ y = y + h
+ x = x + w
#----------------------------------------------------------------------
@@ -43,9 +68,9 @@ if __name__ == '__main__':
def OnInit(self):
wxInitAllImageHandlers()
frame = MyParentFrame()
- frame.Show(true)
+ frame.Show(True)
self.SetTopWindow(frame)
- return true
+ return True
app = MyApp(0)
diff --git a/wxPython/demo/MDISashDemo.py b/wxPython/demo/MDISashDemo.py
index dca6516f6a..a5fe68b915 100644
--- a/wxPython/demo/MDISashDemo.py
+++ b/wxPython/demo/MDISashDemo.py
@@ -44,7 +44,7 @@ class MyParentFrame(wxMDIParentFrame):
win.SetOrientation(wxLAYOUT_HORIZONTAL)
win.SetAlignment(wxLAYOUT_TOP)
win.SetBackgroundColour(wxColour(255, 0, 0))
- win.SetSashVisible(wxSASH_BOTTOM, true)
+ win.SetSashVisible(wxSASH_BOTTOM, True)
self.topWindow = win
@@ -55,7 +55,7 @@ class MyParentFrame(wxMDIParentFrame):
win.SetOrientation(wxLAYOUT_HORIZONTAL)
win.SetAlignment(wxLAYOUT_BOTTOM)
win.SetBackgroundColour(wxColour(0, 0, 255))
- win.SetSashVisible(wxSASH_TOP, true)
+ win.SetSashVisible(wxSASH_TOP, True)
self.bottomWindow = win
@@ -66,7 +66,7 @@ class MyParentFrame(wxMDIParentFrame):
win.SetOrientation(wxLAYOUT_VERTICAL)
win.SetAlignment(wxLAYOUT_LEFT)
win.SetBackgroundColour(wxColour(0, 255, 0))
- win.SetSashVisible(wxSASH_RIGHT, TRUE)
+ win.SetSashVisible(wxSASH_RIGHT, True)
win.SetExtraBorderSize(10)
textWindow = wxTextCtrl(win, -1, "", wxDefaultPosition, wxDefaultSize,
wxTE_MULTILINE|wxSUNKEN_BORDER)
@@ -81,7 +81,7 @@ class MyParentFrame(wxMDIParentFrame):
win.SetOrientation(wxLAYOUT_VERTICAL)
win.SetAlignment(wxLAYOUT_LEFT)
win.SetBackgroundColour(wxColour(0, 255, 255))
- win.SetSashVisible(wxSASH_RIGHT, TRUE)
+ win.SetSashVisible(wxSASH_RIGHT, True)
self.leftWindow2 = win
@@ -113,14 +113,14 @@ class MyParentFrame(wxMDIParentFrame):
def OnExit(self, evt):
- self.Close(true)
+ self.Close(True)
def OnNewWindow(self, evt):
self.winCount = self.winCount + 1
win = wxMDIChildFrame(self, -1, "Child Window: %d" % self.winCount)
canvas = MyCanvas(win)
- win.Show(true)
+ win.Show(True)
#----------------------------------------------------------------------
@@ -130,9 +130,9 @@ if __name__ == '__main__':
def OnInit(self):
wxInitAllImageHandlers()
frame = MyParentFrame()
- frame.Show(true)
+ frame.Show(True)
self.SetTopWindow(frame)
- return true
+ return True
app = MyApp(0)
diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py
index 82736b72fe..40f9425b84 100644
--- a/wxPython/demo/Main.py
+++ b/wxPython/demo/Main.py
@@ -11,7 +11,7 @@
# Licence: wxWindows license
#----------------------------------------------------------------------------
-import sys, os, time, string
+import sys, os, time
from wxPython.wx import *
from wxPython.html import wxHtmlWindow
@@ -19,27 +19,19 @@ from wxPython.html import wxHtmlWindow
import images
+
#---------------------------------------------------------------------------
_treeList = [
# new stuff
- ('New since last release', [
- 'RowColSizer',
- 'Unicode',
- 'wxFileHistory',
- 'wxGenericDirCtrl',
- 'wxImageFromStream',
- 'wxArtProvider',
- 'ScrolledPanel',
- 'wxMenu',
- 'wxIEHtmlWin',
- 'wxKeyEvents',
- 'wxWizard',
- 'wxXmlResourceHandler',
+ ('Recent Additions', [
+ 'wxIntCtrl',
+ 'wxPyColourChooser',
+ 'wxScrolledPanel',
]),
- # managed windows == things with a caption you can close
+ # managed windows == things with a (optional) caption you can close
('Base Frames and Dialogs', [
'wxDialog',
'wxFrame',
@@ -88,14 +80,15 @@ _treeList = [
'wxNotebook',
'wxPopupWindow',
'wxRadioBox',
+ 'wxRadioButton',
'wxSashWindow',
- 'wxSlider',
'wxScrolledWindow',
- 'wxSplitterWindow',
+ 'wxSlider',
'wxSpinButton',
'wxSpinCtrl',
- 'wxStaticText',
+ 'wxSplitterWindow',
'wxStaticBitmap',
+ 'wxStaticText',
'wxStatusBar',
'wxTextCtrl',
'wxToggleButton',
@@ -106,6 +99,9 @@ _treeList = [
# controls coming from other librairies
('More Windows/Controls', [
+ #'wxFloatBar', deprecated
+ #'wxMVCTree', deprecated
+ #'wxRightTextCtrl', deprecated as we have wxTE_RIGHT now.
'ColourSelect',
'ContextHelp',
'FancyText',
@@ -115,20 +111,23 @@ _treeList = [
'PyCrustWithFilling',
'SplitTree',
'TablePrint',
+ 'Throbber',
'wxCalendar',
'wxCalendarCtrl',
+ 'wxPyColourChooser',
'wxDynamicSashWindow',
'wxEditableListBox',
'wxEditor',
- #'wxFloatBar', deprecated
'wxHtmlWindow',
'wxIEHtmlWin',
+ 'wxIntCtrl',
'wxLEDNumberCtrl',
'wxMimeTypesManager',
- #'wxMVCTree', deprecated
- 'wxRightTextCtrl',
+ 'wxMultiSash',
+ 'wxPopupControl',
'wxStyledTextCtrl_1',
'wxStyledTextCtrl_2',
+ 'wxTimeCtrl',
]),
# How to lay out the controls in a frame/dialog
@@ -136,22 +135,23 @@ _treeList = [
'LayoutAnchors',
'Layoutf',
'RowColSizer',
- 'ScrolledPanel',
'Sizers',
'wxLayoutConstraints',
+ 'wxScrolledPanel',
'wxXmlResource',
'wxXmlResourceHandler',
]),
# ditto
('Process and Events', [
+ 'EventManager',
'infoframe',
'OOR',
'PythonEvents',
'Threads',
+ 'wxKeyEvents',
'wxProcess',
'wxTimer',
- 'wxKeyEvents',
]),
# Clipboard and DnD
@@ -162,12 +162,13 @@ _treeList = [
]),
# Images
- ('Images', [
+ ('Using Images', [
+ 'Throbber',
+ 'wxArtProvider',
'wxDragImage',
'wxImage',
'wxImageFromStream',
'wxMask',
- 'wxArtProvider',
]),
# Other stuff
@@ -177,6 +178,7 @@ _treeList = [
'DrawXXXList',
'FontEnumerator',
'PrintFramework',
+ 'Throbber',
'Unicode',
'wxFileHistory',
'wxJoystick',
@@ -212,7 +214,8 @@ class MyLog(wxPyLog):
if self.logTime:
message = time.strftime("%X", time.localtime(timeStamp)) + \
": " + message
- self.tc.AppendText(message + '\n')
+ if self.tc:
+ self.tc.AppendText(message + '\n')
class MyTP(wxPyTipProvider):
@@ -223,7 +226,7 @@ class MyTP(wxPyTipProvider):
def opj(path):
"""Convert paths to the platform-specific separator"""
- return apply(os.path.join, tuple(string.split(path, '/')))
+ return apply(os.path.join, tuple(path.split('/')))
#---------------------------------------------------------------------------
@@ -237,6 +240,7 @@ class wxPythonDemo(wxFrame):
self.cwd = os.getcwd()
self.curOverview = ""
+ self.window = None
icon = images.getMondrianIcon()
self.SetIcon(icon)
@@ -250,9 +254,9 @@ class wxPythonDemo(wxFrame):
EVT_MENU(self.tbicon, self.TBMENU_RESTORE, self.OnTaskBarActivate)
EVT_MENU(self.tbicon, self.TBMENU_CLOSE, self.OnTaskBarClose)
+ wxCallAfter(self.ShowTip)
self.otherWin = None
- self.showTip = true
EVT_IDLE(self, self.OnIdle)
EVT_CLOSE(self, self.OnCloseWindow)
EVT_ICONIZE(self, self.OnIconfiy)
@@ -268,8 +272,8 @@ class wxPythonDemo(wxFrame):
EVT_ERASE_BACKGROUND(splitter, EmptyHandler)
EVT_ERASE_BACKGROUND(splitter2, EmptyHandler)
- # Prevent TreeCtrl from displaying all items after destruction when true
- self.dying = false
+ # Prevent TreeCtrl from displaying all items after destruction when True
+ self.dying = False
# Make a File menu
self.mainmenu = wxMenuBar()
@@ -277,6 +281,7 @@ class wxPythonDemo(wxFrame):
exitID = wxNewId()
menu.Append(exitID, 'E&xit\tAlt-X', 'Get the heck outta here!')
EVT_MENU(self, exitID, self.OnFileExit)
+ wxApp_SetMacExitMenuItemId(exitID)
self.mainmenu.Append(menu, '&File')
# Make a Demo menu
@@ -293,16 +298,33 @@ class wxPythonDemo(wxFrame):
# Make a Help menu
helpID = wxNewId()
+ findID = wxNewId()
+ findnextID = wxNewId()
menu = wxMenu()
+ menu.Append(findID, '&Find\tCtrl-F', 'Find in the Demo Code')
+ menu.Append(findnextID, 'Find &Next\tF3', 'Find Next')
+ menu.AppendSeparator()
menu.Append(helpID, '&About\tCtrl-H', 'wxPython RULES!!!')
+ wxApp_SetMacAboutMenuItemId(helpID)
EVT_MENU(self, helpID, self.OnHelpAbout)
+ EVT_MENU(self, findID, self.OnHelpFind)
+ EVT_MENU(self, findnextID, self.OnFindNext)
+ EVT_COMMAND_FIND(self, -1, self.OnFind)
+ EVT_COMMAND_FIND_NEXT(self, -1, self.OnFind)
+ EVT_COMMAND_FIND_CLOSE(self, -1 , self.OnFindClose)
self.mainmenu.Append(menu, '&Help')
self.SetMenuBar(self.mainmenu)
- # set the menu accellerator table...
- aTable = wxAcceleratorTable([(wxACCEL_ALT, ord('X'), exitID),
- (wxACCEL_CTRL, ord('H'), helpID)])
- self.SetAcceleratorTable(aTable)
+ self.finddata = wxFindReplaceData()
+
+ if 0:
+ # This is another way to set Accelerators, in addition to
+ # using the '\t' syntax in the menu items.
+ aTable = wxAcceleratorTable([(wxACCEL_ALT, ord('X'), exitID),
+ (wxACCEL_CTRL, ord('H'), helpID),
+ (wxACCEL_CTRL, ord('F'), findID),
+ (wxACCEL_NORMAL, WXK_F3, findnextID)])
+ self.SetAcceleratorTable(aTable)
# Create a TreeCtrl
@@ -358,7 +380,8 @@ class wxPythonDemo(wxFrame):
# Set up a TextCtrl on the Demo Code Notebook page
self.txt = wxTextCtrl(self.nb, -1,
- style = wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL)
+ style = wxTE_MULTILINE|wxTE_READONLY|
+ wxHSCROLL|wxTE_RICH2|wxTE_NOHIDESEL)
self.nb.AddPage(self.txt, "Demo Code")
@@ -376,16 +399,14 @@ class wxPythonDemo(wxFrame):
#wxLog_SetActiveTarget(wxLogStderr())
#wxLog_SetTraceMask(wxTraceMessages)
- self.Show(true)
+ self.Show(True)
# add the windows to the splitter and split it.
- splitter2.SplitHorizontally(self.nb, self.log)
- splitter.SplitVertically(self.tree, splitter2)
+ splitter2.SplitHorizontally(self.nb, self.log, 450)
+ splitter.SplitVertically(self.tree, splitter2, 180)
- splitter.SetSashPosition(180, true)
splitter.SetMinimumPaneSize(20)
- splitter2.SetSashPosition(450, true)
splitter2.SetMinimumPaneSize(20)
@@ -453,6 +474,11 @@ class wxPythonDemo(wxFrame):
if self.nb.GetPageCount() == 3:
if self.nb.GetSelection() == 2:
self.nb.SetSelection(0)
+ # inform the window that it's time to quit if it cares
+ if self.window is not None:
+ if hasattr(self.window, "ShutdownDemo"):
+ self.window.ShutdownDemo()
+ wxSafeYield() # in case the page has pending events
self.nb.DeletePage(2)
if itemText == self.overviewText:
@@ -478,7 +504,7 @@ class wxPythonDemo(wxFrame):
wxSafeYield()
self.window = module.runTest(self, self.nb, self) ###
- if self.window:
+ if self.window is not None:
self.nb.AddPage(self.window, 'Demo')
self.nb.SetSelection(2)
self.nb.Refresh() # without this wxMac has troubles showing the just added page
@@ -507,7 +533,7 @@ class wxPythonDemo(wxFrame):
self.curOverview = text
lead = text[:6]
if lead != '' and lead != '':
- text = string.join(string.split(text, '\n'), '
')
+ text = '
'.join(text.split('\n'))
self.ovr.SetPage(text)
self.nb.SetPageText(0, name)
@@ -516,17 +542,61 @@ class wxPythonDemo(wxFrame):
def OnFileExit(self, *event):
self.Close()
-
def OnHelpAbout(self, event):
from About import MyAboutBox
about = MyAboutBox(self)
about.ShowModal()
about.Destroy()
+ def OnHelpFind(self, event):
+ self.nb.SetSelection(1)
+ self.finddlg = wxFindReplaceDialog(self, self.finddata, "Find",
+ wxFR_NOUPDOWN |
+ wxFR_NOMATCHCASE |
+ wxFR_NOWHOLEWORD)
+ self.finddlg.Show(True)
+
+ def OnFind(self, event):
+ self.nb.SetSelection(1)
+ end = self.txt.GetLastPosition()
+ textstring = self.txt.GetRange(0, end).lower()
+ start = self.txt.GetSelection()[1]
+ findstring = self.finddata.GetFindString().lower()
+ loc = textstring.find(findstring, start)
+ if loc == -1 and start != 0:
+ # string not found, start at beginning
+ start = 0
+ loc = textstring.find(findstring, start)
+ if loc == -1:
+ dlg = wxMessageDialog(self, 'Find String Not Found',
+ 'Find String Not Found in Demo File',
+ wxOK | wxICON_INFORMATION)
+ dlg.ShowModal()
+ dlg.Destroy()
+ if self.finddlg:
+ if loc == -1:
+ self.finddlg.SetFocus()
+ return
+ else:
+ self.finddlg.Destroy()
+ self.txt.SetSelection(loc, loc + len(findstring))
+ self.txt.ShowPosition(loc)
+
+
+
+ def OnFindNext(self, event):
+ if self.finddata.GetFindString():
+ self.OnFind(event)
+ else:
+ self.OnHelpFind(event)
+
+ def OnFindClose(self, event):
+ event.GetDialog().Destroy()
+
#---------------------------------------------
def OnCloseWindow(self, event):
- self.dying = true
+ self.dying = True
self.window = None
self.mainmenu = None
if hasattr(self, "tbicon"):
@@ -541,10 +611,6 @@ class wxPythonDemo(wxFrame):
self.window = self.otherWin
self.otherWin = None
- if self.showTip:
- self.ShowTip()
- self.showTip = false
-
#---------------------------------------------
def ShowTip(self):
@@ -575,9 +641,9 @@ class wxPythonDemo(wxFrame):
#---------------------------------------------
def OnTaskBarActivate(self, evt):
if self.IsIconized():
- self.Iconize(false)
+ self.Iconize(False)
if not self.IsShown():
- self.Show(true)
+ self.Show(True)
self.Raise()
#---------------------------------------------
@@ -628,7 +694,7 @@ class MySplashScreen(wxSplashScreen):
def OnClose(self, evt):
frame = wxPythonDemo(None, -1, "wxPython: (A Demonstration)")
- frame.Show(true)
+ frame.Show()
evt.Skip() # Make sure the default handler runs too...
@@ -638,10 +704,15 @@ class MyApp(wxApp):
Create and show the splash screen. It will then create and show
the main frame when it is time to do so.
"""
+
+ #import locale
+ #self.locale = wxLocale(wxLANGUAGE_FRENCH)
+ #locale.setlocale(locale.LC_ALL, 'fr')
+
wxInitAllImageHandlers()
splash = MySplashScreen()
splash.Show()
- return true
+ return True
diff --git a/wxPython/demo/OOR.py b/wxPython/demo/OOR.py
index 9b4088fb8d..e0e84b0112 100644
--- a/wxPython/demo/OOR.py
+++ b/wxPython/demo/OOR.py
@@ -30,7 +30,7 @@ class TestPanel(wxPanel):
sizer.Add(btns, 0, wxEXPAND|wxALL, 15)
self.SetSizer(sizer)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.sizer = sizer # save it for testing later
diff --git a/wxPython/demo/PrintFramework.py b/wxPython/demo/PrintFramework.py
index faa33469d0..36c3ea5a2b 100644
--- a/wxPython/demo/PrintFramework.py
+++ b/wxPython/demo/PrintFramework.py
@@ -33,9 +33,9 @@ class MyPrintout(wxPrintout):
def HasPage(self, page):
self.log.WriteText("wxPrintout.HasPage: %d\n" % page)
if page <= 2:
- return true
+ return True
else:
- return false
+ return False
def GetPageInfo(self):
self.log.WriteText("wxPrintout.GetPageInfo\n")
@@ -82,7 +82,7 @@ class MyPrintout(wxPrintout):
self.canvas.DoDrawing(dc)
dc.DrawText("Page: %d" % page, marginX/2, maxY-marginY)
- return true
+ return True
#----------------------------------------------------------------------
@@ -117,14 +117,14 @@ class TestPrintPanel(wxPanel):
self.box.Add(subbox, 0, wxGROW)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(self.box)
def OnPrintSetup(self, event):
printerDialog = wxPrintDialog(self)
printerDialog.GetPrintDialogData().SetPrintData(self.printData)
- printerDialog.GetPrintDialogData().SetSetupDialog(true)
+ printerDialog.GetPrintDialogData().SetSetupDialog(True)
printerDialog.ShowModal();
self.printData = printerDialog.GetPrintDialogData().GetPrintData()
printerDialog.Destroy()
@@ -144,7 +144,7 @@ class TestPrintPanel(wxPanel):
frame.Initialize()
frame.SetPosition(self.frame.GetPosition())
frame.SetSize(self.frame.GetSize())
- frame.Show(true)
+ frame.Show(True)
diff --git a/wxPython/demo/RowColSizer.py b/wxPython/demo/RowColSizer.py
index 24921ca057..1a5ac5119e 100644
--- a/wxPython/demo/RowColSizer.py
+++ b/wxPython/demo/RowColSizer.py
@@ -50,7 +50,7 @@ class TestPanel(wxPanel):
sizer.AddSpacer(10,10, pos=(13,1))
self.SetSizer(sizer)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
#----------------------------------------------------------------------
@@ -67,3 +67,9 @@ import wxPython.lib.rcsizer
overview = wxPython.lib.rcsizer.__doc__
+
+if __name__ == '__main__':
+ import sys,os
+ import run
+ run.main(['', os.path.basename(sys.argv[0])])
+
diff --git a/wxPython/demo/ScrolledPanel.py b/wxPython/demo/ScrolledPanel.py
deleted file mode 100644
index 2ff349b8f3..0000000000
--- a/wxPython/demo/ScrolledPanel.py
+++ /dev/null
@@ -1,97 +0,0 @@
-
-from wxPython.wx import *
-
-#----------------------------------------------------------------------
-
-text = "one two buckle my shoe three four shut the door five six pick up sticks seven eight lay them straight nine ten big fat hen"
-
-
-class ScrolledPanel(wxScrolledWindow):
- def __init__(self, parent, log):
- self.log = log
- wxScrolledWindow.__init__(self, parent, -1,
- style = wxTAB_TRAVERSAL)
-
- box = wxBoxSizer(wxVERTICAL)
- box.Add(wxStaticText(self, -1,
- "This sample shows how to make a scrollable data entry \n"
- "form by using a wxSizer in a wxScrolledWindow."),
- 0, wxCENTER|wxALL, 5)
- box.Add(wxStaticLine(self, -1), 0, wxEXPAND|wxALL, 5)
-
- fgs = wxFlexGridSizer(cols=2, vgap=4, hgap=4)
- fgs.AddGrowableCol(1)
-
- # Add some spacers
- fgs.Add(75, 10)
- fgs.Add(150, 10)
-
- for word in text.split():
- label = wxStaticText(self, -1, word+":")
- tc = wxTextCtrl(self, -1, word)
- fgs.Add(label, flag=wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL)
- fgs.Add(tc, flag=wxEXPAND)
-
- box.Add(fgs, 1)
- box.Add(10, 40) # some more empty space at the bottom
- self.SetSizer(box)
-
-
- # The following is all that is needed to integrate the sizer and the
- # scrolled window. In this case we will only support vertical scrolling.
- self.EnableScrolling(false, true)
- self.SetScrollRate(0, 20)
- box.SetVirtualSizeHints(self)
- EVT_CHILD_FOCUS(self, self.OnChildFocus)
-
- wxCallAfter(self.Scroll, 0, 0) # scroll back to top after initial events
-
-
- def OnChildFocus(self, evt):
- # If the child window that gets the focus is not visible,
- # this handler will try to scroll enough to see it. If you
- # need to handle horizontal auto-scrolling too then this will
- # need adapted.
- evt.Skip()
- child = evt.GetWindow()
-
- sppu_y = self.GetScrollPixelsPerUnit()[1]
- vs_y = self.GetViewStart()[1]
- cpos = child.GetPosition()
- csz = child.GetSize()
-
- # is it above the top?
- if cpos.y < 0:
- new_vs = cpos.y / sppu_y
- self.Scroll(-1, new_vs)
-
- # is it below the bottom ?
- if cpos.y + csz.height > self.GetClientSize().height:
- diff = (cpos.y + csz.height - self.GetClientSize().height) / sppu_y
- self.Scroll(-1, vs_y + diff + 1)
-
-
-#----------------------------------------------------------------------
-
-
-def runTest(frame, nb, log):
- win = ScrolledPanel(nb, log)
- return win
-
-#----------------------------------------------------------------------
-
-
-
-overview = """
-This sample shows how to make a scrollable data entry form by
-using a wxSizer in a wxScrolledWindow.
-
-"""
-
-
-
-if __name__ == '__main__':
- import sys,os
- import run
- run.main(['', os.path.basename(sys.argv[0])])
-
diff --git a/wxPython/demo/Sizers.py b/wxPython/demo/Sizers.py
index 8278bd0db4..ab95d06fd7 100644
--- a/wxPython/demo/Sizers.py
+++ b/wxPython/demo/Sizers.py
@@ -479,16 +479,16 @@ class TestFrame(wxFrame):
self.SetStatusText("Resize this frame to see how the sizers respond...")
self.sizer.Fit(self)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(self.sizer)
EVT_CLOSE(self, self.OnCloseWindow)
def OnCloseWindow(self, event):
- self.MakeModal(false)
+ self.MakeModal(False)
self.Destroy()
def OnButton(self, event):
- self.Close(true)
+ self.Close(True)
#----------------------------------------------------------------------
@@ -531,8 +531,8 @@ class TestSelectionPanel(wxPanel):
if func:
win = TestFrame(self, title, func)
win.CentreOnParent(wxBOTH)
- win.Show(true)
- win.MakeModal(true)
+ win.Show(True)
+ win.MakeModal(True)
#----------------------------------------------------------------------
@@ -555,12 +555,12 @@ if __name__ == '__main__':
def __init__(self):
wxFrame.__init__(self, None, -1, "Testing...")
- self.CreateStatusBar()
- mainmenu = wxMenuBar()
- menu = wxMenu()
- menu.Append(200, 'E&xit', 'Get the heck outta here!')
- mainmenu.Append(menu, "&File")
- self.SetMenuBar(mainmenu)
+ self.CreateStatusBar()
+ mainmenu = wxMenuBar()
+ menu = wxMenu()
+ menu.Append(200, 'E&xit', 'Get the heck outta here!')
+ mainmenu.Append(menu, "&File")
+ self.SetMenuBar(mainmenu)
EVT_MENU(self, 200, self.OnExit)
self.panel = TestSelectionPanel(self, self)
self.SetSize(wxSize(400, 380))
@@ -570,15 +570,15 @@ if __name__ == '__main__':
self.Destroy()
def OnExit(self, event):
- self.Close(true)
+ self.Close(True)
class TestApp(wxApp):
def OnInit(self):
frame = MainFrame()
- frame.Show(true)
+ frame.Show(True)
self.SetTopWindow(frame)
- return true
+ return True
app = TestApp(0)
app.MainLoop()
diff --git a/wxPython/demo/SlashDot.py b/wxPython/demo/SlashDot.py
index 03fc98011f..eb0ded644e 100644
--- a/wxPython/demo/SlashDot.py
+++ b/wxPython/demo/SlashDot.py
@@ -170,22 +170,22 @@ class AppStatusBar(wxStatusBar):
# This is a simple timer class to start a function after a short delay;
class QuickTimer(wxTimer):
def __init__(self, func, wait=100):
- wxTimer.__init__(self)
- self.callback = func
- self.Start(wait); # wait .1 second (.001 second doesn't work. why?)
+ wxTimer.__init__(self)
+ self.callback = func
+ self.Start(wait); # wait .1 second (.001 second doesn't work. why?)
def Notify(self):
- self.Stop();
- apply(self.callback, ());
+ self.Stop();
+ apply(self.callback, ());
class AppFrame(wxFrame):
def __init__(self, parent, id, title):
wxFrame.__init__(self, parent, id, title, wxPyDefaultPosition,
wxSize(650, 250))
- # if the window manager closes the window:
- EVT_CLOSE(self, self.OnCloseWindow);
+ # if the window manager closes the window:
+ EVT_CLOSE(self, self.OnCloseWindow);
- # Now Create the menu bar and items
+ # Now Create the menu bar and items
self.mainmenu = wxMenuBar()
menu = wxMenu()
@@ -201,52 +201,52 @@ class AppFrame(wxFrame):
EVT_MENU(self, 212, self.OnViewArticle)
self.mainmenu.Append(menu, '&View')
menu = wxMenu()
- menu.Append(220, '&Internal', 'Use internal text browser',TRUE)
- menu.Check(220, true)
+ menu.Append(220, '&Internal', 'Use internal text browser',True)
+ menu.Check(220, True)
self.UseInternal = 1;
EVT_MENU(self, 220, self.OnBrowserInternal)
menu.Append(222, '&Settings...', 'External browser Settings')
EVT_MENU(self, 222, self.OnBrowserSettings)
self.mainmenu.Append(menu, '&Browser')
- menu = wxMenu()
- menu.Append(230, '&About', 'Some documentation');
- EVT_MENU(self, 230, self.OnAbout)
- self.mainmenu.Append(menu, '&Help')
+ menu = wxMenu()
+ menu.Append(230, '&About', 'Some documentation');
+ EVT_MENU(self, 230, self.OnAbout)
+ self.mainmenu.Append(menu, '&Help')
self.SetMenuBar(self.mainmenu)
- if wxPlatform == '__WXGTK__':
- # I like lynx. Also Netscape 4.5 doesn't react to my cmdline opts
- self.BrowserSettings = "xterm -e lynx %s &"
- elif wxPlatform == '__WXMSW__':
- # netscape 4.x likes to hang out here...
- self.BrowserSettings = '\\progra~1\\Netscape\\Communicator\\Program\\netscape.exe %s'
- else:
- # a wild guess...
- self.BrowserSettings = 'netscape %s'
-
- # A status bar to tell people what's happening
- self.sb = AppStatusBar(self)
+ if wxPlatform == '__WXGTK__':
+ # I like lynx. Also Netscape 4.5 doesn't react to my cmdline opts
+ self.BrowserSettings = "xterm -e lynx %s &"
+ elif wxPlatform == '__WXMSW__':
+ # netscape 4.x likes to hang out here...
+ self.BrowserSettings = '\\progra~1\\Netscape\\Communicator\\Program\\netscape.exe %s'
+ else:
+ # a wild guess...
+ self.BrowserSettings = 'netscape %s'
+
+ # A status bar to tell people what's happening
+ self.sb = AppStatusBar(self)
self.SetStatusBar(self.sb)
self.list = wxListCtrl(self, 1100, style=wxLC_REPORT)
- self.list.InsertColumn(0, 'Subject')
- self.list.InsertColumn(1, 'Date')
- self.list.InsertColumn(2, 'Posted by')
- self.list.InsertColumn(3, 'Comments')
+ self.list.InsertColumn(0, 'Subject')
+ self.list.InsertColumn(1, 'Date')
+ self.list.InsertColumn(2, 'Posted by')
+ self.list.InsertColumn(3, 'Comments')
self.list.SetColumnWidth(0, 300)
self.list.SetColumnWidth(1, 150)
self.list.SetColumnWidth(2, 100)
self.list.SetColumnWidth(3, 100)
EVT_LIST_ITEM_SELECTED(self, 1100, self.OnItemSelected)
- EVT_LEFT_DCLICK(self.list, self.OnLeftDClick)
+ EVT_LEFT_DCLICK(self.list, self.OnLeftDClick)
- self.logprint("Connecting to slashdot... Please wait.")
- # wxYield doesn't yet work here. That's why we use a timer
- # to make sure that we see some GUI stuff before the slashdot
- # file is transfered.
- self.timer = QuickTimer(self.DoRefresh, 1000)
+ self.logprint("Connecting to slashdot... Please wait.")
+ # wxYield doesn't yet work here. That's why we use a timer
+ # to make sure that we see some GUI stuff before the slashdot
+ # file is transfered.
+ self.timer = QuickTimer(self.DoRefresh, 1000)
def logprint(self, x):
self.sb.logprint(x)
@@ -268,44 +268,44 @@ class AppFrame(wxFrame):
self.list.SetStringItem(i, 3, article[6])
self.url.append(article[1])
i = i + 1
- self.logprint("File retrieved OK.")
+ self.logprint("File retrieved OK.")
def OnViewRefresh(self, event):
- self.logprint("Connecting to slashdot... Please wait.");
- wxYield()
- self.DoRefresh()
+ self.logprint("Connecting to slashdot... Please wait.");
+ wxYield()
+ self.DoRefresh()
def DoViewIndex(self):
if self.UseInternal:
self.view = HTMLTextView(self, -1, 'slashdot.org',
'http://slashdot.org')
- self.view.Show(true)
+ self.view.Show(True)
else:
self.logprint(self.BrowserSettings % ('http://slashdot.org'))
#os.system(self.BrowserSettings % ('http://slashdot.org'))
wxExecute(self.BrowserSettings % ('http://slashdot.org'))
- self.logprint("OK")
+ self.logprint("OK")
def OnViewIndex(self, event):
- self.logprint("Starting browser... Please wait.")
- wxYield()
- self.DoViewIndex()
+ self.logprint("Starting browser... Please wait.")
+ wxYield()
+ self.DoViewIndex()
def DoViewArticle(self):
if self.current<0: return
url = self.url[self.current]
if self.UseInternal:
self.view = HTMLTextView(self, -1, url, url)
- self.view.Show(true)
+ self.view.Show(True)
else:
self.logprint(self.BrowserSettings % (url))
os.system(self.BrowserSettings % (url))
- self.logprint("OK")
+ self.logprint("OK")
def OnViewArticle(self, event):
- self.logprint("Starting browser... Please wait.")
- wxYield()
- self.DoViewArticle()
+ self.logprint("Starting browser... Please wait.")
+ wxYield()
+ self.DoViewArticle()
def OnBrowserInternal(self, event):
if self.mainmenu.Checked(220):
@@ -319,28 +319,28 @@ class AppFrame(wxFrame):
self.BrowserSettings = dlg.GetValue()
def OnAbout(self, event):
- dlg = wxMessageDialog(self, __doc__, "wxSlash", wxOK | wxICON_INFORMATION)
- dlg.ShowModal()
+ dlg = wxMessageDialog(self, __doc__, "wxSlash", wxOK | wxICON_INFORMATION)
+ dlg.ShowModal()
def OnItemSelected(self, event):
self.current = event.m_itemIndex
self.logprint("URL: %s" % (self.url[self.current]))
def OnLeftDClick(self, event):
- (x,y) = event.Position();
- # Actually, we should convert x,y to logical coords using
- # a dc, but only for a wxScrolledWindow widget.
- # Now wxGTK derives wxListCtrl from wxScrolledWindow,
- # and wxMSW from wxControl... So that doesn't work.
- #dc = wxClientDC(self.list)
- ##self.list.PrepareDC(dc)
- #x = dc.DeviceToLogicalX( event.GetX() )
- #y = dc.DeviceToLogicalY( event.GetY() )
- id = self.list.HitTest(wxPoint(x,y))
- #print "Double click at %d %d" % (x,y), id
- # Okay, we got a double click. Let's assume it's the current selection
- wxYield()
- self.OnViewArticle(event)
+ (x,y) = event.Position();
+ # Actually, we should convert x,y to logical coords using
+ # a dc, but only for a wxScrolledWindow widget.
+ # Now wxGTK derives wxListCtrl from wxScrolledWindow,
+ # and wxMSW from wxControl... So that doesn't work.
+ #dc = wxClientDC(self.list)
+ ##self.list.PrepareDC(dc)
+ #x = dc.DeviceToLogicalX( event.GetX() )
+ #y = dc.DeviceToLogicalY( event.GetY() )
+ id = self.list.HitTest(wxPoint(x,y))
+ #print "Double click at %d %d" % (x,y), id
+ # Okay, we got a double click. Let's assume it's the current selection
+ wxYield()
+ self.OnViewArticle(event)
def OnCloseWindow(self, event):
self.Destroy()
@@ -353,9 +353,9 @@ if __name__ == '__main__':
class MyApp(wxApp):
def OnInit(self):
frame = AppFrame(None, -1, "Slashdot Breaking News")
- frame.Show(true)
+ frame.Show(True)
self.SetTopWindow(frame)
- return true
+ return True
app = MyApp(0)
app.MainLoop()
@@ -368,7 +368,7 @@ if __name__ == '__main__':
def runTest(frame, nb, log):
win = AppFrame(None, -1, "Slashdot Breaking News")
frame.otherWin = win
- win.Show(true)
+ win.Show(True)
overview = __doc__
diff --git a/wxPython/demo/SplitTree.py b/wxPython/demo/SplitTree.py
index fddd44f7dc..698d2f639d 100644
--- a/wxPython/demo/SplitTree.py
+++ b/wxPython/demo/SplitTree.py
@@ -76,23 +76,26 @@ class TestPanel(wxPanel):
wxNO_BORDER )
valueWindow = TestValueWindow(splitter, -1, style=wxNO_BORDER)
- splitter.SplitVertically(tree, valueWindow)
- splitter.SetSashPosition(150)
+ splitter.SplitVertically(tree, valueWindow, 150)
scroller.SetTargetWindow(tree)
- scroller.EnableScrolling(FALSE, FALSE)
+ scroller.EnableScrolling(False, False)
valueWindow.SetTreeCtrl(tree)
tree.SetCompanionWindow(valueWindow)
sizer = wxBoxSizer(wxVERTICAL)
sizer.Add(scroller, 1, wxEXPAND|wxALL, 25)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(sizer)
#----------------------------------------------------------------------
def runTest(frame, nb, log):
+ if wxPlatform == "__WXMAC__":
+ wxMessageBox("This demo currently fails on the Mac. The problem is being looked into...", "Sorry")
+ return
+
win = TestPanel(nb, log)
return win
diff --git a/wxPython/demo/TablePrint.py b/wxPython/demo/TablePrint.py
index 615222c812..51b075c3da 100644
--- a/wxPython/demo/TablePrint.py
+++ b/wxPython/demo/TablePrint.py
@@ -31,7 +31,7 @@ class TablePanel(wxPanel):
box.Add(btn, 0, wxALIGN_CENTER|wxALL, 15)
EVT_BUTTON(self, k, self.OnButton)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(box)
def OnButton(self, evt):
@@ -47,11 +47,11 @@ class TablePanel(wxPanel):
data = []
while 1:
text = file.readline()
- text = string.strip(text)
+ text = text.strip()
if not text:
break
- list_val = string.splitfields(text,'\t')
+ list_val = text.split('\t')
data.append(list_val)
file.close()
diff --git a/wxPython/demo/Threads.py b/wxPython/demo/Threads.py
index 0476647c38..4c165eeb89 100644
--- a/wxPython/demo/Threads.py
+++ b/wxPython/demo/Threads.py
@@ -30,11 +30,11 @@ class CalcBarThread:
self.val = val
def Start(self):
- self.keepGoing = self.running = true
+ self.keepGoing = self.running = True
thread.start_new_thread(self.Run, ())
def Stop(self):
- self.keepGoing = false
+ self.keepGoing = False
def IsRunning(self):
return self.running
@@ -57,7 +57,7 @@ class CalcBarThread:
if self.val < 0: self.val = 0
if self.val > 300: self.val = 300
- self.running = false
+ self.running = False
#----------------------------------------------------------------------
@@ -172,7 +172,7 @@ class TestFrame(wxFrame):
sizer.Add(self.graph, 1, wxEXPAND)
self.SetSizer(sizer)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
sizer.Fit(self)
EVT_UPDATE_BARGRAPH(self, self.OnUpdate)
@@ -194,7 +194,7 @@ class TestFrame(wxFrame):
def OnUpdate(self, evt):
self.graph.SetValue(evt.barNum, evt.value)
- self.graph.Refresh(false)
+ self.graph.Refresh(False)
def OnCloseWindow(self, evt):
@@ -217,7 +217,7 @@ class TestFrame(wxFrame):
def runTest(frame, nb, log):
win = TestFrame(frame, log)
frame.otherWin = win
- win.Show(true)
+ win.Show(True)
return None
#----------------------------------------------------------------------
diff --git a/wxPython/demo/Throbber.py b/wxPython/demo/Throbber.py
new file mode 100644
index 0000000000..2aadab2f90
--- /dev/null
+++ b/wxPython/demo/Throbber.py
@@ -0,0 +1,180 @@
+#
+# Throbber.py - Cliff Wells
+#
+
+from wxPython.wx import *
+from wxPython.lib.rcsizer import RowColSizer
+from wxPython.lib.throbber import Throbber, __doc__ as docString
+import throbImages # this was created using a modified version of img2py
+
+#----------------------------------------------------------------------
+
+class TestPanel(wxPanel):
+ def __init__(self, parent, log):
+ wxPanel.__init__(self, parent, -1)
+ self.log = log
+
+ # create the throbbers
+ self.throbbers = {
+ 'plain': { 'throbber': None,
+ 'text': "Plain throbber." },
+ 'reverse': { 'throbber': None,
+ 'text': "This throbber runs in reverse and faster." },
+ 'autoreverse': { 'throbber': None,
+ 'text': "This throbber switches direction." },
+ 'label': { 'throbber': None,
+ 'text': "With a label." },
+ 'overlay': { 'throbber': None,
+ 'text': "With an overlayed image." },
+ 'overlay+text': { 'throbber': None,
+ 'text': "With a label and an overlayed image." },
+ }
+
+ images = [throbImages.catalog[i].getBitmap()
+ for i in throbImages.index
+ if i not in ['eclouds', 'logo']]
+
+ self.throbbers['plain']['throbber'] = Throbber(self, -1,
+ images, size=(36, 36),
+ frameDelay = 0.1)
+ self.throbbers['reverse']['throbber'] = Throbber(self, -1, images, #size=(36, 36),
+ frameDelay = 0.07)
+ self.throbbers['reverse']['throbber'].Reverse()
+ self.throbbers['autoreverse']['throbber'] = Throbber(self, -1,
+ images, #size=(36, 36),
+ frameDelay = 0.1,
+ reverse = True)
+ self.throbbers['autoreverse']['throbber'].sequence.append(0)
+ self.throbbers['label']['throbber'] = Throbber(self, -1,
+ images, #size=(36, 36),
+ frameDelay = 0.1,
+ label = 'Label')
+ self.throbbers['label']['throbber'].SetFont(wxFont(pointSize = 10,
+ family = wxDEFAULT,
+ style = wxNORMAL,
+ weight = wxBOLD))
+ self.throbbers['overlay']['throbber'] = Throbber(self, -1,
+ images, #size=(36, 36),
+ frameDelay = 0.1,
+ overlay = throbImages.catalog['logo'].getBitmap())
+ self.throbbers['overlay+text']['throbber'] = Throbber(self, -1,
+ images, #size=(36, 36),
+ frameDelay = 0.1,
+ overlay = throbImages.catalog['logo'].getBitmap(),
+ label = "Python!")
+ self.throbbers['overlay+text']['throbber'].SetFont(wxFont(pointSize = 8,
+ family = wxDEFAULT,
+ style = wxNORMAL,
+ weight = wxBOLD))
+
+
+ # this throbber is created using a single, composite image
+ self.otherThrobber = Throbber(self, -1,
+ throbImages.catalog['eclouds'].getBitmap(), #size=(48, 48),
+ frameDelay = 0.15,
+ frames = 12,
+ frameWidth = 48,
+ label = "Stop")
+
+
+ EVT_LEFT_DOWN(self.otherThrobber, self.OnClickThrobber)
+
+ box = wxBoxSizer(wxVERTICAL)
+ sizer = RowColSizer()
+ box.Add(sizer, 1, wxEXPAND|wxALL, 5)
+ sizer.AddGrowableCol(1)
+
+ sizer.Add(self.otherThrobber, row = 0, col = 2, rowspan = 4, flag = wxALIGN_CENTER_VERTICAL)
+
+ row = 2
+ # use a list so we can keep our order
+ for t in ['plain', 'reverse', 'autoreverse', 'label', 'overlay', 'overlay+text']:
+ sizer.Add(self.throbbers[t]['throbber'], row = row, col = 0, flag = wxALIGN_CENTER|wxALL, border=2)
+ sizer.Add(wxStaticText(self, -1, self.throbbers[t]['text']), row = row, col = 1,
+ flag = wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT)
+ row += 1
+
+ # start and stop buttons
+ startButton = wxButton(self, -1, "Start")
+ EVT_BUTTON(self, startButton.GetId(), self.OnStartAnimation)
+ stopButton = wxButton(self, -1, "Stop")
+ EVT_BUTTON(self, stopButton.GetId(), self.OnStopAnimation)
+
+ buttonBox = wxBoxSizer(wxHORIZONTAL)
+ buttonBox.AddMany([
+ (startButton, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5),
+ (stopButton, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5),
+ ])
+
+ sizer.Add(buttonBox,
+ row = len(self.throbbers) + 3,
+ col = 0,
+ colspan = 3,
+ flag = wxALIGN_CENTER)
+
+ self.SetSizer(box)
+ self.SetAutoLayout(True)
+ self.Layout()
+ sizer.SetSizeHints(self)
+ sizer.Fit(self)
+
+ for t in self.throbbers.keys():
+ self.throbbers[t]['throbber'].Start()
+ self.otherThrobber.Start()
+ self.otherThrobber.Reverse()
+
+ EVT_WINDOW_DESTROY(self, self.OnDestroy)
+
+ def OnDestroy(self, event):
+ self.log.write("got destroy event")
+ event.Skip()
+
+ def OnStartAnimation(self, event):
+ for t in self.throbbers.keys():
+ self.throbbers[t]['throbber'].Start()
+
+ def OnStopAnimation(self, event):
+ for t in self.throbbers.keys():
+ self.throbbers[t]['throbber'].Rest()
+
+ def OnClickThrobber(self, event):
+ if self.otherThrobber.Running():
+ self.otherThrobber.Rest()
+ self.otherThrobber.SetLabel("Start")
+ else:
+ self.otherThrobber.Start()
+ self.otherThrobber.SetLabel("Stop")
+
+ def ShutdownDemo(self):
+ self.otherThrobber.Rest()
+ for t in self.throbbers.keys():
+ self.throbbers[t]['throbber'].Rest()
+
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+ if wxPlatform == "__WXMAC__":
+ wxMessageBox("This demo currently fails on the Mac.",
+ "Sorry")
+ return
+ else:
+ win = TestPanel(nb, log)
+ return win
+
+#----------------------------------------------------------------------
+
+
+
+overview = """
+Throbber
+%s
+
+""" % docString
+
+
+
+if __name__ == '__main__':
+ import sys,os
+ import run
+ run.main(['', os.path.basename(sys.argv[0])])
diff --git a/wxPython/demo/URLDragAndDrop.py b/wxPython/demo/URLDragAndDrop.py
index d8c934ece2..16b3b96006 100644
--- a/wxPython/demo/URLDragAndDrop.py
+++ b/wxPython/demo/URLDragAndDrop.py
@@ -30,12 +30,12 @@ class TestPanel(wxPanel):
def __init__(self, parent, log):
wxPanel.__init__(self, parent, -1)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
outsideSizer = wxBoxSizer(wxVERTICAL)
msg = "Drag-And-Drop of URLs"
text = wxStaticText(self, -1, "", style=wxALIGN_CENTRE)
- text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, false))
+ text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, False))
text.SetLabel(msg)
w,h = text.GetTextExtent(msg)
text.SetSize(wxSize(w,h+1))
@@ -44,7 +44,7 @@ class TestPanel(wxPanel):
outsideSizer.Add(wxStaticLine(self, -1), 0, wxEXPAND)
outsideSizer.Add(20,20)
- self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false))
+ self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, False))
inSizer = wxFlexGridSizer(2, 2, 5, 5)
inSizer.AddGrowableCol(0)
diff --git a/wxPython/demo/Unicode.py b/wxPython/demo/Unicode.py
index 2e654b6efd..c6910a05c4 100644
--- a/wxPython/demo/Unicode.py
+++ b/wxPython/demo/Unicode.py
@@ -56,7 +56,7 @@ class TestPanel(wxPanel):
else:
f = self.GetFont()
- font = wxFont(14, f.GetFamily(), f.GetStyle(), wxBOLD, false,
+ font = wxFont(14, f.GetFamily(), f.GetStyle(), wxBOLD, False,
f.GetFaceName(), f.GetEncoding())
self.AddLine(box)
@@ -79,7 +79,7 @@ class TestPanel(wxPanel):
border = wxBoxSizer(wxVERTICAL)
border.Add(box, 1, wxEXPAND|wxALL, 10)
- self.SetAutoLayout(true)
+ self.SetAutoLayout(True)
self.SetSizer(border)
diff --git a/wxPython/demo/XMLtreeview.py b/wxPython/demo/XMLtreeview.py
index ce14928ce8..d57642958e 100644
--- a/wxPython/demo/XMLtreeview.py
+++ b/wxPython/demo/XMLtreeview.py
@@ -1,5 +1,5 @@
-import string, sys
+import sys
py2 = sys.version[0] == '2'
@@ -11,9 +11,9 @@ try:
else:
from xml.parsers import pyexpat
parsermodule = pyexpat
- haveXML = true
+ haveXML = True
except ImportError:
- haveXML = false
+ haveXML = False
#----------------------------------------------------------------------
@@ -76,7 +76,7 @@ else:
self.nodeStack = self.nodeStack[:-1]
def CharacterData(self, data ):
- if string.strip(data):
+ if data.strip():
if py2:
data = data.encode()
self.AppendItem(self.nodeStack[-1], data)
diff --git a/wxPython/demo/bmp_source/001.png b/wxPython/demo/bmp_source/001.png
new file mode 100644
index 0000000000000000000000000000000000000000..01cbaae2ff0fd6c4ec77cf8f477a1cf8d32f32ff
GIT binary patch
literal 2220
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
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/003.png b/wxPython/demo/bmp_source/003.png
new file mode 100644
index 0000000000000000000000000000000000000000..e118e993a33a20d0e50029fe5b37593f7f4caa6b
GIT binary patch
literal 2220
zcmYk8X;f257RT$omz|JA*&>KMc4!z3-~w(*Y(-GSXww)N(1azRqT)JA19=IcX+?>O
zEXqi5p_M@dMZo2d2P%$&617D}Y(ZRz0wO|-5XkG$pXNi=J#|j~>(;INyZ6+uqOcX_
z3|j^Oz&s>)**cSTni@3NG+%cuK4~(fMB!>70M%!tp~6wq8jTBHw;F(L8US`j0x(no
zK(-kG@lOF5Cjk)hCjhfH{~|tQ+Dn@svP>AhuQ*nwF#|Nz8g2KlO^Az2Oh|~6Nu{z_
z8ObTAnIH&%-o(N3akiuJ$3S9+^lXm)gRhgGkiaz7KqQ-kHSd1_aVU_7_!HaC<~5;-
z(qQUlb(Li3Kzx%Rxw7pRxAxW7E^^bbUu
zMLgQ;2O+-aE_si}tbFY02n$9YZ~R=-Qv3N}(bk_bj{e-AuJ=fTY4PSds^B!Xx2jsP
z_--pRd}N@{pw%|)+*Qpm3#qQY>gRtAq>m1^b#=+H2n^_s4t8nN4GdCAS3}15hv)tw
zGZF&HdxG55Wb_u+Fh&dxI;gh;n3imAq2r(uB(nJ-WzOdpqq+U9^5w3s`}Xa>5ukWO
zXPn^6jT7VaIYciToiM&N9n;{N5^fm)U(tr+KjPp0}FK)75om&NL`9P
zXnokke99Psoq1`qy0moWs>N}3K0X^#7L4B?DWE5j1)y5cG(C2{nm$6+vFP*=PtQ&J
z_mk=LU$t_gA$`9ydah;}HLMc<4h~r990UvJ%)OrXb2v8iMgQcSDXjFdaWdBiM-hs>C{ULyxhjo~
zkA)DKEJ7p$hGQp>OgOnHRy*q+%deku`%?f()Y`fygr-XXn2oWc=sK
zM#Wx%pPfhZoADd?L|vd|x?~CU2l%RD
zlTBe|19p6NK!q{W-?m0%VEfwl1Ox>oeUkw9D6x?ImBITZ-SBOoH}{IV9-`qt7IgxU
z$*T$p`R3ry>{b(3{eI!cm~a)=l+^Spuy8CNM6Eu%@s6?ua>`g=>9=UfsVw==VFc0Rui
zSXbg_3+=->*Lc`vh=vAFmyq%Ym*#XG$~4QTpwaDJ
z+Qxg%7X``y3lx*kZ3`DSzW1pLC6#4JB4O4+IX=;-iiKL&cNanjxz6<($UQM4LiF(~
z!LLXHj;g8ZwN1hoFxJUION_<>bHcBZq9Y~~m!0L$yJ
zT(OI=hk{~gI}h#?22VoXor(r2aG#apCdn$I=c0w24!Fh%co5X^MxGI|lF4Tjm6noC
z`D2J*m?RPzsoep;YOl9eH}Eybk-RpcG?QmvtSr69{C!_U$|lOuwHhalwS;UID#FiN
z_1Ixk@Kv-a_WYx27U{)WRTI+FL3DpWT;zgsYjIv?(;;(Ghr&_>#|Kn>Lu7|b_=;(u
zh7!9(0EC{J1(I}D#g@hkv(KN3BX^Q6ug1n^=JRnYvw+7%jtPDpEYwE4Qn{1KJFX}t
zCi_aXgd>@)OPeD0Hz&zyNL+&SMWw*ml=*q23tOy%F~wWEX}y{(vs$G1zP#}iwS=Gc
z{rjMUMLh?Grc{Y@B)3Q%GSJ?OtFr?Nva_wu_y{YBHn_DnR5MQ5MpebbC!gV;7~-_F
z$%!#%U8#fVgfYWx#KQmfTGK;$tNL*qBo}~ACO$qhiR%@x2;&}iMUO$=tBn4rpSw$e
zpa+>MKK$wXNkiS>Yq>K2ryObLIgc;9ew%Zk4`0CpGLy-_9CfGupT+
zg<`z1V~Zg=61{N1l^(i%HMif5y;qt$_RhbQdD=qY%~Yi_)}`^_&Lt+#Rgb{m+3HYs
zb
zGJ^bpeofiDi$zfQI6L|xGEC(SD4$vR2P~27;Z)?ounCU*O}O=3E`ijQ8HGKp4j-s?
z2KHxQRVBGS(*!p6j+#UZ%SbkHT?h$P(~j?*A+?%zHV!&
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/004.png b/wxPython/demo/bmp_source/004.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b78a351029b956489a66bf0fbe028a4ffd54daf
GIT binary patch
literal 2339
zcmXX|Ygki98lH231QL>f3k0wvqTB>A7!F
zi#Are32H4`ga|5F1r8Ds3n)djcqvfQ3Kg{=pahbfjl26}=6mLOX6Ak8{oa{xiq@=J
zVQ1@V3jnZ-iH=xni5~A86}I$OJoQ@HRm^#6}f>>UyF(oFscT
z+WY8&7UcA`GVUH0>Fif5EVwJ!hwzUrtzVwg=&??A;i3z6;Zn(}&R>6!1%7Tdykhquy8W(U44DROl~-8ohXMCbJrzJEIo!&GP&?!Z<#vWF=tP8I3~sE#u72^;Hor<%7%Quh%4fFhZUaU_fLf!FaJ0<3w#+%
zZOQhof{=|dpWl^*UNdDrv0YEg_;}ThO9qtH=jxTJiNoZ$f3gg5c{j=r_CAZ_bRmZm
z9L%J6d(WApZ*G>i^iNMs8h+#m57u6mC(HDbwB)oTS#naUd3wC{)o7Yx*~N6%-Mh!}
zMzprzm`#cu1{76Ln}8Qau>VNO7bZ>{`XVD!bUIx`M1)~FTXEiKG)z3L-yv+0TRH3y
z<|a#0l2Xw8MSN8Xe2lIn*g3{AFP{IDa(hF={+7Q+I1dsv|3ENs8N1~m4KB5rq;xZU
zeYYhfBzSs8`o{QbdRD8$BD7aX`a_6T?QAmlo%N7(V09K7oO<(E(5*BWQvz3ce2rddwTn4Z?Fg}Cpl
z;BGHXx|f$E*GxHek3PAud*d2{e`vl7TUnDBc2hoFe5RNYaw!kCE7rt5U@-~ES(g2jnph~9YrZy}b5bRqwAi#A$4=R0Yac2>o5IknKbWh~_O
zme3p@e~*?{zcEgE4}i6?Z6N^XviLfSGmo&W9~VvSB@W-6{GwAX4;=|;yd?;0w`G{A
zUUljE{B&sxH!!rS_=RGVgQFAg`n$2)F`o}ez5@PVi);xV6|E5Y++IhLcQliwE5ENR
zVU{NC`>t(JV{FLUm$v6jkE5?7#ag*&^Nk;Re6y7D+}(3$)<39sWk24$BeL_Vd)?P(
zSHDjHU3FiP%~A>b1R;tS_%4Q$DG`f|isM&X5{85!UxiEE*&8$fm8M3s^BiDaBjAty
zdY@xJMFNzIYnq^wogeNolGOOX
zo*DThp}XHYF?HwkK4Pt1CF6hCMP!T2rcz}zJF3z}+niO^Dz?2
zH_@1Epj>kow;6|q;FBMa^Rj7{r8cgcUYntlp9`1u}*JNg9OJC7Hm(9dnWnTDS@
z#-$N1b5zF&&j6&58GBuRFz;t+ypy$dDS*%zm|)M+_RiKMHexMnXL{)W@%Y5^9v
zQvHjY4$RtK8JhTJab{*F_JFA9f{Q+jZYjCV*!s3$ni>H;aO_r-_%5VssbZM+Gdbg-w?F_Wpgs)ae5ZsMW0;0a3QLCXU)4BD3Yt#Rb}
znk>gs{oaIhoT?eX|3q}T7Ty~X{{+R9KwE7UuV$seF8+f~R39JAYYFZ#*TK2;oRzKb
z&QtVj$VjNh8M`|0sboYxJM(8p%>aoB;Fl3NkSfw($!SQeMpmwj+BuKuOKGv8{?SO5
zzERpQU{pUOz7K5o%w&Ct7fsC8bJRk)VbY)@KD!y5bUN~<2Zn5@Hw)K+U>g!5^8Z@^PJF*7&Csnb=HP`cZB{R%jN6jzjlOR{E3CfnlwX`9T~xzH0(WkJt2y?OYd
zq)>6%rj(a#DT@&rg&s-#to%P}(TG
zs{c}%G<56`n)9Sq-$Gavf@&_W$^t;dEpFStWHPbJSx;Mu&_~C9*k-q!HaqChIjD9X
zDO4`GONjaiNj{ii+tmjlMgds~(dxMqQ
ze2**Fsq3Ntt72@WNH)_t(Zv1Pin#CqNrv0A-c;)oqn2Ab!R5(89OeB!hxEt=hrB2c
zO92seTp_huO8t3rAg*UvWJ&$3)KRVIQq%~yH0R8|UF6r01jUXK=j{AfVuraYN(CeB
z@Wb%JqtJp31eIJ?ZU+Eky(ND+<5>9Pg4pk;f~e;Tbc1J}nWf6moL$y$%P*a{5j4E^
r?)kJn*OU7)CNk;-P=q(ik^tk~rF*(Ac4S(9IUpu-RYdhilDz)_lS~I9
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/005.png b/wxPython/demo/bmp_source/005.png
new file mode 100644
index 0000000000000000000000000000000000000000..8221ef89f4c98e836f5edbd420278281a45c3adf
GIT binary patch
literal 2505
zcmW+&eKeG58-G4#jA6!1WQ@X0yCq+5zSDNnJa$VInH<|nEsu{uQK@Y=mGL}7k|=5`
zD!by1kI#gn-WD4*NeoK~G3M)e-s%10y03GcbDis4_kI0-zx&D)Z{NZ;
zTV@6T06REnQ@GK8@!3ov7WETL;
zR02SbIRGR)2LLS%0D|WMz+vBs$TP-VW<>C&fQau
zLn>5~^5ClH$|7Xr?DfhHr<>1t&hFi%`FtNDdP}zNClkNi`&&96Ok|d-zZJBX@-((y
z?m=e)zPc6$$ST3B7I#i(|9t6}?3|plSMr!|OE4_cU@*K_mQ4>0A%hy^H+|BgZdy65
zY{U#&&4{kBDn^85QuD%nXEj?6J=Ak|6MddpZaRu%ire7;ve*wx-?5~{|dDR|RMGD43O6d+6FbT^^eQ)*b4R5nu6uQxUxn=g>%`HN}g&;=I|GEHDR
zJ(Kah`zrGH}dTCmyd&6{^QI$m~<*+}Ws>ggEqMLkImiN|FBVT`+>so*>a+wq5x
zTN|XByxcI;4kN}ewf3=Lu-N+BADi}CFHHu(R;bI2l1-TX|Nc>5u3o*`eKot_R#@4_
z?B)p-2aUiqv-7GR0nq_!X~{kw6|#4NK9O6co4Yb27L8Ml4JXlWMy*A+VusoCijt)q
z4uz#{g-wOLWKzfY)ai#lcsn{`&Er{GSM|_4QTOz58+*pa+(`vyPmT_L7gkrdh&P$~2!uG=r>Ed{M
z4Z1>6W`;yUAKilkak7)P9%b;Ha9!~o*ca20a7ij&3;2H;owSkL%Wp74SIW~F3_>KF
z)4nP;LY96U8b2X~tiKZiA)T1)fPO&(SIM2ko(K>ih26H5TsbD&ho{OXh-AiZ&&ouZ
znT7@H@zrvX@F!#g=p2q;_Lt5Nzsl_)rhs>z-ufhxQ3EfH>z2pSN*Wua)I8hL@AGJa
z0b=&d`SYBTH#l=bS2#VT9LO{zkj#({VsUYj^4J8ud4X#B;A?Q3uRIP1va}|Vj#*}&=sx(W!SKj$=T3PP>O~q2F46uHltQ^Ja%~0!^NLiMxuoF5{GT9%IIbF}Rn-Zzk
z2v|fcbjZE=+~m=i49$Z5yX3&4k$}AAsaCKP`|F1bI!<{yDgk!GT%>3vVd^%xVswoY
zi0MF9eA+JNnoQCg$v53}vw4vm@e53z0IQi1YrJG#kmFb*65~lG>EP~~)Jlq24?w4x
zS7{{4xD}1cKH2l%8|8@6F6!MEM1#PUr-$1f-j`jkIqA{rU4U*A-UMA;JvL`M^VSN@
zFaAk<){RJKq7|wX;nCpBX3Zu0@#Sd~bApQu(lfgr4t>HE0j{g0|JvnzsHyATui2gH
zs2O~xlvTEAnvDxW$N|pPA^0Sd%N{s#=5D1oGB&7>Mjx*wLf_)-1kS>Yk!@7
z)SIzdkr+?U@m9P@04F4%gw7RQxIuVYobyQwIy77TU~ux)3H^r;E&WIeu}1S~v3SO&
zyvATC1E2qf8cUV?5?Z^+{!CK8Br+8bNrZN{n3+j-iqAfR4j}l*Rof86Pm@bw04LI3w%Rbg3!c45T5@)_u5E5x}nliPpWes0J?IyYvk*b2OC
zVLcvvbB7x-ZeaL*L{?3S`a~Fh82JY0Ne$ZfExDYk==$TD*|vH{m?(o}cI^`@0UFn>
zSI%|_LtaknbQ|CG-F@%wslU3TZ6W%52Ng+F`<6q`j_LisGTZDzRTk>A1B
zfB~!-5jC3x205D=zZMot@dBtdKaKAfNaO!x9KHQ8Q}dCcY={LDMX5<&DiQv6vcIad
zY@Li9v6F}To7{2W@8PCIKg^h$@m8$Uo2MM{lI>nA28@){o?6l;KB+q5NVm3Mu_G8w
zJU+JoE0#h$PMK&9bWKxyH_&7)9EnNG(@o6vS1B=SQ8PV_1*Y$%IlJ)Dob^V?boq$!
z?2n?fp)9Mn6h-{RR6GGHdm1s#;=Jl!mAlf*yI#V$7uxinPkN%y)@wO}9-<#EC4rUPJwiS=3exR*3;4mi
r?inlCRqR>hRyR&F6|P@_12AB-^GK^-XfDIJivhu#w{N=rHJbH5ktURr
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/006.png b/wxPython/demo/bmp_source/006.png
new file mode 100644
index 0000000000000000000000000000000000000000..d00538469e1b82a5e7e022996d24e4d639d3fc2e
GIT binary patch
literal 2230
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
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/010.png b/wxPython/demo/bmp_source/010.png
new file mode 100644
index 0000000000000000000000000000000000000000..f99a5719944446402bd8441365cedd8c6effb97b
GIT binary patch
literal 2306
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
D8wDLu
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/011.png b/wxPython/demo/bmp_source/011.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4ea809f68e58069e4fbf42d575cc8c0130acac3
GIT binary patch
literal 2250
zcmXX|dpMNa9$w!!cQeE6LgX?tg(xS3L?`i0E)BU%?JjgNgGg5uN$t^mBZ{&$TP3=}
zhiBu`GXj+FU?zOox`vUR8+{G#{nsw~^?xoRI{
z4d6Xw2j73SG5m%0?+uB9pop|>Yp?z5ue6}Yam5$DP*_qQgb5D7Z(BNuGmNKxp&fET
zX{qtABkIG4^1MCk%>GhyJUyXlgKnCd@H*Z`cvc=b_ZG
zOU%HNiiz3Tsl~p&zDt%Yv9o)3)i-tWy+1ZGM6!wuidybia~YZ8cuA@tvI(rhk3{sg
z!BIlZi^~&Qo3gW8claCJt9HmSPqB7p{7GO&Y;3HIAZQjrMaT`w&s{HGnAd|bL>4N$
zC&r9fGs80)X8&}-fyTznmQQ2MmjV}=6@c1c%KE(bh>Mb$u(l~7p-2R`+W(PV;J!m3
z$F#cf$B%ESu2nTkh=&g!hJJ^FRDm|2H-ZCJ;Cam_rVTUq(-i-v4ny>u%5W6GvA8Yf
z*@{_k`jSk_@sM-mQcF^UvK(_~${*arEUCtSxJM<}mEHKKb#E_I46&
zCu;!O#e(XB!Rw!+~VRHrUfYd>b=l3W}pwv~J`vl;z%aaKwuvRd(-xmm2t=X3Zx
zsT0UQB=f;qN*ROf%pzQ}hp+-OPA~Q?C-c`JfSZMLUtdxpdF3U>rbqi#9&*eGI#zK4
z(0D>&S_&mYZ(K%PcWbK+|A_zMHebeec2e6Cp`S<#<=dekLE;32$J_B;JX3k-XVjzp
zm>lym%udZuA=L;aR#yrJiaw4`kg7LXwGH%wvMcO3{5G7E#FkoeoPfs%WMyeBEGK9H
z!cWurfyzpO{3JG~9@47>3V2YHDzlOsxoTp?*rT}tXXV0B8+4sT+jeBRQX>+HnwpyY
z{r#)Ds#!V+&ZAsWA|sRKf;6Eog3vD}h6YQ-<9*9A5%x`(R|pla
zQ5dLh5`{Ct4)NG}cnfE}1=(k;
ztEs)?7Jh5#+2>)D!!>n_^f>ZBspV7RX`4zv)H*$)izY^zO$tqM164QB5J&xa6;^74
z858iVte4|DjwS+`d0>(6;HT_d)Ne>1sA;d);8&4_5gFmds7vyP@+dC
zUPu4-@OWmMRy(|_U9x8bUrH@$XR*yY)4$X|r{SdT6t^cRs34~Jx%x=<1q#pR&JtOu
z>=hVK6YkWHsF%b!P99VBL7RjAAUjD8<}8?fYK>Gl%=;aQ4q8MkDMTeRbXuQymXxou9hKFGYd`WglBm!Tkq)aGU)S;{1%_xmrW%CWiKIV;YYEOAS^
z7YDqfDRlNRuh&N8SUO637zwUUCzOApe$)g~<(@CbxgS{Cuf2CX`i%-YiOjOj{0hHw
zR;-$QU|q~rI3{Q)p3tb;E1Y#lX|s9+(%DfQq&PHy#Mn5
z5{=mnH|DORIB`BuC^ntQcf1%V3)By_pIhJ|Xl~McX}{?qkN?qJ+6kZ>@(O8pM1dlM
z!ofk~X_;%tVJ*@g$BV%&T64Qf$47t
z;_(l%(204%t58h&x7*>G_+t~7
zO3$CmemBTgp_VWW%*TyxNL7lS`3vGZ)xDv
zJ`~ZjYMhJqG~7DRuhlS5Rn1tT9bP;L5aZu`!J^C3Zy)vDV3sYcEj!(yZ!H1EZ=9ct
z&hMsPRHVJGdw!|+S%0MQ`{*SKWy0b$(NFf5fr|MsnFID;IL17^W|PX)jDWC^sNlP6
Hh1vfBPgCn~
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/012.png b/wxPython/demo/bmp_source/012.png
new file mode 100644
index 0000000000000000000000000000000000000000..b9b85b65b09e07c3a3d68f40903a328a25c95a46
GIT binary patch
literal 2266
zcmXw*X;@Q77sn^}1`?K#Kv+URa-%^|T;fuZg5-uG1_TUMS;WF6EMgawN`=w@H%UQ2
zsL>Z$#7bQ7wbmEnTB{aDH4Zo
zqFJ&n0RXgMQQ)U0yYNG!LZ<$z`|+bDL*69}69RDYL_(-=#xzC}MW2QNkfs74BL;x6
z3jpL>0g&_;06H=N!BYUZeg0i^vB{U392_XzmUUc$sjL7M2|~KoTuV+&+?AZ1n39l?
zB1s`H3~C_=Vhvw^;Jl8`HGbklI47JcdDN!(i)bPsApr5_2oY<2M@Jm?A-oW5p_$JhU9;o-sHH}X2IVlqNd)Z9^O!TcIqQuys-~dE$v;6D@Fx)UbaGPQQcJ;C){qo^hIdK)-rB!i+L<1
zaMGBO<~x1WAi@@01Hkbj0Y>YZ6Qk>FD9
z=fuEv$w?|MI{xtIpH*!
z{7_$9j!`$!Gczj4)$0vI?TvYP!n?8u5=ms#VZ+Rfw-*aE(^&6@hgDZ52Yw%e&IHLbGxQeD{Di|AB0bWbGC1CR8o>^0;(mjenj||9j6bdm5xh{otLMzQ#NQ
zoK1cep5hpjZp#(sViF97Rc5GNDn&^yc-B*KC_j+*ZPqNI*vdx1MRbCrG|c#VewO|<
zJP5NQ(L6AcwU>DIw!7XGnS2GVR1&fcP;qF=Vw%J5@bK_R7T5ugG1s4jel!dls(0<&
zDJ6`u)gPH+X~yR`m=T=)47&lf`0)Ml1hYv>hYgl(_L6~3%0K#KwV7w^?sFocwOMTh
zk4`#GdBsxcoL2Vf^>Yp^C0YtdTF7Dz=1&n8W`!LVF|Zfd^!P_J|$nhZ$fDVlm&Lh_5}1JB7p!*{mC
z=Mn}|$v%-3OyR}eA`5e`u*uG3ye{bOSP7#K{nD)5Rs#(%`K}FmTub}F#SW-%LFfCQ
zV_T!j84SCe`Da59W4GX3^AdXW$)ar`t5=^}S|q$g^7}~9s~hEXFpxRJ{7id|z=}$h
z>U85A&nM0RqP}s#s;Ci^WtXBWjrT&{iw^!&^)~pQoJrlZB5H=yfL_}eEkf}Mt27!f
z8+i(SEo&GW9E2SM{QUebwAE|eH^3+mGS^=3HNe`_#hZan|sL927es)~eLV*+Bg
zznQ7Y%XDjK_=fm>gDQt`&UjeMC7F#;wCut#4GX$)w7R;QX^sCePk+S5ft*JQ+I!Jz
zX=bB>#A}z|a}%fTRbPH{E|~OZdrjjWfpodYaxE2Z!!*!RX$+TZp0R?$!tLC=diIDd
zlTG(xw8~(hUxX|D@H&ufcBEFujZ7$%p9(UIC%EZ_X2ax!Dq9kP&9yh@h
z!nEj3vZaUW<7E+)3~GlL!xwSX{D}i$J8&93RL$+9MD$AU$t}|F)pa`U(
z#Z3&0AlF_c<3Q5KSx=G+NTTxZ%Mwu#0k3sEatx1zeqLL+$Fwz{)71WyuB)c(w(uB9
zTgspd%TC3BbPDgh>;_^Bhi=lK^XBHG0%?I(zyM@MoA-rbjm|Z?J3wOhn2lIilM6S;
zV8Bg`f^_GOC8#e_#i8QA4&3v`BJNRlJCewZ3$KzeaLpN?@=@32S5lYwA+=nsSTw16
zOiFju+F+ef^PuV2pyRJEN5wZ7WG*%gRQv_5la1J6)uiYe!mQgkpt`|`B4h!8bbS!JInn-5Shgmkw#=*
zjNZ0<1*;aUjJuUJH}0-h1II>n5T!K<2LWVuYs%uFeS{h&c6>YMgYj()m1bMKl`+jlM|>}KpMP0iFV=RuFVW*w~dKk!gNaBV0iF|D?(
z9FVQR&jb}7Ri;vO=A8xEvrsC9|1x16KY*<@Dg8G1YBXR3T8Q;f9<3n#%cwH~y^Nov
zFUxE)TiD6IZqJV)4Z5;88nt}8Ftop%W)H~NrKhIHA3=&!i0b{4vb=Bi?fQ1Bhy5a_
zm=5=~@QK9#QMmE?_dWS@W!q}!)iun!zqdWw_Bg)S>Jf#j;lu2VmBAq
zH*3m)`si%MYr(lygj4SWBYoLVvMHZJ+I}mw5xf`?5L_LXr@h}Fw5Bo%FP0@WEjPhB
d#e}GQ5aY1_n%~de9Mk6n1aAxvtP8;8{|E3?()9oU
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/013.png b/wxPython/demo/bmp_source/013.png
new file mode 100644
index 0000000000000000000000000000000000000000..457e7a0e7bcd72597b7d9480a859a080712865c3
GIT binary patch
literal 2313
zcmXX|dpK0<8voW>V~jD(ie%iEOWM@VL{xisX4VuMqU4k)u~0+0s7UP-W({&FJhUq+
zJFBVP?wmNGQtfJ6
zEy5N9q}5g~eyIffX(BmjF<4F~UzWrLD0jX`nv<`zZhtLI4;k1>m?o
z06Sj+pk@K!GXa2g?6Kez+OwR~KAw`zM~fq6ls@2K-dLMk)vl2xwWepvj}C*+ox%-m>L#p`R=AQ26Ce)7(;7YavpqCGEC6!zx?y&
zdp5l7^vdSle0MD6wdJv?LfbVHo4uM!QV&v!
zN2yp<+t9Z4PVM)sX3QhE1sWb4YJRc1CakCXlQH?n4_hHLU3jMDbs24PR9Re`jgFQIufl$3Qc?St{)N1kyGrjoxA;3Rd3)i(
ziy4(e=c_j2pyF`BFcuX%}A=GiD5u+}O-I9UUoyVwvGN&BF_Q)k(9Ia(C0?dSue5$=cg7
z-yJ|J9gbN7i7;c-)GOz1k;*AF^dYk_GN@6S4Mf}54n
zB_HqUyCJSlX6F8Ae9LQI)nvFu-x-`7E2n&KDNDjxrscGBl`u1Wvx_8T_hyT`mF
zA-csu5(OK@mz0+RKjZ3l)Dl?se0GZO_DD>SH!G239bezlxNy+|qk@m!-3))jZlIOonH-<&`kb^H
z#xX}n_AR}h^~8Y-e`b}eK5QPNE3{>hW32h-D5Ab!6K5N-)cQGd
zBdk)xFaw$k(V?M9%$&m2UArOl=(G(XjE|2W8ySK2!Li8IBa~I#hX)Z6>L}&nJIq^?
z^7?!~=y?#Gj-1$(Z$jlX*Tqn_3%_lcP*3ckmIr)3Ss0fxH``nbH{bipQO}JK>3%XN
zBIx@1=4Q18Pn0tIWll5W68@VY=J5ylZ10E5eX6I8b({)Afql+XsI!hx*D
z_TXM-EiE?U6tD%9LC!kgaRuMt?!}gSCDs|&tBT3OllZCJGp`#%HvZF#t7Km@jp5|a
z&S}1H*-q2U_{1l1z%4hxLR(j$(eM_qgSDA8?p`O7ZZdGX^6}^6-{!u_D|x6>;o}|H
z+87cpB{R)JGw@dOb!|Ao8XFxQ9Ud-st%eK7c>rShx2O(H@mmJ*%ZdUh=TbERmYNn}
zc{;J>9zpjGGjBSN*euC?Gx)R>3qK$+fe(1>mc-$0gvQS?lh6P5-!ctF_o~U
z1V7_s{C+X2k45NIAVVfu?lh)w*eY#>^+TjF5DQ)2LLMHBCjRlI8xc;D=D3kcm65*E
zq0FrYxbeU)$#H>DSp$^pn3WFhP#G&|H`?{}Ld=O|!_qy9Hek>0L9#4tty918x(Rv=
zrJIq%5<7NL9;ui#;C+yP;bqG)tpr7J!5xZ;>6s}PY+3eRgZ%XQEXvi0t%7t|Xd(0y
z{P<;wRFxX*ek18seH7uNXgYF|vDw^2$<*(dN?Za+du40_n%*V4jp>uPl;PwVvFUvGvBqwF9KUz^Mbfx^{F`05`Bl;>s1e
zk`X%Ntd_j(M{KG!!&dM8qS9yB7)dDD`-X*Zr-)9}D}OfJQy+C8&0t&Rnr04hj^j6i
zo8p1?b-vPDNHTJZ-Os12=%UOHnzI}IO7}r%=35<4x{Ck*QR9gn`v1O6%AmD2!9%I~
zp4Z$DI1!a_!z!Uji@qnpRk7V80H9=p`Yr^31PG?W-!-5xUA1W8M{sn^@tsZY}ZK
zPGYU=#Ru*$Z#$dmUpV(@@YluPi?i$!!rE)Nbb?tC0JTD%r-td-r*}bR@Uy?#!~Y!T
z+3L<0&kS8^%v7sNkEaQ_DT0oBzh&I+F#6X9-6&CQ(+4^4*LMp^YH&Gm-)jCN`5fG-
z#J||I7BTw!qZ!?^t+d**j(uMzSWb>kmN2LWHR_RhAGKFN&g@eP
V{eoU+h4wE4e7rVz{&x+L`adSK`L+N6
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/014.png b/wxPython/demo/bmp_source/014.png
new file mode 100644
index 0000000000000000000000000000000000000000..0cb6d8b3c1589d1ad0ebea519569c0d75593949e
GIT binary patch
literal 2226
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
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/020.png b/wxPython/demo/bmp_source/020.png
new file mode 100644
index 0000000000000000000000000000000000000000..f99a5719944446402bd8441365cedd8c6effb97b
GIT binary patch
literal 2306
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
D8wDLu
literal 0
HcmV?d00001
diff --git a/wxPython/demo/bmp_source/021.png b/wxPython/demo/bmp_source/021.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4ea809f68e58069e4fbf42d575cc8c0130acac3
GIT binary patch
literal 2250
zcmXX|dpMNa9$w!!cQeE6LgX?tg(xS3L?`i0E)BU%?JjgNgGg5uN$t^mBZ{&$TP3=}
zhiBu`GXj+FU?zOox`vUR8+{G#{nsw~^?xoRI{
z4d6Xw2j73SG5m%0?+uB9pop|>Yp?z5ue6}Yam5$DP*_qQgb5D7Z(BNuGmNKxp&fET
zX{qtABkIG4^1MCk%>GhyJUyXlgKnCd@H*Z`cvc=b_ZG
zOU%HNiiz3Tsl~p&zDt%Yv9o)3)i-tWy+1ZGM6!wuidybia~YZ8cuA@tvI(rhk3{sg
z!BIlZi^~&Qo3gW8claCJt9HmSPqB7p{7GO&Y;3HIAZQjrMaT`w&s{HGnAd|bL>4N$
zC&r9fGs80)X8&}-fyTznmQQ2MmjV}=6@c1c%KE(bh>Mb$u(l~7p-2R`+W(PV;J!m3
z$F#cf$B%ESu2nTkh=&g!hJJ^FRDm|2H-ZCJ;Cam_rVTUq(-i-v4ny>u%5W6GvA8Yf
z*@{_k`jSk_@sM-mQcF^UvK(_~${*arEUCtSxJM<}mEHKKb#E_I46&
zCu;!